InterSystems および Intel は先日、InterSystems IRIS を「Cascade Late」としても知られる第 2 世代 Intel® Xeon® スケーラブルプロセッサおよび Intel® Optane™ DC パーシステントメモリ(DCPMM)と組み合わせて一連のベンチマークを実施しました。 さまざまなワークロード設定とサーバー構成で、Intel の最新のサーバーテクノロジーを使用した InterSystems IRIS のパフォーマンスとスケーラビリティ機能を実証するのがこのベンチマークの目的です。 このレポートには、さまざまなベンチマークの結果とともに、Intel DCPMM と InterSystems IRIS のユースケースが 3 つ示されています。
現在では、基本的な REST API を Caché に実装する方法は一般的であり、これに関する優れたドキュメントが「REST in Caché」に掲載されています。
時々次のような疑問が投げ掛けられることがあります。
REST url のパラメータをオプションにするにはどうすればよいですか?
簡単に言えば、Caché では次のような URL をマッピングする URL マップを作成することができます。
http://server/API/object///old
この書き方は奇妙に見えるかもしれませんが、実際に有効な URL です。 詳細は、RFC3986 セクション 3.3 をご覧ください。
%CSP.Rest が提供しているフレームワークでは、実際に上記の URL に一致するマップを作成することができます。 上記の参照先のドキュメントには、URL マップは正規表現に変換されているという説明のみが補足として示されています。
この力を利用するには、正規表現を理解する必要があります。 Caché のコンテキストで正規表現の基礎を説明したドキュメントを Michael が執筆しています。こちらをご覧ください。 正規表現に慣れていない場合は、時間を取って一読することを強くお勧めします。
目的
このツールは、データベース内からランダム読み出し入力/出力(IO)を生成するために使用されます。 このツールの目的は、目標IOPSを達成し、許容範囲内のディスク応答時間の維持を確保するために、可能な限り多くのジョブを駆動することです。 IOテストから収集された結果は、IOサブシステムに基づいて構成ごとに異なります。 これらのテストを実行する前に、対応するオペレーティングシステムとストレージレベルの監視が、今後の分析のためにIOパフォーマンスの測定データーを保存するように設定されていることを確認してください。
Webサービスを呼び出す際、ビジネスオペレーションには、規定時間内に応答が返されない場合の動作を制御する設定があります。
クラスのコンパイル時に、定義済みのプロパティ、クエリ、またはインデックスごとに対応する複数のメソッドが自動的に生成されます。 これらのメソッドは非常に便利です。 この記事では、その一部について説明します。
開発者の皆さん
こんにちは。
ここでは、開発者コミュニティを最大限活用し、専門家からできる限り多くのことを学ぶ方法についてお伝えしたいと思います。
開発者コミュニティの上級ユーザになるためのこれらのステップをご確認ください。
開発者の皆さん
こんにちは。
開発者コミュニティの2021年6月の改善点についてお知らせします。
主な機能は
- 月間ダイジェストの改善
- ダイレクトメッセージのデザイン刷新(新機能も含みます)
です。詳細は以下の通りです。
RESTフレームワークの有用な機能の1つに、ディスパッチクラスがリクエストのプレフィックスを識別して別のディスパッチクラスに転送するという機能があります。 URLマップをモジュール化するこの手法により、コードの可読性が向上し、インターフェースの個別のバージョンが管理しやすくなります。また、特定のユーザーのみがアクセスできるように、API呼び出しを保護する手段も得ることができます。
概要
CachéインスタンスにRESTサービスをセットアップするには、専用のSCPアプリケーションを定義して、それに関連付けられた、受信リクエストを処理するディスパッチクラスを作成する必要があります。 ディスパッチクラスは、%CSP.RESTを拡張し、URLマップを含むXDataブロックを含めます。 こうすることで、システムに、特定のリクエストを受信したときにどのメソッドを呼び出すのかを指示します。
以下に、例を示します。
この記事では、InterSystems Cachéにおけるマクロについて説明します。 マクロは、コンパイル中に一連の命令に置き換えられるシンボリック名です。 マクロは、渡されたパラメーターとアクティブ化したシナリオに応じて、呼び出されるたびに一連の命令セットに「展開」されます。 これは、静的コードの場合もあれば、ObjectScriptを実行して得られる結果である場合もあります。 それでは、アプリケーションでマクロをどのように使用できるのかを見てみましょう。
開発者コミュニティの皆さん、こんにちは。
Discordについてはご存知の方も多いと思いますし、実際にチャットされている方も多いと思います。
開発者のソーシャルクラブに参加いただき、ぜひインターシステムズの技術をより身近なものにしてください!
💥 InterSystems Developers Discord Channel 💥
超高速なコミュニケーション手段としてご利用ください。
この記事では、syslogテーブルについて説明したいと思います。 syslogとは何か、どのように確認するのか、実際のエントリはどのようなものか、そしてなぜそれが重要であるのかについて説明します。 syslogテーブルには、重要な診断情報が含まれることがあります。 システムに何らかの問題が生じている場合に、このテーブルの確認方法とどのような情報が含まれているのかを理解しておくことが重要です。
注記(2019年6月): 多くの変更がありました。最新の情報についてはこちらをご覧ください。 注記(2018年9月): この記事が最初に投稿されて以来、多くの変更がありました。Dockerコンテナバージョンを使用することをお勧めします。コンテナとして実行するためのプロジェクトと説明は、以前と同じGitHubの公開場所に残っていますので、ダウンロードして実行し、必要に応じて変更してください。
MonCaché — InterSystems Caché での MongoDB API 実装
免責事項:この記事は筆者の私見を反映したものであり、InterSystemsの公式見解とは関係ありません。
構想
プロジェクトの構想は、クライアント側のコードを変更せずに MongoDB の代わりに InterSystems Caché を使用できるように、ドキュメントを検索、保存、更新、および削除するための基本的な MongoDB(v2.4.9) API 機能を実装するところにあります。
動機
おそらく、MongoDB に基づくインターフェースを使って、データストレージに InterSystems Caché を使用すると、パフォーマンスが向上するのではないか。 このプロジェクトは、学士号を取得するための研究プロジェクトとして始まりました。
ダメなわけないよね?! ¯\(ツ)/¯
制限
この研究プロジェクトを進める過程で、いくつかの簡略化が行われました。
GIS は Geographic Information System(地理情報システム)の略です。
これは、Caché の典型的な分野ではありませんが、 データ量の多い環境に違いありません。
主要分野には、次の 3 つがあります。
ビジュアルフロントエンド:
多数の商用およびオープンソース製品がカバーする成熟した分野です。
ここには Caché は必要ありません。GIS の数学:
JTS(Java Topology Suite)は、すべての要件を網羅した固定標準です。Java Gateway によって、または Caché Call Out Gateway
を使ったこの標準ライブラリの C++ インカーネーションの C によって Caché にリンク付けることができます。
これまでのところ、Caché による付加価値はありません。すべての地理オブジェクトとその属性、特に、道路地図、高速道路、会社、個人宅、鉄道、人口統計データなどの地理座標を保持しているデータベース
以前、WRCケースのエスカレーションを受けました。お客様は、Cachéに、rawDEFLATE圧縮/解凍機能が組み込まれているかを尋ねていました。
DEFLATEについて話すには、Zlibについても話す必要があります。Zlibは、90年代半ばに開発された無料の圧縮/解凍ライブラリで、、デファクトスタンダードとなっているからです。
Zlibは特定のDEFLATE圧縮/解凍アルゴリズムと、ラッパー(gzip、zlibなど)内でのカプセル化するという考えの下で動作します。
https://en.wikipedia.org/wiki/Zlib
Caché Object Script(COS)ではすでにGZIPがサポートされており、gzipファイルを使用するために、ファイルデバイスまたはtcpデバイス、またはStreamclassで/GZIP=1を使用できるようになっています。
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_propstream_gzip
コンテナ
InterSystems IRIS Data Platformの公開により、Dockerコンテナでも製品を提供しています。 コンテナとは一体何でしょうか。
基本的なコンテナの定義は、プロセスのサンドボックスの定義です。
コンテナは、たとえば実行できるという点において、仮想マシン(VM)に似た部分を持つソフトウェア定義パッケージです。
コンテナは、完全なOSエミュレーションを使わずに分離することができるため、 VMよりもはるかに軽量です。
本質的に、コンテナは、どのようにアプリケーションをシステムから別のシステムに確実に移動し、それが動作することを保証できるのかという問題に対する答えと言えます。 アプリケーションのすべての依存関係をコンテナにカプセル化し、プロセス分離領域を作成することにより、アプリケーションソリューションがプラットフォーム間で移動した場合でも動作するという高い保証を得ることができます。
以下の記事では、DeepSee のより柔軟なアーキテクチャ設計の概要を説明します。 前の例で説明したとおり、この実装には、DeepSee キャッシュや DeepSee の実装と設定、および同期グローバル用の個別のデータベースが含まれています。 この例では、DeepSee インデックスを保存するための新しいデータベースを紹介します。 DeepSee インデックスがファクトテーブルや次元テーブルとともにマッピングされないように、グローバルマッピングを再定義します。

以下の記事では、DeepSee の中程度の複雑さのアーキテクチャ設計を説明します。 前の例で説明したとおり、この実装には、DeepSee キャッシュや DeepSee の実装と設定用の個別のデータベースが含まれています。 この記事では、同期に必要なグローバルの保存用と、ファクトテーブルとインデックスの保存用に、2 つの新しいデータベースを紹介します。

以下の記事は、DeepSee の基本的なアーキテクチャを実装するためのガイドです。 この実装には、DeepSee キャッシュ用のデータベースと DeepSee 実装と設定用のデータベースが含まれています。
InterSystems API Manager (IAM) バージョン2.3がリリースされました
IAMコンテナや以前のバージョンからアップグレードに必要な関連ソフトウェアは全てWRCソフトウエア配布サイトの「Components」エリアからダウンロードできます。
このリリースのビルド番号は IAM 2.3.3.2-1 です。
このリリースはKong Enterprise バージョン2.3.3.2を基にしています。
InterSystems API Manager バージョン2.3を使用することで、セキュアな方法でのデプロイや高可用性対応がより簡単に実現できます。
IAMは以下の内容を含め、さまざまな新機能があります。
- ハイブリッドモードの紹介
- Docker secretの広域サポート
ハイブリッドモードはデータプレーンとコントロールプレーンのIAMノードをデプロイできます。データプレーンがAPIトラフィックを扱っている間にコントロールプレーンはデータプレーンノードを設定したり、データプレーンからのテレメトリーを観察するのに使われます。これは導入時における柔軟性とHAシナリオを容易に実現できます。ハイブリッドモードの詳細はこちら。この機能はインターシステムズ開発者コミュニティで後ほど詳しく紹介されます。
Java Business Host終了のお知らせ
IRIS 2020.1、IRIS for Health 2020.1にてリリースされたPEXは、Java Business Hostよりも優れた方法でプロダクションにJavaアプリを組み込めるようになりました。PEXは相互運用でのコンポーネントを構築する完全なAPIを持っており、Javaと.Netの両方で利用可能です。
Java Business HostはIRIS、IRIS for Health 2020.4より削除されました。Java Business Hostをご利用のお客様にはPEXへの移行をお勧めします。
PEXの利点
- Javaまたは.Netでプロダクションコンポーネントを作成可能
- コンポーネント間でより複雑なメッセージ構造の受け渡しが可能
- 設定の簡略化
- ObjectScriptを必要としないため開発の簡素化が可能
PEXへのマイグレーションについての詳細は Java Business Host から PEX への移行 をご参照ください。
以下の記事は、この連載の締めくくりとして、完全に柔軟なアーキテクチャの例で確認されたすべてのデータベースのリストを掲載しています。

第2部: インデックス処理
クラスにどのようなインデックスが必要であるのか、それをどのように定義するのかについて理解できたので、 次に、どのように処理するのかについて確認しましょう。
クエリプラン
(注意: クラスに変更を適用する場合と同様に、ライブシステムにインデックスを追加する場合にもリスクが伴います。インデックスが入力されているときに、ユーザーがデータにアクセスしたり更新したりすると、クエリ結果が空になったり誤った結果が生じることがあります。また、構築中のインデックスが破損する場合もあります。 ライブシステムでインデックスを定義したり使用したりするには追加の手順があり、それについてはこのセクションで触れていますが、詳細はドキュメントに記載されています。)
新しいインデックスの準備ができたら、SQLオプティマイザが、クエリを実行する上で最も効率的に読み取れるインデックスであると判断するかどうかを確認できます。 プランを確認するために実際にクエリを実行する必要はありません。 クエリがあれば、プランをプログラムで確認することができます。
Set query = 1
Set query(1) = “SELECT SSN,Name FROM Sample.Person WHERE Office_State = 'MA'”
これは、SQLインデックスに関する2部構成の記事の前半です。
第1部 - インデックスを理解する
インデックスとは?
最後に図書館に行った時のことを思い出してください。 通常そこには、分野別(そして作者順と題名順)に整理された本が並び、それぞれの棚には、本の分野を説明したコードが記載された本立てがあります。 特定の分野の本を収集する場合、すべての通路を歩いて一冊ずつ本の表紙を読む代わりに、目的の分野の本棚に直接向かって選ぶことができるでしょう。
SQLインデックスにもこれと同じ機能があります。テーブルの各行にフィールドの値へのクイック参照を提供することで、パフォーマンスを向上させています。
インデックスの設定は、最適なSQLパフォーマンスを得られるようにクラスを準備する際の主なステップの1つです。
この記事では、次のことについて説明します。
- インデックスとは何か。いつ、なぜそれを使用するか。
- どのようなインデックスが存在するか、どのようなシナリオに適しているのか。
- インデックスの例
- 作成方法
この記事では、Sampleスキーマのクラスを参照します。 このスキーマは以下に示すGitHubリポジトリにあります。また、CachéとEnsembleでインストールされるSamplesネームスペースでも提供されています。
- ブロックチェーン
この記事を書いている時点(2019年2月)で、ビットコインの価値はそれが絶頂期だったころの 5 分の 1 未満に下落しています。 そのため、ブロックチェーンの私の体験について誰かに話すときに最初に耳にするのは、「今頃ブロックチェーンを欲しがる人がいるのか」という偽りなく懐疑的な言葉です。
その通り。ブロックチェーンの盛り上がりは衰退しています。 ところが、それが基づいているテクノロジーはここにとどまり、特定の分野で使用され続けるでしょう。一般的にインターネットではこのテクノロジーの使用方法が記述された資料でいっぱいです。

開発者の皆さん こんにちは。
開発者コミュニティの2021年4月の変更内容をお届けします。 主な機能は以下の通りです。
- ソースコードでのクリップボードへのコピーボタン
- 翻訳ページの投稿
- 投稿へのプライベートリプライ
- インターシステムズの公式リリース、アラートページ
詳細は以下をご覧ください


中間データベースを使用して、Grafana と IRIS(または Cache/Ensemble)を使用する方法を説明した非常に有益な記事がコミュニティにいくつか掲載されています。
しかし私は、IRIS 構造に直接アクセスしたいと考えていました。 特にこのリンクで説明しているように、SQL でアクセス可能なCaché履歴モニターのデータにアクセスしたかったのです。
https://community.intersystems.com/post/apm-using-cach%C3%A9-history-monitor
また、データをいじりたくもありませんでした。
必要とするデータを返すクラスクエリはすでにあったので、それらを、JSON を返す REST クラスに埋め込むだけで良かったからです。 クラス Grafana.MonitorData はまだ含めていません。それでなければならないという理由があるわけではなかったためですが、要望があれば、含めることは可能です。
ObjectScriptには、エラー(ステータスコード、例外、SQLCODEなど)を処理する方法が少なくとも3つあります。 ほとんどのシステムコードにはステータスが使用されていますが、例外は、いくつかの理由により、より簡単に処理することができます。 レガシーコードを使用している場合、さまざまな手法の変換にいくらか時間が掛かりますが、 参考として、次のスニペットをよく使用しています。 皆さんのお役にも立てればと思います。
数年ほど前、Caché Foundationsの講座(現「Developing Using InterSystems Objects and SQL」)において、%UnitTestフレームワークの基礎を講義していたことがあります。 その時、ある受講者から、ユニットテストを実行している間に、パフォーマンス統計を収集できるかどうかを尋ねられました。 それから数週間後、この質問に答えるために、%UnitTestの例にコードを追加したのですが、 ようやく、このコミュニティでも共有することにしました。
この記事には、IAM の基本概念を学習するための、教材、例、演習が含まれます。
すべてのリソースはこちらの git から入手できます: https://github.com/grongierisc/iam-training
ソリューションは training ブランチにあります。
この記事では、次の点について説明します。
