これは InterSystems FAQ サイトの記事です。
InterSystems製品のシステムモニタが色々なリソースの使用状況を監視しています。
そしてその使用状況に応じてアラートやワーニング情報をコンソールログ(message.log/cconsole.log)に出力します。
アラート情報が表示するCPUのリソースについては、以下のものが定義されています。
InterSystems IRISは総合データプラットフォームです
InterSystems IRISは、企業にとって最も価値のある資産(データ)の取得、共有、理解、そしてデータに基づく行動のために必要なすべてのものを提供します。
完全なプラットフォームである InterSystems IRIS は、複数の開発技術を統合する必要がありません。より少ないコードで開発が可能で、そのアプリケーションは、システムリソース、メンテナンスなども少なくて済みます。
これは InterSystems FAQ サイトの記事です。
InterSystems製品のシステムモニタが色々なリソースの使用状況を監視しています。
そしてその使用状況に応じてアラートやワーニング情報をコンソールログ(message.log/cconsole.log)に出力します。
アラート情報が表示するCPUのリソースについては、以下のものが定義されています。
これは InterSystems FAQ サイトの記事です。
ローカル変数の容量は、プロセスに許可する最大メモリ割り当て容量によって制限されます。
この値は、システム構成パラメータの bbsiz で設定します(設定方法は記事の後半にあります)。
既定値は、1プロセスあたり、262,144 KB です。
※IRIS 2022.1 以降は、既定値が -1(最大値:制限なし) になりました。
※Caché/Ensemble 2012.1以前では 16,384 KB でした。
値は 256KB からスタートし、プロセスがより大きな領域を必要とする場合は、bbsiz で設定した値まで拡張します。
(バージョン2012.1以前では 128KB~49,536KB の範囲で設定できます。)
この値を超えるようなローカル変数の使用があると、 エラーが発生します。
現在のプロセスに残っている使用可能なメモリ量は、$STORAGE 変数で確認できます(バイト単位)。
詳細は以下ドキュメントページをご参照ください。
$STORAGEについて【IRIS】
$STORAGEについて
インターシステムズ製品のプロセス・メモリについて
一般的に多量のローカル変数を使うと、システムが稼動するために必要なメモリ量も増加します。
大規模システムの場合には、そのことが原因でメモリ不足が発生することもあり得るため注意が必要です。
これは、InterSystems FAQサイトの記事です。
マシン名の変更後に InterSystems IRIS(以降IRIS) を停止せずにOSを再起動すると、IRISが開始できないという問題が発生します。
開始するためには、<インストールディレクトリ>\mgr\iris.ids ファイルを削除してください。
iris.ids には、起動したノード名や共有メモリの情報(共有メモリID)が格納されていて、IRIS 開始時に作成され、停止時(iris stop または iris force を実施した場合)に削除されます。
IRIS を停止せずにOSを停止(再起動)した場合、IRISの開始情報が含まれる iris.ids が残ったままとなることがあります。
IRIS は次の開始作業で iris.ids を確認します。マシン名が変更されていると起動しているノード名の情報が iris.ids の内容と異なる為、IRIS は正常に起動しません。 マシン名を変更後にOSを停止(再起動)する際には、必ず事前に IRIS を停止するようにしてください。 ※予期せぬ問題を防ぐためにも、OS停止時には事前に IRIS を停止することが理想的です。
※InterSystemsの他製品についても同様です。詳しくは関連トピックをご参照ください。
これは、InterSystems FAQサイトの記事です。
Windowsのコマンドプロンプトからターミナルを起動するには以下の様な操作を行います。
実行イメージの場所に移動します。
以下のコマンドを実行します。
( インスタンス名のデフォルトは「IRIS」です。)
コンソールターミナルは以下のように実行します。
コンソールターミナルの場合、そのままでは日本語を正しく表示できませんのでご注意ください。
日本語を表示させるためには、以下の記事の内容の設定が必要です。
(外部技術情報サイト)
コマンドプロンプト起動時、自動的に文字コードをUTF-8にして日本語もちゃんと表示できるようにする方法
これは、InterSystems FAQサイトの記事です。
IISおよびWebゲートウェイの設定方法は以下のとおりです。
(1) IIS構成で以下の設定を行います
アプリケーション /rest を作成し、ハンドラーマッピングで * = CSPms のみ定義します。
IIS構成 > Default Website > アプリケーション /rest > "ハンドラーマッピング" をダブルクリック
要求パス: *
モジュール: CSPms
名前: CSPGW (任意の名前)
要求の制限 > [要求のマップ先が次の場合のみハンドラーを呼び出す] のチェックはオフにします。
※こちらの設定はデフォルトでは「チェックあり」になっていますのでご注意ください。
この構成により、IIS は /rest アプリケーションをWebゲートウェイに転送します。
(2) Webゲートウェイの構成で以下の設定を行います
Web Gateway のアプリケーションアクセス から /rest を追加します。
→既存アプリケーションをクリックしてコピーし、アプリケーションパスを /rest に設定&IRISサーバを指定します。
この構成により、Webゲートウェイは /rest アプリケーションをIRISサーバに転送します。
これは InterSystems FAQ サイトの記事です。
接続先クライアントのIPアドレス取得するには、以下の方法で %SYS.ProcessQuery クラスを使用します。
(a) 対象プロセス ID を指定して、ClientIPAddress プロパティ を参照します。
Set Process=##CLASS(%SYS.ProcessQuery).%OpenId("8656")
Write Process.ClientIPAddress(b) 全てのプロセスの情報を知りたい場合は、必要な情報のみ取得する SQL クエリを作成し、クラス内で実行することができます。
例) SELECT * FROM %SYS.ProcessQuery で詳細情報を取得できます。
詳細は、以下ドキュメントをご参照ください。
%SYS.ProcessQueryについて【IRIS】
%SYS.ProcessQueryについて
これは InterSystems FAQ サイトの記事です。
<PROTECT> エラーを解消するには、システム全体のライブラリデータベース(※)の読み込み専用属性を外します。
※ InterSystems IRIS の場合は IRISLIB、Caché/Ensemble/HealthShare(Cachéベース) の場合は CACHELIB
ルーチンのインポートが完了しましたら、読み込み専用に忘れずに戻すようにしてください。
【バージョン2013.1~】
[管理ポータル] > [システム管理] > [構成] > [システム構成] > [ローカルデータベース]
データベース名のリンクから「読み込み専用でマウント」のチェックを外します。
【バージョン2011.1~バージョン2012.2】
[管理ポータル] > [システム管理] > [構成] > [システム構成] > [ローカルデータベース]
該当データベースの[編集]から「読込専用?」を変更します。
【バージョン2010.2以前】
[システム管理ポータル] > [構成] > [ローカルデータベース]
該当データベースの[編集]から「読込専用?」を変更します。
これは InterSystems FAQ サイトの記事です。
管理ポータルで設定できるメモリ関連の項目は、以下の通りです。
(項目としては他にもありますが、ここでは、ほとんど設定する必要のないものについては記載していません。)
管理ポータル [ホーム] > [システム管理] > [構成] > [システム構成] > [メモリと開始設定]
古いバージョンのメニューは以下の通りです。
【バージョン5.1~2010.x】
システム管理ポータル [ホーム] > [構成] > [メモリと開始設定] の設定内容
* データベースキャッシュ用メモリ
* ルーチンキャッシュ用メモリ 【バージョン2011.1.0~】
管理ポータル [ホーム] > [システム管理] > [構成] > [追加の設定] > [メモリ詳細設定]
【バージョン 5.1~2010.x】
システム管理ポータル [ホーム] > [構成] > [メモリ詳細設定] の設定内容
* 一般メモリヒープ【gmheap】
* ロックテーブル【locksiz】
* IJCバッファ【ijcbuff】
* IJCデバイス【ijcnum】※カテゴリ:IO
* 照合テーブル最大数【nlstab】
設定の詳細は以下の通りです。
2023/9/1更新 添付のPDFに古い記載がありましたので、本文内を最新情報に更新しています。添付ではなく本文をご参照ください。
*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
現在使用している Caché/Ensemble システムから InterSystems IRIS に移行する場合、マイグレーション(インプレース変換)を行うのでなければ現行環境と新環境を一時的に並行稼働させる必要があるかもしれません。
この動画では、そのような場合のインストールや構成についての注意点やデータ移行にどのような技術が利用可能かについてご紹介します。
Caché/Ensemble から IRIS へのマイグレーションについては、こちらもご覧ください。
こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。
clsファイルのExportについて、ご存じな方がいらしたら教えてください。
VSCodeではclsの一覧からExportを選択すると、clsファイルとしてローカルにファイル出力されます。
.png)
これと同じことを、ObjectScript上でも行いたいと思っています。
しかしながら、Export用のAPIを見てみてもxmlファイルで出力される旨のコメントがあり、
clsファイルのまま出力するためのAPIが見当たりません。
https://irisdocs.intersystems.com/iris20191/csp/documatic/%25CSP.Documa…
どなたか情報をお持ちではないでしょうか?
※ちなみに本当にやりたいことは、CREATE TABLE実行時に自動で作られる永続クラスを
自動でExportするような仕組みを構築しようと考えております。
IRIS で REST サーバを作成する際に準備する REST ディスパッチクラスを手動で作成する方法を解説します。
※関連ビデオで、OpenAPI 2.0 で定義したアプリケーションの仕様を利用する手順を使った API ファーストで作成するディスパッチクラスの解説ビデオもあります。
このビデオには、以下の関連ビデオがあります。
もくじ
最初~ 復習ビデオ/関連ビデオについて など
2:20~ 作成するディスパッチクラスの内容
4:20~ 手動でRESTディスパッチクラスを作成する方法(手順説明)
5:07~ VSCode:クラス定義作成(手順説明)
メモ:スタジオでの作成については、別のビデオでご説明しています。
これは InterSystems FAQ サイトの記事です。
Question:
IRISは医療に特化したシステム統合製品ですか?
Answer:
InterSystems IRIS Data Platform(以下IRISと表記)は、金融、物流など様々な業種でお使いいただいています。
また、IRISから派生して医療分野に特化したInterSystems IRIS for Health(以下IRIS4Hと表記)という製品があります。
IRIS4Hでは医療分野で良く使われる情報交換規格 HL7(FHIR,V2,V3,CDA)、DICOM、X12 などへの対応に力を入れています。
医療分野のお客様には、IRIS4Hをご利用いただくようお願いしております。
これは、InterSystems FAQサイトの記事です。
iris コマンドを使用して、InterSystems IRIS のインスタンスを制御できます。
iris コマンドは多くの機能をサポートします。以下の構文を使用します。
irisコマンドの詳細は下記ドキュメントをご参照ください。
InterSystems IRIS インスタンスの制御
このirisコマンドのrunw というファンクションを使用して、同期実行や戻り値を取得することができます。
コマンド実行例は以下の通りです。
バッチスクリプトへの戻り値の指定は、ルーチンやメソッド終了時に指定する QUIT や RETURN コマンドに引数を指定する方法ではなく、IRIS 内の処理終了時に %SYSTEM.Process クラスの Terminate() メソッドを使用して errorlevel 変数に値を返す方法を使用します。
値は、0~255 を指定できます。
ルーチンサンプルは以下の通りです。
これは InterSystems FAQ サイトの記事です。
ユーザーが作成したクラス定義は、クラス定義クラスの中に格納されます。
クラス定義一覧をプログラムから取得する方法として、「クラス定義クラス」を利用することができます。
メモ:クラス定義クラスとは、%Dictionary パッケージに含まれるクラス全般のことをさします。
以下サンプルコードでは、%Dictionary.ClassDefinitionQuery クラスの Summary クエリを利用してクラス定義一覧を取得しています。
Class ISJ.Utils
{
ClassMethod ClassInfo()
{
#dim ex As %Exception.AbstractException
try {
set currentNS=$NAMESPACE
while (1) {
read "ネームスペースを指定してください : ",x
if x'="" quit
}
set $NAMESPACE=x // ネームスペースの移動
write !これは InterSystems FAQ サイトの記事です。
Java のプログラムで $List 構造のデータを扱うには、InterSystems 製品が提供する IRISList クラスを使用することが可能です。
こちらは、IRIS Native と同様に JDBCドライバの拡張機能の一部として提供しております。
Native API for Java Quick Reference(英語のみ)
こちらでは、InterSystems 製品上に $List 構造を扱うクラスメソッドを作成し、それをストアドプロシージャとして公開し Java から呼び出すサンプルをご紹介します。
【使用可能バージョン】
IRIS 2020.1 以降に同梱されている JDBC ドライババージョン 3.1.0 以降。
ただし、JDBCで使用する場合は 3.2.0以降(IRIS2021.1以降)。
<IRISインストールディレクトリ>\dev\java\lib\JDK(Ver.)\intersystems-jdbc-3.1.0.jar
【手順】
1. IRISサーバの任意のネームスペースに以下のようなクラスを用意します。
SqlProc キーワード を指定し、メソッドを SQL ストアドプロシージャとして呼び出せるようにします。
InterSystems IRIS Data Platformの公開により、Dockerコンテナでも製品を提供しています。 コンテナとは一体何でしょうか。
基本的なコンテナの定義は、プロセスのサンドボックスの定義です。
コンテナは、たとえば実行できるという点において、仮想マシン(VM)に似た部分を持つソフトウェア定義パッケージです。
コンテナは、完全なOSエミュレーションを使わずに分離することができるため、 VMよりもはるかに軽量です。
本質的に、コンテナは、どのようにアプリケーションをシステムから別のシステムに確実に移動し、それが動作することを保証できるのかという問題に対する答えと言えます。 アプリケーションのすべての依存関係をコンテナにカプセル化し、プロセス分離領域を作成することにより、アプリケーションソリューションがプラットフォーム間で移動した場合でも動作するという高い保証を得ることができます。
プロセスは、オペレーティングシステムによって実行が可能です。 これらのプロセスはアドレス領域、ネームスペース、cgroupなどを共有し、通常、OSの環境全体にアクセスすることができます。それらのスケジュールと管理は、OSが行います。
これは InterSystems FAQ サイトの記事です。
InterSystems 製品を利用した REST/JSON の操作方法を、簡単なサンプルを利用して解説します。
サンプルでは、REST クライアント、HTML、ターミナルからデータ(JSON)を送信し、サーバ(InterSystems製品)で JSON 形式のデータを返す REST ディスパッチクラスを使った簡単な流れになっています。
サンプルは、https://github.com/Intersystems-jp/FAQ-REST-SimpleSample からダウンロードいただけます。
RESTディスパッチクラスとサンプルHTMLファイルが含まれています
管理ポータルからインポートします(スタジオを利用されている場合は、スタジオでもインポートできます)。
管理ポータルは http://localhost:52773/csp/sys/UtilHome.csp でアクセスできます。
※ ポート番号はお使いの環境に合わせて変更してください。
管理ポータルにアクセスできたら以下メニューでインポートを行ってください。
*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
IRIS の ObjectScript を使えば、ビジネスロジックの記述からキーバリュー形式のデータ操作まで様々な処理が記述できます。
ですが、残念ながら Python のように豊富なライブラリを利用し、機械学習をはじめとする Python が得意とすることまでは単独では行えません。
「ObjectScript から Python を呼べたら?」を実現するための計画中機能も含め、IRIS がサポートする Python の利用方法をご紹介します。
この動画の講演資料(PDF)もご用意しました。
動画の中でご紹介している技術資料へのURLは、こちらの資料をご活用ください。
これは InterSystems FAQ サイトの記事です。
OSのコマンド実行する場合、$ZF(-100) を使用します。
do $ZF(-100,"",program,args) // Windows コマンドを【同期】実行します。do $ZF(-100,"/ASYNC",program,args) // Windows コマンドを【非同期】実行します。mkdir, copy などのOSシェルコマンドを実行する場合は、/SHELL もあわせて指定します。
do $zf(-100,"/shell /async","mkdir","c:\temp\x")詳細は以下のドキュメントを参照してください。
開発者の皆さん、こんにちは🌂 今年は早い梅雨入りでした ☔
さて、新しい✨ 実行/開発環境テンプレートを作成しました。 Docker 🐳、docker-compose 、git がインストールされていれば、すぐにお試しいただけます。ぜひご利用ください!
今回は、ご存知の方が多いと思われる(?)某アニメの登場人物を使った人物相関図をテーマに【キーバリュー形式で IRIS に登録してグラフ構造で表示してみた】を体験できるテンプレートです(テンプレートは、Python/Node.js/Java からお試しいただける環境をご用意しています)。
以下、今回のテーマについて、ビデオと文字でご紹介しています。最後までお付き合いいただければ幸いです!(ビデオは全体で 7 分 20 秒)
人物相関図と言えば、グラフデータベースをイメージされると思います。
IRIS はグラフデータベースではないのですが、IRIS ネイティブのデータの「グローバル」を利用することで、グラフデータベースと似たような構造を表現することができます。
IRIS の高パフォーマンスを支える 「グローバル」 は 40 年以上前(= InterSystems 創業)から InterSystems のコア技術であるデータベースとして提供されてきました。
これは InterSystems FAQ サイトの記事です。
InterSystems Data Platformは、データベースキャッシュやルーチンキャッシュなどの共有メモリを、起動時に割り当てます。
バージョン2007.1以降をWindows上で動作させる際、Windows特有の共有メモリに関する問題が生じることが判明しています。
詳細については、以下の技術資料をご参照ください。
また、以下の記事もあわせてご覧ください。
コンソールログに "Failed to allocate xxxMB shared memory using large pages..." のエラーメッセージが出ているとき
これは、InterSystems FAQサイトの記事です。
オンラインバックアップの API である BACKUP^DBACK ルーチンを使用して実行できます。
フルバックアップを実行する例は以下の通りです。
バックアップ成功時は戻り値に 1 が返り、失敗時は 0 が返ります。
失敗時の詳細は、ログファイルをご参照ください。
また、第2引数の TYPE に C を指定すると累積バックアップ、I を指定すると差分バックアップを指定できます。
ルーチン例は以下の通りです。
*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
この動画では、クラウド環境下で利用可能な InterSystems 製品の様々なバックアップオプションと戦略、そしてサードパーティのバックアップ代替オプションについて紹介します。
今現在、クラウド環境をご利用でない方にも役立てて頂ける情報も紹介します。ぜひご覧ください。
関連動画として、こちらも公開しています。宜しければご覧下さい。
「クラウドストレージ戦略」(字幕付き動画)
これは InterSystems FAQ サイトの記事です。
仮想ドキュメント(以降VDOC)とは複雑な構造のドキュメント(メッセージ)を効率良く高速に処理するために考えられたメッセージ処理の仕組みです。
HL7に代表される EDI 標準は電子データ交換のための汎用的なかなり複雑なメッセージ形式を含んでいます。
また、メッセージの種類を増やすと運用が複雑になってしまうため、1 つのメッセージに様々なデータを詰め込む傾向があります。
その結果 1 つのメッセージは複雑かつデータ量が多いものになりがちです。
一方、実際のメッセージ交換では、メッセージの全てのデータを処理することはまれで一部のデータのみが必要となるケースがほとんどです。
複雑なメッセージ構造から必要な項目を抽出して処理する際、メッセージを InterSystems IRIS data platform のオプジェクト指向フレームワークに基づき一度オブジェクトとしてインスタンス化することで処理を簡潔に記述できます。
しかし、データ量の多いメッセージを解析しオブジェクトにインスタンス化する処理は非常に負荷のかかる処理で、しかも大量のメッセージを処理しなければならない場合は求められるスループットを満たせない状況になりがちです。
しかも必要なデータは「全体の中のほんの少し」という状況の場合、無駄の多い処理となります。
これは InterSystems FAQ サイトの記事です。
%Net.FtpSession クラスを使用して FTP サーバから、アップロード/ダウンロードする方法をご紹介します。
1. FTPサーバにイメージファイルをアップロードする
set tmpfile="c:\temp\test.jpg"
set ftp=##class(%Net.FtpSession).%New()
// ftp サーバへ接続する
do ftp.Connect("<サーバ名>","<ユーザ名>","<パスワード>")
// 転送モードをBINARYに設定
do ftp.Binary()
// アップロードするディレクトリに移動
do ftp.SetDirectory("/temp/upload")
// アップロードするファイルのストリームを用意
set file=##class(%File).%New(tmpfile)
do file.Open("UK\BIN\")
// ファイルをアップロード
// 第1引数: アップロード先に作成するファイル名
// 第2引数: アップロードするファイル・ストリーム
do ftp.Store("test.jpg",file)
// ftp サーバからログアウト
do ftp.IRIS 2020.1、IRIS for Health 2020.1にてリリースされたPEXは、Java Business Hostよりも優れた方法でプロダクションにJavaアプリを組み込めるようになりました。PEXは相互運用でのコンポーネントを構築する完全なAPIを持っており、Javaと.Netの両方で利用可能です。
Java Business HostはIRIS、IRIS for Health 2020.4より削除されました。Java Business Hostをご利用のお客様にはPEXへの移行をお勧めします。
PEXの利点
PEXへのマイグレーションについての詳細は Java Business Host から PEX への移行 をご参照ください。
こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。
AWSのcodebuildを利用して、
IRIS環境をビルドされた経験がある方がいらっしゃたら
情報共有いただきたいです。
ただいま取り組んでいるプロジェクトでは、
IRISのclsファイルをaws codecommitのgitリポジトリで管理しております。
※Dockerコンテナではない。
ここで作成されたソースコードをaws Codebuildの仕組みを利用して
自動でコンパイルチェックをする仕組みを構築したいと考えております。
コンパイルを実行する環境としては、AWS ECRに自作したDockerコンテナを利用しております。
※コンテナはstore/intersystems/iris-community:2020.1.0.215.0を基底に、簡単なネームスペースを作成しただけのもの。
ローカルPC上ではIRIS環境として利用できることを確認済み。
ビルドはbuildspec.ymlにて、以下のような命令で行おうと考えております。
1. iris start IRIS でirisを起動。
2. iris terminal IRISでターミナルにログイン。
3. gitから取得したコードをImport & コンパイル。
しかし、上記を実行しようとすると2の時点で Access Deniedのエラーとなってしまいます。
.png)
*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
InterSystems IRISではシャドウイングは非推奨の為、Caché/Ensembleからのマイグレーションに伴い、シャドウイングをご使用頂いているお客様はミラーリングへ移行する必要があります。
この動画では、ミラーリングの概要およびミラーリングの構成例、シャドウイングとの運用上の違いや注意点についてご説明します。
シャドウイングから移行される場合のミラーリングの構成としては、DR非同期またはレポーティング非同期になります。 ミラーリングとシャドウイングでは、データベースファイルやジャーナルファイルの取り扱いが異なります。
この点につきまして、動画の後半に紹介しておりますのでご参考下さい。
マイグレーションについては、こちらの動画も合わせてご覧ください。
「(動画)InterSystems IRIS へのマイグレーション」
クラスにどのようなインデックスが必要であるのか、それをどのように定義するのかについて理解できたので、 次に、どのように処理するのかについて確認しましょう。
(注意: クラスに変更を適用する場合と同様に、ライブシステムにインデックスを追加する場合にもリスクが伴います。インデックスが入力されているときに、ユーザーがデータにアクセスしたり更新したりすると、クエリ結果が空になったり誤った結果が生じることがあります。また、構築中のインデックスが破損する場合もあります。 ライブシステムでインデックスを定義したり使用したりするには追加の手順があり、それについてはこのセクションで触れていますが、詳細はドキュメントに記載されています。)
新しいインデックスの準備ができたら、SQLオプティマイザが、クエリを実行する上で最も効率的に読み取れるインデックスであると判断するかどうかを確認できます。 プランを確認するために実際にクエリを実行する必要はありません。 クエリがあれば、プランをプログラムで確認することができます。
Set query = 1
Set query(1) = “SELECT SSN,Name FROM Sample.