開発者の皆さん、こんにちは!
InterSystems Analytics コンテスト2021 は終了しました。コーディングコンテストにご参加いただきありがとうございました!
この記事では、コンテスト受賞者を発表します!
受賞された開発者の皆さん、👏おめでとうございます!🎊
開発者の皆さん、こんにちは!
InterSystems Analytics コンテスト2021 は終了しました。コーディングコンテストにご参加いただきありがとうございました!
この記事では、コンテスト受賞者を発表します!
受賞された開発者の皆さん、👏おめでとうございます!🎊
特定文字列が含まれるグローバルを検索する時、どのように行われているでしょうか?
管理ポータルでグローバルを表示して Ctrl+F で検索することもできますが、サイズが大きなグローバルでは表示に時間がかかり難しい場合もあります。
もちろん、$ORDER や $QUERY 関数でループして含まれる文字列を検索することは可能です。
しかし、もっと簡単で便利な方法があります。
管理ポータルで行える、グローバル文字列検索機能 を使う方法です。
こちら、管理ポータルの [システムエクスプローラ] > [グローバル] :検索 から簡単に行えます
例えば、^%ISCLOGグローバルの中から「CSP error cleaning up after page」というエラーが含まれるグローバルを検索するときは以下のようになります。
.png)
↓
どうしても $ORDER や $QUERY 関数を使用してプログラムで行いたい、という場合は以下のようになります。
※サブスクリプトが複数あるときは、 $QUERY 関数で複数階層ループします。
これは InterSystems FAQ サイトの記事です。
システムクラス Config.MapGlobals を使用して登録することができます。
ネームスペース USER からデフォルトデータベース以外のデータベース SAMPLES にある ^Sample.PersonD をグローバルマッピングする方法は以下の通りです(ターミナルでの実行例)。
Config.MapGlobals クラスを使用する方法以外に、インストールマニフェストクラスを利用して定義することもできます。
インストールマニフェストクラスの作成方法詳細については添付をご参照ください。
以下例は、インストールマニフェストでの定義例です(クラス定義は添付内に含まれています)。
これは InterSystems FAQ サイトの記事です。
2025.1以降CORS関連の設定方法は大きく変わっています。
詳細は、以下の記事を参照してください。
jQueryを使用してIRISからJSONデータを取得する方法
%CSP.REST クラスを継承する REST 用ディスパッチクラスで REST を実装している場合は、クロスドメイン制約回避用に用意されたパラメータ HandleCorsRequest を利用します。
設定方法は以下の通りです。
REST 用ディスパッチクラスをスタジオで修正する場合は、
[クラス] > [リファクタ] > [オーバーライド] を開き、[パラメータ]タブを選択 > [HandleCorsRequest] を選択後OKボタンを押下します。
以下の定義が追加されるので、1を設定します。
REST ディスパッチクラスを Atelier で修正する場合は、オーバーライドメニューの用意がないため、パラメータの定義を追加するか、%CSP.REST クラスを開き、HandleCorsRequest の定義をコピーし修正します。

この連載の最初の記事では、リレーショナルデータベースのEAV(Entity–Attribute–Value)モデルを見て、それがどのように使用されて、何に役立つのかを確認しましょう。 その上で、EAVモデルの概念とグローバル変数と比較します。
原則として検索する必要のある、フィールド数、または階層的にネストされたフィールドの数が不明なオブジェクトがある場合があります。
たとえば、多様な商品群を扱うオンラインストアを考えてみましょう。 商品群ごとに固有の一意のプロパティセットがあり、共通のプロパティもあります。 たとえば、SSDとHDDドライブには共通の「capacity」プロパティがありますが、SSDには「Endurance, TBW」、HDDには「average head positioning time」という一意のプロパティもあります。
場合によっては、同じ商品でも別のメーカーが製造した場合には、それぞれに一意のプロパティが存在します。
では、50種の商品群を販売するオンラインストアがあるとしましょう。 各商品群には、数値またはテキストの固有のプロパティが5つあります。
実際に使用するのは5個だけであっても、各商品に250個のプロパティがあるテーブルを作成するのであれば、ディスク容量の要件が大幅に増える(50倍!
これは InterSystems FAQ サイトの記事です。
Windows システムにインストールされた InterSystems 製品を削除するには、コントロールパネルにあるプログラムの追加と削除(Windows 10の場合は、Windows の設定からアプリを選択)を使用します。
システムに変更を加えますので、管理者権限を持ったユーザでログインして作業を行う必要があります。
1) 管理者(Administrator)でシステムにログインします。
2) システムトレイから、アンインストールを行う InterSystems 製品インスタンスのランチャーを終了します(ランチャークリック → 終了)。
3)コントロールパネルにある プログラムの追加と削除 (Windows 10の場合は、Windows の設定からアプリを選択)で
<InterSystems製品> instance [xxxx] ( xxxx にはインスタンス名が表示されています) を削除します。
例:InterSystems IRIS instance [IRIS]
4) InterSystems 製品インストールディレクトリ(既定では C:\InterSystems\<InterSystems製品> )を Windows エクスプローラ等を使用して削除します。
まずはこの記事で手短にこの疑問に回答します。 この連載のパート2には、pButtonsから抽出されたパフォーマンスデータのグラフを含めました。 pButtonsの.htmlファイルからmgstatなどのメトリックを抽出してExcelで簡単にグラフ作成する方法として、カット&ペーストよりも素早く行える方法がないか、オフラインで尋ねられました。
pButtonsは、収集したデータをWRCに送信して確認しやすくするために、そのデータを1つのhtmlファイルにコンパイルするのですが、 特に24時間などの長い収集時間で実行されるpButtonsの場合は、mgstat、vmstatなどの時間ベースのデータをグラフィック表示にして確認できれば、トレンドやパターンが見やすくなります。
pButtons データをhtmlファイルにロールアップしてから解凍するのに時間を掛けるのはばかげているように聞こえるかもしれませんが、pButtonsはパフォーマンスの問題をトラブルシューティングするためにWRCが多数のシステムメトリックのビューを取得するためのツールであることを忘れてはいけません。
開発者の皆さん、こんにちは!
今週は、InterSystems Analytics コンテスト2021 の投票週間です!InterSystems IRIS を使い開発されたベストソリューションに投票お願いします!
🔥 投票はこちらから! 🔥
投票方法については、以下ご参照ください。
これは InterSystems FAQ サイトの記事です。
%SYSTEM.License クラスのメソッド利用すると、ライセンス情報を取得できます(実行時は、$SYSTEM.License.メソッド名() と記述します)。
%SYSTEM.License クラスは、ライセンスユーティリティ用システムオブジェクトです。
ユーティリティの詳細については、添付資料をご参照ください。
(クラス詳細については、クラスリファレンス内 %SYSTEM パッケージ以下 License クラスも併せてご覧ください。)
また、ライセンス情報は、管理ポータルからも確認できます。
ライセンスキー情報:
[システム管理] > [ライセンス] 以下
ライセンス使用状況:
[システムオペレーション] > [ライセンス使用量] 以下
これは InterSystems FAQ サイトの記事です。
$ZSTRIPコマンドは、指定された文字列から文字のタイプと文字を削除します。
このコマンドを使用することで文字列から数値部分のみを抽出することが可能です。
$ZSTRIP(string,action,remchar,keepchar)
第1引数(string) :対象文字列
第2引数(action) :string から削除する対象。アクションコードとマスクコードで構成。
第3引数(remchar) :削除する特定の文字を指定。第2引数のマスクコードに含まれない文字も指定可能。【オプション】
第4引数(keepchar):削除しない特定の文字を指定。【オプション】
以下はその例です。
これは InterSystems FAQ サイトの記事です。
$ZF(-100) のコマンドは、以下のフォーマットで使用します。
$ZF(-100, フラグ, コマンド名, コマンドの引数)
OSコマンドを実行する場合は、「/shell」フラグが必要です。
例えば mkdir であれば、次のように使用します。
コマンドの引数が複数ある場合は、以下の例のように引数の数だけ二重引用符で括ってカンマ区切りで指定します。
また、同期・非同期実行は以下のように使用します。
記事で使用されているすべてのソースコード: https://github.com/antonum/ha-iris-k8s
前の記事では、従来型のミラーリングではなく分散ストレージに基づいて、高可用性のあるk8sでIRISをセットアップする方法について説明しました。 その記事では例としてAzure AKSクラスタを使用しました。 この記事では引き続き、k8sで可用性の高い構成を詳しく見ていきますが、 今回は、Amazon EKS(AWSが管理するKubernetesサービス)に基づき、Kubernetes Snapshotに基づいてデータベースのバックアップと復元を行うためのオプションが含まれます。
早速作業に取り掛かりましょう。 まず、AWSアカウントが必要です。、、およびツールがインストールされている必要があります。 新しいクラスタを作成するために、次のコマンドを実行します。
eksctl create cluster
このコマンドは約15分掛けてEKSクラスタをデプロイし、それをkubectlツールのデフォルトのフォルダに設定します。 デプロイを確認するには、次のコードを実行します。
kubectl get nodes NAME STATUS ROLES AGE VERSION ip-192-168-19-7.ca-central-1.compute.internal Ready <none> 18d v1.18.9-eks-d1db3c ip-192-168-37-96.ca-central-1.compute.internal Ready <none> 18d v1.18.9-eks-d1db3c ip-192-168-76-18.ca-central-1.compute.internal Ready <none> 18d v1.18.9-eks-d1db3c
これは InterSystems FAQ サイトの記事です。
InterSystems製品のクラスクエリにはSQL文を利用する方法と、ユーザコードによる記述が選択できます。
スタジオメニューの [クラス] >[追加] > [クエリ] を選択すると、クエリウィザードが起動します。
.png)
画面に、「実装」を選択する項目があり、「このクエリはユーザコードで定義されている」を選択すると SQL文ではなく、ユーザコードによりクエリ定義が行えます。
次画面以降では、必要な情報として、入力パラメータ、結果セットの選択カラムの指定を行います。 ウィザード終了後、ユーザコードのひな型として、以下のメソッドがクラス定義に追加されます。
{QueryName}Execute()
{QueryName}Fetch()
{QueryName}Close()
({QueryName}はクエリウィザードで指定するクエリ名です。)
これらのメソッドに実際に実行したいユーザコードを記述していきます。
以下に、詳細記述とJavaから呼び出すサンプルがございますのでご参照ください。
これは InterSystems FAQ サイトの記事です。
Linux上では、以下の手順で InterSystems IRIS (以降IRIS)のインスタンスを削除してください。
(1) アンインストールしたい IRIS のインスタンスを iris stop で停止
# iris stop インスタンス名
(2) 以下のコマンドでインスタンス情報を削除
# iris delete インスタンス名
(3) IRIS のインストールディレクトリを rm コマンドで削除
# rm -r インストールディレクトリ
IRISは、インストール先のディレクトリのほかに、以下の(a)(b)も使用しています。
もしマシン上から、すべての IRIS を完全に削除したい場合は、上記のアンインストール手順に加えて、(a)(b)をすべて削除してください。
但し、これらは全インスタンスで共通で使用しています。
そのため、Unix/Linux上から「すべての IRIS をアンインストールする」とき以外は削除しないようにしてください。
※補足
(a)ディレクトリには実行ファイル(iris、irissession)とインスタンス情報(iris.reg)の3ファイルが存在しています。
(b)の3ファイルは、シンボリックリンクです。
これは InterSystems FAQ サイトの記事です。
ネームスペースを作成後にInteroperability機能を有効にするには、%EnsembleMgrクラスのEnableNamespaceメソッドを使用します。
do##class%EnsembleMgrこれは InterSystems FAQ サイトの記事です。
24時間停止しないシステムの場合、「ジャーナルファイルの削除設定」に合わせて 0時30分 に古いジャーナルファイルを削除します。
「ジャーナルファイルの削除設定」より古いジャーナルファイルが残っている原因として、オープンされたままのトランザクションが存在していることが考えられます。
その場合、トランザクション実行中プロセスを探し、トランザクションを確定させることでジャーナルファイルを削除できるようになります。
以下のサンプルは、オープンされたままのトランザクションの存在確認と、存在する場合は対象ファイル名とジャーナルレコード情報が出力されます。
(サンプルは、https://github.com/Intersystems-jp/CheckOpenTransaction からダウンロードできます)
※注意※
確認対象のジャーナルファイルサイズが大きい場合、ジャーナルファイルが多数ある場合は、実行に時間がかかるため、弊社サポートセンターまでご連絡ください。
Class ISJ.JournalUtility
{
ClassMethod GetOpenTransaction() As %Status
{
set status=$$$OK
#dim ex As %Exception.AbstractException
#dim rset As %ResultSet
try {
//現在のジャーナルファイル
write !,"現在のジャーナルファイル名:",
##class(%SYS.Journal.System).GetCurrentFileName(),!! // Open中トランザクション調査
// WIJに記録されているジャーナルの情報を取得
$$$ThrowOnError(##class(%SYS.Journal.System).GetImageJournalInfo(.filename,.jrnoffset,.jrnfilecount,.opentranoffset,.opentranfilecount))
if $get(opentranoffset)="" {
write !,"オープン中トランザクションはありません",!
return status
} //ファイルカウントに差(jrnfilecount-opentranfilecount>0 )がある場合
// 古いジャーナルファイルにオープン中トランザクションがあるため、対象ファイル名を探す
if jrnfilecount-opentranfilecount>0 {
set loopcnt=jrnfilecount-opentranfilecount
for i=1:1:loopcnt {
set currentfile=filename
$$$ThrowOnError(##class(%SYS.Journal.File).GetPrev(currentfile,.filename))
}
} write "〇〇 オープン中の対象ジャーナルレコード一覧 〇〇",!
set rset=##class(%ResultSet).%New("%SYS.Journal.Record:List")
do rset.%Execute(filename,,,,$LB("Address","=",opentranoffset))
write !,"=== File Name : ",filename," ===",!
write "Address : TimeStamp : ProcessID : RemoteSystemID : TypeName : Transaction",!
while rset.%Next() {
write rset.%Get("Address")," : ",
rset.%Get("TimeStamp")," : ",
rset.%Get("ProcessID")," : ",
rset.%Get("RemoteSystemID")," : ",
rset.%Get("TypeName")," : ",
rset.%Get("InTransaction"),!
}
}
catch ex {
set status=ex.AsStatus()
}
return status
}
}最初の記事では、Caché Webアプリケーションのテストとデバッグを外部ツールを用いて行うことについて説明しました。 2回目となるこの記事では、Cachéツールの使用について説明します。
以下について説明します。
これは InterSystems FAQ サイトの記事です。
何らかの理由でサーバー移行が必要になった際に、移行前の環境から移行後の環境に設定情報をコピーすることで設定作業を軽減できます。
以下の設定情報を移行できます。
注1 パスワードを設定している場合には、パスワードのみ手動で再設定が必要です。
注2 ^%ZSTART, ^ZMIRRORルーチンなど
優先接続サーバー設定に関しても、物理的には移行可能ですが、Windowsのレジストリー情報をコピーする必要があります。
しかしながらレジストリー情報をコピーして他システムに移行する方法は通常推奨される方法ではありませんので、安心、安全を優先する場合は、手動設定することをお勧めします。
各設定のエクスポート/インポート方法は、以下のリンクをご確認ください。
また、以下のドキュメントもあわせてご覧ください。
これは InterSystems FAQ サイトの記事です。
InterSystems 製品には、テーブルのコンテンツに関する統計を収集し、クエリの最適化に役立てる「テーブルチューニング機能」があります。
設定方法は、以下のドキュメントをご参照ください。
ターミナルでは次のコマンドを実行します。
do $SYSTEM.SQL.Stats.Table.GatherTableStats("スキーマ名.テーブル名")2021.1以前のバージョンでは以下メソッドを利用します。
Do $system.SQL.TuneTable("スキーマ名.テーブル名",1,1)また、以下の資料もご参照ください。
1) パフォーマンス調査の基礎知識として必要なグローバル構造の解説やSQLの動作の仕組みからクエリプランの見方の解説
2) パフォーマンスチューニングの例(P13~)
3) ビットマップ・インデックスの圧縮やオプティマイザ・ヒントなど、Caché SQLのパフォーマンスを最大限に引き出すための情報について
4) パフォーマンスに困ったときにどこに着目し、どのツールで調べていくか、お客様から日々ご相談をいただくカスタマーサポートから、解決に向かうアプローチの「イロハ」をご紹介するビデオ
5) 開発者コミュティのパフォーマンス関連情報(performanceタグ)
これは InterSystems FAQ サイトの記事です。
リレーションシップが設定されており 1対n の n が多量の場合、そのリレーションシップの順次処理などで大量のメモリ消費となるケースがあります。
プログラムの中で多側オブジェクトを参照し内部的にスウィズル処理した後には、そのOREFを含む変数の解放(削除、他の値の設定など)だけでは、その多側オブジェクトとリレーションシップオブジェクトが解放されないことが原因です。
それらを完全にメモリから解放するためには、OREF変数の解放とRelationshipオブジェクトの%UnSwizzleAt<%Library.RelationshipObject >メソッドの実行による明示的なメモリ解放が必要です。
- 使用例 -
Do {
Set employee = company.Employees.GetNext(.key)
If (employee '= "") {
Write employee.Name,!
// remove employee from memory
Do company.Employees.%UnSwizzleAt(key)
}
} While (key '= "") これは InterSystems FAQ サイトの記事です。
こちらは、コンパイル時に既にそのクラスのインスタンスを開いている場合に起こるエラーです。
対処方としては以下の2つの方法があります。
インスタンス化しているプロセスを特定したい場合は、以下のサンプルルーチンをお試しください。
/// Test.mac
search(classname) public {
Set pid=""
Set pid=$order(^$Job(pid))
While pid'="" {
Do checkVars(pid,classname)
Set pid=$Order(^$Job(pid))
}
} checkVars(pid,string) {
Set $ztrap="err"
Set var=""
For {
Set var=$zu(88,1,pid,var) q:var=""
Set val=$zu(88,2,pid,var)
If val[string {
Write !,pid,":",var," = ",val,!
}
}
Quit
err
Set $ztrap=""
Quit
}開発者の皆さん、こんにちは!
InterSystems Analytics コンテストのテクノロジーボーナスが発表されました!
Adaptive Analytics (AtScale) キューブの使用- 4 ポイント
InterSystems Adaptive Analytics では、分析ソリューションに AtScale キューブを作成して使用するオプションを提供しています。
今回、コンテスト用に準備した AtScale サーバ(URLと認証情報は Discord チャンネルで確認できます)にあるキューブを使用するか、JDBC 経由で IRIS サーバに接続し、新しいキューブを作成することもできます。
AtScale を使用した Analytics ソリューションの可視化レイヤでは、Tableau、PowerBI、Excel、Logi を利用することができます。
この記事では、Caché Webアプリケーション(主にREST)のテストとデバッグを外部ツールを用いて行うことについて説明します。 パート2では、Cachéツールの使用について説明します。
サーバー側のコードを作成したのでクライアントからテストしたい、またはすでにWebアプリケーションが存在するが機能していない― そういったときに使用できるのがデバッグです。 この記事では、最も使いやすいツール(ブラウザ)から最も包括的なツール(パケットアナライザー)までを説明しますが、まずは、最も一般的なエラーとその解決方法について少し説明します。
これは InterSystems FAQ サイトの記事です。
インターシステムズでは、お客様のペースで学ぶことができる柔軟でユーザセントリックな教育サービスを提供しています。
ラーン&プレイ
InterSystems オンラインラーニングにご登録いただくと、Java から InterSystems IRISにアクセスする様々なサンプルをご利用いただけます。
Java のサンプルは、オンラインラーニングの以下のページでご紹介しています(英語のみ)。
Welcome to the Java QuickStart!
オンラインラーニングサービスアカウントのない方のために、簡単に手順をご紹介します。
※詳細については、上記オンラインラーニングサービスページをご覧ください。
http://github.com/intersystems/quickstarts-java Eclipse を使用する場合:
https://github.com/intersystems/quickstarts-java ソリューションを Amazon Web Services エコシステム、サーバーレスアプリケーション、または boto3 を使用した Python スクリプトにスムーズに統合する方法を探している場合は、IRIS Python Native API を使用するのが最適です。 IRIS で何かを取得したり設定したりしてアプリケーションに素晴らしい機能を備える必要があるまで、本番の実装を大々的に構築する必要はありません。したがって、誰かにとって重要なものまたはあなた以外にはまったく重要でないもの(これも同じくらい重要なことです)を構築できるようにこの記事が役に立てればと思います。

開発者の皆さん、こんにちは!
第1回 InterSystems 技術文書ライティングコンテスト が終了し、23 の素晴らしい記事🔥が掲載されました!
初開催の技術文書ライティングコンテストへご参加いただいた皆様、ありがとうございました!
この記事では、受賞作品をご紹介します!
これは InterSystems FAQ サイトの記事です。
InterSystems IRIS Business Intelligence 用メニューの Analytics(または DeepSee)を使用するためには、使用するネームスペース用ウェブアプリケーションパスを Analytics(またはDeepSee)に対応するように設定変更する必要があります。
詳細については以下のドキュメントをご参照ください。
【IRIS】
InterSystems IRIS Business Intelligence の Web アプリケーション設定について
【2015.1~2018.1】
DeepSee の Web アプリケーション設定について
これは InterSystems FAQ サイトの記事です。
※データベースファイルとは、IRIS.DAT、および、CACHE.DATのことを指します。
Caché/Ensemble 2018.1.4、IRIS 2019.1.2/2020.1.0 以降のバージョンより、データベースファイル のサイズの縮小に、データベースの「圧縮」と「未使用領域の削除」機能をあわせて使用できます。
※注意※
Caché/Ensemble 2018.1.4、IRIS 2019.1.2/2020.1.0 より前のバージョンでは、データベースの「圧縮」機能は使用できません。使用された場合、データベース破損が引き起こされる可能性があります(「未使用領域の削除」機能は利用できます)。
詳細情報は以下、弊社ウェブサイト内のページをご確認ください。
製品ニュースとアラート>警告: データベース圧縮またはデフラグ後のデータベース整合性の問題
データベースサイズ縮小手順は以下の通りです。
管理ポータル: [システムオペレーション] > [データベース] を開き、操作したいデータベース名をクリックします。
(または、画面左上の[空き容量]ボタンをクリックし、データベースの空き容量を表示します。
PHP はその公開当初から、多くのライブラリや市場に出回っているほぼすべてのデータベースとの統合をサポートしていることでよく知られています(またそのことで批判を受けてもいます)。 にもかかわらず、何らかの不可解な理由により、グローバル変数については階層型データベースをサポートしませんでした。
グローバル変数は階層情報を格納するための構造です。 Key-Value型データベースにある程度似ていますが、キーを次のようにマルチレベルにできるという点で異なっています。
*この動画は、2021年2月5日に開催したウェビナーのアーカイブです。
InterSystems IRIS data platform は、拡張性に優れ、相互運用性、分析機能を備えたアプリケーション開発のためのデータプラットフォームです。
この動画では、これからインターシステムズのデータプラットフォーム製品をお使いになる開発者の方を対象に、その特徴を20分でご紹介します。
このような方を対象としています。
ぜひご覧ください!