これはInterSystems FAQ サイトの記事です。
サーバ側ロジックの記載に使用する ObjectScript でのエラーが発生した場合の対処方法については「ObjectScriptでエラーが発生したら」にまとめています。
ぜひご参照ください!
これはInterSystems FAQ サイトの記事です。
サーバ側ロジックの記載に使用する ObjectScript でのエラーが発生した場合の対処方法については「ObjectScriptでエラーが発生したら」にまとめています。
ぜひご参照ください!
Cachéデータベースのオブジェクトおよびリレーショナルデータモデルは、標準、ビットマップ 、ビットスライスの3種類のインデックスをサポートします。 これら3つのネイティブタイプに加えて、開発者は独自のカスタムタイプのインデックスを宣言し、バージョン2013.1以降の任意のクラスで使用できます。 たとえば、iFindテキストインデックスは、そのメカニズムを使用しています。
カスタムインデックスタイプは、挿入、更新、削除を実行するための%Library.FunctionalIndexインターフェースのメソッドを実装するクラスです。 新しいインデックスを宣言するときに、そのようなクラスをインデックスタイプとして指定できます。
例:
CustomPackage.CustomIndex クラスは、カスタムインデックスを実装するまさにそのクラスです。
たとえば、ハッカソン中に私たちのチーム(Andrey Rechitsky 、 Aleksander Pogrebnikov、そして私)が開発した空間データのクワッドツリーベースのインデックスの小さなプロトタイプを分析してみましょう。
開発者の皆さん、こんにちは!
Full Stack コンテストについての続報をお伝えします!
投票期間に追加ポイントを獲得できる「テクノロジーボーナス」について紹介します。
対象となる技術は、以下の通りです。
詳細は以下の通りです。
フルスタック・アプリケーションから、REST API 経由で InterSystems IRIS にアクセスるとボーナスポイントを獲得できます。REST API をご自身で開発されるか、組み込みのものを利用したり、ZPM 経由でインストールするなど、選択できます。
RESTサービス作成方法については、ドキュメントや IRIS で作成する REST サーバの仕組み をご参照ください。
InterSystems Native API(.NET、Java、Python、Node.
開発者の皆さん、こんにちは。
今回の記事では前回の記事に引き続き、IRIS for Health上で、FHIRリポジトリ+OAuth2認可サーバ/リソースサーバを構成する方法をご案内します。
(注意:2020.4以降のバージョンではこの記事に記載されているスコープ指定では正しくリソースが取得できません。詳細はこちらの記事をご覧ください。)
パート1では、事前準備と、OAuth2認可サーバを構成し、アクセストークンを取得するとこまでをご紹介しました。
このパート2では、FHIRリポジトリの構築方法と、OAuth2クライアント/リソースサーバの構成方法をご紹介していきます。
今日構成する、FHIRリポジトリおよび、OAuth2クライアント/リソースサーバの構成は、前回パート1で構成したOAuth2認可サーバのIRISインスタンスと分けることもできますし、同じインスタンスに同居させることもできます。
この記事の中では前回と同じインスタンス上に構成していきます。
FHIRリポジトリの構築方法は、過去の記事「Azure上でIRIS for Healthをデプロイし、FHIR リポジトリを構築する方法」で紹介しています。
この記事は、Caché 以前の歴史に関するかなり個人的な見方を書いたものです。
過去の記事で紹介された Mike Kadow 氏の素晴らしい著書に対抗するつもりはありません。
私たちの歴史的背景は異なるため、この記事は過去に対する別の視点を生み出すことを意図しています。
全体的な話は、1966 年に MGH(マサチューセッツ総合病院)で 8K のメモリ(18 ビットワード)[現在 = 18K バイト] を搭載した PDP-7(シリアル番号#103)
が予備のシステムとして使用されたことから始まります。
「シリアル番号 103 は、
現在 [2014] は MGH のコックスがんセンターの敷地になっている取り壊されたセイヤービルの地下にありました。」
「Octo Barnett の指導の下、Neil Papparlardo と Curt Marble が
このマシンで最初のソフトウェアを開発し、リリースしました。」
彼らはこのソフトウェアを MUMPS と名付けました。 (引用元)
PDP-7
言語自体は古い形式の Basic にかなり近いものでした。
しかし、他のプログラミング言語に比べて大幅に改善されている点がありました。
日付範囲クエリが極端に遅くなっていませんか? SQLのパフォーマンスが低下していませんか?
日付範囲のサブクエリをまだご覧になっていない場合は、前回の投稿をご確認ください。
https://jp.community.intersystems.com/post/日付範囲クエリのsqlパフォーマンスを改善する
なぜ、こうも日付クエリに注目しているのでしょうか? それは、日付クエリが重要だからです。 それは報告であり、統計であり、自分の素晴らしい仕事を上司に証明するための数字です(もちろん、あなたが実際にそうしていればの話ですが )。では、前回と同じようなテーブルを見てみましょう。ただし、実際には MAXLEN と MINLEN を次のように適切に定義します。
では、先月のすべてのデータを取得したい場合を見てみましょう。 次のようなクエリを書き、「良い仕事」を考えます。
最近の大規模なベンチマーク活動で、アプリケーションのスケーリングに悪影響を与える過度の %sys CPU 時間が観察されました。
問題
TZ 環境変数が設定されていないため、 localtime() システムコールに多くの時間が費やされていることがわかりました。 観察結果を確認するための単純なテストルーチンが作成されましたが、TZ が設定されている場合と TZ が未設定の場合とでは経過時間と必要な CPUリソースが驚くほど違っていました。 TZ が設定されていない場合、localtime() から /etc/local_time への stat() システムコールの継承使用は非常に負荷が高いことがわかりました。
推奨事項
InterSystems は、x86 または Linux on Power のいずれの Linux インストール環境でも、TZ 環境変数を適切に設定して最適なパフォーマンスを確保することを強く推奨しています。 詳細については、「man tzset」を参照してください。
現在の Caché 2016.1のフィールドテストでは日付および時刻関連の関数に関する最適化が行われており、初期テストでは大幅に改善していることがわかっています。 以下は、TZ が設定されていない場合に PowerPC上のLinuxで新しい内部関数の呼び出しをテストした結果の出力例です。
アプリケーションに、効率的に検索したいフリーテキストを含むフィールドがありますか?これまで複数の方法を試してみたものの、顧客が要求するパフォーマンスを満たせなかった経験はありませんか?私は変わった手段を使ってあらゆる問題を解決できると思っていませんか。もうご存じですよね。私ができるのは、パフォーマンス低下に対処する優れたソリューションを提供することです。
いつものように、要約版が必要な場合は記事の最後まで飛ばしてください。ただ、それだと私はがっかりしてしまいますが。
最近の(2015.1以降の)バージョンのCaché/Ensemble/HealthShareのSAMPLESネームスペースでSample.Companyのバージョンを開くと、擬似ランダムに生成されたテキストであるMissionフィールドが表示されます。このテキストフィールドを検索してみましょう。 私はこの演習のために約256,246社データを生成しましたが、ご自身で必要な数の会社を生成してから同じ手順に従ってください。例えば、次のクエリを実行するとしましょう。
SELECT * FROM Sample.Company WHERE Mission LIKE ‘% agile %’
これはかなり合理的なクエリですが、どのように実行されるのでしょうか?
皆さん、こんにちは。
InterSystems System Alerting and Monitoring (SAM)をご存知でしょうか。InterSystems IRIS 2020.1以降に対応し、IRISやそのアプリケーションの監視を行うソリューションです。といってもシステム監視を行うPrometheus、アラートを管理するAlertManager、ダッシュボードとしてグラフ等を表示させるGrafanaなどを組み合わせたものですが、IRISの利用者に合わせて設定しやすくなっています。
なお、これらのコンポーネントはDockerコンテナを使用しますので、Docker(19.3.098以降)ならびにDocker compose(1.25以降)をインストールいただく必要があります。
IRISの監視APIについてはこちらをご覧ください。
アプリケーション自体はDockerコンテナにて提供されますので、DockerComposeのファイルやシェルスクリプトを以下のGitHubリポジトリからダウンロードします。
https://github.com/intersystems-community/sam
以下のgzipファイルをダウンロードし、展開します。
sam-1.0.0.XXX-unix.tar.gz
$ tar zpxvf sam-1.0.0.115-unix.tar.gz開発者の皆さん、こんにちは。
今回の記事ではFHIRと組み合わせて使用されるケースが増えてきている、権限の認可(Authorization)を行うためのOAuth2について取り上げます。
まずこのパート1では、IRIS for HealthおよびApacheのDockerコンテナの起動と、IRIS for Health上で、OAuth2認可サーバ機能を構成し、REST開発ツールPostmanからアクセスし、アクセストークンを取得する方法について解説します。
さらにパート2以降では、IRIS for HealthにFHIRリポジトリ機能を追加し、OAuth2リソースサーバ構成を追加して、Postmanからアクセストークンを使用したFHIRリクエストの実行方法まで解説します。
InterSystems製品のOAuth2機能の解説については、すでにいくつかの記事が開発者コミュニティ上に公開されていますが、今回は改めて最新バージョンでの構成方法を解説したいと思います。
InterSystems IRIS Open Authorization Framework(OAuth 2.0)の実装 - パート1
今回の記事では、最新のInterSystems IRIS for Health 2020.3 Preview Editionを使用します。
ルーチンをGit等でバージョン管理する等の理由で、IRIS(/Cache)サーバー間でファイル連携している場合に、新規ルーチンをファイルから作成し、サーバーへ「Import and Compile」等を実行するとエラーが出てインポートに失敗する事がある。(xxxxxxxxxxはルーチン名)
ERROR #16006: Document 'xxxxxxxxxx' name is invalid
先にサーバーからインポートした事があればお気づきの方もいるかもしれないが、InterSystems ObjectScript エクステンションを使用してルーチンをインポートする場合、ルーチンの先頭行に以下のように1行必要となっている。これが無いと上記のようにエラーとなってしまう。
ROUTINE xxxxxxxxxx
INTやINCファイルの場合は、Type属性が必要。Type属性を省略するとMACファイルとしてインポートされる。
皆さん、こんにちは!
FHIR コンテストで🎊優勝🎊された Henrique Gonçalves Dias さんの優勝作品 IRIS FHIR Portal をビデオでご紹介します。
Henrique Gonçalves Dias さんが日本語訳を付けてくれた IRIS FHIR Portal 概要ページもあります。ぜひご参照ください。
過去のコンテストも含めコードは全て OpenExchange で公開されています。
ダウンロードやコンテナ開始までの手順は、OpenExchange の IRIS FHIR Portal ページをご参照いただくか、コンテスト用テンプレートの使い方ビデオの 0:28~1:04/3:04~ をご参照ください(コンテスト用テンプレートをベースに開発いただいているので、基本的な手順は同じです)。
Henriqueさん、おめでとうございます!!
概要
私たちの目標は、 IRISでFHIR機能を使用し患者のカルテをいかに容易に見せるかです。
皆さんこんにちは。
第5回 InterSystems IRIS プログラミングコンテスト(FHIRコンテスト) への応募は終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。
今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!
🏆 審査員賞 -特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $1,500 は iris-fhir-portal を開発された Henrique Gonçalves Diasさんに贈られました!
🥇 1位 - $1,500 は iris4health-fhir-analytics を開発された José Roberto Pereira さんに贈られました!
🥉 3位 - $500は fhir-chatbot を開発された Renato Banzai さんに贈られました!
🏆 開発者コミュニティ賞 - 最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $1,000 は iris-fhir-portal を開発された Henrique Gonçalves Diasさんに贈られました!
🥈 2位 - $500 は iris4health-fhir-analytics を開発された José Roberto Pereira さんに贈られました!
InterSystems IRISをモニタリングする方法はいくつかあります。
本記事では上記に加えてAWSにIRISをデプロイする場合に自然な選択子となりうる方法として、CloudWatchを使用する方法をご紹介します。
AWSネイティブの各種サービスとIRISを連携させる方法の典型のご紹介を兼ねています。
内容は、Open Exchangeで公開されています。日本語のREADMEがありますのでそちらをご覧ください。
README.MDからの引用
InterSystems IRISの各種メトリクスとログをAWS CloudWatchに簡単に公開することができます。
これらメトリクスとログがあれば、IRISのデータをダッシュボードやアラートなどに統合することができます。
Prometheus+Grafana,SAM,CloudWatchについては、共通点があります。いずれもIRIS 2019.4から利用可能となった監視APIを使用している点です。下記のREST要求を出すだけで、任意のIRISホストの各種メトリクスの取得が出来ます。
NoSQLデータベースという言葉を聞かれたことがあると思います。色々な定義がありますが、簡単に言えば、文字通りSQLを使わない、つまりリレーショナルデータベース(RDB)以外のデータベースのことを指すのが一般的です。
InterSystems IRIS Data Platformでは、テーブルを定義してSQLでデータにアクセスできます。ですから、InterSystems IRIS Data Platformは厳密にNoSQLデータベースというわけではありません。しかし、InterSystems IRISの高パフォーマンスを支える「グローバル」は、40年も前からInterSystemsのコア技術として、現代で言うNoSQLデータベースを提供してきました。本稿では、InterSystems IRISの「グローバル」でグラフ構造を作り、それをPythonでアクセスする方法を紹介します。
本稿で説明する内容は動画でも公開しています。ぜひご覧ください。
NoSQLに分類されるデータベースには様々なデータモデルを扱うものがあります。以下に代表的なものを挙げます。
企業はグローバルコンピューティングインフラストラクチャを迅速かつ効率的に成長させて管理すると同時に、資本コストと費用を最適化して管理する必要があります。 Amazon Web Services(AWS)および Elastic Compute Cloud(EC2)コンピューティングおよびストレージサービスは、非常に堅牢なグローバルコンピューティングインフラストラクチャを提供することにより、最も要求の厳しいCachéベースのアプリケーションのニーズを満たします。
ここで紹介するサンプルは、以下のGitHubから入手可能です。
callclassmethod.ps1というファイル名です。
処理内容は、Caché (IRIS)のバージョン情報を表示するという非常に単純なものです。
Caché では.Net Bindingを使用していましたが、IRIS用に.Net Native APIで書き換えてみます。
以前のCaché のコードは以下の通りです。
作成者:Daniel Kutac(InterSystems セールスエンジニア)
パート 3. 付録
この連載の前のパートでは、InterSystems IRIS を OAUTH クライアントおよび認可/認証サーバー(OpenID Connect を使用)として機能するように構成する方法について学びました。 この連載の最後のパートでは、InterSystems IRIS OAuth 2.0 フレームワークを実装するクラスについて説明します。 また、一部の API クラスのメソッドの使用例についても説明します。
OAuth 2.0 を実装する API クラスは、目的に応じて 3 種類のグループに分けることができます。 すべてのクラスは %SYS ネームスペースで実装されています。 これらの一部は(% package 経由で)公開されていますが、一部は非公開になっており、開発者が直接呼び出すことはできません。
ICM(InterSystems Cloud Manager)のセットアップは難しいものではありませんが、様々な理由でそもそもDockerが使いづらいという状況があり得ます。
また、セキュリティ的に堅固な環境を得るために、既存VPC内のプライベートサブネット上にIRISクラスタをデプロイする方法のひとつに、同VPC内でICM実行する方法があります。
本稿では、ICMをAWSにデプロイする作業を、CloudFormationで自動化する方法をご紹介します。ICMに関しては、こちらの記事をご覧ください。
更新: 2020年11月24日 デフォルトVPC以外でも動作するよう変更しました。
このたび、InterSystems IRIS 2020.1 の日本語ドキュメントが完成しました。それぞれ以下のWEBサイトで公開をしています。
ページ内の「すべてのドキュメント」アイコンをクリックすることで、各技術コンテンツを参照いただけます。
.png)
IRIS for Windows では、以下の設定を行うことで、キューブの[ドキュメント]をクリックしたときに、上記の日本語ドキュメントページを表示させることが可能となります。
たとえば、IRIS 2020.1 の場合、以下のように httpd-doc.conf を編集することで、
キューブの[ドキュメント]をクリックすると、日本語ドキュメントページが表示されるようになります。
ぜひ日本語ドキュメントをご活用いただき、IRIS製品をお使いくださいませ!
作成者:Daniel Kutac(InterSystems セールスエンジニア) 注意: 使用されている URL に戸惑っている方のために。*元の連載記事では、dk-gs2016 と呼ばれるマシンの画面を使用していました。 新しいスクリーンショットは別のマシンから取得されています。 *WIN-U9J96QBJSAG という URL は dk-gs2016 であると見なしても構いません。
この短い連載の前のパートでは、OAUTH[1] クライアントとして機能する単純な使用事例について学びました。 今回は私たちの経験をまったく新しいレベルに引き上げましょう。 InterSystems IRIS がすべての OAUTH の役割を果たす、より複雑な環境を構築します。 クライアントの作成方法はすでに分かっていますので、認可サーバーだけでなく、OpenID Connect[2] プロバイダーにも注意を向けましょう。 前のパートと同様に、環境を準備する必要があります。 今回はより多くの変動要素があるため、より注意を要します。
具体例を見る前に、OpenID Connect について少し説明する必要があります。
IRISでは.Net Bindingは非推奨機能となりました。
.Net Bindingを使ったアプリケーションは、IRISで提供されている.Net Native APIを利用して書き換えることができます。
ここでは、実際に書き換えをおこなったサンプルコードを示しながら、具体的な方法を説明していきます。
OpenExchangeに登録しているVisMエミュレーターは、元々Cachéの.Net Bindingを使用して作成されました。
それをIRISの標準機能で動作可能にするために、.Net Native APIを使用して書き換えをおこないました。
以下にどのように書き換えを行ったかを順を追って説明します。
まず以前の参照を削除します。
Visual Studioのソリューションエクスプローラーの所で参照をクリックします。
表示されるInterSystems.Data.CacheClientを削除します。
(右クリックして削除を選ぶ)
次にプロジェクトメニューから参照の追加をクリックして、以下の2つのファイルを選択します。
(プロジェクトの.Net Frameworkバージョンに合わせて、それに対応するファイルを選択する
以下の例は、v4.5を選択)
本稿では、InterSystems IRISを使用してSQLベースのベンチマークを行う際に、実施していただきたい項目をご紹介します。 Linuxを念頭においていますが、Windowsでも考慮すべき点は同じです。
パフォーマンスに直結する、データベースバッファサイズの自動設定はデフォルトで有効になっています。自動設定は、実メモリの搭載量にかかわらず、データベースバッファを最大で1GBしか確保しません。
更新: 2020年11月20日 バージョン2020.3から、確保を試みるデータベースバッファが実メモリの25%に変更されました。
搭載実メモリ64GB未満の場合は実メモリの50%程度、搭載実メモリ64GB以上の場合は実メモリの70%を目途に、明示的に設定を行ってください。
設定するにはiris停止状態で、iris.cpfファイル(IRISインストール先\mgr\iris.cpf)を変更します。下記はブロックサイズ8KB用(既定値です)のデータベースバッファサイズの自動構成を4096(MB)に変更する例です。
修正前
[config]
globals=0,0,0,0,0,0
修正後
[config]
globals=0,0,4096,0,0,0
詳細はこちらです。
また、Linuxの場合、ヒュージ・ページ有効化の設定を行ってください。
この記事では、スナップショットを使用したソリューションとの統合の例を使って、_外部バックアップ_による Caché のバックアップ方法を紹介します。 このところ私が目にするソリューションの大半は、Linux の VMware にデプロイされているため、この記事の大半では、例として、ソリューションが VMware スナップショットテクノロジーをどのように統合しているかを説明しています。
Caché をインストールすると、Caché データベースを中断せずにバックアップできる Caché オンラインバックアップが含まれています。 しかし、システムがスケールアップするにつれ、より効率的なバックアップソリューションを検討する必要があります。 Caché データベースを含み、システムをバックアップするには、スナップショットテクノロジーに統合された_外部バックアップ_をお勧めします。
詳しい内容は外部バックアップのオンラインドキュメンテーションに説明されていますが、 主な考慮事項は次のとおりです。
「スナップショットの整合性を確保するために、スナップショットが作成される間、Caché はデータベースへの書き込みをfreezeする方法を提供しています。
開発者のみなさん、こんにちは!
InterSystems IRIS Data Platform を使用してオープンソースソリューションを作成するコンテストへようこそ!
今回のコンテスト用テンプレートはこちら!(8/10 更新) ➡️ IRIS-FHIR-Template ⬅️
(InterSystems IRIS for Health のプレビューリリース版:2020.3 が利用されている開発テンプレートです)
テンプレートの日本語 Readme をご用意しています。
優勝特典
1、審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。
🥇 1位 - $2,000
🥈 2位 - $1,000
🥉 3位 - $500
2、Developer Community で多く票を集めたソリューションには、以下の賞金が贈られます。
🥇 1位 - $1,000
🥈 2位 - $500
複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。
参加資格
どなたでもご参加いただけます!
InterSystems IRISは、管理ポータルへのアクセス方法がデフォルトではhttpとなっており、クライアントが社内、サーバがクラウドという配置の場合、なんらかの方法でトラフィックを暗号化したいと考える方も多いかと思います。
そこで、AWS上にて稼働中のIRISの管理ポータル(あるいは各種RESTサービス)との通信を暗号化する方法をいくつかご紹介したいと思います。
本記事では、アクセスにIRIS組み込みのapacheサーバを使用しています。ベンチマーク目的や本番環境のアプリケーションからのアクセス方法としては使用しないでください。
短期間・少人数での開発・動作検証・管理目的でのアクセスを暗号化する事を想定しています。
ドメイン名とメジャーな認証局発行のSSLサーバ証明書を用意できればベストなのですが、上記のような用途の場合、コスト面でなかなか難しいと思います。
ですので、下記の証明書の使用を想定しています。
- 自己署名(いわゆるオレオレ証明書)
- 自分で建てた認証局で署名した証明書(いわゆるオレオレ認証局)
また、下記のような実行環境を想定しています。
最初の記事では、RESTForms(永続クラス用のREST API)について説明をしました。 基本的な機能についてはすでに説明しましたが、ここではクエリ機能を中心とする高度な機能について説明します。
クエリを使用すると、任意の条件に基づいてデータの一部を取得できます。 RESTFormsには、2種類のクエリがあります。
一度定義すると、すべてのクラスか一部のクラスですぐに使用できます。 基本クエリはシステムによって定義されているものもありますが、開発者が追加することもできます。これらのクエリはすべて、SELECTのフィールドリストのみを定義します。 その他すべて(絞り込み、ページネーションなど)はRESTFormsによって行われます。 form/objects/:class/:query を呼び出すと、単純なクエリを実行できます。 2番目の :query パラメーターはクエリ名(クエリの SELECT と FROM の間の内容)を定義します。 デフォルトのクエリタイプは次のとおりです。
Google Cloud Platform(GCP)は、IaaS(サービスとしてのインフラストラクチャ)向けの機能性豊かな環境をクラウドとして提供しています。最新の InterSystems IRIS データプラットフォームなど、InterSystems の全製品に完全に対応していますが、 あらゆるプラットフォームやデプロイメントモデルと同様に、パフォーマンス、可用性、運用、管理手順などの環境に関わるすべての側面が正しく機能するように注意を払う必要があります。 この記事では、こういった各分野の詳細について説明しています。