開発者の皆さん、こんにちは!
開発者コミュニティのYouTubeプレイリストに新しいセルフラーニングビデオを公開しましたのでお知らせします📣!
◆ IRISでPythonを使ってみよう!
※YouTubeに移動していただくとプレイリストの中から好きなビデオを選択してご覧いただけます。
InterSystems IRISは総合データプラットフォームです
InterSystems IRISは、企業にとって最も価値のある資産(データ)の取得、共有、理解、そしてデータに基づく行動のために必要なすべてのものを提供します。
完全なプラットフォームである InterSystems IRIS は、複数の開発技術を統合する必要がありません。より少ないコードで開発が可能で、そのアプリケーションは、システムリソース、メンテナンスなども少なくて済みます。
開発者の皆さん、こんにちは!
開発者コミュニティのYouTubeプレイリストに新しいセルフラーニングビデオを公開しましたのでお知らせします📣!
※YouTubeに移動していただくとプレイリストの中から好きなビデオを選択してご覧いただけます。
これは InterSystems FAQ サイトの記事です。
Question:
IRISという製品名を選んだのはなぜですか?
Answer:
IRISは、インターシステムズの製品開発者がソフトウェアを開発する際に常に念頭に置くべき以下の4つの原則の先頭文字を表しています。
[ I ] Interoperable:他のソフトウェアと連携して動作すること
[ R ] Reliable:信頼性が高いこと
[ I ] Intuitive:直観的に使用できること
[ S ] Scalable:スケール(拡張性が高い)すること
これは InterSystems FAQ サイトの記事です。
コンテナログイン時、-u オプションで root を指定することでログインできます。
docker exec -it -u root コンテナ名 bashこんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。
SQLの実行結果について、意図せぬ結果になるものが二点ありますので、
利用方法等に誤りがないかを確認させてください。
①
CREATE TABLE Tmp.AAA AS SELECT * FROM Mst.AAA WHERE column = ?
⇒管理ポータルで実行しても、?パラメータを置換するダイアログが表示されず、
オンコードで%Execute()しても実行エラーになる。
★この構文では?パラメータは利用できないのでしょうか?
②
SELECT * FROM Mst.AAA WHERE column IS NULL
⇒IS NULLではヒットせず、= NULLだとヒットする。
.png)
.png)
★IRISとして、IS NULLと= NULLに動作差異があるのは何故でしょうか?
すいませんが、情報をお持ちの方がいらっしゃればご教示いただけますと幸いです。
私が一番興味を持っているのは、組み込み Python におけるグローバルの使用についてです。
そこで、提供されている公式ドキュメントを確認しました。
#1 グローバルの導入
グローバルとは何かについての一般的な説明。 次の章につながっています。
#2 ObjectScript の詳細について
組み込み Python の記述はありません。
さらに先に進むと...
3.1 組み込み Python の概要
3.1.1 グローバルの使用
グローバルを使ったことなければ、素晴らしい内容です。
が、驚くほど原始的な例が使われています。
3.2 組み込み Python の使用
最後の望み: >>> でも、目に見えるものが何もありません。
残念どころではありません! Python 用の IRIS Native API でさえ、もっと説明されています。
何を期待していたかと言う
開発者の皆さん、こんにちは!
ターミナルでクラスメソッドを実行するとき、パッケージ名やクラス名などの入力候補が出てこないので、 ##class(パッケージ名.クラス名).メソッド名() の記述をミスったりちょっと面倒だな・・と感じること、ありませんか??
(第1回 InterSystems Idea-A-Thon(アイデアソン) でも、もっとシンプルに呼び出せるようにしよう!のアイデアが投稿されていたようです。)
(私も含めて)そんな方に、朗報です!📣
なんと、VSCode ObjectScriptエクステンションに新機能「Copy Invocation」が追加されました!
クラスメソッドを記述すると、定義の上に Copy Invocation のリンクが表示され、クリックするとクラスメソッドの実行文がバッファにコピーされるんです!![]()
.png)
Copy Invocation をクリックした後で、ターミナルで 右クリック→貼り付け をやってみてください。
ちゃんと実行文がコピーされていることを確認できます(下図の黄色い線の文章がコピーされます)。
あとは、Do や Write や Set 文を記述するだけでいいんです!![]()
.png)
ぜひ、お試しください!
VSCode contributorの皆さん、素敵な機能追加をありがとうございました!
しばらく前、IRIS 用 Django の新しいドライバーを導入しました。 そこで実際に、IRIS で Django を使用する方法を見てみましょう。
IRISでは.Net Binding機能が非推奨になったため、VisM.OCXの置き換えのために用意していたCaché版Cache Directエミュレータ(.Net Binding機能を使用していたため)の使用も非推奨となりました。
そこでIRISのNative API機能を使用して書き換えたものを作成し、OpenExchange(以下のFAQトピックを参照してください)に登録しています。
Caché版Cache Directエミュレータを使っているアプリケーションをIRISに移行するためには、IRIS用のCache Directエミュレータに置き換えて、アプリケーションのコードをいくつか書き換える必要があります。
内容は、それぞれのプロジェクトに含まれるコンソールアプリケーションサンプル(consoleApp.cs)を比較することで大体理解できると思いますが、以下にその手順について説明します。
1. IRISの.Net Native API用のdllの参照設定を追加します。
Visual Studioのプロジェクト設定から参照の追加を選び、以下のファイルを追加してください。
2.
以下、デプロイモード(配置モード)でプログラムを配布する方法を2つご紹介します。
① DB内のソースコードをデプロイモードでエクスポートする方法
② ソースコード用DBを用意してIRIS.datごとデプロイモードにする方法
①は、プログラムのみデプロイモードでエクスポート/インポートできるので、初回システム構築時はもちろん、プログラムの修正が発生した時などソースの一部のみエクスポートすることも可能となります。
②は、IRIS.dat ごとデプロイするので初回システム構築時に IRIS.dat のみ配置すればよく手順が単純です。
クラスがデプロイモードになると、そのクラスのメソッドとトリガのソースコードは削除されます。
クラスがデータ型クラスである場合、クエリキャッシュによって実行時にメソッド定義が必要になる可能性があるために、メソッド定義が保持されるのでご注意ください。
それぞれの方法について、詳しく説明します。
(1) 開発環境:Hidden属性をオンにして保存し、Deployモードでエクスポートします。
※こちらの操作は、移行先環境で行うことも可能です。必要に応じて設定するようにしてください。
set cls = ##class(%Dictionary.ClassDefinition).%OpenId("User.皆さん、こんにちは。 このプロジェクトをコンテストに応募します。 エクスポートモジュールは、多くのプロジェクトに不可欠であり、通常、本番サーバーにて使用されています。
属性初期化モジュールの呼び出しにて、さまざまなシナリオを実装しました。GCR で実証する多くの追加プロジェクトによる最大化と、本番インスタンスにネイティブにインストールするための最小化の両方です。
zpm "install appmsw-sql2xlsx -Dzpm.demo=none"
可能性をお見せするために、fileserver とcsvgen プロジェクトを使用しました。
可能性を実演するに当たって、次の手順を実行することを提案します。まず、デモを読み込み、superuser \ SYS を使ってユーザー名とパスワードを入力してください。表示されるウィンドウで、Search ボタン、そして Export をクリックします。

次に、csvgen メニュー項目を選択します。

表示されるタブで Load ボタンをクリックしたら、Search ボタン、そして Export をクリックします。

次に、Fileserver メニュー項目を選択します。 
Download 可能な Excel ファイルのリストが表示されます。

テンプレートから Excel ファイルが生成されます。
ぜひ、投票してください。
Caché/Ensemble 時代からご使用のお客様にはなじみの機能だと思いますが、IRISには「システムがインスタンスのメッセージログ/messages.log(Cachéの場合は コンソールログ/cconsole.log) を監視し、ログ・レベル2(重大なエラー) 以上 のアラートを受け取るとメールを送信する」ログ・モニター機能があります。
この機能を使用すると、アラートログ (alerts.log)へのログ書き込み管理のほかに、メールを送信することもできます。
メール送信の設定は、^MONMGR ユーティリティを使用して簡単に行えます。
以下に、サンプルをご案内します。
USER>zn "%SYS" %SYS>do ^MONMGR 1) Start/Stop/Update Log Monitor 2) Manage Log Monitor Options 3) Exit Option? 2 <-- ログモニター管理の設定を行います 1) Set Monitor Interval 2) Set Alert Level 3) Manage Email Options 4) Exit Option?
IRIS における Python サポートの最近の改善と、InterSystems による Python DB-API サポートへの継続的な作業により、 Django プロジェクトに IRIS サポートを実装しました。Python DB-API の使用により、他のデータベースと連携することが可能です。
Django で、IRIS にデータを保存する単純なアプリケーションを試してみましょう。

開発者の皆様、こんにちは。
インタ―システムズでは、本年7月に、「国際モダンホスピタルショウ 2022」に、3年ぶりに出展致しました。
ブースには、ミニシアターを設け、業界をリードする多くの方やパートナー企業様にプレゼンテーションをいただき、その動画を公開しています。
本日は、その中で、アプリケーション開発者の皆様に参考となる IRISを解説いただいたプレゼンテーション動画をご紹介させていただきます。
「Python + iknowpy... + IRISが変えるデータ分析 アプリケーション編」
「Python + iknowpy... + IRISが変えるデータ分析 アーキテクチャ編」
<プレゼンター>
群馬大学医学部附属病院
システム統合センタ― 副センター長 准教授 鳥飼 幸太先生
.png)
その他、HL7 FHIRを解説やパートナーソリューション紹介など、国際モダンホスピタルショウ2022 インタ―システムズブースでのプレゼンテーション動画は、こちらからご覧いただけます。
よろしければ、ご覧ください。
これは InterSystems FAQ サイトの記事です。
Question:
InterSystems IRIS は 2フェーズコミットをサポートしていますか?
Answer:
サポートしていません。
2フェーズコミットはデータベースシステムがサポートしているだけでは十分ではなく、アプリケーションサーバ等の各実装が定めている2フェーズコミットのプロトコルを駆使して、アプリケーションを構築する必要があります。
また関連するシステムの全てのコンポーネントが対応している必要がある、ロングトランザクションには向いていないなど、現実に実装する局面では様々な制約事項があります。
2フェーズコミットは、技術面、設計および実装面、コスト面、性能面などハードルが非常に高いため、実際には限られた領域での利用に留まっています。
プログラムで本番環境(インターフェース)を編集するには、相互運用性 apis と SQL クエリを組み合わせて使用できます。
大まかに言えば、その時点で作業しているネームスペースと本番環境を知ることが重要です。
// Object script
// アクティブなネームスペースはこの変数に格納される
$$$NAMESPACE
// ネームスペースを出力
Write $$$NAMESPACE
# Python
import iris
# このメソッドからアクティブなネームスペースが返される
iris.utils._OriginalNamespace()
# ネームスペースを出力
print(iris.utils._OriginalNamespace())
>>> DEMONSTRATION
本番環境の名前を知ることも重要です。次の API を使用してネームスペース内のアクティブな本番環境を取得できます。
// ObjectScript
USER>ZN "DEMONSTRATION"
// 現在または最後に実行した本番環境を取得
DEMONSTRATION>W ##class(Ens.Director).GetActiveProductionName()
>>> Hospital.SQL ゲートウェイ接続を使用した、外部データベースへのアクセス方法についてご説明します。
手順は以下になります。
1. 外部ソースへの SQL ゲートウェイ接続の作成を行います
※こちらの例では、IRISの別インスタンスへの接続を試しています。
※ODBCを使用される場合は、事前にシステムDSN(64bit)の準備が必要です。
管理ポータルより
[システム管理] > [構成] > [接続性] > [SQLゲートウェイ接続] の 新規接続作成 ボタンをクリックします。
接続の種類を選択し、必要項目を設定します。以下のサンプルは、ODBC接続(別IRISインスタンスのDSN設定)を行っています。
※ODBC/JDBC 各接続定義の作成の詳細は、以下のドキュメントをご覧ください。
JDBC 経由での SQL ゲートウェイへの接続
ODBC 経由での SQL ゲートウェイへの接続
2. リンクテーブルウィザードを使用して、1で作成したSQLゲートウェイ接続に対してリンクテーブルを作成します
管理ポータルより
[システムエクスプローラ] > [SQL] ページより、
[ウィザード] > [リンクテーブル] をクリックしリンクテーブルウィザードを開きます。
手順に従ってリンクテーブルを作成します。
これは、市場に出回っている主なデータベースから InterSystems IRIS への移行に関する連載第 3 回目の記事です。 このパートでは、DB2 からの移行手続きを説明します。前の記事で説明したとおり、現時点ではいくつかの移行オプションが存在しますが、 最も一般的なオプションは、DBeaver(https://openexchange.intersystems.com/package/DBeaver)または SQLGateway を使用する 2 つの方法です。 最初のオプションはこの記事で紹介しますが、2 つ目のオプションは Robert Cemper が書いた「SQLgateway を使ったデータベース移行」(https://community.intersystems.com/post/db-migration-using-sqlgateway)という優れた記事で紹介されています。
GitHub では、2 つのデータベースをビルドして実行する Docker Compose プロジェクトをダウンロードできます。
開発者の皆さん、こんにちは!
InterSystems Interoperability コンテスト: サステナブルなソリューションの構築 の勝者が発表されました!
この記事ではコンテスト受講者を発表します 📢
.png)
開発者の皆さん、こんにちは!
サステナブルなソリューションの構築をテーマとした Interoperability プログラミングコンテストの投票が開始されました!
🔥 ベストアプリケーションはこれだ! 🔥 と思う作品にぜひ投票お願いします!
.png)
投票方法は以下ご参照ください。
こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。
現在開発している処理の中で、大量データをSELECT & INSERTする処理があり、合計で91分かかっています。
この処理で用いるSQLは実行結果を再利用したい等の意図があったため、ScrollableResultSetを用いていましたが、
このAPI自体がSQL実行時に全件ループを回したり、そもそも古いAPIとの事であったため、
%SQL.Statementに書き換えたところ、62分まで短縮することが出来ました。
ここからが問題なのですが、更なる処理時間の軽減のために時間がかかる処理を調査していたところ、
カラム情報を取得する%Get()メソッドにコストがかかっていることがわかりました。
なので現在はこれを改善したいと思っております。
こちらで動作を見たところ、最速は下記でいう所の「rset.name」でこちらを利用すると、41分まで削減されます。
https://docs.intersystems.com/iris20211/csp/docbookj/DocBook.UI.Page.cl…
しかし、我々としましてはAPIを汎用的に用いたいため、nameの部分を動的に扱えるような%Get()の様な仕組みが欲しいです。
VSCode から直接 Web ターミナルにアクセスしたいと思いませんか?
.png)

このフォーメーションは私の GitHub にあり、30 分で csv ファイルと txt ファイルの読み取りと書き込み方法、Postgres を使ったIRIS データベースとリモートデータベースの挿入とアクセス方法、FLASK API の使用方法について説明します。これらすべてに、PEP8 命名規則に従った、Python のみのインターオペラビリティフレームワークを使用します。
このフォーメーションは、ほとんどをコピー&ペースト操作で実行でき、グローバル演習を行う前に、ステップごとの操作が説明されています。
記事のコメント欄、Teams、またはメール(lucas.enard@intersystems.com)でご質問にお答えします。
このフォーメーションに関するあらゆる点において、ご意見やご感想をお送りいただけると幸いです。
このフォーメーションでは、Python および特に以下を使用した InterSystems のインターオペラビリティフレームワークを学習することを目標としています。
目次:
これは InterSystems FAQ サイトの記事です。
外部バックアップ機能と、SANソリューションが提供するスナップショット(スナップクローン、ミラークローンなど呼び方はベンダ毎に異なります)などのテクノロジを利用することで、バックアップ時のインスタンス停止時間を最短にすることができます。
操作手順概要は以下の通りです。
%SYS>set status=##class(Backup.General).ExternalFreeze()
%SYS>set status=##class(Backup.General).ExternalThaw()
【ご参考】
ExternalFreeze() の処理は以下のようになります。
1. ジャーナルファイルの切り替え
2. データベースバッファ上の書き込み待ちバッファをすべてデータベースファイルに書き出す
3.
これは InterSystems FAQ サイトの記事です。
Web 経由でのイメージファイルのアップロード/ダウンロードを行うサンプルをご紹介します。
サンプルでは、以下の手順でファイルの「アップロード/ダウンロード」を行っています。
サンプルプログラムの使い方は次のとおりです。
最初のページでファイルを選択し go ボタンをクリックすると、次のページにアップロードされた画像が表示されます。
アップロードしたファイルをダウンロードしたい場合は、download ボタンをクリックしてください。
これは、2022.2の開発者プレビュープログラムのリリース第6弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。 2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください。
列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひ Early Access Program にご参加ください。
開発者向けプレビューでは、Ubuntu 22.04 LTSやLinux FHEL 9に対応しています。
通常、CDリリースにはサポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。 詳細については、サポートされるプラットフォームのドキュメントをご参照ください。
インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.
これは、市場に出回っている主なデータベースから InterSystems IRIS への移行に関する連載第 4 回目の記事です。 このパートでは、Microsoft SQL Server から移行するための手順を説明します。 前の記事で説明したとおり、現時点ではいくつかの移行オプションが存在しますが、最も一般的なオプションは、DBeaver(https://openexchange.intersystems.com/package/DBeaver)または SQLGateway を使用する 2 つの方法です。 最初のオプションはこの記事で紹介しますが、2 つ目のオプションは Robert Cemper が書いた「SQLgateway を使ったデータベース移行」(https://community.intersystems.com/post/db-migration-using-sqlgateway)という優れた記事で紹介されています。
GitHub では、以下の 2 つのデータベースをビルドして実行する Docker Compose プロジェクトをダウンロードできます。
ソースデータベース: サンプルデータベースを含む SQL Server データベースの Docker インスタンス。
2.
これは InterSystems FAQ サイトの記事です。
InterSystems IRIS Data Platform(以下IRISと表記)ではマルチモデルのサポートにより、データに対して様々なアクセス手法を使用することができます。
主だったアクセス手法としてダイレクトアクセス、SQLアクセス、オブジェクトアクセスがあります。
ダイレクトアクセス は、IRISのネイティブ構造であるグローバルと呼ばれるキーバリュー型のデータに直接アクセスする方法です。
SQLアクセス は、リレーショナルデータベースシステムにアクセスするための標準言語であるSQLを使用してデータにアクセスする方法です。
オブジェクトアクセス は、オブジェクト指向言語でオブジェクトを操作するための表記法として幅広く利用されるドット記法を使用してデータにアクセスする方法です。
ダイレクトアクセスとSQLアクセスおよびオブジェクトアクセスでは、処理の抽象度が異なります。
抽象度が高くなるに伴い、内部的な処理のオーバヘッドが増加するため、単純な1スレッド単位でのアクセススピードの速さについては、ダイレクトアクセスが、SQLアクセスとオブジェクトアクセスに比較して速い場合が多いです。
しかしながら、今後SQLアクセスに関してより高速に処理できるよう様々な開発が進行中です。
これは InterSystems FAQ サイトの記事です。
実行ログデータなどトランザクション中にロールバックが発生しても前の状態に戻ってほしくないデータがあります。
それらのデータをロールバックされないデータベースIRISTEMPに配置することで上記の要件に対応できます。
ロールバックさせたくないテーブルの実体をこのデータベースにマッピングすることでロールバック後に情報を残すことができます。
ただし、このデータベースはIRIS再起動で内容がクリアされますので、永続的に保持したい場合には、いずれかのタイミング(ロールバック後等)で永続テーブルにコピーを行う必要があります。
また、これとは別に、トランザクション対象外としたいテーブル操作の前にプロセスのジャーナル記録を停止し、操作完了後にジャーナル記録を再開することで、その操作をトランザクション対象外にすることもできます。
ただしこの方法は、ミラーリングをお使いいただく際にはご使用いただけません。
これは InterSystems FAQ サイトの記事です。
メモ:xxx にはネームスペース名が入ります。
xxxENSTEMPは、プロダクション実行中に作成される一時データが保存されるデータベースです。
^IRIS.Temp.Ens* のグローバルがこのデータベースにマッピングされています。なお、xxxENSTEMPはジャーナルにかかれない設定のデータベースです。
xxxSECONDARYは、プロダクションで使用される資格情報を保存するデータベースです。
^Ens.SecondaryData* のグローバルがこのデータベースにマッピングされています。
注意:InterSystems IRIS for Health、HealthShare ではこれらデータベースは作成されません
詳細は以下ドキュメントをご覧下さい。
InterSystems IRIS の一時プロダクション・データの格納場所
InterSystems IRIS のパスワード資格情報の格納場所
関連する記事もご参照ください。
その昔、クラス/テーブルのデータ、ストリーム、インデックスのサイズを判断するのは簡単なことでした。%GSIZE を実行して、D、S、I グローバルをそれぞれ確認するだけで済みました。
ところが最近では、シャーディングや、最適化されたグローバル名、分離されたグローバルのインデックスでは以下のような %GSIZE 出力が生成されます。
Global Size Display of /irissys/data/IRIS/mgr/irisshard/
1:35 PM Dec 02 2020
IRIS.Msg 1 IRIS.MsgNames 1 IRIS.SM.Shard 1
IS.DGoWeK.1 24359 IS.DGoWeK.2 3 IS.DGoWeK.3 2810
IS.DGoWeK.4 2542 IS.V0Zli.1 373 IS.V0Zli.2 2
IS.k22Ht.1 238028 IS.k22Ht.2 3 IS.k22Ht.