記事 Hiroshi Sato · 3月 23, 2022 2m read

もし現在ご使用のデータベース技術で壁に突き当たっていると感じておられるならば、是非InterSystems IRIS Data Platformへの移行をご検討ください。

(以下IRIS)

IRISに移行するに際して、現行のプログラム資産を全て書き換える必要はありません。

IRISに移行する際には、以下の手順で進めることを推奨しております。

アプリケーションコードをそのまま流用し、動作させるために、現在のデータベースからIRISへの移行を行います。

既存のRDBMSのデータ定義(DDL文で記述されたもの)をIRISに取り込むことで、リレーショナルとオブジェクトの両モデルからアクセスが可能となるため、必要に応じてオブジェクト・アクセスが妥当である処理に対しては、アプリケーションプログラムの修正など、対応策が選択できます。

さらにXMLやJSONなどのドキュメント形式のデータの取り扱いも容易ですので、RestFullなアプリケーション構築にも向いています。

また、IRISには習得が容易でデータベースエンジンと一体化したスクリプト言語「InterSystems ObjectScript」が用意されているので、処理の一部をサーバ側ロジックとしてストアドプロシージャ化することによってデータベース処理を効率化するなど、様々な対応策を検討することができます。

バージョン2021.

0
0 221
記事 Hiroshi Sato · 3月 23, 2022 2m read

質問

現在使っているリレーショナルデータベースからInterSystems IRIS Data Platformに移行することは可能ですか?

答え

InterSystems IRIS Data Platform(以下IRISと表記)は、SQLをサポートしていますので、多くの場合リレーショナルデータベースで構築されたアプリケーションは、大部分のコードを変更することなくIRISに移行することができます。

ただしSQLの各実装毎にSQL標準を拡張した仕様等があり、それにIRISが全て対応していませんので、コードの書き換えが必要なケースもあります。

また各実装が独自に用意した標準でない通信系API等にも対応していませんので、その場合にはJDBC、ODBCなどの標準的な通信APIに置き換える必要があり、かなり書き換えが必要になります。
(使用されているSQL文等はそのまま流用可能な場合が多いです。)

さらにそのままコードを移行できるケースであっても動作保証はできませんので、必ず動作確認のためのテスト作業は必要になります。

以上のことから他データベースシステムからIRISシステムへの移行には相応の移行コストがかかるため、移行は必ずしも容易とは言えませんが、それでも移行を決断されたお客様はたくさんおられます。

そしてほとんどのお客様は移行したシステムの性能、開発生産性、保守性、運用の容易さ等に満足されております。

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

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

以下のコードは、https://www.intersystems.com/assets/intersystems-logo.png をダウンロードし、c:\temp\test.pngとしてファイルを保存する例になります。

以下のコードを動作させるためには、SSLTESTという名前のSSL定義を作成しておく必要があります。

 

ClassMethod download() As %Status
{
    Set sc = $$$OK
    Set httprequest=##class(%Net.HttpRequest).%New()
    set httprequest.Port = 443
    set httprequest.Https = 1
    set httprequest.SSLConfiguration = "SSLTEST"
    Set httprequest.Server="www.intersystems.com"
    Do httprequest.Get("/assets/intersystems-logo.png")
    Set httpresponse=httprequest.HttpResponse
    Set file=##class(%File).
0
0 208
InterSystems公式 Toshihiko Minamoto · 3月 21, 2022

InterSystems Kubernetes Operation (IKO) バージョン 3.3 が WRC ダウンロードページ やInterSystems Container Registry よりダウンロード可能となりました。

IKO は、使いやすい irisClusterリソース定義を提供することにより、Kubernetesにおける InterSystems IRIS やInterSystems IRIS for Health との連携を簡素化します。 簡単なシャーディング、ミラーリング、ECP構成などの機能一覧は ドキュメント をご覧ください。

IKO 3.3の主な修正点:

  • InterSystems IRIS 、 IRIS for Healthのバージョン 2021.2 、 2022.1 のサポート
  • Kuberentes 1.21のサポート
  • irisCluster の一部として共通のSystem Alerting and Monitoring (SAM) コンフィグレーションのデプロイ
  • irisCluster の一部として InterSystems API Manager (IAM) のデプロイや管理
  • ミラーリングのアクティブ側の自動タグ付けにより、サービスは常にアクティブなミラーメンバーを指すことができます。
0
0 147
記事 Toshihiko Minamoto · 3月 21, 2022 2m read

少し前に GitHub が導入されてから、そこにホストされているあらゆるリポジトリの VSCode をブラウザで非常に素早く実行できるようになりました。 リポジトリで . キーかプルリクエストを押すか、URL で .com.dev に置き換えることで、ブラウザ内で VSCode 環境に直接移動することができます。

GitHub 開発

この VSCode はデスクトップバージョンのライトバージョンではありますが、完全にブラウザ内で動作します。 このため、このような動作を可能にする拡張機能には制限があります。 そこで、VSCode-ObjectScript 拡張機能の新しい 1.2.1 バージョンをご紹介します。ブラウザモードでの実行がサポートされています。

0
0 249
質問 Kobata Makoto · 2月 28, 2022

皆様こんにちは。

Native API for .NETを使用して、%Stream.GlobalBinaryタイプのプロパティを持つデータを作成しようとしています。

%Stream.GlobalBinaryタイプのプロパティ(binaryData)に書き込む部分は以下のようになっています。

Using obj As InterSystems.Data.IRISClient.ADO.IRISObject = iris.ClassMethodObject("User.Sample","%New")

        Using prop As InterSystems.Data.IRISClient.ADO.IRISObject = obj.GetObject("binaryData")

                prop.InvokeStatusCode("Write", binary)

        End Using

        obj.InvokeStatusCode("%Save")

End Using

この”Write”メソッド部分ですが、1.5MB程度の制限がかかってしまい、1.5MBを超えるようなデータが登録できません。

※実際にはエラーとはならず、1.5MBまでしか書き込まれていない状態のようです。

どなたか解決方法等ご教授いただけないでしょうか。

8
0 295
InterSystems公式 Toshihiko Minamoto · 3月 15, 2022

インターシステムズ社は、ObjectScript ルーチンのコンパイルが正しく行われない不具合を修正しました。

この不具合は、最近リリースされた 2021.1.1 バージョンのみに存在します。

            InterSystems IRIS

            InterSystems IRIS for Health

            HealthShare Health Connect

インターシステムズでは、2021.1.1 を使用しないことを推奨しています。ルーチンのコンパイルが正しく行われず、予測不可能なロジックの実行が発生する可能性があります。2021.1.1 のバージョンは、配布チャネルから削除されました。  インターシステムズ社は、この不具合を修正したバージョン 2021.1.2 をご利用ください。

ご参考までに、この修正プログラムはCDS3299として識別されます. この問題の影響を受けるのは2021.1.1 のみです。

このアラートについてご質問がございましたら、サポートセンター Worldwide Response Center までお問い合わせください。

0
0 136
記事 Toshihiko Minamoto · 3月 15, 2022 14m read

これまでの記事では、メールサーバーのメールボックスからのメッセージを処理する IMAP プロトコルの基本的な使用方法を学習しました。 とても興味深いものではありましたが、他の人が作成してすぐに利用できるようにライブラリに提供されている実装を利用することも可能です。

IRIS データプラットフォームの改善の 1 つに、同じ IRIS プロセスで ObjectScript に並行して Python コードを記述できる機能があります。 この新機能は、組み込み Python と呼ばれます。 組み込み Python を使用すると、ObjectScript コードに巨大な Python エコシステムのライブラリの力を取り込むことができます。

この記事では、imaplib というライブラリを使用して IMAP クライアントを実装し、それを IRIS Email フレームワーク に統合することにします。 また、Python エコシステムの力を借りて、組み込み Python を使用して、IRIS プラットフォームでの実際の課題を解決する方法を示す実用的な例も確認します。

ここで実装されているすべてのコードは、こちらの GitHub リポジトリpython ディレクトリにあります。

Python コードは最近の IRIS バージョンでのみ機能することに注意してください。

0
0 442
お知らせ Mihoko Iijima · 3月 11, 2022

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

次のコンテストへの参加準備はよろしいですか? 19 回目の InterSystems オンラインプログラミングコンテストのテーマは・・・

🏆 InterSystems Global Contest 🏆 です!

(もう 18 回も開催してたんですね。びっくり ( ゚Д゚) いたしました)

応募期間は 2022年3月21日~4月3日 です。 

💰 賞金総額: $10K 💰


0
0 209
記事 Toshihiko Minamoto · 3月 10, 2022 4m read

背景

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

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

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

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

(ブブー、間違いです)

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

 

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

ストレージ定義はクラスプロパティとデータベース内のその物理ストレージ場所をリンクするマップとして機能します。

複数のスロットのある本棚とどのスロットに本が収まっているかを追跡するためのリストがあるとします。

0
0 143
質問 Yuji Ohata · 3月 6, 2022

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

現在複数のJob実行の仕組みをInteroperabilityの機能を使って実現しておりますが、
特定のビジネスサービスは、xx:xx~yy:yyの間実行させたくない、
という仕組みを実現させる必要が出てきました。

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

ここに「スケジュール指定の定義」というものがあり、まさにこれが利用できるのかと思ったのですが、
文献を見る限りだと、プロダクションそのものを停止するような仕組みに見えており、
また実際に定義を作ってみたのですが、それをどうやってプロダクションへ反映させるかもわかりませんでした。

 

どなたか、類似の仕組みを作成された方がいらっしゃったら、アイデアをいただけませんでしょうか。
最悪、ビジネスサービスのロジック内にスケジュールを見て、
処理を中断するロジックを入れるしかないと考えております。

2
0 328
記事 Toshihiko Minamoto · 3月 8, 2022 8m read

InterSystemsを使用してExcelファイルを生成する方法はたくさんあります。ZENレポートやIRISレポート(Logiレポートまたは正式にはJReportsと呼ばれるレポート)のほか、サードパーティのJavaライブラリを使用するなど、可能性はほぼ無限です。

しかし、Caché ObjectScriptだけで単純なスプレッドシートを作成したい場合はどうでしょうか。 (サードパーティアプリケーションを使用せずに、です)

私の場合、大量の生データを含むレポート(金融関係の人たちが好むレポート)を生成する必要がありますが、私のZEN/IRISでは対応できません。私が呼ぶところの「ゼロバイトファイル」が生成され、基本的にJavaのメモリ不足となり、レポーティングサーバーに大きな負荷を生じてしまいます。

これは、Office Open XML(OOXML)を使って実現できます。 Office Open XML形式は、多数のXMLファイルで構成されるZIPパケージです。 つまり基本的には、これらのXMLファイルを生成してZIP圧縮し、.xslxに名前を変更すればよいのです。 それくらい単純です。

ファイルは、Open Packaging Conventionsという単純な命名規則に従っています。

0
0 479
InterSystems公式 Toshihiko Minamoto · 3月 3, 2022

注意事項:前回リリースしましたビルド2021.1.1.324.0には問題があります。  2021.1.1 メンテナンスリリースはWRCから削除し、ビルド2021.1.2.336.0 に更新しています。2021.1.2のコンテナ版はまもなくリリースする予定です。

2種類のメンテナンスリリースが利用可能です。  

  • Caché  2018.1.6, Ensemble 2018.1.6,  HSAP 2018.1.6
  • InterSystems IRIS 2020.1.2, IRIS for Health 2020.1.2, HealthShare Health Connect 2020.1.2 

インストレーションキットやコンテナはWRC ソフトウェア配布サイト からダウンロードできます。 Container images for the Enterprise Editions of InterSystems IRISや IRIS for Health の Enterprise Editionのコンテナイメージ、すべての関連コンポーネントはInterSystems Container Registry から取得できます。

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

これは、InterSystems FAQサイトの記事です。
ある処理において、データを無期限に保存する必要がなくグローバルの強力な性能が必要になる場合に、IRISTEMP/CACHETEMP データベースに保存される一時グローバルが使用されます。
IRISTEMP/CACHETEMPデータベースはジャーナルされないので、一時グローバルの使用ではジャーナルファイルは作成されません。

IRISTEMP/CACHETEMP データベースは、システムで一時ストレージ用に使用され、ユーザも同じ用途で使用することができます。

一時グローバルとIRISTEMPデータベースの詳細については、以下のドキュメントをご覧ください。
一時グローバルと IRISTEMP データベース


一時グローバルとして使用されるグローバルには以下のようなものがあります。

1. システムテンポラリグローバル(^IRIS.Temp*、^%cspSession、^CacheTemp*、^mtemp* など)
2. ユーザが設定したIRISTEMP/CACHETEMPへのマッピングによる一時グローバル
3. プロセスプライベートグローバル (^||name、^|"^"|name、^["^"]name、^["^",""]name など

4.

0
1 472
お知らせ Toshihiko Minamoto · 3月 3, 2022

2022年2月のコミュニティリリースへようこそ!

開発者向けの新しいコミュニティ・イベント・カレンダーをご紹介します。​​​​

🎯 https://jp.community.intersystems.com/events 

このカレンダーでは、開発者コミュニティのイベント履歴を見ることができます。現在または近日中に開催されるイベントを確認したり、過去のイベントをチェックしたり、Communityのウェビナーやミートアップの録画を見たりすることができます。

ではその使い方を詳しく見ていきましょう。

0
0 90
記事 Toshihiko Minamoto · 3月 2, 2022 5m read

これは、IRIS でリレーショナルデータをクエリするアナリストとアプリケーションに、さらに優れた適応性とパフォーマンスによるエクスペリエンスを提供する IRIS SQL のイノベーションをトピックとした短い連載の 3 つ目の記事です。 2021.2 では連載の最後の記事になるかもしれませんが、この分野ではさらにいくつかの機能強化が行われています。 この記事では、このリリースで収集し始めたヒストグラムという追加のテーブル統計について、もう少し詳しく説明します。

0
0 128
記事 Tomoko Furuzono · 3月 1, 2022 2m read

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

オブジェクトに対する一般的な処理をサポートする各種関数を提供しています。
詳細は以下ドキュメントをご参照ください。
オブジェクトへの動的アクセス【IRIS】
オブジェクトへの動的アクセス


サンプルクラス(Sample.Person)を使用して、利用例をご紹介します。

【InterSystems IRIS でご確認いただく場合】
InterSystems IRISでは、サンプル定義の一部を GitHub 上に公開しています。
ダウンロード情報やインポート、データ作成手順については、下記の記事をご参照ください 。
サンプル(Sample.Person)のクラス定義ダウンロードとサンプルデータの作成について

【Caché/Ensemble/HealthShare でご確認いただく場合】
SAMPLES ネームスペースへ移動してご確認ください。

 

(1) クラス名の取得:$CLASSNAME(インスタンス

SAMPLES>set p=##class(Sample.Person).%OpenId(1)
SAMPLES>write $CLASSNAME(p)
Sample.Person
SAMPLES>write $CLASSNAME(p.Home)  // オブジェクト参照のプロパティ
Sample.
0
0 537
記事 Tomoko Furuzono · 3月 1, 2022 1m read

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

マップされたクラス・ルーチンも含めてコンパイルする場合は、コンパイラ修飾子に "/mapped=1" もしくは "/mapped" を指定します。 例えば、以下のように行います。

【例1】クラスリストを取得してコンパイル 

 do $System.OBJ.GetClassList(.list,"/mapped")
 // build your list starting from .list
 do $System.OBJ.Compile(.list) 

 

【例2】全てのクラスをコンパイル 

 do $system.OBJ.CompileAll("/mapped") 
0
0 186
記事 Tomoko Furuzono · 3月 1, 2022 2m read

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

ミラー構成削除時に、ミラー・データベースのミラー属性を削除するオプションを指定しないと、通常データベースに戻すことができず、次回マウント時に読み取り専用でデータベースがマウントされます。 読み書き可能なデータベースに戻すためには、システムルーチン ^MIRROR を使用してミラー属性を削除する必要があります。
手順は以下のとおりです。(%SYSネームスペースで実行します。)

%SYS>do ^MIRROR
 
This instance is not initialized as a mirror member
 
1) List mirrored databases
2) Remove one or more mirrored databases
3) Create a Mirror
4) Join Mirror as Failover Member
5) Join Mirror as Async Member
 
Option? 2     ※ 2 を入力します。
There is one mirrored database on this system
Remove it? y      ※ yes または y を入力します。
Removing c:\intersystems\ensemble\mgr\mtest\ .
0
0 293
記事 Toshihiko Minamoto · 3月 1, 2022 5m read

これは、適応性とパフォーマンスに優れた SQL エクスペリエンスを提供する 2021.2 SQL 強化機能に関する連載第 2 回目の記事です。 この記事では、前の記事で説明したランタイムプランの選択機能の主要な入力であるテーブル統計の収集におけるイノベーションに焦点を当てます。

0
1 205
記事 Mihoko Iijima · 2月 28, 2022 7m read

開発者のみなさん、こんにちは。

今回は、スーパーやコンビニでもらうレシートを写真で撮り、OCR を使ってレシートの画像から文字列を切り出して IRIS に登録する流れを試してみました。

サンプルでは、Google の Vision API を利用してレシートの JPG 画像から購入物品をテキストで抽出しています。

サンプルコード一式 👉 https://github.com/Intersystems-jp/iris-embeddedpython-OCR
 

最初、オンラインラーニングで使っている 「tesseract-OCR」を使ってみようと思ったのですが、レシートには半角カナが混在していたりで、半カナがなかなかうまく切り出せず、あきらめました・・(半角カナがなかったら日本語もばっちり読めていたのですが・・)

もし、tesseract-OCR で半カナを切り出す良い方法をご存知の方いらっしゃいましたら、ぜひ教えてください!

 

今回試すにあたり、Vision API の使い方を詳しく書いているページがありましたのでコードなど参考させていただきました。ありがとうございました。

0
1 1459
記事 Toshihiko Minamoto · 2月 24, 2022 5m read

InterSystems IRIS Data Platform の 2021.2 リリースには、ミッションクリティカルなアプリケーションを高速で柔軟性に優れ、セキュアに開発するための刺激的な新機能が多数含まれています。 Embedded Python は間違いなく脚光を浴びています(正当な理由で!)が、SQL の分野でも、テーブルデータに関する詳細な統計情報を収集し、それを最適なクエリプランに提供する、より適応性の高いエンジンに向けて大きな一歩を踏み出しました。 この短い連載記事では、2021.2 で新しく追加された 3 つの要素について詳しく説明し、ランタイムプランの選択(RTPC)を手始めに、この目標に向かって進みます。

これらについて適切な順序で話していくのは困難です(この記事を書く上で、私がどれだけ順序を入れ替えたか想像できないほどです!) というのも、これらが相互に非常にうまく機能するためです。 そのため、ご自由に順序を変えてお読みくださいsmiley

0
1 234
記事 Megumi Kakechi · 2月 23, 2022 1m read

これは、InterSystems FAQサイトの記事です。
現ジャーナルファイル名の取得は、ジャーナリング API を利用します。

##class(%SYS.Journal.System).GetCurrentFileName()


現ジャーナルファイルの使用量bytesの取得は、ジャーナリング API を利用します。

##class(%SYS.Journal.System).GetCurrentFileOffset()


実行例は以下の通りです。

%SYS>Write ##class(%SYS.Journal.System).GetCurrentFileName()
c:\journal\20110223.001
%SYS>Write ##class(%SYS.Journal.System).GetCurrentFileOffset()
1213012

 

あわせて、以下の関連記事も是非ご覧ください。

0
0 249
記事 Toshihiko Minamoto · 2月 22, 2022 14m read

最初のパートでは、IMAP プロトコルコマンドについて簡単に説明しました。このパートでは、IRIS を使用してこれらのコマンドを実装し、独自の IMAP クライアントを作成してみましょう!

IRIS Email フレームワーク

IRIS プラットフォームには電子メールを操作するためのデフォルトのインターフェースとクラスがあります。 これらのアーティファクトは元々 POP3 実装用に設計されていますが、 これらのインターフェースとクラスを IMAP クライアントの実装に使用して拡張できないということではありません。 それでは、このことについて説明しましょう。

  • %Net.FetchMailProtocol: メールを取得するための基本クラスです。 IMAP クライアントはこれを拡張しています。
  • %Net.MailMessage: MIME メッセージです。 %Net.MailMessagePart. を拡張します。
  • %Net.MailMessagePart: マルチパートメッセージの MIME メッセージをカプセル化します。 このクラスにはそれ自体の配列があり、メッセージのサブパートをツリーで表現できるようにします。
  • %Net.MIMEReader: このユーティリティは、メッセージの MIME コンテンツを解析するメソッドで、%Net.
  • 0
    0 170
    質問 Yuji Ohata · 2月 17, 2022

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

    現在、共通のIRIS環境を複数個所に用意するため、
    インストール・マニフェストを利用した環境構築の仕組みを作成しております。
    https://docs.intersystems.com/iris20211/csp/docbookj/DocBook.UI.Page.cl…

    Interoperabilityを有効にしたNMSPについて、
    管理ポータル上から作成すると、資格情報を保持する用のSECONDARYのローカルデータベースが
    自動で作成されるように認識しております。
    https://docs.intersystems.com/iris20211/csp/docbookj/DocBook.UI.Page.cl…

    しかし、マニフェスト経由で作成した場合にはそれが作成されていません

    2
    0 207