全期間

あるお客様の問題から、この短い記事を書くことにしました。 お客様はEnsembleを使用して、多数のシステムを統合しています。一部のシステムではプレーンファイルのみが使用されています。

そのため、ターゲットファイルへの書き込みには、自然とFile Outbound Adapter を選択しました。 数年もの間すべてが順調に稼働していましたが、最近になって、ファイルに書き込まれるデータが数十メガバイトという大きなサイズに達するようになり問題が出てきました。オペレーションが完了するまでに約30分かかるようになり、プロセス内の後続の処理を待たせなければならないタイミングの問題が発生し始めたのです。当然、連携先のシステムはそれほど長く待つことを良しとしません。

お客様のコードは、以下の疑似コードのようなものでした。

1 0
0 111

これは InterSystems FAQ サイトの記事です。

通常SQLCODE -114(一致する行が既に別のユーザにロックされています)のエラーはロックが競合した場合に発生します。

こちらはレコードロック競合があったり、ロック閾値を超える更新を行いテーブルロックに昇格した際に、そのテーブルレコードに対して別のプロセスよりSelectを行い共有ロックを取ろうとして失敗した(ロック待ちがタイムアウトとなった)場合に発生します。

Selectで共有ロックを取る場合というのは、IRIS の ISOLATION LEVEL がREAD COMMITTED(デフォルトはREAD UNCOMMITTED)で、Selectを行った場合です。

0 0
0 110

これは InterSystems FAQ サイトの記事です。

管理ポータル > [システム管理] > [セキュリティ] 以下の設定は、%SYSネームスペースにあるSecurityパッケージ以下クラスが提供するメソッドを利用することでプログラムから作成することができます。

以下シナリオに合わせたセキュリティ設定例をご紹介します。

シナリオ:RESTアプリケーション用設定を作成する

事前準備

シナリオの中で使用するソースを2種類インポートします。

アプリケーション用RESTディスパッチクラスをインポートします。

1 0
0 110

これは InterSystems FAQ サイトの記事です。

ユーザに権限を与えたい場合、「GRANT」コマンドや「GrantPrivilegeメソッド」を使用しますが、ロールに対しても権限を与えることができます。

例えば、特定スキーマにのみ何でもできるロールを作成し、それを特定のユーザに割り当てるようなことが可能となります。

こちらの記事では、その方法をご紹介します。


(1) GrantPrivilegeメソッドを使用して「スキーマXXX に何でもできるロール」を作成し、
(2) 該当ユーザに (1) のロールを割り当てる



★GRANT文を使う場合

0 0
0 110
記事
· 2023年9月28日 22m read
OpenAPI Suite - パート 1

コミュニティの皆さん、こんにちは。

私が作成した OpenAPI-Suite という最新のパッケージをご紹介します。これは、OpenAPI 仕様バージョン 3.0 から ObjectScript コードを生成するツールセットです。 簡単に言うと、これらのパッケージでは以下を行うことができます。

  • サーバーサイドクラスの生成。 ^%REST による生成コードに非常に似ていますが、バージョン 3.0 がサポートされていることに付加価値があります。
  • HTTP クライアントクラスの生成。
  • クライアントプロダクション(ビジネスサービス、ビジネスオペレーション、ビジネスプロセス、Ens.Request、Ens.Response)クラスの生成。
  • コードの生成とダウンロードまたはサーバーでの直接コンパイルを行う Web インターフェース。
  • バージョン 1.x からバージョン 3.0 への仕様の変換。
  • 0 0
    0 110

    これは、InterSystems FAQサイトの記事です。

    管理ポータルの監査メニューを使用する場合、ユーザに監査データベースの閲覧のみを許可するということはできません。
    管理ポータルから監査データベースを閲覧する場合は、そのユーザに、
    ・%Admin_Secure:U(監査以外にもセキュリティ関連の操作が可能となる)
    ・%DB_IRISAUDIT:RW(監査データベースへの読み込み/書き込み権限)
    等のリソースへの権限が必要になりますが、これを与えることにより、監査データベースの閲覧以外の操作も可能となってしまいます。

    監査データベースの閲覧のみを許可したい場合には、管理ポータルの監査メニューは使用せず、外部ツール等からSQLで監査テーブルを参照するようにします。
    このとき、ユーザに必要な権限は以下の通りです。※他の権限は与えないようにします。
    ・IRISAUDITデータベースへのRW権限 ⇒ %DB_IRISAUDITロールの付与
    ・%SYS.AuditテーブルへのSelect権限

    0 0
    0 110

    これは InterSystems FAQ サイトの記事です。

    メモ:xxx にはネームスペース名が入ります。

    xxxENSTEMPは、プロダクション実行中に作成される一時データが保存されるデータベースです。
    ^IRIS.Temp.Ens* のグローバルがこのデータベースにマッピングされています。なお、xxxENSTEMPはジャーナルにかかれない設定のデータベースです。

    xxxSECONDARYは、プロダクションで使用される資格情報を保存するデータベースです。
    ^Ens.SecondaryData* のグローバルがこのデータベースにマッピングされています。

    注意:InterSystems IRIS for Health、HealthShare ではこれらデータベースは作成されません

    詳細は以下ドキュメントをご覧下さい。

    0 0
    0 110

    背景

    先日、ObjectScript の永続(Persistent)クラスのプロパティを編集していたところ、ストレージ定義が最後の変更を反映するように更新されていないことに気づきました。

    この場合、クラス定義に不要となったプロパティを削除した上で保存し、再コンパイルしましたが、それでもストレージ定義に残ったままになっていました。

    それでも焦ることはありませんでした。 ストレージ定義がコンパイル時に自動生成されるのであれば、それを削除して、クラスを再コンパイルすればよいからです。 もちろん、この後、削除されたプロパティはストレージ定義に表示されなくなりました。

    問題解決... ですよね?

    (ブブー、間違いです)

    後になって、このアプローチはクラスにデータが保存されていないときに機能することがわかりました。 ただし、既存のデータがあるのであれば、重大なデータ参照の問題が発生する可能性があります。

    そもそもストレージ定義とは?

    0 0
    0 110

    皆さん、こんにちは。
    開発コミュニティでの検索方法について説明します。

    開発コミュニティのページで検索される場合は以下の赤枠の虫眼鏡マークをクリックします。

    すると、以下のようにテキストボックスのみ浮かび上がりますので、検索したい文字列を入力します。

    0 0
    0 110

    これは InterSystems FAQ サイトの記事です。

    PythonからObjectScriptのルーチンを直接呼び出すことはできませんが、クラスメソッドを経由して間接的に呼び出すことができます。

    しかし、Pythonの変数とObjectScriptのローカル変数は内部構造が異なるため、情報の交換には少し工夫が必要です。

    簡単なサンプルでその方法について説明します。

    まず、2つの変数を足し算する簡単なルーチン ^testを作ります。

    1 0
    0 108

    これは InterSystems FAQ サイトの記事です。

    InterSystems製品のサーバサイドでファイル入出力を行うと、文字列はシステムで設定されたファイル入出力用文字コードに自動変換され、文字単位でREADします。

    ファイルから入力する文字をバイト単位で操作するためには、自動変換を行わない無変換の状態でファイル入力を行い指定バイトずつ読みながら読んだ分だけUnicodeに手動で変換していく必要があります。

    変換には$ZCONVERT()関数を使用します。($ZCONVERT()には省略形があり$ZCVT()でも同様の操作が行えます。)

    1 0
    0 107

    最後にCSP機能の中でReactでうまく置き換えできなかった処理について紹介します。

    該当する処理は、サーバー上の商品データに含まれるその商品の画像データ(GIF形式)を取得して、ブラウザにイメージとして描画させるものです。

    CSPにはStreamServer.clsというサーバー側で動作する機能が用意されています。

    この機能を使ってデータベース上に格納されているストリームデータをHTML IMGタグで処理できる形式に変換してくれます。

    StreamServer機能を使って画像を表示する処理

    Reactで同様の機能を実現する方法が見つからなかったため(そもそもReactはサーバーサイドではなくクライアント上の技術なので)、データベース内に格納されているイメージを取得するのではなく、静的なイメージファイルをウェブサーバーが参照可能な場所に置くことで解決しました。

    0 0
    0 107

    これは、InterSystems FAQサイトの記事です。

    現在実行中のコードの位置は、$STACK関数を使用して $STACK($STACK,"PLACE") で取得できます。

    サンプルコードは以下ドキュメントをご参照ください。

    現在実行中のコードの位置を取得する方法について【IRIS】
    現在実行中のコードの位置を取得する方法について

    0 0
    0 106

    *この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。

    昨年、SAM(System Alerting and Monitoring)をリリースしました。
    これはInterSystems IRISシステムを監視するためのツールで、InterSystems IRISをお使いの方でしたら、どなたでも利用できます。

    https://www.youtube.com/embed/OOnroi6AGjE
    [これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。]

    Dockerやdocker-composeを使用し、Prometheus、Grafanaといったオープンソースの監視用ツールを組み合わせて簡単にインストールや設定ができるようにしています。

    0 0
    0 105

    開発者コミュニティの皆さん
    こんにちは。

    インターシステムズの認定プログラムに合格された方の中には、プロフィールのアバターに緑色の目印を付けたい方や、開発者コミュニティのプロフィールに全ての認定証を掲載し、他の人に知ってもらいたいと考えている方もいらっしゃると思います。

    そこで、DC プロフィールに認定証を追加するために実行する3 つの簡単な手順をステップを紹介します。

    1️⃣ 開発者コミュニティのプロファイルに移動します。

    2️⃣ InterSystems certifications (インターシステムズ認証)セクションに移動します。

    3️⃣ Load my certification(s) ボタンをクリックします。

    以上です!

    0 0
    0 104

    これは InterSystems FAQ サイトの記事です。

    サブスクリプトレベルマッピングされたグローバルを、トップノードから全体をkillする場合、<SLMSPAN>エラーとなり削除ができません。

    これは、サブスクリプトレベルマッピングされたグローバルについては、マッピングを跨いだサブスクリプト範囲の kill コマンドは行えないためです。

    1 0
    0 103
    記事
    · 2021年7月5日 1m read
    データベースの暗号化の仕組み

    これは InterSystems FAQ サイトの記事です。

    バージョン5.1以降、データベース単位に暗号化する仕組みが用意されています。

    InterSystems data platform のデータベース暗号化は物理ブロックレベルの暗号化ですので、暗号化のオーバヘッドが非常に少なく、性能への影響が極小化されており、暗号化されている項目のインデックス化に制限等がありません。

    関連記事もご参照ください。

    データベースの暗号化手順について

    0 0
    0 103

    これは、InterSystems FAQサイトの記事です。

    このメッセージが出力される要因は以下の2つになります。

    1. 同じデータに対して適切に排他を行わずに、別々のプロセスから更新が行われている
    2. ロールバックが発生している

    詳細は以下の通りです。 メッセージログ/コンソールログに、以下のようなメッセージがある場合、これはロールバック処理にて出力されています。
    ※バージョンによってメッセージは多少異なります。

    1 0
    0 102

    *この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。

    インターシステムズでは、昨年7月に日本語版の開発者コミュニティを正式にオープンしました。

    https://www.youtube.com/embed/Xin8Wwz4plk
    [これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。]

    0 0
    0 102

     

    人工知能は、命令によってテキストから画像を生成したり、単純な指示によって物語を差作成したりすることだけに限られていません。

    多様な写真を作成したり、既存の写真に特殊な背景を含めたりすることもできます。

    また、話者の言語や速度に関係なく、音声のトランスクリプションを取得することも可能です。

    では、ファイル管理の仕組みを調べてみましょう。

    0 0
    0 101

    これは InterSystems FAQ サイトの記事です。

    監査ログはシステムDB内テーブル(%SYS.Audit)に記録されていますので、そのテーブルに対するクエリを実行して抽出したり、%SYS.Auditテーブルに用意されていストアドプロシージャを利用して情報を取得しファイル出力するようにプログラムを用意することもできます。

    以下にご紹介する内容は「監査ログをプログラムで出力(ユーザやイベント指定など)する方法」に関連した内容で、監査ログのファイル出力を管理ポータルの機能を利用した例とプログラムを利用した例でご紹介します。

    1 0
    0 100
    記事
    · 2024年6月6日 2m read
    JSON_Table(SQL)の利用

    これは、InterSystems FAQサイトの記事です。

    IRIS/IRIS for Health2024.1以降のバージョンのSQLで、JSON_TABLE関数がサポートされています。
    【ドキュメント】JSON_TABLE(SQL)

    これを使用することにより、JSON形式データを表形式で取得することが出来ます。

    【例】郵便番号情報を外部から取得し、表形式にマッピングする。
    (取得データ(JSON))

    1 0
    0 100

    インターシステムズは、いくつかの問題を修正するためにリリースを再作成する必要がある場合があります。このプロセスにより、「ポイントリリース」と呼ばれる新しいキットが生成されます。

    ポイントリリースは、メンテナンスリリースやメジャーリリースとは異なります。 これは緊急の問題に対して、迅速かつ的確に対応するために行われます。


    ポイントリリースの確認方法

    InterSystems Data Platform 製品は以下のリリース規則に従います:

    <インターシステムズ製品> <年>.<メジャー>.<メンテナンス>.<ビルド#>.<ポイント>

    例:InterSystems IRIS 2022.1.4.204.1

    ポイントリリースの確認方法は簡単で、製品キットの下1桁が0でなければ、ポイントリリースを使用していることになります。

    2 0
    0 100

    2023.2 の開発者プレビュープログラムの一環として、3番目の開発者プレビューを公開いたします。今回リリースされたのは、InterSystems IRIS と InterSystems IRIS for Health です。

    本リリースの注目点

    2023.2では、多くの機能修正と改善に加えて、時間認識モデリング強化された外部テーブル読み込み専用の FEDERATED テーブルといった新機能が含まれる予定です。これら新機能の一部は、今回の開発者プレビュー版にはまだ含まれていません。ご注意ください。

    0 0
    0 99

    これは InterSystems FAQ サイトの記事です。

    $ZF(-100)で外部コマンドを実行する場合、その外部コマンドの子プロセスからの応答が返らない限り、$ZF(100)コマンドを発行したIRISプロセスはその応答を待って残り続けます。

    従ってIRISプロセスを終了させるためにはその応答がない子プロセスを強制終了させる必要があります。

    0 0
    0 98