お知らせ Mihoko Iijima · 9月 15, 2022

開発者の皆さん、こんにちは!

サステナブルなソリューションの構築をテーマとした Interoperability プログラミングコンテストの投票が開始されました!

🔥 ベストアプリケーションはこれだ! 🔥 と思う作品にぜひ投票お願いします!

投票方法は以下ご参照ください。

0
0 92
質問 Yuji Ohata · 9月 13, 2022

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

現在開発している処理の中で、大量データをSELECT & INSERTする処理があり、合計で91分かかっています。
この処理で用いるSQLは実行結果を再利用したい等の意図があったため、ScrollableResultSetを用いていましたが、
このAPI自体がSQL実行時に全件ループを回したり、そもそも古いAPIとの事であったため、
%SQL.Statementに書き換えたところ、62分まで短縮することが出来ました。

ここからが問題なのですが、更なる処理時間の軽減のために時間がかかる処理を調査していたところ、
カラム情報を取得する%Get()メソッドにコストがかかっていることがわかりました。
なので現在はこれを改善したいと思っております。

こちらで動作を見たところ、最速は下記でいう所の「rset.name」でこちらを利用すると、41分まで削減されます。

https://docs.intersystems.com/iris20211/csp/docbookj/DocBook.UI.Page.cl…

しかし、我々としましてはAPIを汎用的に用いたいため、nameの部分を動的に扱えるような%Get()の様な仕組みが欲しいです。

4
0 277
記事 Toshihiko Minamoto · 9月 10, 2022 49m read


このフォーメーション私の GitHub にあり、30 分で csv ファイルと txt ファイルの読み取りと書き込み方法、Postgres を使ったIRIS データベースリモートデータベースの挿入とアクセス方法、FLASK API の使用方法について説明します。これらすべてに、PEP8 命名規則に従った、Python のみのインターオペラビリティフレームワークを使用します。

このフォーメーションは、ほとんどをコピー&ペースト操作で実行でき、グローバル演習を行う前に、ステップごとの操作が説明されています。
記事のコメント欄、Teams、またはメール(lucas.enard@intersystems.com)でご質問にお答えします。

このフォーメーションに関するあらゆる点において、ご意見やご感想をお送りいただけると幸いです。

1. Ensemble / Interoperability のフォーメーション

このフォーメーションでは、Python および特に以下を使用した InterSystems のインターオペラビリティフレームワークを学習することを目標としています。

  • 本番環境
  • メッセージ
  • ビジネスオペレーション
  • アダプター
  • ビジネスプロセス
  • ビジネスサービス
  • REST サービスと運用

目次:

0
0 274
記事 Megumi Kakechi · 9月 9, 2022 3m read

これは InterSystems FAQ サイトの記事です。
外部バックアップ機能と、SANソリューションが提供するスナップショット(スナップクローン、ミラークローンなど呼び方はベンダ毎に異なります)などのテクノロジを利用することで、バックアップ時のインスタンス停止時間を最短にすることができます。

操作手順概要は以下の通りです。

  1. 外部バックアップ用ユーティリティを利用して、データベースファイルへの書き込みを一時中断します(%SYSネームスペースで実行します)。
    %SYS>set status=##class(Backup.General).ExternalFreeze()
  2. 外部のスナップショットユーティリティを使用して、ファイルシステムのスナップショットを作成します。    
  3. データベースファイルへの書き込みを再開するため、外部バックアップ用ユーティリティを使用します。
    %SYS>set status=##class(Backup.General).ExternalThaw()
  4. バックアップメディアにスナップショットをコピーします。


【ご参考】
ExternalFreeze() の処理は以下のようになります。

 1.  ジャーナルファイルの切り替え
 2.  データベースバッファ上の書き込み待ちバッファをすべてデータベースファイルに書き出す
 3.

0
0 312
記事 Megumi Kakechi · 9月 5, 2022 2m read

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

Web 経由でのイメージファイルのアップロード/ダウンロードを行うサンプルをご紹介します。
サンプルでは、以下の手順でファイルの「アップロード/ダウンロード」を行っています。

  1. Stream型のプロパティをもったクラスを用意する
  2. upload ボタン押下でイメージファイルをIRISサーバにアップロードする
  3. アップロードされたデータを %request.MimeData で受け取り CopyFromAndSave メソッドを使ってコピー&1 のクラスに保存する
  4. アップロードされたファイルを画面に表示する
  5. download ボタンを押下し、1 のクラスに保存したファイルをローカルにダウンロードする。


サンプルプログラムの使い方は次のとおりです。


最初のページでファイルを選択し go ボタンをクリックすると、次のページにアップロードされた画像が表示されます。

アップロードしたファイルをダウンロードしたい場合は、download ボタンをクリックしてください。

0
0 309
InterSystems公式 Toshihiko Minamoto · 9月 4, 2022

これは、2022.2の開発者プレビュープログラムのリリース第6弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。  2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください。

列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひ Early Access Program にご参加ください。

開発者向けプレビューでは、Ubuntu 22.04 LTSやLinux FHEL 9に対応しています。

通常、CDリリースにはサポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。  詳細については、サポートされるプラットフォームのドキュメントをご参照ください。

インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.

0
0 137
記事 Toshihiko Minamoto · 8月 31, 2022 7m read

これは、市場に出回っている主なデータベースから InterSystems IRIS への移行に関する連載第 4 回目の記事です。 このパートでは、Microsoft SQL Server から移行するための手順を説明します。 前の記事で説明したとおり、現時点ではいくつかの移行オプションが存在しますが、最も一般的なオプションは、DBeaver(https://openexchange.intersystems.com/package/DBeaver)または SQLGateway を使用する 2 つの方法です。 最初のオプションはこの記事で紹介しますが、2 つ目のオプションは Robert Cemper が書いた「SQLgateway を使ったデータベース移行」(https://community.intersystems.com/post/db-migration-using-sqlgateway)という優れた記事で紹介されています。

 

移行プロセス用のサンプルデータを取得

GitHub では、以下の 2 つのデータベースをビルドして実行する Docker Compose プロジェクトをダウンロードできます。
    ソースデータベース: サンプルデータベースを含む SQL Server データベースの Docker インスタンス。
2.

0
0 287
お知らせ Toshihiko Minamoto · 8月 31, 2022

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

今回は一新された「はじめに」ページを紹介します。

📍 jp.ommunity.intersystems.com/about

このページでは、開発者コミュニティに関する一般的な情報、興味深い統計、便利なリンク、その他多くの情報を得ることができます。
 

ここをチェックすると、長い間メンバーだった方でも、何か新しい発見があるかもしれません。

0
0 114
記事 Megumi Kakechi · 8月 30, 2022 4m read

これは InterSystems FAQ サイトの記事です。
InterSystems IRIS Data Platform(以下IRISと表記)ではマルチモデルのサポートにより、データに対して様々なアクセス手法を使用することができます。

主だったアクセス手法としてダイレクトアクセスSQLアクセスオブジェクトアクセスがあります。
 

ダイレクトアクセス は、IRISのネイティブ構造であるグローバルと呼ばれるキーバリュー型のデータに直接アクセスする方法です。

SQLアクセス は、リレーショナルデータベースシステムにアクセスするための標準言語であるSQLを使用してデータにアクセスする方法です。

オブジェクトアクセス は、オブジェクト指向言語でオブジェクトを操作するための表記法として幅広く利用されるドット記法を使用してデータにアクセスする方法です。


ダイレクトアクセスとSQLアクセスおよびオブジェクトアクセスでは、処理の抽象度が異なります。

抽象度が高くなるに伴い、内部的な処理のオーバヘッドが増加するため、単純な1スレッド単位でのアクセススピードの速さについては、ダイレクトアクセスが、SQLアクセスとオブジェクトアクセスに比較して速い場合が多いです。

しかしながら、今後SQLアクセスに関してより高速に処理できるよう様々な開発が進行中です。

0
0 517
記事 Hiroshi Sato · 8月 28, 2022 1m read

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

実行ログデータなどトランザクション中にロールバックが発生しても前の状態に戻ってほしくないデータがあります。

それらのデータをロールバックされないデータベースIRISTEMPに配置することで上記の要件に対応できます。

一時グローバルと IRISTEMP データベース

ロールバックさせたくないテーブルの実体をこのデータベースにマッピングすることでロールバック後に情報を残すことができます。

ただし、このデータベースはIRIS再起動で内容がクリアされますので、永続的に保持したい場合には、いずれかのタイミング(ロールバック後等)で永続テーブルにコピーを行う必要があります。

また、これとは別に、トランザクション対象外としたいテーブル操作の前にプロセスのジャーナル記録を停止し、操作完了後にジャーナル記録を再開することで、その操作をトランザクション対象外にすることもできます。

ただしこの方法は、ミラーリングをお使いいただく際にはご使用いただけません。

%NOJRN を使用したプロセス・レベルでのジャーナリングの管理

デベロッパーコミュニティの記事

0
0 355
記事 Mihoko Iijima · 8月 25, 2022 1m read

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

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

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

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

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

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

InterSystems IRIS の一時プロダクション・データの格納場所

InterSystems IRIS のパスワード資格情報の格納場所

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

プロダクション:システムのデフォルト設定と認証情報の移行方法について

0
0 147
記事 Toshihiko Minamoto · 8月 25, 2022 2m read

その昔、クラス/テーブルのデータ、ストリーム、インデックスのサイズを判断するのは簡単なことでした。%GSIZE を実行して、D、S、I グローバルをそれぞれ確認するだけで済みました。

ところが最近では、シャーディングや、最適化されたグローバル名、分離されたグローバルのインデックスでは以下のような %GSIZE 出力が生成されます。

            Global Size Display of /irissys/data/IRIS/mgr/irisshard/
                              1:35 PM  Dec 02 2020

          IRIS.Msg       1     IRIS.MsgNames       1     IRIS.SM.Shard       1
       IS.DGoWeK.1   24359       IS.DGoWeK.2       3       IS.DGoWeK.3    2810
       IS.DGoWeK.4    2542        IS.V0Zli.1     373        IS.V0Zli.2       2
        IS.k22Ht.1  238028        IS.k22Ht.2       3        IS.k22Ht.
0
0 352
質問 Kobata Makoto · 8月 10, 2022

皆様こんにちは。

ubuntu 22.04 LTSに対してIRIS-Community 2022.1.0.209.0をインストールしようとしたところ、

下記のようなエラーが出てインストールができない状態です。

LTSバージョンではSSLがversion3.0.2になっていますので、手動にてversion1.1.1をインストールしてみましたが

改善されません...製品版のIRIS 2022.1.0.209.0であれば正常にインストールできますので、Community Editionだけの

問題のような気もしています。 ← こちらは製品版でも同じ現象でした...><

どなたか知見をお持ちの方おられないでしょうか?

----- ■以下エラー

Warning: The installer can't find a platform in this distribution
supported by your system.

Searching for platforms that might install in unsupported mode...

     1) Ubuntu LTS (x64)

Enter the number for your system:  1

Your system type is 'Ubuntu LTS (x64)'.

2
1 430
記事 Hiroshi Sato · 8月 22, 2022 1m read

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

正規表現を使用する$Locate()関数がご使用いただけます。

正規表現の使用方法

使用方法の例は以下の様になります。

USER>write str
あいうえおかきくけこABC123456さしすせそ 
USER>write $locate(str,"[A-Za-z]{3}[0-9]{6}",,,val)
11 
USER>write val
ABC123
0
0 248
お知らせ Mihoko Iijima · 8月 19, 2022

開発者の皆さん、こんにちは!

Interoperability を使った開発のスキルを披露してみませんか?
次回のコンテストのお題は 🏆 InterSystems Interoperability Contest: サステナブルなソリューションの構築🏆です!
​​​​

期間: 2022年8月29日~9月18日

💰賞金💰 $13,500 – 賞金の配分方法が変更されました!

0
0 127
記事 Megumi Kakechi · 8月 18, 2022 1m read

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

クライアントからターミナルにログイン(接続)できない時、ターミナル接続を可能にするサービスが有効になっていないことが原因として考えられます。

ターミナル接続を可能にするサービスが有効になっていないことが原因として考えられます。

管理ポータル :[ホーム] > [システム管理] > [サービス] 

有効になっていない場合は、リンクをクリックしてサービス定義編集画面を開き、"サービス有効"にチェックを入れて保存します。

もう一つの原因としてはOSのファイアウォールによりターミナル接続が遮断されている場合が考えられます。

リモートでターミナル接続される場合はファイアウォールの設定を無効にしてお使い下さい。

0
0 481
InterSystems公式 Toshihiko Minamoto · 8月 17, 2022

これは、2022.2の開発者プレビュープログラムのリリース第5弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。  2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください

列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひ Early Access Program にご参加ください。

今後の開発者向けプレビューでは、Ubuntu 22.04 LTSへの対応や、コミュニティエディションでの制限の変更などが予定されています。ご期待ください!

通常、CDリリースにはサポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。  詳細については、サポートされるプラットフォームのドキュメントをご参照ください。

インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.

0
0 108
記事 Toshihiko Minamoto · 8月 17, 2022 11m read


InterSystems IRIS には、暗号化、復号化、およびハッシュ操作の優れたサポートが備わっています。 クラス %SYSTEM.Encryption(https://docs.intersystems.com/iris20212/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&PRIVATE=1&CLASSNAME=%25SYSTEM.Encryption)の中には、市場に出回っている主なアルゴリズムのクラスメソッドがあります。

IRIS アルゴリズムと暗号化/復号化の方式

ご覧のとおり、操作は鍵に基づいており、3 つのオプションが含まれます。

  • 対称鍵: 暗号化と復号化の操作を実行する部分で同じ秘密鍵が使用されます。
  • 非対称鍵: 暗号化と復号化の操作を実行する部分で、暗号化に同じ秘密鍵が使用されますが、 復号化においては、各パートナーが秘密鍵を所有します。 この鍵は身元を証明するものであるため、他人と共有することはできません。
  • ハッシュ: 暗号化だけが必要で、復号化が不要である場合に使用されます。強力なユーザーパスワードを保存する際に一般的なアプローチです。
0
0 589
記事 Toshihiko Minamoto · 8月 11, 2022 1m read

Studio では、クラスを直接その名前で開くことができます。何度もクリックしながら目的のクラスに到達するまでパッケージツリー内を移動する必要はありません。

Ctrl + O(またはファイル -> 開く)を押せば、以下のようにクラス名を入力するだけです。

Enter を押すと、クラスが開きます。

VSCode ではこれをどのようにして行えるでしょうか?

0
0 637
記事 Megumi Kakechi · 8月 8, 2022 3m read

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

テーブル(クラス) のデータを削除する際に %KillExtent() というメソッドを使用すると、レコードを1ずつ削除するのではなく、データを格納しているデータグローバル、インデックス定義のグローバル(ノード) をまとめて 削除することができます。

kill ^ISJ.xxxD
kill ^ISJ.xxxI

のようにデータグローバルやインデックスグローバルをまとめて削除するのと同じような動作となります。
そのため、ジャーナルレコードへの出力は最小限になります。


使用例:

write ##class(ISJ.xxx).%KillExtent()


ただし、トランザクション下で実行すると一括 Kill の場合でも保存されているレコードに応じたジャーナルレコードが生成されるのでご注意ください。

また、以下のドキュメントの注意書きにあるように、他クラス(テーブル)への参照などが含まれているクラスで実施されると整合性に問題が発生する場合がありますのでご注意ください。

%KillExtent() メソッド
 

こちらを必要なだけ記述したタスククラスを作成すると、タスクスケジューラから定期的に実行できます。
タスククラスの作成方法は、以下のトピックをご覧ください。

【FAQ】定期的に処理を実行する事は出来ますか?


【ご参考】

IRIS 2021.

0
0 337
記事 Hiroshi Sato · 8月 8, 2022 1m read

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

TCP アダプタを使用するビジネスホストの [接続中を維持(StayConnected)]と[プールサイズ(PoolSize)]のデフォルト設定値は以下の通りです。

StayConnected = -1(常時接続タイムアウト無し)
PoolSize = 1

ネットワークの問題でビジネスホストへの接続が切断された場合に、プロダクション側では切断されたことを検知できないため新しい接続を受け付けません。

またこの状況の時、イベントログにも記録されません。

StayConnected が デフォルト値(-1)の場合、接続がタイムアウトしないため新しい接続を受け付けるためには、ビジネスホストを再起動する必要があります。

このような状況を回避するためには、StayConnected を 0 以上の値に設定することを推奨します。

例えば300(秒)に設定した場合、TCP ビジネスホストは 300 秒以上新たなメッセージを受信しなかった場合に、自動的に接続を切断して再接続できます。

処理量の多いシステムの場合には、通常 StayConnected の値をさらに小さな値、例えば 5(秒)に設定します。

0
0 177
記事 Hiroshi Sato · 8月 8, 2022 1m read

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

コンソールログに任意のメッセージを書き込む方法として%SYS.System クラスの WriteToConsoleLog メソッドを使用することができます。

以下に例を示します。 

%SYS>write ##class(%SYS.System).WriteToConsoleLog("xxxxx log message",0,0)
1


WriteToConsoleLogメソッドに指定できるパラメータの詳細は、以下のドキュメントをご参照下さい。

クラスリファレンス(%SYS.System)【IRIS】

クラスリファレンス(%SYS.System)

0
0 181
InterSystems公式 Toshihiko Minamoto · 8月 8, 2022

これは、2022.2の開発者プレビュープログラムのリリース第4弾です。 プレビューリリースは、隔週で更新される予定で、準備が整い次第、機能を追加していく予定です。  2022.2では、SQL管理、クラウド統合、KafkaおよびJMSアダプタ、SQL Loaderなどにおいて、多くのアップデート、修正、機能強化が行われています。 製品改善のため、開発者コミュニティを通じてフィードバックをお寄せください

列指向ストレージに関して、Early Access Program (EAP) を受け付けています。ご興味のある方はぜひ Early Access Program にご参加ください。

開発者プレビュー4ではRed Hat RHEL 9のサポートが追加されました。

CDリリースには、サポートされているすべてのプラットフォーム向けの標準インストールパッケージと、OCI(Open Container Initiative、別名Dockerコンテナ)形式のコンテナイメージが付属しています。  詳細については、サポートされるプラットフォームのドキュメントをご参照ください。

インストールパッケージとプレビューキーは、WRCのプレビューダウンロードサイトまたは評価サービスのウェブサイト(2022.2へのアクセスには「Show Preview Software」をチェックしてください)から入手できます

0
0 116
お知らせ Toshihiko Minamoto · 8月 5, 2022

開発者の皆さん、こんにちは!

コミュニティウェビナーの再開をお知らせします!
​​​​​

今回は、@Ron.Sweeney1582による「Scaling InterSystems FHIR Server on Amazon Web Services with ECP」というウェビナーに皆さんをご招待します。

このウェビナーでは、Amazon Web Services 上の InterSystems FHIR Server を Enterprise Cache Protocol (ECP) を使ってスケールアウトする技術的な詳細、デモ、ベンチマークを紹介します。

日時: 8月18日(木)午前8時(東部標準時)、午後9時(日本標準時)
👨‍🏫 スピーカー: @sween, Integration Required社 フルスタックアーキテクト


0
0 318
記事 Toshihiko Minamoto · 8月 2, 2022 5m read

サポートではこのような質問をたまに受けることがあります。何かが、または誰かが、想定以上のライセンスを使用しており、それを調べなければなりません。 

調べるタイミングは2回あります。 1 つは、アプリケーションが動作しないか、ターミナル経由で接続しようとすると次のような「愛くるしい」メッセージが表示され、ライセンスが使い果たされていることに気づいたときです。

<LICENSE LIMIT EXCEEDED> メッセージ: 


 

2 つ目のタイミングは、アプリケーションを使用できなかったことがあったという苦情をエンドユーザーから受けたときですが、問題が発生しているのを確認するには遅すぎます。 こういった場合には通例、messages.log に「License Limit exceeded xxxx times」というメッセージが確認されます。

適時に問題をキャッチする

最初のタイミングの場合は、問題が発生している状態を確認できるため、それをキャッチする方法がいくつか考えられます。 

  • システム管理ポータルにログインできるのであれば、[ライセンス]セクションに移動して、何が何を使用しているのかを調べることができます。 
  • -B パラメーターを使用してターミナル経由で接続します(ライセンスがすべて使用中であるため、通常の方法では接続できません)。
0
0 540
お知らせ Mihoko Iijima · 8月 1, 2022

開発者の皆さん、こんにちは!

InterSystems 技術文書ライティングコンテスト: Python エディションでは、素晴らしい記事の投稿がありました!

🌟 12 の投稿はこちら! 🌟

この記事ではコンテスト受講者を発表します 📢​​​​​​


0
0 147
記事 Hiroshi Sato · 8月 1, 2022 1m read

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

残念ながら良い方法はありません。

もし処理の流れとして突然処理を中断されると不都合がある場合には、OnunloadHandler内でalertメソッドにより、Xボタンを押さないように注意を促すようなメッセージを出す方法が考えられます。

一般的には、ユーザ都合で処理中断されてもサーバ側処理内でデータの整合性等に不都合が発生しない様にアプリケーションの実装を行う必要があります。

ページのアンロード時に呼び出されるOnunloadHandler内でサーバ・メソッドを呼び出す方法は様々な問題があるため、使用することはお勧めしません。

0
0 192
記事 Megumi Kakechi · 7月 31, 2022 2m read

これは InterSystems FAQ サイトの記事です。
TRYブロック内で任意のカスタムエラーを発生させたい場合、以下のように throw で例外を渡すことが可能です。

以下のサンプルでは、Stcount が 1 より小さい場合にカスタムエラーを発生させています。

Class User.Test
{

ClassMethod ExceptionTest()
 {
    try
    {
      // : some codes
      if (Stcount<1) {
          throw ##class(%Exception.General).%New(" ユーザ定義エラー","5001","ロケーション","エラー時のデータ")  
          // ユーザ作成エラーは5001以降
      }
    }
    catch ex
    {
      write "エラー #", ex.Code, ": ", ex.Name, " : ", ex.Location, " ", ex.Data
      return
    }
 }
}


上の例では、Stcount が 1 より小さい場合、以下のようなエラーが出力されます。

USER>do ##class(User.Test).
0
1 374