クリアフィルター
記事
Megumi Kakechi · 2025年5月29日
これは InterSystems FAQ サイトの記事です。
InterSystems製品では、複数のプロセスが同時に同じデータにアクセスする場合、排他制御を行うためにロックを使用できます。ロックは、データの更新を正しく行い整合性を保つための仕組みで、あるデータに対する更新処理を制御するために使用します。ロックを操作するには、LOCK(L)というコマンドが使用できます。
こちらの記事では、InterSystems製品で使用できるロックの種類、LOCKコマンドの使い方をご紹介します。
★ロックの種類
増分
単純
排他(既定)
LOCK +^A
LOCK ^A
共有
LOCK +^A#"S"
LOCK ^A#"S"
プラス記号 (+) をつけると、増分ロックになります。1つのプロセスで複数の増分ロックを追加できます。プラス記号 (+) をつけないと、単純ロックになります。こちらは、1つのプロセスで1つのロックのみ所有できます。単純ロックコマンド実行時に既存のロックがあった場合、そのプロセスが保持している既存のロックをすべて削除し、新しいロックを追加します。
排他ロック:データを更新するために使用するロックです。プロセスが特定のロック名の付いた排他ロックを所有している時、その他のプロセスは、そのロック名の付いたロックを取得できません。SQLでいうと、INSERT, UPDATEやDELETE文の実行時にかかります。
共有ロック:データを参照していることを示すためのロックです。プロセスが特定のロック名の付いた共有ロックを所有しているときに、その他のプロセスは、そのロック名の付いた共有ロックを取得できます。ただし、その他のプロセスはそのロック名の付いた排他ロックを取得できません。SQLでいうと、Read Committed モードでの SELECT文の実行時にかかります。
★ロックの方法
ロックを追加する(lockname:ロック名※、locktype:後述)※ロック名は任意の名前ですが、共通の規則としてロックする項目(グローバル・変数等)の名前と同じロック名を使用します。
LOCK +lockname#locktype
ロックを削除(解放)する
LOCK -lockname#locktype
使用例:
(A) Lock ^a // このコマンドを実行すると、^bだけが最終的に残ります
Lock ^b // ※Lock ^b だけの場合、ほかのロックを全て解放した後、^bだけロックを持ちます
(B) Lock +^a // このコマンドを実行すると、^a,^bの二つロックが残ります。
Lock +^b
尚、正常に終了したプロセスは取得していたロックを全て解放します。
★ロックタイプ(locktype)
S — 共有ロックを追加します。"排他ロックと共有ロック" を参照してください。 E — エスカレートロックを追加します。"非エスカレート・ロックとエスカレート・ロック" を参照してください(後述)。 I — 即時アンロックタイプでロック解除を行います。 D — 遅延アンロックタイプでロック解除を行います。
※エスカレートロック大量のロックを管理するためにエスカレートロックを使用します。これは配列のノードをロックする場合に使用されます。例えば、同じ添え字レベルで複数のノードをロックする場合です。ロックのエスカレーションの例(テーブルロック)こちらの記事 でテーブルロックの例を紹介しておりますので、参考になさってください。
★ロック管理ユーティリティでできること
次のユーティリティでロックの管理が行えます。
1. 管理ポータルを使用する方法
⇒ 管理ポータル:システムオペレーション > ロック > ロックを表示(または管理)
2. ^LOCKTAB ユーティリティ を使用する方法
⇒ %SYS>do ^LOCKTAB
3. プログラムを使用する方法
⇒ プログラム内でロック情報を取得する方法
これらのユーティリティでは、主にロックの参照・解放(削除)が行えます。ロックテーブルの参照方法については、関連トピック ロックテーブルの参照方法とその見方 をご覧ください。
以下にそれぞれのユーティリティを使用した、ロックの削除方法をご紹介します。
☆ロックの削除手順(1の管理ポータルで行う方法)
管理ポータル:システムオペレーション > ロック > ロックを管理→ 該当ロックの「削除」リンクより削除を行います。
☆ロックの削除手順(2の ^LOCKTAB ユーティリティで行う場合)
%SYS>do ^LOCKTAB
:
Node Name: XXX
LOCK table entries at 05:22PM 03/06/2025
308464608 bytes usable, 308472544 bytes available.
Entry Process X# S# Flg W# Item Locked
1) 39740 1 ^["^^c:\intersystems\iris\mgr\"]ISC.LMFMON("License Monitor")
:
8) 30100 1 1 ^["^^c:\intersystems\iris\mgr\user\"]A
Waiters: 25164(XE)
Command=> D // 削除の時は D を入力
Entry to delete: 8 // 削除したいロックの番号を入力 + <Enter>
8) 30100 1 ^["^^c:\intersystems\iris\mgr\user\"]A
Are you sure you want to delete this lock? No => yes // Y(y) を入力+<Enter> でロックが削除される
Entry to delete: // 以下、Q + <Enter> で抜ける
:
☆ロックの削除手順(3のプログラムで行う場合)
// プロセスID=2004 が所有するすべてのロックを削除する
Set rc=##Class(SYS.Lock).DeleteAllLocks(2004)
// リモートクライアントシステム 'SystemA' が所有するすべてのロックを削除する
Set rc=##Class(SYS.Lock).DeleteAllLocks("CSystemA")
/// ロック名やプロセスを指定して削除する
// ^|"^^c:\intersystemsdb\mgr\user"|a(1) ロックを削除する
Set rc=##Class(SYS.Lock).DeleteOneLock("^|""^^c:\intersystemsdb\mgr\user""|a(1)")
// プロセスID=2004 が所有する ^|"^^c:\InterSystemsdb\mgr\user"|a(1) ロックを削除する
Set rc=##Class(SYS.Lock).DeleteOneLock("^|""^^c:\intersystemsdb\mgr\user""|a(1)",2004)
★ロックテーブル サイズの変更
以下メニューからロックテーブルのサイズを変更できます。
管理ポータル: [システム管理] > [構成] > [追加の設定] > [メモリ詳細設定] → locksiz
※バージョン2023.1以降では、デフォルト値は0でシステムに最適な値が割り当てられます。 この場合、gmheap パラメータで指定された共有メモリサイズのみでこのサイズが制限されます。※ロックテーブルサイズを変更する場合は、gmheapサイズもあわせて変更します。※ロックテーブルが一杯になるとコンソールログに、以下のようなエラーメッセージが表示されます。 02/08/25-00:05:09:248 (20093) 2 [Generic.Event] LOCK TABLE FULL!!! (Repeat messages will be suppressed for 20 minutes). ロックコマンド自体はエラーにはならず待ち状態になります(^LOCKTABには表示されません)。
【ご参考】適正なロックテーブルサイズの算出方法ロックテーブルの使用状況を簡単に確認する方法SQLのUPDATEやDELETEで、ある程度の数のレコードを一括更新するとSQLエラー -110 が発生します。SQLでレコードをSelectするとSQLエラー -114 が発生します現在の一般メモリヒープ(gmheap)と取得可能なロックテーブル(locksiz)最大サイズについてロックテーブルの参照方法とその見方
お知らせ
Toshihiko Minamoto · 2023年4月19日
インターシステムズは、InterSystems IRIS Data Platform、InterSystems IRIS for Health、HealthShare Health Connect、InterSystems IRIS Studio の 2023.1 リリースを一般提供開始(GA)したことを発表しました。
2023.1 は、拡張メンテナンス(EM)リリースです。2023.1では、多くのアップデートと機能拡張が追加されました。
また、Columnar Storageの本番対応、Bulk FHIR、MacOS 13 Venturaへの対応など、まったく新しい機能が追加されています。さらに、 Foreign Table を使用する機能を提供する新機能は「実験的」としてリリースされ、早期アクセスプログラム(EAP)を通じてアクセスできるようになる予定です。
リリースハイライト
プラットフォームのアップデート
InterSystems IRIS Data Platform 2023.1では、本番用に以下の新しいオペレーティングシステムをサポートします。
MacOS 13 Ventura.
アナリティクスとAIのエンハンス
Columnar Storage: SQLテーブルの新しいストレージオプションとして、IRISの従来の行ストレージと比べ、分析クエリを桁違いに高速化するColumnar Storageを、特定のユースケース向けに本番対応でサポートするようになりました。
インターオペラビリティと FHIR
Bulk FHIR サポート: InterSystems Bulk FHIR エクスポートは、FHIRサーバーの新機能で、市場で急速に支持を集めている機能です。
スピード、スケール、セキュリティのエンハンス
Foreign Table: このリリースでは、InterSystems IRIS で外部データを活用するための新しい (実験的) 機能が導入されました。外部テーブルは、SQL で作成したクエリに対して通常のテーブルとして表示されますが、そのデータは IRIS に物理的に格納されていません。データは、リモートファイル、サードパーティーのデータベース(オンプレまたはDBaaS)、またはECP接続が実用的でない別のIRISサーバーにある可能性があります。つまり、これらのテーブルのデータは IRIS によって管理されているわけではありませんが、IRIS に投影されています。この機能は「エクスペリメンタル」としてリリースされ、早期アクセスプログラム(EAP)を通じて利用できます。
メモリ設定: InterSystems IRIS の新規インストールでは、共有メモリやロックテーブルサイズの設定に、よりスマートなデフォルト値が使用されるようになりました。この新しいデフォルト値は、設定されたグローバル・バッファ・サイズ (ユーザが設定しない場合は、利用可能なシステム・メモリを考慮します) に基づいてベスト・プラクティスな設定を適用し、ほとんどの環境でうまく機能します。ユーザーは、従来通り、特定の値でこれらのデフォルト値を変更することができます。既存の設定には影響はありません。
プラットホームのスケーラビリティ: このリリースでは、大規模な本番環境において、最も要求の厳しい負荷に対応できるよう、スケーラビリティの強化が行われています。これには、デジャーナル時のジャーナルファイルの非同期読み取りや、非常に高い負荷の下でリソースの利用を最適化し、競合を制限する、Enterprise Cache Protocol(ECP)の最適化が含まれます。
ソフトウェアの入手方法
通常通り、Extended Maintenance (EM)リリースには、サポートされているすべてのプラットフォーム用のクラシックインストールパッケージと、Dockerコンテナ形式のコンテナイメージが付属しています。 詳細については、サポートされるプラットフォームを参照してください。
インストール・パッケージとプレビュー・キーは、WRCの InterSystems IRIS Data Platform または HealthShare のフルキットのページから入手できます。さらに、キットは評価サービスのウェブサイトでも提供しています。
InterSystems IRIS スタジオ は、Componentsの配布ページから入手できます。
InterSystems IRIS および IRIS for Health の Enterprise Edition と Community Edition の両方のコンテナイメージと、対応するすべてのコンポーネントは、Webインターフェースが新しくなった InterSystems Container Registry から入手できます。docker コマンドに関する追加情報については、以下の投稿をご覧ください。
InterSystems Container Registry の Web ユーザー・インターフェイスを発表
このリリースのビルド番号は、 2023.1.0.229.0 です。
ドキュメント
注目機能の詳細は、以下のリンクからご覧いただけます。
InterSystems IRIS 2023.1 documentation and release notes
InterSystems IRIS for Health 2023.1 documentation and release notes
HealthShare Health Connect 2023.1 documentation and release notes
また、本リリースに関連するアップグレード情報については、こちらのリンクをご確認ください。
お知らせ
Mihoko Iijima · 2020年11月2日
開発者の皆さん、こんにちは!
Interoperability(相互運用性)コンテストの続報の「テクノロジーボーナス」について紹介します。
対象となる技術は、以下の通りです。
BPL エディタを利用したビジネス・プロセスの開発、または、ビジネスルールとデータ変換(DTL)を使用した開発
カスタムアダプタを使用した開発
プロダクションエクステンション(PEX)Java または .NET を使用した開発
ワークフローエンジンを使用した開発
ZPM パッケージによるデプロイが行える開発環境
Docker コンテナを使用した開発
それぞれの詳細については以下ご参照ください。
BPL エディタを利用したビジネス・プロセスの開発、または、ビジネスルールとデータ変換(DTL)を使用した開発 - 1 point
IRIS の Interoperability(相互運用性)プロダクションの特徴の1つである、BPL エディタで記述できるビジネス・プロセスがあります。また、ビジネス・ルールは、Interoperability プロダクション内で実行したい処理を、ノーコード/ローコードのアプローチで指定できる開発エディタです(ビジネス・ルールを利用するためには、構築済ビジネス・プロセスを使用します)。
以下参考ドキュメントをご参照ください。
Interoperabilityの動作の仕組みについて記事
プロダクションについての解説する記事
ビジネス・プロセスについて解説する記事
ビジネス・プロセスの作成方法を解説するドキュメント
ビジネス・ルールのサンプルコード
ビジネス・ルールのドキュメント
カスタムアダプタを使用した開発 - 1 point
InterSystems Interoperability プロダクションでは、プロダクション内のビジネス・サービスやビジネス・オペレーションの開発に、外部システムとの通信を簡単に行うことができる「インバウンド/アウトバウンド・アダプタ」を利用することができます。アダプタは独自のカスタマイズを行うこともでき、今回のコンテストでは、カスタムアダプタを使用することでボーナスポイントを獲得できます。
カスタムアダプタ例(サンプル)
既存アダプタの種類についてはこちらをご参照ください。
Production EXtension (PEX) を使用した開発 - 2 points
PEX は、Interoperability プロダクションの Java/.NET 用拡張機能です。
プロダクションの開発に、Java/.NET の PEX を使用した開発を行った場合、ボーナスポイントを獲得できます。
詳しくは、デモや PEX のドキュメントをご参照ください。
ワークフローエンジンを使用した開発 - 1 point
IRIS Interoperability の1つの機能である「ワークフロー」は、一連の処理の中に「人の介在」を含むことができます(次のステップに移動するために、目視を必要とする/人による選択が必要 などの処理を追加できます)。
ワークフローを含めた場合ボーナスポイントを獲得できます。
ワークフローのドキュメント
WorkflowAPI と WorkflowUI-ngx というコミュニティモジュールもあり、Angular上に動作する素敵なUIレイヤーを提供しています。
ZPM パッケージによるデプロイが行える開発環境 - 1 point
フルスタックアプリケーション用に ZPM(ObjectScript Package Manager)パッケージをビルドして公開し、ZPM でデプロイできるように開発した場合、ボーナスポイントを獲得できます。
以下、ZPM クライアントがインストールされている IRIS でのコマンド実行例です。
zpm "install your-full-stack-solution-name"
ZPM クライアント、 ドキュメントもご参照ください。
Docker コンテナを使用した開発 - 1 point
Dockerコンテナ上で動く IRIS を使用した場合、ボーナスポイントを獲得できます。
以下の開発テンプレートを使用すれば、ボーナスポイントを獲得できます。
IRIS Interoperability Template
掲載されている技術の使用方法について、ご質問がありましたら、お気軽にお問い合わせください。
ぜひ、コンテストへのご応募ご検討ください!
お知らせ
Mihoko Iijima · 2021年1月4日
開発者の皆様 🎍あけましておめでとうございます🎍 今年もどうぞよろしくお願いいたします!
2021年最初の IRIS プログラミングコンテストの開催が発表されました👏👏
今回のお題は ⚡️ InterSystems Multi-Model Contest ⚡️ です!
応募期間は 2021年1月11日~24日 です!
(投票期間は 2021年1月25日~31日、勝者発表は 2月1日を予定しています)
優勝特典
1、審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。
🥇 1位 - $2,000
🥈 2位 - $1,000
🥉 3位 - $500
2、開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。
🥇 1位 - $1,000
🥈 2位 - $500
🥉 3位 - $250
複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。
参加資格
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
コンテストのスケジュール
1月11日~24日 応募期間(Open Exchange へ作成されたアプリケーションをアップロードいただける期間=2週間です。この期間内であればアップロード後も自由に編集できます。)
1月25日~31日 投票(1週間)
2月1日 勝者発表(US時間に発表します)
コンテストのテーマ
💡 マルチモデルアプリケーション 💡
InterSystems IRIS を使用してマルチモデルソリューションを開発いただきます。
InterSystems IRIS はマルチモデルデータに対応したDBMSです。内部的には全てをグローバルに格納していますが、データベースに対して、キーバリュー、SQL、オブジェクト、ドキュメントモデルでアクセスでき、すぐに利用できるAPIも提供されています。IRISでは、独自モデル(例えば GraphDB やカラムストア型 など)を開発し、新しいデータモデルを提供するAPIを公開することもできます。
このコンテストでは、少なくとも2つの異なるモデルを使用してデータにアクセスするアプリケーションを作成してください(例:キーバリューとSQL、オブジェクトとリレーショナル、DocDBとキーバリュー など)。
アプリケーションは、 IRIS Community Edition 、 IRIS for Health Community Edition 、 IRIS Advanced Analytics Community Editionのいずれかで動作する必要があります。
また、アプリケーションはオープンソースであり、GitHubに公開していることも条件の一つです。
Helpful resources
1. アクセス方法に関する情報:
ドキュメント:
Multi-model data aсcess
1.1. グローバル (キーバリュー)
グローバルはIRIS データベース内に保存、管理できる多次元配列です。グローバルへは、ObjectScript と Native API(.NET/Java/Python/Node.js) を使用してアクセスできます。
ツール:
管理ポータルでのグローバルの管理
ドキュメント:
多次元ストレージの使用法 (グローバル)
グローバルの使用法
記事:
グローバルはデータを保存するための魔法の剣です パート1
The art of mapping Globals to Classes
ビデオ:
Globals QuickStart
1.2. SQL アクセス
InterSystems IRIS は ObjectScript/REST API と ODBC/JDBC 経由でのSQLアクセスを提供しています。
ツール:
VSCode SQL Tools
DBeaver
管理ポータルの SQL インタフェースの使用法
Other SQL tools
ドキュメント:
SQL Access
InterSystems SQL リファレンス
記事:
InterSystems IRIS のクラスクエリ
1.3. オブジェクトアクセス
InterSystems IRISは、ObjectScript/REST API、Java/.NET用のXEPを利用して、オブジェクトのインスタンスをグローバルに保存/変更する方法を提供しています。
ドキュメント:
Object Access
サーバー側プログラミング入門ガイド
1.4. ドキュメントアクセス
InterSystems IRISでは、REST APIとODBC/JDBC(SQL)を介してJSON形式のドキュメントを保存・管理するための DocDB を提供しています。
ドキュメント:
DocDB
2.コンテスト応募方法(このページ末尾のビデオをご参照ください)
3. オンラインコース(英語):
Multi-Model QuickStart
4. ビデオ:
Multi-Model Development
Multi-Inheritance in a Multi-Model Environment
【はじめての InterSystems IRIS】セルフラーニングビデオ:基本その3:IRIS でクラス定義を作ろう(オブジェクト操作の練習)
【はじめての InterSystems IRIS】セルフラーニングビデオ:アクセス編:Python の NativeAPI に挑戦
【はじめての InterSystems IRIS】セルフラーニングビデオ:アクセス編:Python から PyODBC を使って IRIS に接続してみよう
【はじめてのInterSystems IRIS】セルフラーニングビデオ:アクセス編:IRIS で作成する REST サーバの仕組み
審査及び投票ルール(英語)
インターシステムズ社のプロダクトマネージャ、Developer Communityのモデレータ、グローバルマスターアドボケイト(VIPレベル)等、Developer Community 内での投票も行われます。
コンテストの審査および投票ルールについて詳細はこちらをご覧ください。
❗️ コンテスト規約については、こちらをご参照ください。❗️
ご応募方法について
以下の応募方法ビデオをご参照ください。
以下、コンテストに応募する迄の手順をご説明します。
コンテスト応募までの流れは以下の通りです(※ビデオでは、3番以降の内容をご紹介しています)。
1、IRISプログラミングコンテスト用テンプレートを使用して、開発環境を準備します。
2、コンテスト用アプリケーションを作成します。
3、コンテストの準備が完了したら、ソースコードをローカルのGitリポジトリへコミットします。
初回コミット時に、Gitの初期設定がないためコミットが失敗することがあります。その場合は、以下のコマンドでGitユーザ名とEmailを設定します。
git config --global user.name "ここにユーザ名"git config --global user.email "ここにメールアドレス”
4、ローカルのGitリポジトリのコミットが完了したら、リモートのGitリポジトリを作成します。
リポジトリ作成後、リモートリポジトリのURLをコピーします。
5、リモートのGitリポジトリへPushします。
git push ここにリモートのリポジトリのURL
6、OpenExchangeにログインし、アプリケーションを追加します。
※事前にDeveloper communityでユーザアカウントを作成する必要があります。ログイン後、Profile→Applications から Application をクリックし、4 でコピーしたリモートのGitリポジトリのURLを設定します。アプリケーションを登録すると、画面右上に「Send Approval」のボタンが表示されるので、クリックします。再度作成したアプリケーションを開くと、「Apply for Contest」ボタンが表示されるので、クリックすると応募が完了します。
お知らせ
Mihoko Iijima · 2021年2月1日
開発者の皆さん、こんにちは!第10回目のコンテストが発表されました👏👏
今回は 🏆 InterSystems グランプリ・プログラミングコンテスト 🏆 です!
今回は、いつものコンテストと賞金が異なり 賞金総額:16,000ドル です( ゚Д゚)
応募期間は 2021年2月8日~2月28日 (投票期間は 2021年3月1日~7日、勝者発表は 3月8日)です。
優勝特典
1、審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。
🥇 1位 - $6,000
🥈 2位 - $3,000
🥉 3位 - $2,000
2、開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。
🥇 1位 - $3,000
🥈 2位 - $1,500
🥉 3位 - $500
複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。
参加資格
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
コンテストのスケジュール
2月8日~28日 応募期間(Open Exchange へ作成されたアプリケーションをアップロードいただける期間=2週間です。この期間内であればアップロード後も自由に編集できます。)
3月1日~7日 投票(1週間)
3月8日 勝者発表(US時間に発表します)
コンテストのテーマ
💡 InterSystems IRIS applications 💡
InterSystems IRIS をバックエンド(API またはデータベース)として使用しているアプリケーションで、任意のタイプの InterSystems IRIS の API またはデータモデルを使用しているアプリケーションをご応募ください。
昨年のインターシステムズコンテストシリーズで発表したアプリケーションを改良してグランプリにご応募いただく方法でも大丈夫です。もちろん!100%新しいアプリケーションのご応募も大歓迎です!
ご応募いただくアプリケーションは、IRIS Community Edition、IRIS for Health Community Edition、IRIS Advanced Analytics Community Edition のいずれかで動作するように作成してください。
また、アプリケーションはオープンソースであり、GitHub で公開されていることが条件となります。
Helpful resources
アプリケーション例は以下の通りです。
objectscript-docker-template
rest-api-contest-template
native-api-contest-template
integratedml-demo-template
PythonGateway-template
iris-fhir-template
iris-fullstack-template
iris-interoperability-template
iris-analytics-template
コンテスト応募方法(このページ末尾のビデオをご参照ください)
審査及び投票ルール(英語)
インターシステムズ社のプロダクトマネージャ、Developer Communityのモデレータ、グローバルマスターアドボケイト(VIPレベル)等、Developer Community 内での投票も行われます。
コンテストの審査および投票ルールについて詳細はこちらをご覧ください。
開発者の皆様からの素晴らしアプリケーションのご応募、お待ちしております!
❗️ コンテスト規約については、こちらをご参照ください。❗️
ご応募方法について
以下の応募方法ビデオをご参照ください。
以下、コンテストに応募する迄の手順をご説明します。
コンテスト応募までの流れは以下の通りです(※ビデオでは、3番以降の内容をご紹介しています)。
1、IRISプログラミングコンテスト用テンプレートを使用して、開発環境を準備します。
2、コンテスト用アプリケーションを作成します。
3、コンテストの準備が完了したら、ソースコードをローカルのGitリポジトリへコミットします。
初回コミット時に、Gitの初期設定がないためコミットが失敗することがあります。その場合は、以下のコマンドでGitユーザ名とEmailを設定します。
git config --global user.name "ここにユーザ名"
git config --global user.email "ここにメールアドレス”
4、ローカルのGitリポジトリのコミットが完了したら、リモートのGitリポジトリを作成します。
リポジトリ作成後、リモートリポジトリのURLをコピーします。
5、リモートのGitリポジトリへPushします。
git push ここにリモートのリポジトリのURL
6、OpenExchangeにログインし、アプリケーションを追加します。
※事前にDeveloper communityでユーザアカウントを作成する必要があります。ログイン後、Profile→Applications から Application をクリックし、4 でコピーしたリモートのGitリポジトリのURLを設定します。アプリケーションを登録すると、画面右上に「Send Approval」のボタンが表示されるので、クリックします。再度作成したアプリケーションを開くと、「Apply for Contest」ボタンが表示されるので、クリックすると応募が完了します。 グランプリ・プログラミングコンテストについての追加情報があります!
今回のコンテストでは、開発者同士でチームを組み、共同開発したアプリケーションをご応募いただけます!
1チーム 2~5名 までご参加いただけます 👩💻🧑💻👨💻
※ チームでご応募いただく場合の注意点 ※アプリケーションの README にチームメンバー名の記載をお忘れなく!(開発者コミュニティのユーザプロファイルのリンクなど掲載お願いします!)
お知らせ
Mihoko Iijima · 2021年3月1日
開発者のみなさん、こんにちは!
第10回 InterSystems グランプリ・プログラミングコンテストの投票が開始されました!
🔥 これだ!と思う一押し作品に投票お願いします! 🔥
投票期間:3月1日~7日 (1週間)
投票方法は?
コミュニティメンバーはどなたでも投票いただけます!
投票種別は、Expert Nomination と Community Nomination に分かれています。コミュニティメンバーは、Community Nomination を選択いただき、どの作品がどの順位になるかを指定しながら投票してください!
Community Leaderboard:
順位
ポイント
1位
3点
2位
2点
3位
1点
そして、エキスパートノミネーションからの投票は以下の通りです(エキスパートのレベルが上がると獲得できるポイントも増えます!)。
Experts Leaderboard:
エキスパートレベル
順位
1位
2位
3位
GM、モデレーター、プロダクトマネージャーのVIPレベル
9点
6点
3点
グローバルマスターズのエキスパートレベル
6点
4点
2点
グローバルマスターズのスペシャリストレベル
3点
2点
1点
エキスパートリーダーボードの投票はコミュニティリーダーボードにもポイント(1位3点、2位2点、3位1点)が加算されます。
投票方法 詳細
Open Exchange にログインします(開発者コミュニティのアカウントでログインできます)。
投票ボタンは、開発者コミュニティ内で、質問/回答/記事の掲載/投稿に対するコメント など 記載いただいた方に対して有効になります。
ボタンが押せない場合は、コミュニティへのコメントやオリジナルの記事など、書き込みお願いします!
世界の IRIS 開発者が作成した ✨素敵なアプリ✨ が公開されています!ぜひ 🔥これだ🔥 と思う作品に投票お願いします!
投票期間であれば、一度投票した後も別のアプリケーションへ投票し直すこともできます(投票期間は1週間あります)。
なお、コンテスト参加者は投票週間の間にバグの修正やアプリケーションの改善を行うことができますので、アプリケーションのリリース情報についてもお見逃しなく!(サブスクリプション登録が行えます)
➡️ InterSystems オンラインコンテストの新しい投票ルールについて詳細はこちらをご参照ください。
記事
Mihoko Iijima · 2020年12月17日
みなさん、こんにちは。
昨日、Apache Spark、Apache Zeppelin、そして InterSystems IRIS を接続しようとしたときに問題が発生したのですが、有用なガイドが見つからなかったので、自分で書くことにしました。
### **はじめに**
Apache Spark と Apache Zeppelin とは何か、そしてどのように連携するのかを理解しましょう。
Apache Spark はオープンソースのクラスタコンピューティングフレームワークです。暗黙的なデータ並列化と耐障害性を備えるようにクラスタ全体をプログラミングするためのインターフェースを提供しています。そのため、ビッグデータを扱う必要のある場合に非常に役立ちます。
一方の Apache Zeppelin はノートブックです。分析や機械学習に役立つ UI を提供しています。組み合わせて使う場合、IRIS がデータを提供し、提供されたデータを Spark が読み取って、ノートブックでデータを処理する、というように機能します。
注意: 以下の内容は、Windows 10 で行っています。
### **Apache Zeppelin**
では、必要なすべてのプログラムをインストールしましょう。
まず、[Apache Zeppelin の公式サイト](https://zeppelin.apache.org/download.html)から Apache Zeppelin をダウンロードします。私は **zeppelin-0.8.0-bin-all.tgz** を使用しました。このファイルには、**Apache** **Spark**、**Scala**、および **Python** が含まれます。
ダウンロードファイルを任意のフォルダに解凍します。解凍後、Zeppelin フォルダのルートから \bin\zeppelin.cmd を呼び出して、Zeppelin を起動します。
「**Done, zeppelin server started**」が表示されたら、ブラウザでhttp://localhost:8080 を開きます。
すべてうまくいった場合、「**Welcome to Zeppelin!**」メッセージが表示されます。

注意: InterSystems IRIS がインストール済みであることを前提としています。まだインストールしていない場合は、次のステップに進む前に IRIS をダウンロードしてインストールしてください。
### **Apache Spark**
ブラウザウィンドウに Zeppelin ノートブックが開いている状態です。右上の「**anonymous**」をクリックし、「**Interpreter**」をクリックします。下にスクロールして「**spark**」を見つけてください。

「spark」の横に「 **edit** 」ボタンがあるので、それをクリックしましょう。 下にスクロールして、**intersystems-spark-1.0.0.jar** と **intersystems-jdbc-3.0.0.jar** に依存関係を追加します。 私の環境は InterSystems IRIS を C:\InterSystems\IRIS\ ディレクトリにインストールしているため、追加しなければならないものは以下の場所にあります。

私の環境でのファイルは以下の通りです。

そして保存します。
### **動作確認**
動作確認してみましょう。 新しいノートを作成し、段落に次のコードを貼り付けます。
var dataFrame=spark.read.format("com.intersystems.spark").option("url", "IRIS://localhost:51773/NAMESPACE").option("user", "UserLogin").option("password", "UserPassword").option("dbtable", "Sample.Person").load()
// dbtable - name of your table
URL - IRIS アドレスを 次の書式で指定します。IRIS://ipAddress:superserverPort/namespace
**プロトコル「IRIS」** は、Java 共有メモリ接続を提供する TCP/IP 経由の JDBC 接続です。
**ipAddress** - InterSystems IRIS インスタンスの IP アドレス。 ローカルで接続している場合は、localhost の代わりに 127.0.0.1 を使用してください。
**superserverPort** - IRIS インスタンスのスーパーサーバーのポート番号。Web サーバーのポート番号とは異なります。 スーパーサーバーのポート番号を見つけるには、管理ポータルを開き、画面上部にある「概要」のリンクをクリックして表示される画面の「Superserver Port」を確認してください。
**namespace** - InterSystems IRIS インスタンスの既存のネームスペースを指定します。 このデモでは、USER ネームスペースに接続しています。
この段落を実行しましょう。 うまくいけば、「FINISHED」が表示されます。
私のノートブックでの実行例です。
まとめ
この記事の内容をまとめると、Apache Spark、Apache Zeppelin、および InterSystems IRIS がどのように連携できるかがわかりました。 次の記事では、データ分析についてお話しします。
リンク
* [Apache Spark の公式サイト](https://spark.apache.org)
* [Apache Spark のドキュメント](https://spark.apache.org/documentation.html)
* [IRIS プロトコル](https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_jdbc)
* [InterSystems Spark コネクタの使用](https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=BSPK)
記事
Toshihiko Minamoto · 2021年2月11日
InterSystems IRIS デプロイガイド - AWS CloudFormation テンプレート
注意: 本ガイド (特に前提条件のセクション) を理解するには、AWS に関する中級から上級レベルの知識が必要になります。 S3 バケット、EC2 インスタンスの IAM ロール、VPC、サブネットを作成する必要があります。 また、InterSystems バイナリへのアクセス (通常は WRC サイトからダウンロード可) および IRIS のライセンスキーも必要になります。
2020 年 8月 12日
Anton Umnikov
テンプレートのソースコードは、こちらから入手していただけます:
目次
InterSystems IRIS デプロイガイド – AWS パートナーネットワーク
はじめに
前提条件と要件
所要時間
製品ライセンスとバイナリ
AWS アカウント
IAM エンティティ (ユーザー)
EC2 の IAM ロール
S3 バケット
VPC とサブネット
EC2 キーペア
必要な知識
アーキテクチャ
マルチ AZ 配置による耐障害性を備えたアーキテクチャダイアグラム (優先)
シングルインスタンンス、シングル AZ 配置のアーキテクチャダイアグラム (開発およびテスト)
デプロイメント
セキュリティ
プライベートサブネットのデータ
保存されている IRIS データの暗号化
転送中の IRIS データの暗号化
IRIS Management Portal への安全なアクセス
ログ / 監査 / モニタリング
サイジング / コスト
デプロイアセット
デプロイオプション
デプロイアセット (プロダクションに推奨)
CloudFormation テンプレートの入力パラメータ
クリーンアップ
デプロイのテスト
正常性チェック
フェイルオーバーテスト
バックアップと回復
バックアップ
インスタンスの障害
アベイラビリティーゾーン (AZ) の障害
リージョンの障害
RPO/RTO
ストレージ容量
セキュリティ証明書の期限
日常的なメンテナンス
緊急メンテナンス
サポート
トラブルシューティング
InterSystems サポートへの問い合わせ
付録
IAM Policy for EC2 instance
はじめに
InterSystems は、ユーザーの皆さまに InterSystems と AWS のベストプラクティスに則したかたちで独自の InterSystems IRIS® データプラットフォームをセットアップしていただけるよう CloudFormation テンプレートを提供しております。
本ガイドでは、CloudFormation テンプレートをデプロイするステップを詳しく解説していきます。
本ガイドでは、InterSystems IRIS CloudFormation テンプレートをデプロイする 2 種類の方法をご紹介します。 1 つ目は、複数のアベイラビリティーゾーン (AZ) を使い、プロダクションのワークロードを対象とした可用性の高い方法で、2 つ目は、開発とテストのワークロードを対象に、単一のアベイラビリティーゾーンにデプロイする方法です。
前提条件と要件
このセクションでは、当社のソリューションを実行、操作していただくための前提条件と要件について詳しく説明します。
所要時間
デプロイ自体は 4 分程度で完了しますが、前提条件やテストの時間を入れると、最大 2 時間ほどかかります。
製品ライセンスとバイナリ
InterSystems のお客様には、https://wrc.intersystems.com より InterSystems IRIS のバイナリをご使用いただけます。 WRC の認証情報を使ってログインしてから、リンクに従って Actions -> SW Distributions -> InterSystems IRIS と順に移動してください。 このデプロイガイドは、InterSystems IRIS 2020.1 のビルド 197 の Red Hat プラットフォーム向けに作成されています。 IRIS のバイナリファイル名は、 ISCAgent-2020.1.0.215.0-lnxrhx64.tar.gz および IRISHealth-2020.1.0.217.1-lnxrhx64.tar.gz形式で書かれています。
InterSystems IRIS のライセンスキーは、既存のライセンスキー (iris.key) を使用いただけるはずです。 また、InterSystems IRIS Evaluation Service (https://download.intersystems.com/download/register.csp) より評価キーをリクエストしていただくこともできます。
AWS アカウント
セットアップ済みの AWS アカウントが必要です。 お持ちでない方は、 https://aws.amazon.com/getting-started/ よりセットアップしてください。
IAM エンティティ (ユーザー)
IAM (ユーザーまたはロール) を作成します。 IAM ユーザーは、AWS CloudFormation のアクションを許可するポリシーが必要です。 CloudFormation テンプレートをデプロイするのに、ルートアカウントは使わないでください。 AWS CloudFormation のアクションに加え、スタックを作成または削除する IAM ユーザーは、スタックテンプレートに依拠する別のアクセス権限も必要になります。 このデプロイでは、次のセクションで紹介するすべてのサービスへのアクセス権が必要になります。
参考資料: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html
EC2 の IAM ロール
CloudFormation テンプレートは、EC2 インスタンスが S3 バケットにアクセスし、CloudWatch にログを入力するのを許可する IAM ロールが必要です。 そうようなロールに関連するポリシーの例については、「IAM Policy for EC2 instance」と題した付録をご参照ください。
参考資料: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html
S3 バケット
「my bucket」という名前の S3 バケットを作成し、IRIS のバイナリファイルと iris.key をコピーします。
BUCKET=
aws s3 mb s3://$BUCKET
aws s3 cp ISCAgent-2020.1.0.215.0-lnxrhx64.tar.gz s3://$BUCKET
aws s3 cp IRISHealth-2020.1.0.217.1-lnxrhx64.tar.gz s3://$BUCKET
aws s3 cp iris.key s3://$BUCKET
VPC とサブネット
テンプレートは、IRIS を既存の VPC とサブネットにデプロイするようにデザインされています。 AZ が 3 つ以上あるリージョンでは、3 つの異なる AZ でプライベートサブネットを 3 つ作成することを推奨しています。 Bastion Host は、VPC 内にあるパブリックサブネットのいずれかに配置します。 CloudFormation テンプレート (https://docs.aws.amazon.com/codebuild/latest/userguide/cloudformation-vpc-template.html) を基に VPC とサブネットを作成するには、AWS の例に従ってください。
EC2 キーペア
このテンプレートによってプロビジョンされる EC2 インスタンスにアクセスするには、EC2 キーペアが少なくとも 1 つは必要です。 詳細は、こちらのガイドをご参照ください: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html。
必要な知識
以下の AWS サービスに関する知識が必要になります。
Amazon Elastic Compute Cloud (Amazon EC2)
Amazon Virtual Private Cloud (Amazon VPC)
AWS CloudFormation
AWS Elastic Load Balancing
AWS S3
このデプロイを実行するにあたり、アカウント制限の引き上げは必要ありません。
適切なポリシーやアクセス権限の詳細は、こちらでご確認ください
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html。
注意: AWS アソシエイト認定をお持ちのユーザーなら、十分な知識を修得していると思われます。
アーキテクチャ
このセクションでは、考えられる 2 つのパターンのデプロイを対象としたアーキテクチャダイアグラムをご紹介し、アーキテクチャデザインの選択肢についても解説します。
マルチ AZ 配置による耐障害性を備えたアーキテクチャダイアグラム (優先)
優先されるこのオプションでは、高い可用性と耐障害性を確保するために、IRIS のミラー化されたインスタンスが 2 つのアベイラビリティーゾーンでロードバランサーの後に置かれます。 アベイラビリティーゾーンが 3 以上あるリージョンでは、Arbiter ノードが 3 つ目の AZ に置かれます。
データベースノードは、プライベートサブネットに置かれます。 Bastion Host は、同じ VPC 内のパブリックサブネットにあります。

Network Load Balancer は、データベースのトラフィックを現在のプライマリ IRIS ノードに移動させます。
Bastion Host は、IRIS EC2 インスタンスへの安全なアクセスを実現します。
IRIS は、すべての顧客データを暗号化された EBS ボリュームに保存します。
EBS は暗号化され、AWS Key Management Service (KMS) により管理されるキーを使用します。
転送中のデータの暗号化が必要とされる規制ワークロードについては、インスタンスの r5n ファミリーを使用すると、インスタンス間のトラフィックが自動的に暗号化されるので便利です。 IRIS レベルでトラフィックを暗号化することも可能ですが、CloudFormation はこれを有効化していません (本ガイドの「転送中の IRIS データの暗号化」のセクションをご覧ください)。
セキュリティグループを使用すると、必要なトラフィックだけを許可できるため、アクセスを可能な限り制限できます。
シングルインスタンンス、シングル AZ 構成アーキテクチャダイアグラム (開発およびテスト)
InterSystems IRIS は、開発や評価を行う目的で、1 つのアベイラビリティーゾーンにデプロイすることもできます。 データフローやアーキテクチャのコンポーネントは、前のセクションで説明したものと同じです。 このソリューションは、高い可用性も、耐障害性も提供しないため、プロダクションでの使用には適していません。

デプロイメント
「前提条件」のセクションで作成した IAM エンティティ (ソリューションのデプロイに必要な権限を持つ IAM エンティティ) を使って、AWS アカウントにログインします。
VPC、S3 バケット、IRIS バイナリ、ライセンスキーなど、前提条件がすべて整っていることを確認します。
以下のリンクをクリックし、マルチ AZ 配置による耐障害性を備えた CloudFormation テンプレートをデプロイします (デプロイ先は us-east-1): https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=InterSystemsIRIS&templateURL=https://isc-tech-validation.s3.amazonaws.com/MirrorCluster.yaml。
「Step 1 - Create Stack」で、「Next」ボタンをクリックします。
「Step 2 - Specify stack details」で、要件に合わせて CloudFormation パラメータを入力、調整します。
「Next」ボタンをクリックします。
「Step 3 - Configure stack options」で、オプションのタグ、権限、詳細オプションを入力、調整します。
「Next」ボタンをクリックします。
CloudFormation の設定を確認します。
「Create Stack」ボタンをクリックします。
CloudFormation テンプレートがデプロイされるまで、4 分ほど待ちます。
デプロイのステータスが「CREATE_COMPLETE」になっていれば、デプロイは成功です。
ステータスが「CREATE_FAILED」になっていれば、本ガイドの「トラブルシューティング」のセクションをご覧ください。
デプロイが完了したら、本ガイドの「正常性チェック」を実行してください。
セキュリティ
このセクションでは、このガイドを実行してデプロイされる InterSystems IRIS のデフォルト設定、ベストプラクティスの概要、AWS でソリューションをセキュリティ保護するオプションについて解説します。
プライベートサブネットのデータ
InterSystems IRIS の EC2 インスタンスは、プライベートサブネットに配置し、それへのアクセスは Bastion Host を経由する場合か、ロードバランサーを経由するアプリケーションに限定する必要があります。
保存されている IRIS データの暗号化
InterSystems IRIS を実行するデータベースインスタンスでは、保存データは基になる (かつ暗号化されている) EBS ボリューム内に格納されます。 この CloudFormation テンプレートは、アカウントのデフォルトの AWS マネージドキーで暗号化される「aws/eb」という名前の EBS ボリュームを作成します。
転送中の IRIS データの暗号化
この CloudFormation では、クライアントとサーバー間の接続と、インスタンス間の接続はセキュリティ保護されません。 転送中のデータを暗号化する必要がある場合は、デプロイが完了してから、以下のリンクに記載されているステップを実行してください。
SuperServer 接続 (JDBC/ODBC の接続) で SSL を有効化するステップ: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCAS_ssltls#GCAS_ssltls_superserver
IRIS EC2 インスタンス間では、耐久性を備えたマルチ AZ 構成のトラフィックも暗号化が必要になる場合があります。 これは、ミラー化に対し SSL 暗号化を有効にする (https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCAS_ssltls#GCAS_ssltls_mirroring) か、インスタンス間のトラフィックを自動的に暗号化する、インスタンスの r5n ファミリーに切り替えることで実現できます。
AWS Certificate Manager (ACM) を使用すれば、Secure Sockets Layer/Transport Layer Security (SSL/TLS) 証明書のプロビジョン、管理、デプロイを簡単に行えます。
IRIS Management Portal への安全なアクセス
デフォルトで、IRIS Management Portal は、Bastion Host 経由でのみアクセスできるようになっています。
ログ / 監査 / モニタリング
InterSystems IRIS は、messages.log ファイルにログ情報を保管します。 CloudFormation では、追加のログ / モニタリングサービスはセットアップされません。 こちらに記載される構造化ログを有効化することを推奨します。
https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=ALOG
CloudFormation テンプレートは、InterSystems IRIS と CloudWatch の連携をインストールしません。 InterSystems では、https://github.com/antonum/CloudWatch-IRIS の InterSystems IRIS と CloudWatch の連携を推奨しています。 これにより、IRIS のメトリクスとログが messages.log ファイルから AWS CloudWatch に収集されます。
CloudFormation テンプレートは、AWS CloudTrail のログを有効化しません。 CloudTrail のログを有効化するには、CloudTrail のサービスコンソールに移動し、CloudTrail のログを有効化します。 CloudTrail を使用すると、AWS インフラストラクチャで実行されるアクションに関連するアクティビティは、イベントとして CloudTrail に記録されます。 これにより、AWS アカウントのガバナンス、コンプライアンス、運用、リスクの監査を有効化できます。
参考資料: https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html
InterSystems では、InterSystems IRIS のログとメトリクスのモニタリング、および少なくとも以下のインジケーターに対しアラートを設定することを推奨しています。
重要度 2 と 3 のメッセージ
ライセンスの消費
ジャーナルとデータベースのディスク領域が不足している
Write Daemon のステータス
Lock Table ステータス
上の内容に加え、ユーザーの皆さまには独自のモニタリングメトリクス、アラートメトリクス、アプリケーション固有の KPI を指定することを推奨しています。
サイジング / コスト
このセクションでは、本ガイドの「デプロイアセット」のセクションで説明する AWS のリソースを作成します。 このデプロイの実行中に使用される AWS サービスのコストはお客様の負担となります。 InterSystems IRIS のデプロイに最低限必要な設定をするだけでも、高い可視性とセキュリティが確保されます。
本ガイドのテンプレートでは、InterSystems IRIS の BYOL (Bring Your Own License「ライセンスは各自で用意する」) ライセンスモデルを採用しています。
InterSystems IRIS Marketplace のページでは、Pay Per Hour IRIS Pricing (時間課金制の IRIS 使用料金) についてご説明しています: https://aws.amazon.com/marketplace/pp/B07XRX7G6B?qid=1580742435148&sr=0-3
BYOL モデルの料金に関する詳細は、https://www.intersystems.com/who-we-are/contact-us/ より InterSystems までお問い合わせください。
正常に機能するプラットフォームを提供するには、以下の AWS アセットが必要です。
EC2 インスタンス 3 つ (EBS ボリュームとプロビジョンされた IOPS を含む)
Elastic Load Balancer 1 つ
次のテーブルでは、デプロイ用の CloudFormation テンプレートに組み込まれる EC2 と EBS のキャパシティおよび AWS リソースのコスト (単位: $/月) に関する推奨事項を示しています。
ワークロード
開発 / テスト
小規模
中規模
大規模
EC2 DB*
m5.large
2 * r5.large
2 * r5.4xlarge
2 * r5.8xlarge
EC2 Arbiter*
t3.small
t3.small
t3.small
t3.small
EC2 Bastion*
t3.small
t3.small
t3.small
t3.small
EBS SYS
gp2 20GB
gp2 50GB
io1 512GB 1,000iops
io1 600GB 2,000iops
EBS DB
gp2 128GB
gp2 128GB
io1 1TB 10,000iops
io1 4TB 10,000iops
EBS JRN
gp2 64GB
gp2 64GB
io1 256GB 1,000iops
io1 512GB 2,000iops
計算コスト
85.51
199.71
1506.18
2981.90
EBS ボリュームのコスト
27.20
27.20
450.00
1286.00
EBS IOPS コスト
-
-
1560.00
1820.00
サポート (ベーシック)
-
-
351.62
608.79
コスト合計
127.94
271.34
3867.80
6696.69
計算リンク
計算
計算
計算
計算
*すべての EC2 インスタンスには追加で gp2 の EBS ルートボリュームが 20GB 含まれます。
AWS の推定コストは、バージニア州北部の地域のオンデマンド料金を基に計算されています。 スナップショットとデータ転送のコストは含まれていません。 料金に関する最新情報は、AWS 料金を参照してください。
デプロイアセット
デプロイオプション
InterSystems IRIS CloudFormation テンプレートには、デプロイオプションが 2 つあります。 マルチ AZ 配置オプションは、プロダクションのワークロードに適した、可用性が高く、冗長性を備えたアーキテクチャを提供します。 シングル AZ 配置オプションは、低コストのオプションで、開発やテストのワークロードに適しています。
デプロイアセット (プロダクションでの使用に推奨)
InterSystems IRIS のデプロイメントは、CloudFormation テンプレートを使って実行されます。同テンプレートは、入力パラメータを受け取り、それをネストされた適切なテンプレートに渡します。 それらは、条件や依存関係に従って順番に実行されます。
作成される AWS リソース
VPC セキュリティグループ
IRIS ノードと Arbiter の EC2 インスタンス
Network Load Balancer (NLB) (Amazon Elastic Load Balancing (Amazon ELB))
CloudFormation テンプレートの入力パラメータ
AWS 全般
EC2 Key Name Pair
EC2 インスタンスロール
S3
IRIS のディストリビューションファイルとライセンスキーがある S3 バケットの名前。
ネットワーク
リソースが起動される個別の VPC とサブネット。
データベース
データベースマスターパスワード
データベースノードの EC2 インスタンスタイプ
スタックの作成 マスターテンプレートの出力は、JDBC クライアントを InterSystems IRIS に接続する際に使用できる JDBC エンドポイント、Bastion Host のパブリック IP、および両方の IRIS ノードのプライベート IP、と 4 つの出力があります。
クリーンアップ
本ガイドを実行した結果デプロイされるリソースを削除するには、AWS CloudFormation Delete ドキュメンテーションに記載されているステップを実行してください。
デプロイとの統合やサポートの実施中に手動で作成したその他のリソース (S3 バケットや VPC など) を削除します。
デプロイのテスト
正常性チェック
Node 01/02 Management Portal へのリンクをクリックします。 ユーザー名「SuperUser」および CloudFormation テンプレートで選択したパスワードを使ってログインします。
System Administration -> Configuration -> Mirror Settings -> Edit Mirror と順に移動します。 システムに 2 つのファイルオーバーメンバが設定されていることを確認します。
ミラー化されたデータベースが作成され、アクティブであることを確認します。 System Administration -> Configuration -> Local Databases と順に移動します。
「First Look JDBC」と題したドキュメント (https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_jdbc) の内容に従って、JDBC が Load Balancer を介して IRIS に接続されていることを確認します。 URL 変数をテンプレートの出力に表示されている値に変更し、パスワードも「SYS」からセットアップの最中に選択したパスワードに変更します。
フェイルオーバーテスト
Node02 で、Management Portal にアクセス (上の「正常性チェック」のセクション参照) し、Configuration->Edit Mirror と順に開きます。 ページの一番下に「このメンバはバックアップです。 プライマリに変更を加える必要があります。」 というメッセージが表示されます。
AWS EC2 マネジメントダッシュボードで Node01 インスタンスを見つけます。 その名前は、MyStackName-Node01-1NGXXXXXX の形式で書かれています。
Node01 インスタンスを再起動します。 これにより、インスタンス / AZ の停止がシミュレートされます。
Node02 の「Edit Mirror」ページを再度読み込みます。 するとステータスは、このメンバはプライマリです。 変更内容は他のメンバに送信されます。 に変わるはずです。
バックアップと回復
バックアップ
CloudFormation をデプロイしても、InterSystems IRIS のバックアップは有効化されません。 当社では、EBS Snapshot (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html) と IRIS Write Daemon Freeze (https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCDI_backup#GCDI_backup_methods_ext) の両方を使って IRIS EBS ボリュームをバックアップすることを推奨しています。
インスタンスの障害
異常な IRIS インスタンスは、IRIS のミラーリング機能と Load Balancer により検出され、トラフィックは別のミラーノードに移動されます。 回復可能なインスタンスはミラーに再度参加して、通常の操作が続行されます。 異常な状態が続くインスタンスがある場合は、当社のナレッジベースおよび本ガイドの「緊急メンテナンス」のセクションをご覧ください。
アベイラビリティゾーン (AZ) の障害
AZ の障害が発生すると、トラフィックが一時的に中断される場合があります。 インスタンスの障害発生時と同様に、この場合も IRIS のミラーリング機能と Load Balancer がトラフィックを使用可能な別の AZ に切り替えて状況に対処します。
リージョンの障害
本ガイドで紹介するアーキテクチャでは、マルチリージョンオペレーションをサポートする設定はデプロイされません。 IRIS の非同期ミラーリングと AWS Route53 を使用すれば、中断を最小限に抑えながらリージョンの障害に対処できる構成を作成できます。 詳細は、https://community.intersystems.com/post/intersystems-iris-example-reference-architectures-amazon-web-services-aws を参照してください。
RPO/RTO
目標復旧時点 (RPO)
シングルノードの開発 / テスト設定は、最後に正常に行われたバックアップの時刻によって定義されます。
Multi Zone Fault Tolerant セットアップは、フェイルオーバー発生時にデータの完全な一貫性を保証するアクティブ/アクティブ構成を提供し、最後に正常に実行されたトランザクションの RPO が使用されます。
目標復旧時間 (RTO)
シングルノードの開発 / テスト構成におけるバックアップの復元は、本デプロイガイドの範囲外です。 EBS ボリュームのスナップショットを復元することに関する詳細は、https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-restoring-volume.htmlを参照してください。
Multi Zone Fault Tolerant セットアップの RTO は、一般的に、Elastic Load Balancer がトラフィックを IRIS クラスタの新しい Primary Mirror ノードに移動させるのに要する時間によって定義されます。 RTO の時間は、ミラー対応アプリケーションを作成するか、ミラーに Application Server Connection を追加することで、さらに短縮できます (https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GHA_mirror#GHA_mirror_set_configecp を参照)。
ストレージ容量
IRIS ジャーナルとデータベースの EBS ボリュームは、容量が上限に達する場合があります。 InterSystems では、IRIS Dashboard ならびに「df」のような Linux のファイルシステムツールを使い、ジャーナルとデータベースのボリュームの状態をモニタリングすることを推奨しています。
ジャーナルとデータベースのボリュームは、EBS ガイド [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modify-volume.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modify-volume.html)を使えば拡張することができます。 注意: EBS ボリュームの拡張と Linux ファイルシステムの拡張の両方のステップを実行する必要があります。 また、データベースのバックアップを実行した後に、[Purge Journals](https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCDI_journal#GCDI_journal_tasks)を実行すれば、ジャーナルが占めていた領域を開放することもできます。
また、インスタンスに対して CloudWatch Agent を有効にして (この CloudFormation テンプレートでは無効)、ディスク領域をモニタリングすることも検討してもよいでしょう (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)。
セキュリティ証明書の期限
AWS Certificate Manager (ACM) を使えば、Secure Sockets Layer/Transport Layer Security (SSL/TLS) 証明書を簡単にプロビジョン、デプロイ、管理し、またその有効期限をモニタリングできます。
証明書の有効期限は把握しておく必要があります。 InterSystems では、証明書の有効期限をモニタリングする統合プロセスは提供していません。 AWS では、アラームのセットアップに便利な CloudFormation テンプレートが提供されています。 詳細は、こちらのリンク https://docs.aws.amazon.com/config/latest/developerguide/acm-certificate-expiration-check.html をご覧ください。
日常的なメンテナンス
ミラー化された構成において IRIS をアップグレードする手順については、https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCI_upgrade#GCI_upgrade_tasks_mirrorsを参照してください。
継続的なタスクについて、InterSystems では以下を含む AWS と InterSystems のベストプラクティスを実施することを推奨しています。
アクセスキーのローテーション
サービス制限の評価
証明書の更新
IRIS ライセンスの制限と期限: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCM_dashboard
ストレージ容量のモニタリング: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GCM_dashboard
また、EC2 インスタンスに CloudWatch Agent を追加することを検討しても良いでしょう: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html。
緊急メンテナンス
EC2 インスタンスを使用できる場合は、Bastion Host 経由でインスタンスに接続しましょう。
注意: インスタンスを停止 / 開始した後は、Bastion Host のパブリック IP が変更される場合があります。 これが、IRIS クラスタの可用性や JDBC 接続に影響することはありません。
コマンドラインを使ってアクセスするには、以下のコマンドを使って Bastion Host 経由で IRIS ノードに接続します。
$ chmod 400 .pem $ ssh-add .pem
$ ssh -J ec2-user@<bastion-public-ip> ec2-user@<node-private-ip> -L 52773:1:52773
上のコマンドを実行したら、インスタンスの Management Portal が http://localhost:52773/csp/sys/%25CSP.Portal.Home.zen にて使用可能になります。ユーザは「SuperUser」、パスワードはスタックの作成時に入力したパスワードを使います。
IRIS のコマンドプロンプトにアクセスするには、以下のコマンドを使います。
$ iris session iris
「InterSystems IRIS Management and Monitoring」ガイドを参照してください: https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=GCM
InterSystems サポートへの問い合わせ。
EC2 インスタンスが使用またはアクセスできない場合は、AWS サポートまでお問い合わせください。
注意: マルチ AZ 配置のデプロイで発生する AZ やインスタンスの障害は、自動的に処理されます。
サポート
トラブルシューティング
CloudFormation で「Create Stack」(スタックを作成) を実行できません 「Create Stack」を実行できる適切な権限を持っていることをご確認ください。 AWS アカウントの管理者にアクセス権限をお求めください。また、問題が解決しない場合は AWS サポートまでお問い合わせください
スタックは作成されますが、IRIS にアクセスできません EC2 インスタンスのステータスが「CEATE COMPLETED」に変わってから、IRIS の使用準備が完全に整うまでは、およそ 2 分程度かかります。 SSH で EC2 Node のインスタンスと通信し、IRIS が稼働していることをご確認ください。
$iris list
アクティブな IRIS インスタンスが見当たらない場合や、“iris: command not found” というメッセージが表示される場合は、IRIS のインストールが失敗したことを意味します。 インスタンスを最初に開始するときに、インスタンスの $cat /var/log/cloud-init-output.log をチェックして、インストールに問題がなかったどうかを確認します。
IRIS は稼働していますが、Management Portal にアクセスすることも、[Java] アプリケーションから接続することもできません CloudFormation が作成した Security Group に、お使いのソース IP アドレスが許可されている IP アドレスとして表示されていることをご確認ください。
InterSystems サポートへの問い合わせ
InterSystems Worldwide Response Center (WRC) では、専門家によるテクニカルサポートを提供しています。
InterSystems IRIS のサポートは、常に IRIS へのサブスクリプションに含まれています。
電話、メール、オンラインでのサポートは、24 時間、年中無休でご利用いただけます。 世界 15 か国にサポートアドバイザーを配置。英語、スペイン語、ポルトガル語、イタリア語、ウェールズ語、アラビア語、ヒンディー語、中国語、タイ語、スウェーデン語、韓国語、日本語、フィンランド語、ロシア語、フランス語、ドイツ語、ヘブライ語およびハンガリー語での対応が可能です。 お客様の成功を大切にする、経験、知識ともに豊富なサポートスペシャリストが、すべてのお客様を素早くサポートいたします。
すぐにサポートが必要な場合
電話サポート: +1-617-621-0700 (US) +44 (0) 844 854 2917 (UK) 0800615658 (NZ フリーダイヤル) 1800 628 181 (AUS フリーダイヤル)
メールサポート: support@intersystems.com
オンラインサポート: WRC ダイレクト support@intersystems.com までログイン情報をお求めください。
付録
IAM Policy for EC2 instance
以下の IAM ポリシーを使うことで、EC2 インスタンスは S3 バケット ‘my-bucket’ からオブジェクトを読み取り、CloudWatch にログを書き込むことができます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3BucketReadOnly",
"Effect": "Allow",
"Action": ["s3:GetObject"],
"Resource": "arn:aws:s3:::my-bucket/*"
},
{
"Sid": "CloudWatchWriteLogs",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": "arn:aws:logs:*:*:*"
}
]
}
記事
Toshihiko Minamoto · 2021年4月8日
皆さん、こんにちは。 今日は、Jupyter Notebook をインストールして、Apache Spark と InterSystems IRIS に接続したいと思います。
注記: 以下にお見せする作業は Ubuntu 18.04 で Python 3.6.5 を使って実行しました。
### **はじめに**
**Apache Zeppelin** の代わりに認知度が高く、よく普及していて、主に Python ユーザーの間で人気というノートブックをお探しの方は、 **Jupyter notebook**をおすすめします。 **Jupyter notebook** は、とてもパワフルで優れたデータサイエンスツールです。 大きなコミュニティが存在し、使用できるソフトウェアや連携がたくさんあります。 Jupyter Notebook では、ライブコード、数式、視覚化インターフェース、ナレーションテキストを含む文書を作成、共有できます。 機能としてデータクリーニングや変換、数値シミュレーション、統計モデリング、データの視覚化、機械学習などが含まれています。 最も重要なこととして、問題に直面したときにその解決を手伝ってくれる大きなコミュニティが存在します。
### **要件の確認**
何かうまく行かないことがあれば、一番下の「考えられる問題と解決策」をご覧ください。
まずは、Java 8 がインストールされていることを確認してください (**java -version** で "1.8.x" が返される)。 次に、[apache spark](https://spark.apache.org/downloads.html) をダウンロードし、解凍します。 それから、ターミナルで以下のコマンドを実行します。
> pip3 install jupyter
>
> pip3 install toree
>
> jupyter toree install --spark\_home=/path\_to_spark/spark-2.3.1-bin-hadoop2.7 --interpreters=PySpark --user
では、ターミナルを開き、**vim ~/.bashrc** を実行してください。 一番下に次のコードをペーストします (これは環境変数です)。
> export JAVA_HOME=/usr/lib/jvm/**installed java 8**
> export PATH="$PATH:$JAVA_HOME/bin"
> export SPARK_HOME=/**path to spark**/spark-2.3.1-bin-hadoop2.7
> export PATH="$PATH:$SPARK_HOME/bin"
> export PYSPARK\_DRIVER\_PYTHON=jupyter
> export PYSPARK\_DRIVER\_PYTHON_OPTS="notebook"

それから、**source ~/.bashrc** を実行します。
### **正常に動作することを確認する**
それでは、Jupyter Notebook を起動しましょう。 ターミナルで、**pyspark** を実行します。

返された URL をブラウザーで開きます。 次の画像のような画面が表示されると思います。

**new** をクリックし、**Python 3** を選択したら、次のコードをパラグラフにペーストします。
> import sys
> print(sys.version)
> sc
以下のような出力が見られるはずです。

ターミナルで ctrl-c を実行して Jupyter を停止します。
注意: 独自のjar ファイルを追加する場合は、好きな jar ファイルを $SPARK_HOME/jars に移動します。
intersystems-jdbc と intersystems-spark を使いたいので (jpmml ライブラリも必要)、 必要な jar ファイルを Spark にコピーします。 ターミナルで次のコードを実行します。
> sudo cp /path to intersystems iris/dev/java/lib/JDK18/intersystems-jdbc-3.0.0.jar /path to spark/spark-2.3.1-bin-hadoop2.7/jars
>
> sudo cp /path to intersystems iris/dev/java/lib/JDK18/intersystems-spark-1.0.0.jar /path to spark/spark-2.3.1-bin-hadoop2.7/jars
>
> sudo cp /path to jpmml/jpmml-sparkml-executable-version.jar /path to spark/spark-2.3.1-bin-hadoop2.7/jars
問題がないことを確認してください。 ターミナルでもう一度 **pyspark** を実行し、(前回の[記事](https://community.intersystems.com/post/load-ml-model-intersystems-iris)でご紹介した) 次のコードを実行します。
> from pyspark.ml.linalg import Vectors
> from pyspark.ml.feature import VectorAssembler
> from pyspark.ml.clustering import KMeans
> from pyspark.ml import Pipeline
> from pyspark.ml.feature import RFormula
> from pyspark2pmml import PMMLBuilder
>
> dataFrame=spark.read.format("com.intersystems.spark").\
> option("url", "IRIS://localhost:51773/NAMESPACE").option("user", "dev").\
> option("password", "123").\
> option("dbtable", "DataMining.IrisDataset").load() # load iris dataset
>
> (trainingData, testData) = dataFrame.randomSplit([0.7, 0.3]) # split the data into two sets
> assembler = VectorAssembler(inputCols = ["PetalLength", "PetalWidth", "SepalLength", "SepalWidth"], outputCol="features") # add a new column with features
>
> kmeans = KMeans().setK(3).setSeed(2000) # clustering algorithm that we use
>
> pipeline = Pipeline(stages=[assembler, kmeans]) # First, passed data will run against assembler and after will run against kmeans.
> modelKMeans = pipeline.fit(trainingData) # pass training data
>
> pmmlBuilder = PMMLBuilder(sc, dataFrame, modelKMeans)
> pmmlBuilder.buildFile("KMeans.pmml") # create pmml model
出力は以下のようになりました。

出力ファイルが jpmml kmeans model になっていますので、 すべて完璧です!
考えられる問題と解決策
* **'jupyter'コマンドが見つからない**
1. vim ~/bashrc;
2. 一番下に **export PATH="$PATH:~/.local/bin"** を追加します。
3. ターミナルで 「source ~/.bashrc」 を実行します。
4. 問題が解決しない場合は pip3 と jupyter を再インストールしてください。
* **env: 'jupyter': このようなファイルまたはディレクトリはありません。**
1. ~/.bashrc で、「export PYSPARK\_DRIVER\_PYTHON=/home/.../.local/bin/jupyter 」を設定します。
* **TypeError: 'JavaPackage' オブジェクトは呼び出せません。**
1. 必要な jar ファイルが /.../spark-2.3.1-bin-hadoop2.7/jars にあることを確認します。
2. Notebook を再起動します。
* **Java ゲートウェイプロセスがそのポート番号をドライバーに送る前に終了してしまう**
1. Java バージョンは 8 を使用する (Java 6/7 でも動作すると思いますが、確認はしていません)。
2. **echo $JAVA_HOME** を実行すれば、Java のバージョン 8 が返されるはずです。 そうでない場合は、~/.bashrc のパスを変更します。
3. ターミナルに **sudo** **update-alternatives --config java ** をペーストし、Java の適切なバージョンを選択します。
4. ターミナルに **sudo** **update-alternatives --config javac **をペーストし、Java の適切なバージョンを選択します。
* **PermissionError: [Errno 13] Permission denied: '/usr/local/share/jupyter'**
1. ターミナルでコマンドの最後に --user を追加します。
* **Jupyter コマンド'toree'の実行エラー : [Errno 2] このようなファイルまたはディレクトリはありません。**
1. sudo なしでコマンドを実行します。
* **PYSPARK\_SUBMIT\_ARGS ** のようなシステム変数や他の spark/pyspark 変数を使用した場合、または /.../spark-2.3.1-bin-hadoop2.7/conf/spark-env.sh の変更が原因で、特定のエラーが生じた場合
1. これらの変数を削除して spark-env.sh を確認します。
### **リンク**
* [**Jupyter**](http://jupyter.org/)
* **[Apache Toree](https://toree.incubator.apache.org/)**
* [**Apache Spark**](https://spark.apache.org/)
* [**ML モデルを InterSystems IRIS に読み込む**](https://jp.community.intersystems.com/node/483536)
* [**Iris Dataset の K 平均法**](https://jp.community.intersystems.com/node/478551)
* [**Apache Spark、Apache Zeppelin、InterSystems IRIS を起動させる方法**](https://jp.community.intersystems.com/node/483681)
お知らせ
Mihoko Iijima · 2021年2月8日
開発者の皆さん、こんにちは!
第10回のグランプリ・プログラミングコンテストの 続報 📣 の「テクノロジーボーナス」についてご紹介します。
今回のコンテストでは、チームで開発した作品もご応募いただけます!ぜひコンテスト詳細ページもご確認ください!
Group
Bonus
Points
General
Docker
2
ZPM
2
Unit Testing
2
API
REST API
2
ODBC/JDBC
2
Native API in Java, Python, .NET, node.js
2
Multi-model
Globals (key-value)
2
SQL
2
Object
2
New model
3
Analytics
IRIS BI
2
IRIS NLP
2
InterSystems Reports
3
AI/ML
Integrated ML
4
Python or Julia Gateway
3
Interoperability
BPL
3
Custom Adapter
2
PEX
4
Workflow Engine
2
FHIR
FHIR Server REST API
3
FHIR SQL Scheme
2
Healthcare Data Transformations
3
Total
54
テクノロジーボーナス詳細については、以下ご参照ください。
General bonuses
ZPM Package deployment - 2 points
フルスタックアプリケーション用の ZPM(ObjectScript Package Manager) パッケージをビルドして公開し、それを使用してデプロイできるようにすると2ポイント獲得できます。
以下のコマンド実行例は、 IRIS に ZPM クライアントをインストールしパッケージをインストールしている例です。
zpm "install your-multi-model-solution"
詳しくは、ZPM client や ドキュメント をご参照ください。
Docker container usage - 2 points
docker コンテナで動作する InterSystems IRIS を使用すると「Docker コンテナ」のボーナスポイントを獲得できます。
Unit Testing - 2 points
InterSystems IRIS のユニットテストを実施しているアプリケーションは、ボーナスポイントを獲得できます。
ObjectScript のユニットテストの詳細については、ドキュメントと開発者コミュニティを参照してください。
InterSystems IRIS API
InterSystems IRIS REST API usage - 2 points
フルスタックアプリケーションで REST API を介して InterSystems IRIS にアクセスすると、ボーナスポイントを獲得できます。
REST API は、ご自身で構築するか、組み込みのものを使用するか、ZPM を介してインストールすることもできます。
InterSystems REST API の詳細については、ドキュメントや開発者コミュニティの記事もご参照ください。
InterSystems Native API usage - 4 points
InterSystems Native API(.NET/Java/Python/Node.js)のいずれかを使用してフルスタック・アプリケーションのデータにアクセスするとボーナスポイントを獲得できます。
InterSystems JDBC usage - 2 points
InterSystems IRISは、データにアクセスするための JDBC ドライバを提供しています。SQLとInterSystems JDBC を使用してフルスタックアプリケーションのデータを参照するとボーナスポイントを獲得できます。
Multi-model bonuses
InterSystems Globals (key-value) - 2 points
グローバルは、InterSystems IRIS 内の任意のデータを格納するために使用される多次元スパース配列です。各グローバル・ノードはキーとみなされ、値を設定することができます。InterSystems IRIS は、グローバルを管理するための ObjectScript コマンドや Native API を含む一連の API を提供しています。
ObjectScript または Native API を介してグローバルを使用すると、2 ポイントを獲得できます。
ツール:
管理ポータルでのグローバルの管理
ドキュメント:
多次元ストレージの使用法 (グローバル)
グローバルの使用法
記事:
グローバルはデータを保存するための魔法の剣です パート1
The art of mapping Globals to Classes
ビデオ:
Globals QuickStart
InterSystems SQL - 2 points
InterSystems IRISは、ObjectScript、REST API、JDBCを介してデータへのSQLアクセスを提供します。
アプリケーションで InterSystems SQL を使用すると、2ポイントボーナスポイントを獲得できます。
ツール:
VSCode SQL Tools
DBeaver
SQL in Management Portal
その他SQL用ツール
ドキュメント:
SQL Access
InterSystems SQL リファレンス
記事:
ObjectScript でクラスクエリを記述する方法
InterSystems Objects - 2 points
InterSystems IRISは、ObjectScript/REST API、Java/.NET用のXEPを利用して、オブジェクトのインスタンスをグローバルに保存/変更する方法を提供しています。
アプリケーションでオブジェクトアクセスを使用すると、2ポイントボーナスポイントを獲得できます。
ドキュメント:
Object Access
サーバー側プログラミング入門ガイド
記事(セルフラーニングビデオ):
【はじめての InterSystems IRIS】セルフラーニングビデオ:基本その3:IRIS でクラス定義を作ろう(オブジェクト操作の練習)
Your data model - 2 points
InterSystems IRISは、独自のデータモデルの API を公開するデータプラットフォームとして使用することもできます。ObjectScript、REST API、Native APIを利用して、時系列、空間、グラフ、RDF/トリプル、カラムストア、ドキュメントストアなどの特殊なデータモデルを提供する独自のAPIを公開することができます。
新しいデータモデル API のいずれかを導入すると、ボーナスポイントを2点獲得できます。
IRIS Analytics Bonuses
InterSystems IRIS BI - 2 points
InterSystems IRIS Business Intelligenceは、IRIS の機能で、IRIS の永続的なデータに対して BI キューブやピボットを作成し、インタラクティブなダッシュボードを使用してユーザーに情報を提供することができます。詳細はこちらをご覧ください。
IRIS-Analytics-template には、IRISのBIキューブ、ピボット、ダッシュボードの例が含まれています。
テンプレートの使用方法については、こちらの記事をご参照ください。
InterSystems IRIS NLP (iKnow) - 2 points
InterSystems NLP は、iKnow としても知られている InterSystems IRIS に含まれる機能であり、英語、ドイツ語、オランダ語、フランス語、スペイン語、ポルトガル語、スウェーデン語、ロシア語、ウクライナ語、チェコ語、日本語の自然言語テキスト内のエンティティ (フレーズ) とその意味的文脈を識別する自然言語処理のためのライブラリです。
InterSystems IRIS NLP (日本語)概要については、 ホワイトペーパーをご参照ください。
以下のビデオでは、NHKニュース(NHKオンラインニュース[社会]のRSS)を読み込んだ結果、抽出されたエンティティを確認できる IRIS の「ドメインエクスプローラー」を利用して確認するまでの流れを解説しています。
この他、NLPのAPI(REST/Webサービス)についてはそれぞれのドキュメント(REST/Webサービス)をご参照ください。
iKnow について詳細は、Open Exchange をご参照ください。
アプリケーション例については、以下 OpenExchange をご参照ください。
Covid iKnow Text Navigator
Samples Aviation
その他のアプリケーション
InterSystems Reports - 3 points
InterSystems Reports は、InterSystems IRIS の機能で、印刷レポートをデザインしたり、スケジュールに合わせてメールで送信したり、クライアントにインタラクティブなレポートを配信したりすることができます。InterSystems Reports は、Logi Analytics® の製品である Logi Report(旧称:JReport®)のリパッケージ版です。詳細については、ドキュメントを参照してください。
InterSystems Reports のサンプルがあるGithubリポジトリをチェックしてください。
また、InterSystems Reports のデモ動画をご覧いただきながら Learning Labで試してみてください。
InterSystems Reports のデザイナーとサーバーは WRC のダウンロードセクションでダウンロードできます。
InterSystms Reports DesignerとServer のライセンスキーは Discord で公開される予定です。
AI/ML
IntegratedML - 3 points
IntegratedML は InterSystems IRIS の機能で、SQL を拡張する ML 命令セットで、ソリューションの AI や機械学習の計算を簡素化して自動化することができます。IntegratedML の詳細については、こちらをご覧ください。
IntegratedMLを使用するにはIRISの特別なイメージが必要ですので、こちらでご確認ください。
例:
A basic integratedML template
テンプレートの使い方についての日本語解説は、こちらの記事にあるビデオ(00:46~17:55)をご参照ください。
Open Exchangeに公開されている例
IRIS Analytics ソリューションで IntegratedML を使用すると、さらに1つのポイントが追加されます。
2. Python Gateway usage - 2 points
Python Gateway は InterSystems IRIS のアドオンで、InterSystems IRIS 環境で Python を使用する以下の方法を提供します。
任意の Python コードの実行
InterSystems IRIS から Python へのシームレスなデータ転送
Python Interoperability アダプタを使用して、インテリジェントな Interoperability ビジネス・プロセスの構築
InterSystems IRIS からの Python コンテキストの保存、検査、変更、リストア
Python Gateway の詳細についてはこちらをご覧ください。
IntegratedMLも含まれているPython Gatewayテンプレートを使用することができます。テンプレートの使い方については、こちらの記事にあるビデオ(18:00~)をご参照ください。
Interoperability Bonuses
Business Process BPL or Business Rules Usage - 2 point
IRIS Interoperability プロダクションの主な特徴の1つは、BPL(ビジネス・プロセス・ランゲージ)で記述できるビジネス・プロセスです。
ビジネスプロセスの詳細については、ドキュメントをご参照ください。
ビジネス・ルールは、プロダクションの処理ロジックを管理するためのノーコード/ローコードのアプローチです。InterSystems IRIS では、ビジネス・ルールを作成することができます。
ビジネス・プロセス/ビジネス・ルールを作成し、プロダクションで使用すると、ビジネス・プロセス/ビジネス・ルール・ボーナスを得ることができます。
ビジネスルール コード例
ビジネスルールの開発について
Custom Interoperability Adapter Usage - 2 point
InterSystems Interoperability プロダクションでは、プロダクションのビジネス・サービスやビジネス・オペレーションによって外部システムとの通信に使用されるインバウンドまたはアウトバウンド・アダプタを利用できます。プロダクションでは、すぐに使える(ファイルや電子メールのような)アダプタを使用するか、独自に開発することができます。
独自のインバウンドまたはアウトバウンドアダプタを開発し、プロダクションで使用した場合、ボーナスポイントを獲得できます。
カスタムアダプタ例
アダプタについて(ドキュメント)
Production EXtension (PEX) Usage - 4 points
PEXは、Interoperability の Java または .NET の拡張機能です。
Interoperability プロダクションで Java または .NET の PEX を利用した場合、ボーナスポイントを獲得できます。
PEX Demo
Learn more on PEX in Documentation
Workflow Engine Usage - 2 points
ワークフローエンジン は IRIS Interoperability の機能の一部であり、自動化される連携処理の中にユーザによる指示を追加することができます。
ワークフローエンジンを利用したプロダクションを開発するとボーナスポイントを獲得できます。
ワークフローについてはドキュメントをご参照ください。
コミュニティには、WorkflowAPI と WorkflowUI-ngx のモジュールが公開されています。(このモジュールは、AngularのUIを使用しています)
FHIR Bonuses
FHIR Server REST API usage - 3 points
InterSystems IRIS for Health の FHIR サーバの REST API エンドポイントを使用したアプリケーションを開発すると、ボーナスポイントが獲得できます。
アプリケーション開発には IRIS-FHIR-Template を使用することができます。
FHIR API 4.0.1のドキュメントはこちらにあります。詳しくは InterSystems IRIS for Health のドキュメントをご覧ください。
FHIR SQL Schema usage - 2 points
アプリケーションで、FHIR SQL スキーマに対して SQL クエリを実行した場合、このボーナスポイントを獲得できます。
例えば FHIR アナリティクスソリューションを作成するために使用することができます。フルリソースには HSFHIR_I0001_R スキーマを、リソースのSQL検索には HSFHIR_I0001_S スキーマを使用してください。
Healthcare standards transformations - 3 points
InterSystems IRIS for Health には、ヘルスケア・インターオペラビリティ・モジュールが含まれており、異なるヘルスケア標準から FHIR へのデータ変換、またはその逆のデータ変換を実行するのに役立ちます。CDA から FHIR への変換、HL7v2 から FHIR への変換、またはその他の変換をアプリケーションで行うことで、ボーナスポイントを獲得することができます。
HL7v2 から FHIR への変換と CDA から FHIR への変換については、コード例をご覧ください。詳細はドキュメントをご参照ください。
ボーナスポイント詳細については、変更される場合もあります。予めご了承ください。
ぜひ、コンテストへご応募ください!お待ちしております!☺
お知らせ
Mihoko Iijima · 2021年3月8日
開発者の皆さんこんにちは!
第10回 InterSystems グランプリ・プログラミングコンテスト への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。
今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!
🏆 Experts Nomination - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $6,000 は vscode-intersystems-iris を開発された @Dmitriy Maslennikov さんに贈られました!
🥈 2位 - $3,000 は iris-rad-studio を開発された @Henrique Dias さんに贈られました!
🥉 3位 - $2,000 は HealthInfoQueryLayer を開発された @Botai Zhang さんに贈られました!
🏆 Community Nomination - 最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $3,000 は HealthInfoQueryLayer を開発された @Botai Zhang さんに贈られました!
🥈 2位 - $1,500 は Dictionary comparison scheme of cache database を開発された @Weiwei Yang さんに贈られました!
🥉 3位 - $500 は vscode-intersystems-iris を開発された @Dmitriy Maslennikov さんに贈られました!
(3/10 追記!)
なんと、今回のコンテストでは Experts Nominationで 4~10 位を獲得した作品に Global Masters 10,000 ポイント!が授与されました!
グローバルマスターズについて詳細は、こちらの記事をご参照ください!(ポイントを集めるとインターシステムズグッズや様々な賞品と交換できます!)
👏👏 おめでとうございます!👏👏
🏅 4位: iris-image-index-demo を開発された @José Roberto Pereira さんに贈られました!
🏅 5位: Terminal Multi-Line Command Editor を開発された @Robert Cemper さんに贈られました!
🏅 6位: Dictionary comparison scheme of cache database を開発された @Weiwei Yang さんに贈られました!
🏅 7位: Create a unified hospital data extraction scheme based on IRIS for Health を開発された @Deming Xu さんに贈られました!
🏅 8位: iris4health-fhir-analytics を開発された @José Roberto Pereira さんに贈られました!
🏅 9位: iris-fhir-portal を開発された @Henrique Dias さんに贈られました!
🏅 10位: ObjectScript Kernel を開発された @Nikita Mullin さんに贈られました!
🎊 受賞者の皆様、おめでとうございます!👏
今回も、コンテストにご注目いただきありがとうございました! なんと、今回のコンテストでは Experts Nominationで 4~10 位を獲得した作品に Global Masters 10,000 ポイント!が授与されました!
グローバルマスターズについて詳細は、こちらの記事をご参照ください!(ポイントを集めるとインターシステムズグッズや様々な賞品と交換できます!)
👏👏 おめでとうございます!👏👏
🏅 4位: iris-image-index-demo を開発された @José Roberto Pereira さんに贈られました!
🏅 5位: Terminal Multi-Line Command Editor を開発された @Robert Cemper さんに贈られました!
🏅 6位: Dictionary comparison scheme of cache database を開発された @Weiwei Yang さんに贈られました!
🏅 7位: Create a unified hospital data extraction scheme based on IRIS for Health を開発された @Deming Xu さんに贈られました!
🏅 8位: iris4health-fhir-analytics を開発された @José Roberto Pereira さんに贈られました!
🏅 9位: iris-fhir-portal を開発された @Henrique Dias さんに贈られました!
🏅 10位: ObjectScript Kernel を開発された @Nikita Mullin さんに贈られました!
受賞された皆さん、おめでとうございます🎊
記事
Toshihiko Minamoto · 2021年5月11日
1. ブロックチェーン
この記事を書いている時点(2019年2月)で、ビットコインの価値はそれが絶頂期だったころの 5 分の 1 未満に下落しています。 そのため、ブロックチェーンの私の体験について誰かに話すときに最初に耳にするのは、「今頃ブロックチェーンを欲しがる人がいるのか」という偽りなく懐疑的な言葉です。
その通り。ブロックチェーンの盛り上がりは衰退しています。 ところが、それが基づいているテクノロジーはここにとどまり、特定の分野で使用され続けるでしょう。一般的にインターネットではこのテクノロジーの使用方法が記述された資料でいっぱいです。
(たとえば[medium](https://medium.com/@matteozago/50-examples-of-how-blockchains-are-taking-over-the-world-4276bf488a4b) と [forbes](https://www.forbes.com/sites/bernardmarr/2018/05/14/30-real-examples-of-blockchain-technology-in-practice/#23a4daed740d) に掲載されています)。
ご存知のように、ブロックチェーンは分散レジストリ、すなわち、レジストリの完全なコピーを格納している複数のノードに分散されたデータベースです。 レコード(トランザクション)がブロックを形成し、ブロックがブロックのチェーンを形成するところに、ブロックチェーンの鍵となる機能があります。 ブロックチェーンはアペンド演算のみをサポートしているため、 ブロックチェーンにすでに保存されたトランザクションに変更を加えることは、ほぼ不可能ということになります。
ブロックチェーンに関するチュートリアルはインターネット上にたくさんあります(ブロックチェーンについて聞いたことがない方は、[こちらの簡単な動画](https://www.youtube.com/watch?v=SSo_EIwHSd4)をまずご覧ください)。
ブロックチェーンが順調な成果を見せていた時、文字通りどこにでも、そのテクノロジーを使用するための呼び出しが複数ありました。 ただし、ブロックチェーンが必要となる可能性のあるプロジェクトやタスクには、明確な特性があります。
まず第一に、一貫性と信頼性のある大量のデータを書き込むプレーヤー/ユーザーがたくさん存在する必要がある点です。
そうであれば、誰もが信頼するサードパーティは存在しないはずです。
公開データ検証の仕組みが必要となります。
こういった条件のすべてを満たす場合、ブロックチェーンの使用を検討するのも良いかもしれません。
こういったタスクは、どの業界にも見られます。 [www.101blockchains.com](http://www.101blockchains.com/) プロジェクトでは、潜在的および既存のブロックチェーンプロジェクトに関する情報と、様々な業界でブロックチェーンテクノロジーを使用するニュアンスを集約しています。
たとえば、ブロックチェーンは、ヘルスケアの分野で次のタスクに使用することができます。
患者記録の安全なリモート管理
サプライチェーン全体で変更不可能なトランザクションによる、偽造医薬品への対策
詐欺やデータ改ざんの可能性の排除による、臨床試験の監視と有効性の改善
企業部門は通常、プライベート許可型ブロックチェーンと呼ばれる特殊なブロックチェーンを使用しています。 このようなネットワークには、トランザクションを検証するための特別なノードセットがあります。
しかし、最初の InterSystems IRIS ブロックチェーンアダプターを開発する際、非許可型ブロックチェーンに区分されるイーサリアムという種類のブロックチェーンを選択しました。イーサリアムは、単一のコントロールセンターを持たないオープンプラットフォームです。 これは、このブロックチェーンエンジンの人気と、多くのツールやライブラリを備え、十分に成熟したインフラストラクチャであることを基に採用しました。 イーサリアムのツールを使えば、誰でもプライベートブロックチェーンを作成することができます。
2. アダプター
では、アダプターの話に戻りましょう。
InterSystems IRIS のアダプターは(Ensemble でも同様に)、外部システムと対話可能にする InterSystems IRIS クラスのクラスまたはパッケージです。 InterSystems IRIS アダプターは、インバウンド(外部システムが対話を開始した場合に外部システムからデータを受信)とアウトバウンド(InterSystems IRIS が対話を開始した場合に外部システムと連携)に分けられます。
IRIS Ethereum アダプターはアウトバウンドアダプターであり、ほかのほとんどの InterSystems IRIS アダプターとはわずかに異なります。 このアダプターには、小さな NodeJS モジュールも含まれています。 図 1 はこのアーキテクチャを示しています。
図 1.
アダプターの NodeJS モジュールではイーサリアムと連携するための NodeJS ライブラリを使用します。
アダプターは次のことを行います。
スマートコントラクトをイーサリアムにデプロイする(スマートコントラクト、開発ツール、および例を網羅した記事を別途掲載する予定です)。
スマートコントラクトのメソッド(ブロックチェーンの状態を変更するメソッドと変更しないメソッド)を呼び出す。
トランザクションを保存する(ウォレット間で資金を送金する)。
ブロックチェーンの状態を取得するほかのメソッドを呼び出す。
すべてのリクエストをログに記録する(NodeJS モジュールによって行われ、デバッグに有効)。
OpenExchange上のアダプターのソースコード。
3. 簡単な例
アダプターには「Hello World」サンプルが付属しています。
イーサリアムを使用するには(このサンプルを実行するには)以下の作業を行います。
使用するネットワークを選択します。 Ropsten などのテストネットワークは通常、開発目的で使用できます。
このネットワークにウォレットを作成して、資金を追加します。
ローカルイーサリアムクライアント( Geth など)をインストールするか、クラウドプロバイダー( Infura など)と連携するための鍵を取得します。
ビジネスオペレーションを構成する際は、次の項目を設定する必要があります(図 2)。
NodeJS モジュールが動作するサーバーとポート(デフォルトポートは 3000 )
プロバイダーの設定(この場合、Infura へのアクセス)
ログイン情報(ユーザー名にウォレット番号、パスワードに秘密鍵を指定します。 InterSystems IRIS はログイン情報を別のデータベースに保存します。このデータベースは、暗号化を有効にする必要があります。)
図 2.
スマートコントラクトを使用するには、ファイルシステム内に(使用するスマートコントラクトごとに)フォルダを作成し、次の 2 つのファイルを配置する必要があります。*abi.txt*bytecode.txt
これらのファイルには、スマートコントラクトの ABI とそのバイトコードが含まれている必要があります。 スマートコントラクトの ABI は、JSON 形式によるインターフェースの正式な記述です。 ABI とバイトコードは、スマートコントラクトのコンパイル時に作成されます。
バイトコードは、コントラクトのデプロイに必要です。
InterSystems IRIS 相互運用性テストサービスを使用して、ビジネスオペレーションをテストできます。
図 3 では、テストサービスを使用してどのようにスマートコントラクトがデプロイされるのかを示しています。 このビジネスオペレーションを呼び出すと、トランザクションのハッシュを含むメッセージが結果として返されます。
図 3.
ropsten.etherscan.io(https://etherscan.io/)ブラウザを使用してこのトランザクションを見つけ、デプロイされたスマートコントラクトのアドレスを取得できます。
アダプターを使用してスマートコントラクトのメソッドを呼び出すには、運用構成の ContractFolder と ContractAddress フィールドに入力する必要があります。
スマートコントラクトの実行コードは非常に単純です。
set ..ContractABI = [].%FromJSON(..ContractFolder_"abi.txt")
set contract = ..Adapter.GetContract(##class(Ethereum.Address).%New(..ContractAddress),..ContractABI)
set result = contract.hello()
set pResponse = ##class(Ens.StringContainer).%New(result.args)
スマートコントラクトのアドレスと ABI をアダプターの GetContract メソッドに渡し、メソッドを呼び出すために使用するスマートコントラクトオブジェクトを作成します。 この場合、文字列を返す hello() メソッドはスマートコントラクトで定義されている必要があります。
この例では、hello() メソッドはブロックチェーンの状態を変更しないため、同期的に呼び出すことができますが、 ブロックチェーンの状態を変更するメソッドの実行時間は非常に長くなることがあります(トランザクションの検証を待つ必要があるため)。
このようなメソッドを呼び出すには、InterSystems IRIS が提供する遅延応答の仕組みを使用します。 アダプターは遅延応答トークンを送信する必要があり、トランザクションが承認されると、NodeJS モジュールはその実行結果を InterSystems IRIS に渡します。 これを行うには、Web アプリケーションを構成し、受信した応答を処理する追加のビジネスサービスを運用に追加する必要があります。
以下は、ブロックチェーンの状態を変更するメソッドを呼び出すためのコードです。
// EthereumAccount(ウォレット)と privateKey の取得
do ##class(Ens.Config.Credentials).GetCredentialsObj(.cred, "Ethereum.Demo.EthereumOperation", "Ens.Config.Credentials", ..Credentials)
set account = ##class(Ethereum.Address).%New(cred.Username)
set privateKey = cred.Password
//コントラクト ABI の読み取り
set ..ContractABI = [].%FromJSON(..ContractFolder_"abi.txt")
// コントラクトオブジェクトの取得
set contract = ..Adapter.GetContract(##class(Ethereum.Address).%New(..ContractAddress),..ContractABI)
$$$ThrowOnError(..DeferResponse(.deferred))
// gas の推定
do contract.SetOptions(account)
set gasJSON = contract.EstimateGas("setName",pRequest.Name)
$$$TRACE(gasJSON.gas)
do contract.SetOptions(account, privateKey, ##class(Ethereum.Wei).%New(1000000000), ##class(Ethereum.Wei).%New(100*gasJSON.gas),,deferred)
set result = contract.setName(pRequest.Name)
この場合、スマートコントラクトの setName() メソッドを呼び出す前に、遅延応答トークンを含む多数のパラメーターを指定する必要があります。
次の記事では、スマートコントラクトについて詳しく説明し、InterSystems IRIS Ethereum アダプターを使って実際の問題を解決する例を示します。
記事
Makiko Kokubun · 2021年4月20日
*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
ソフトウェア開発技術において、プロセスの自動化、サイクルの短縮による生産性の向上を目指す考え方が普及してきました(CI/CD)。CI/CDの中核をなす技術の一つが、Dockerに代表されるコンテナです。
InterSystemsでは、Dockerコンテナで動作するIRIS data platformをリリースして、いち早く最新機能を皆様にお届けしています。この動画をご覧になって、DockerコンテナでIRISをスムーズに利用する第一歩としてください。
セッションで紹介しているリリースサイクルについては、こちらの記事をご覧ください。セッションではデモを行っています。デモをご覧になりたい方は 12:49 からご覧ください。
記事
Toshihiko Minamoto · 2021年7月15日
InterSystems および Intel は先日、InterSystems IRIS を「Cascade Late」としても知られる第 2 世代 Intel® Xeon® スケーラブルプロセッサおよび Intel® Optane™ DC パーシステントメモリ(DCPMM)と組み合わせて一連のベンチマークを実施しました。 さまざまなワークロード設定とサーバー構成で、Intel の最新のサーバーテクノロジーを使用した InterSystems IRIS のパフォーマンスとスケーラビリティ機能を実証するのがこのベンチマークの目的です。 このレポートには、さまざまなベンチマークの結果とともに、Intel DCPMM と InterSystems IRIS のユースケースが 3 つ示されています。
## 概要
パフォーマンスとスケーリングを実証するために 2 種類のワークロードが使用されています。読み取り集中型のワークロードと書き込み集中型のワークロードです。 このように分けて実証するのは、読み取り集中型ワークロードにおけるデータベースキャッシュ効率の増加と、書き込み集中型ワークロードにおけるトランザクションジャーナルの書き込みスループットの増加のそれぞれに特化したユースケースで、Intel DCPMM の影響を示すためです。 両方のユースケースシナリオにおいて、InterSystems IRIS のスループット、スケーラビリティ、およびパフォーマンスの大幅なゲインが達成されています。
* **読み取り集中型ワークロード**では、4 ソケットサーバーと、合計約 1.2 TB のデータを持つデータセットを使用する大量の長期実行分析クエリが使用されました。 DCPMM を「Memory Mode」で使用した場合のベンチマーク比較では、メモリの少ない前世代の Intel E7v4 シリーズプロセッサと比べた場合、経過実行時間が大幅に短縮され、およそ 6 倍高速になりました。 E7v4 と、DCPMM を使った最新のサーバーを同じメモリサイズで比較した場合は、20% の改善が見られました。 これは、DCPMM による InterSystems IRIS データベースキャッシュ機能の向上と最新の Intel プロセッサアーキテクチャによるものです。
* **書き込み集中型ワークロード**では、2 ソケットサーバーと InterSystems HL7 メッセージングのベンチマークが使用されました。多数のインバウンドインターフェースで構成されており、各メッセージには複数の変換が伴い、インバウンドメッセージごとに 4 つのアウトバウンドメッセージが使用されています。 高スループットを維持する上で重要なコンポーネントの 1 つは、IRIS for Health のメッセージ耐久性保証で、その操作においては、トランザクションのジャーナル書き込みのパフォーマンスが重要となります。 「APP DIRECT」モードで DCPMM を使用して、DAX XFS でトランザクションのジャーナル用の XFS ファイルシステムを提供した場合、このベンチマークのメッセージスループットには 60% の向上が示されました。
テスト結果と構成を要約すると、DCPMM は適切に設定された InterSystems IRIS とワークロードで使用された場合にスループットを大幅に向上させることができます。 高レベルのメリットとしては、読み取り集中型ワークロードではデータベースのキャッシュ効率の向上とディスク I/O ブロック読み取りの抑制、書き込み集中型ワークロードではジャーナルの書き込みスループットの向上を得られます。
さらに、古いハードウェアを更新し、パフォーマンスとスケーリングの改善を検討しているユーザーにとって、DCPMM を備えた Cascade Lake に基づくサーバーは優れた更新パスとなります。 InterSystems のテクノロジーアーキテクトと相談しながら、既存のワークロードに推奨される構成についてのアドバイスを得ることができます。
* * *
### 読み取り集中型ワークロードベンチマーク
読み取り集中型ワークロードでは、512 GiB と 2 TiB のデータベースキャッシュサイズの E7v4(Broadwell)と Intel® Optane™ DC パーシステントメモリ(DCPMM)を使用した 1 TB と 2 TB のデータベースキャッシュサイズの最新の第 2 世代 Intel® Xeon® スケーラブルプロセッサ(Cascade Lake)と比較する分析クエリベンチマークを使用しました。
より大規模なキャッシュの影響とパフォーマンスの向上を示すために、さまざまなグローバルバッファサイズで複数のワークロードを実行しました。 構成を反復するごとに、COLD と WARM で実行しています。 COLD は、データベースキャッシュにデータが事前に入力されていない場合で、 WARM は、データベースキャッシュがすでにアクティブになっており、ディスクからの物理的な読み取りを減らすために、データが入力済みである(または少なくと可能な限り入力されている)ことを示します。
#### ハードウェア構成
古い 4 ソケット E7v4(Broadwell)ホストを DCPMM を使った 4 ソケット Cascade Lake サーバーと比較しました。 この比較が選択されたのは、InterSystems IRIS を使ってハードウェアの更新を検討している既存のお客様がパフォーマンスの向上を得られることを実証するためです。 バージョン間のソフトウェアの最適化が要因とならないように、すべてのテストには同じバージョンの InterSystems IRIS が使用されました。
ディスクパフォーマンスが比較の要因とならないように、すべてのサーバーには同一のストレージアレイにある同一のストレージが使用されています。 ワーキングセットは 1.2 TB のデータベースです。 図 1 にはこのハードウェア構成と、それぞれの 4 ソケット構成の比較が示されています。
図 1: ハードウェア構成
| サーバー #1 の構成 | サーバー #2 の構成 |
| ------------------------------------- | ------------------------------------ |
| プロセッサ: 4 x E7-8890 v4 @ 2.5Ghz | プロセッサ: 4 x Platinum 8280L @ 2.6Ghz |
| メモリ: 2TiB DRAM | メモリ: 3TiB DCPMM + 768GiB DRAM |
| ストレージ: 16Gbps FC all-flash SAN @ 2TiB | ストレージ: 16Gbps FC all-flash SAN @ TiB |
| | DCPMM: Memory Mode のみ |
#### ベンチマークの結果と結論
512 GiB を 1 TiB か 2 TiB のいずれかの DCPMM バッファプールサイズと比較した場合、経過実行時間に大幅な短縮が見られます(約 6 分の 1)。 さらに、2 TiB E7v4 DRAM と 2 TiB Cascade Lake DCPMM の構成を比較した場合には約 20% の改善も見られました。 バッファプールのサイズが同じであるとした場合、この 20% の増加は、ほぼ新しいプロセッサのアーキテクチャとプロセッサのコア数の増加によるものだと考えられますが、 それでも、テストされた 4 ソケット Cascade Lake にインストールされていたが 24 x 128 GiB DCPMM のみであることを考慮すると深い意義があります。DCPMM は 12 TiB までスケーリングすることが可能であり、これは E7v4 が同じ 4 ソケットサーバーのフットプリントでサポートできるメモリの約 4 倍のメモリです。
以下の図 2 に示されるグラフは、この比較の結果を示しています。 両方のグラフの y 軸は経過時間(値が小さくなるほど良)で、さまざまな構成で得た結果が比較されています。
##### 図 2: 各種構成の経過時間の比較

* * *
### 書き込み集中型ワークロードベンチマーク
このベンチマークのワークロードは、すべての T4 タイプのワークロードを使用した HL7v2 メッセージングワークロードです。
* _T4 ワークロードは、ルーティングエンジンを使って、個別に変更されたメッセージを 4 つの各アウトバウントインターフェースにルーティングしました。 平均して、インバウンドメッセージの 4 つのセグメントが変換ごとに変更されました(4 つの変換で 1 件につき 4 件)。 各インバウンドメッセージでは、4 つのデータ変換の実行により 4 つのメッセージがアウトバウンドに送信され、5 つの HL7 メッセージオブジェクトがデータベースに作成されました。_
各システムは 128 個のインバウンドビジネスサービスと各インバウンドインターフェースに送信される 4800 件のメッセージ(インバウンドメッセージ合計 614,400 件、アウトバウンドメッセージ合計 2,457,600 件)で構成されています。
このベンチマークワークロードのスループットの単位は「1秒あたりのメッセージ数」です。 トランザクションジャーナルのスループットとレイテンシは高スループットを維持する上で重要なコンポーネントであるため、ベンチマーク実行中のジャーナルの書き込みにも関心があります(記録されています)。 IRIS for Health のメッセージ耐久性保証のパフォーマンスに直接影響を与えるため、その操作において、トランザクションジャーナルの書き込みパフォーマンスが重要となります。 ジャーナルのスループットが低下すると、アプリケーションプロセスによってジャーナルバッファの可用性が阻止されてしまいます。
#### ハードウェア構成
書き込み集中型ワークロードでは、2 ソケットサーバーを使用することにしました。 192 GB の DRAM と 1.5 TiB の DCPMM しかないため、この構成は前述の 4 ソケット構成よりも小さくなります。 DCPMM を使用した Cascade Lake のワークロードを以前の初代 Intel® Xeon® スケーラブルプロセッサ(Skylake)サーバーに比較しました。 両サーバーには 750GiB Intel® Optane™ SSD DC P4800X ドライブがローカル接続されています。
図 3 にはこのハードウェア構成と、それぞれの 2 ソケット構成の比較が示されています。
図 3: 書き込み集中型ワークロードのハードウェア構成
| サーバー #1 の構成 | サーバー #2 の構成 |
| ------------------------------------- | ------------------------------------ |
| プロセッサ: 2 x Gold 6152 @ 2.1Ghz | プロセッサ: 2 x Gold 6252 @ 2.1Ghz |
| メモリ: 192GiB DRAM | メモリ: 1.5TiB DCPMM + 192GiB DRAM |
| ストレージ: 2 x 750GiB P4800X Optane SSD | ストレージ: 2 x 750GiB P4800X Optane SSD |
| | DCPMM: Memory Mode & App Direct モード |
#### ベンチマークの結果と結論
テスト 1: このテストでは、図 3 のサーバー #1 構成に示される Skylake サーバーにおいて前述の**_T4 ワークロード_**を実行しました。 Skylake サーバーは、2010 ジャーナル書き込み/秒のジャーナルファイル書き込み速度で約 3355 件のインバウンドメッセージの持続的なスループットを示しました。
テスト 2: このテストでは、図 3 のサーバー #2 構成に示される Cascade Lake サーバーにおいて、DCPMM の _**Memory Mode**_ を指定して同じワークロードを実行しました。 これは、2400 ジャーナル書き込み/秒のジャーナルファイル書き込み速度で約 4684 件のインバウンドメッセージの持続的なスループットという大幅な向上を示しました。 **これは、テスト 1 に比較すると 39% の増加です。**
テスト 3: このテストでは、図 3 のサーバー #2 構成に示される Cascade Lake サーバーにおいて同じワークロードを実行しましたが、今度は DCPMM を App Direct Mode に指定し、DCPMM による何らかの実行を構成せずに実行しました。 このテストの目的は、DRAM のみを使用した Cascade Lake のパフォーマンスとスループットを DCPMM と DRAM を使用した Cascade Lake に比較して測定することです。 DCPMM が使用されていない場合でもスループットは(比較的小さいとは言え)向上したという、特に驚くことでもない結果が出ました。 これは、2540 ジャーナル書き込み/秒のジャーナルファイル書き込み速度で約 4845 件のインバウンドメッセージの持続的なスループットという向上を示しました。 DCPMM は DRAM に比べてより高いレイテンシがあり、更新が大量に流入すればパフォーマンスが低下するため、予想された動作と言えます。 別の見方をすると、まったく同じサーバーで DCPMM を Memory Mode で使用する場合、書き込みの取り込みワークロードに 5% 未満の低下があることになります。 また、Skylake を Cascade Lake(DRAM のみ)に比較した場合、**テスト 1 の Skylake サーバーに比べて 44% の増加が得られています。**
テスト 4: このテストでは、図 3 のサーバー #2 構成に示される Cascade Lake サーバーにおいて同じワークロードを実行しましたが、今度は DCPMM を App Direct Mode に指定し、App Direct Mode をジャーナルファイルシステム用にマウントされた DAX XFS として使用して実行しました。 これは 2630/秒のジャーナルファイル書き込み速度で 1 秒あたり 5399 件のインバウンドメッセージというさらに高いスループットを示しました。 この種のワークロードでは App Direct Mode の DCPMM がより適した DCPMM の使用方法であることが示されています。 これらの結果を最初の Skylake 構成と比較すると、**テスト 1 の Skylake サーバーに比べ、スループットが 60% 増加しています。**

* * *
## InterSystems IRIS の推奨される Intel DCPMM ユースケース
Intel® Optane™ DC パーシステントメモリを使用することで InterSystems IRIS にメリットが与えられるユースケースと構成にはいくつかあります。
### Memory Mode
このモードは、単一の InterSystems IRIS デプロイや大規模な InterSystems IRIS シャードクラスタでの膨大なデータベースキャッシュに最適です。後者の環境ではより多く(またはすべて)のデータベースをメモリにキャッシュできます。 DCPMM と DRAM の比率は最大 8:1 にすることをお勧めします。「ホットメモリ」を L4 キャッシュレイヤーとして機能する DRAM に保持する際に重要です。 これは、リソース占有やその他のメモリキャッシュラインなど、共有内部 IRIS メモリ構造において特に重要となります。

### App Direct Mode(DAX XFS)– ジャーナルディスクデバイス
このモードは、DCPMM をトランザクションジャーナルファイルのディスクデバイスとして使用する場合に最適です。 DCPMM は Linux にマウントされた XFS ファイルシステムとしてオペレーティングシステムに表示されます。 DAX XFS を使用するメリットは、これによって PCIe バスのオーバーヘッドとファイルシステムからのダイレクトメモリアクセスが緩和されることにあります。 HL7v2 ベンチマークの結果に示されるように、書き込みレイテンシによって HL7 メッセージングのスループットは大幅に向上します。 また、ストレージには従来のディスクデバイスと同様に、再起動や電源サイクル時における永続性と耐久性が備わっています。

### App Direct Mode(DAX XFS)– ジャーナル + 書き込みイメージジャーナル(WIJ)ディスクデバイス
このユースケースでは、App Direct モードの用法がトランザクションジャーナルと書き込みイメージジャーナル(WIJ)の両方に拡張されます。 両ファイルは書き込み集中型であるため、超低レイテンシと永続性のメリットを確実に得られます。

### Dual Mode: Memory + App Direct Modes
DCPMM を Dual Mode で使用すると DCPMM のメリットが拡大し、トランザクションジャーナルや書き込みイメージジャーナルデバイスで大規模なデータベースキャッシュと超低レイテンシを実現できるようになります。 このユースケースでは、DCPMM は OS にマウントされた XFS ファイルシステムとオペレーティングシステムの RAM として表示されます。 これは、DCPMM の一定の割合を DAX XFS に割り当て、残りを Memory Mode に割り当てることで可能です。 前述のように、インストールされている DRAM はプロセッサの L4 のようなキャッシュとして機能します。

### 「疑似」Dual Mode
疑似 Dual Mode 寄りにユースケースモデルを拡張するために、OLTPタイプのワークロード用と分析または大規模なクエリーニーズ用に高速のインバウンドトランザクションと更新が伴うトランザクションと分析の並行ワークロード(HTAP ワークロードとしても知られています)タイプのワークロードがあり、さらに [InterSystems IRIS 共有クラスタ](https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GSCALE_sharding#GSCALE_sharding_reference_plan)内ではそれぞれの InterSystems IRIS ノードタイプが DCPMM のさまざまなモードで稼働しています。
この例では、グローバルバッファの大規模データベースキャッシュと、トランザクションワークロード用に DAX XFS として Dual Mode または App Direct のいずれかで実行する[データノード](https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GSCALE_sharding#GSCALE_sharding_reference_plan_basic)のメリットを得られるように、DCPMM Memory Mode で実行する大規模なクエリ/分析ワークロードを処理する InterSystems IRIS [計算ノード](https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GSCALE_sharding#GSCALE_sharding_reference_plan_qs)が追加されています。

* * *
## まとめ
インフラストラクチャの選択に関して言えば、InterSystems IRIS には多数のオプションが提供されています。 インフラストラクチャの要件はアプリケーション、ワークロードプロファイル、およびビジネスニーズによって決まり、これらのテクノロジーとインフラストラクチャの選択が、ビジネスにおけるアプリケーションの成功、採用、および重要性を左右します。 第 2 世代 Intel® Xeon® スケーラブルプロセッサと Intel® Optane™ DC パーシステントメモリを使用した InterSystems IRIS は、ビジネスに大きな影響を与える InterSystems IRIS ベースアプリケーションに画期的なスケーリング性能とスループット性能を与えることができます。
**InterSystems IRIS と Intel DCPMM 対応サーバーには、次のようなメリットがあります。**
* Memory Mode の DCPMM を使用した InterSystems IRIS または InterSystems IRIS for Health データベースキャッシュにマルチテラバイトのデータベースが完全に収まるようにメモリ容量を増加します。 ストレージ(ディスク)からの読み取りと比較した場合、サイズが増加するにつれてシステムメモリを利用する InterSystems IRIS の実証されたメモリキャッシュ機能によって、コードを変更することなくクエリへの応答パフォーマンスを 6 倍向上させることができます。
* 同一のプロセッサを使って、利用可能な最速の NVMe ドライブから、App Direct モードによって DAX XFS ファイルシステムとして DCPMM を利用するようにトランザクションジャーナルディスクを変更するだけで、HL7 変換など、InterSystems IRIS と InterSystems IRIS for Health に基づく高速データ相互運用性スループットアプリケーションのパフォーマンスを最大 60% 増のスループットに改善します。 メモリ速度のデータ転送とデータの永続性を活用することで、InterSystems IRIS と InterSystems IRIS for Health に大きなメリットが与えられます。
* 読み取り集中型ワークロードか書き込み集中型ワークロードか、またはその両方のワークロードかに関係なく、Mixed Mode の DCPMM を使った 1 つのリソースコンポーネントの為だけにサーバー全体を過剰に割り当てることなく、必要に応じて計算リソースを拡大します。
お客様の InterSystems IRIS ベースのアプリケーションに最適なハードウェア構成についてのご相談は、InterSystems テクノロジーアーキテクトにお問い合わせください。
お知らせ
Mihoko Iijima · 2021年6月20日
開発者の皆さん、こんにちは!次のコンテストのテーマが発表されました!
🏆 InterSystems AI Programming Contest 🏆
応募期間は 2021年6月28日~7月18日 です!
💰 賞金総額: $8,750 💰
(投票期間は 2021年7月19日~7月25日、勝者発表は 7月26日を予定しています)
優勝特典
1、審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。
🥇 1位 - $4,000
🥈 2位 - $2,000
🥉 3位 - $1,000
2、開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。
🥇 1位 - $1000
🥈 2位 - $500
🥉 3位 - $250
複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。
参加資格
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
👥 開発者がチームを組んで共同でアプリケーションを作成し、応募することもできます! 1チーム 2~5名 までご参加いただけます。
チームでご応募いただく場合は、アプリケーションの README にチームメンバー名の記載をお忘れなく!!(開発者コミュニティのプロファイルのリンクもお願いします)
コンテストのスケジュール
6月28日~7月18日 応募期間(Open Exchange へ作成されたアプリケーションをアップロードいただける期間=3週間です。この期間内であればアップロード後も自由に編集できます。)
7月19日~7月25 投票(1週間)
7月26日 勝者発表(US時間に発表します)
コンテストのテーマ
🤖 Artificial Intelligence and Machine Learning 🤖
InterSystems IRIS を使用した AI/ML ソリューションを開発してください。
IRIS を使用して、ライブラリ、パッケージ、ツール、AI/ML ソリューションを作成いただき、ご応募ください。
応募要件は以下の通りです。
1、応募可能なアプリケーション
Open Exchange アプリケーションの新規作成、または既存アプリケーションであっても大幅に改善されているものであればご応募いただけます。
コミュニティの担当チームは、コンテストへの応募を承認する前に申請された全アプリケーションをレビューします。
2、アプリケーションは、InterSystems IRIS の AI/ML 機能のいずれかを使用してください。
3、アプリケーションは、IRIS Community Edition 、IRIS for Health Community Edition、IRIS Advanced Analytics Community Edition のいずれかで動作する必要があります。
4、アプリケーションはオープンソースとして、GitHub で公開する必要があります。
5、アプリケーションの README ファイルは、英語で記述してください(日本語で記述したものがあればそのまま掲載いただき、英文の追記をお願いします)。また、インストール手順や、アプリケーションがどのように動作するかの説明、またはビデオデモを含めてください。
6、InterSystems ObjectScript で記述したソースコードがある場合は、(XMLでエクスポートしたファイルではなく)UDL 形式 で提供する必要があります。例
上記要件は、変更される場合もあります。予めご了承ください。
Helpful resources
1. 開発環境テンプレート
InterSystems IntegragedML template:こちらの記事に含まれるビデオに、テンプレートの使い方(日本語)をご紹介しています。 00:46~17:55 をご参照ください。
IRIS R Gateway template
2. データインポートツール
Data Import Wizard
CSVGEN - CSV インポートユーティリティ
CSVGEN-UI - CSVGEN の Web UI 版
3. ドキュメント
Using IntegratedML
4. オンラインコース(英語)
Learn IntegratedML in InterSystems IRIS
Preparing Your Data for Machine Learning
Predictive Modeling with the Machine Learning Toolkit
5. IntegratedML ー SQLから始める機械学習(ビデオ:日本語)
6. コンテスト応募方法(このページ末尾のビデオをご参照ください)
審査及び投票ルール
投票ルールは近日公開します。
皆様からの✨素敵な✨プロジェクトをお待ちしております!コミュニティのコーディングマラソンに参加して、優勝を目指しましょう!(ง`0´)ง
❗️ コンテスト規約については、こちらをご参照ください。❗️
ご応募方法について
以下の応募方法ビデオをご参照ください。
以下の応募方法ビデオをご参照ください。
以下、コンテストに応募する迄の手順をご説明します。
コンテスト応募までの流れは以下の通りです(※ビデオでは、3番以降の内容をご紹介しています)。
1、IRISプログラミングコンテスト用テンプレートを使用して、開発環境を準備します。
2、コンテスト用アプリケーションを作成します。
3、コンテストの準備が完了したら、ソースコードをローカルのGitリポジトリへコミットします。
初回コミット時に、Gitの初期設定がないためコミットが失敗することがあります。その場合は、以下のコマンドでGitユーザ名とEmailを設定します。
git config --global user.name "ここにユーザ名"
git config --global user.email "ここにメールアドレス”
4、ローカルのGitリポジトリのコミットが完了したら、リモートのGitリポジトリを作成します。
リポジトリ作成後、リモートリポジトリのURLをコピーします。
5、リモートのGitリポジトリへPushします。
git push ここにリモートのリポジトリのURL
6、OpenExchangeにログインし、アプリケーションを追加します。
※事前にDeveloper communityでユーザアカウントを作成する必要があります。ログイン後、Profile→Applications から Application をクリックし、4 でコピーしたリモートのGitリポジトリのURLを設定します。
アプリケーションを登録すると、画面右上に「Send Approval」のボタンが表示されるので、クリックします。
再度作成したアプリケーションを開くと、「Apply for Contest」ボタンが表示されるので、クリックすると応募が完了します。