InterSystems公式 Yoichi Miyashita · 3月 25, 2021

対象バージョン: 
   Caché/Ensemble、InterSystems IRIS および IRIS for Health のすべてのバージョン、上記のデータプラットフォームバージョンに基づくすべての HealthShare 製品

対象プラットフォーム: すべて

InterSystemsは、非常にまれな状況でプライマリミラーメンバー以外のミラーメンバーでデータの不整合を引き起こす可能性がある問題を修正しました。
この問題は、上記の InterSystems 製品のバージョンで発生する可能性があります。

[発生する問題]
ミラーリングを使用しているシステムでデータの不整合性が発生します。

[問題の詳細]
この問題は、ミラーリングされたシステムでの通常の操作中にエラーなく発生します。
この問題によりミラーメンバーで一部のジャーナルレコードのデジャーナル処理が失敗し、ミラーメンバー間でデータの不整合が発生します。
これは、フェイルオーバーメンバーと非同期メンバーの両方で発生する可能性があります。

0
0 221
記事 Makiko Kokubun · 3月 23, 2021 2m read

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

この動画では、Caché/EnsembleからInterSystems IRISへの移行プロセスについてご説明しています。

Caché/Ensembleから InterSystems IRIS への移行を考えられている方は、まずこちらをご覧ください。
「移行する際の注意点」、「移行の方法」、「必読ドキュメント」、「キットや評価ライセンスの入手方法」など、IRIS移行の際に必要となる情報をまとめてご案内しています。

もくじ
 0:50~ InterSystemsIRIS の簡単な紹介
 2:05~ サポートプラットフォームについて
 2:55~ 移行方法について(インプレース変換のご紹介)
     ⇒インプレース変換:Caché/Ensembleから直接アップグレードが可能です(2016.2~)
 5:35~ 各種ドキュメントのご紹介
 7:10~ キットや評価ライセンスの入手方法
10:50~ 新しいリリースサイクル(EM/CDリリース)
12:25~ InterSystems IRIS 導入ガイドについて
     ⇒レガシー機能の取り扱いや注意点など、内容を簡単にご紹介
15:40~ インプレース変換の手順とデモ(デモは19:15~)

0
0 273
記事 Toshihiko Minamoto · 3月 22, 2021 5m read

Caché 2013.1 より、InterSystems は特殊な値を持つフィールドが使われるクエリプランのセレクションを改善する目的で Outlier Selectivity (外れ値の選択性) を導入しました。

この記事では、「Project」テーブルを例に使い、Outlier Selectivity の概要やそれが SQL のパフォーマンスを向上させる仕組み、またクエリを書く際の注意点などについて解説したいと思います。

Selectivity (選択性)

まずは、Selectivity についてさっと説明します。 Selectivity とは、テーブル内の 1 つの列の中にある値に関するメタ情報のことです。 データが典型的なかたちで分布されていると想定した場合、「このテーブル内のこの列に特定の値を持つすべての行を要求するとしたら、通常取得できるのはテーブル内のどの程度の割合であろうか?」という疑問の答えとなる情報です。

0
0 168
記事 Mihoko Iijima · 3月 19, 2021 2m read

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

各タイムアウト値の意味は以下の通りです。

(1) [サーバ応答タイムアウト]

この設定時間内に、IRIS/Caché での処理(ルーチンやクエリの実行)が終わらない場合は、ブラウザ側にエラーを返します。

例) この値が60秒の時に、ルーチン/メソッド/クエリ実行に 90秒 かかる場合にはエラーになります。

(2) [キューイングされたリクエストのタイムアウト]

CSP/REST で設定する IRIS/Caché サーバごとに、CSP/REST を同時実行できるプロセス数を制限できます。

たとえば、サーバ接続最大数=3の場合、表示に数十秒かかるページを複数同時に要求した場合、4つ目以降のリクエストは、Web/CSP ゲートウェイ上で「キュー」に入り待ち状態になります。

このキューで待つ最大時間が (2) のタイムアウトになります。

(3) [非活動タイムアウト]

CSP/REST では、IRIS/Caché サーバ上に待ち受けプロセスが複数でき、「サーバ接続最大数」まで待ち受けプロセスが出来る可能性があります。

各プロセスが、次の要求が来るまで待機する時間がこのタイムアウト値になります。

タイムアウト後、プロセスは自動的に消滅します(これらのプロセスはライセンスを消費しません)。

詳細は下記ドキュメントページをご参照ください。

0
0 803
記事 Mihoko Iijima · 3月 19, 2021 3m read

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

複数の SQL 文を実行する GUI はありませんが、複数の SQL 文を含むファイルを作成しファイルをインポートしながら SQL を実行する方法で対応できます。

ご利用バージョンによって使用するユーティリティメソッドが異なります。

2020.3以降をご利用の場合は %SYSTEM.SQL.Schema クラスの ImportDDL() メソッドを使用します。

2020.2以前をご利用の場合は %SYSTEM.SQL クラスの DDLImport() メソッドを使用します。 

1)バージョン 2020.3 以降での方法:%SYSTEM.SQL.Schema クラスの ImportDDL() メソッドの利用

インポート用ファイルに記述するSQL文が複数行ある場合は、記述する SQL の後ろに GO 文を記述する必要があります。

インポートファイル例は以下の通りです。

INSERT INTO Test2.Person (Name) values('test1')
go
INSERT INTO Test2.Person (Name) values('test2')
go
INSERT INTO Test2.Person (Name) values('test3')
go
0
0 10569
お知らせ Toshihiko Minamoto · 3月 18, 2021

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

この度、開発者コミュニティでの投稿や翻訳のポイントが2倍に引き揚げられました! 2021年3月18日以降、記事や質問の投稿で得られるポイントは以下の通りとなります。

✅ 200 ポイント(英語)
✅ 400 ポイント (スペイン語、ポルトガル語、中国語、日本語)


✅ 100 ポイント(翻訳記事の投稿)

また、一定数の記事やコメントを投稿すると、まとまったポイントがもらえることをご存知でしょうか?こちらをチェックしてください。

0
0 119
記事 Toshihiko Minamoto · 3月 17, 2021 31m read

この記事では、従来のIRISミラーリング構成の代わりに、Kubernetesの Deploymentと分散永続ストレージを使って高可用性IRIS構成を構築します。 このデプロイでは、ノード、ストレージ、アベイラビリティーゾーンといったインフラストラクチャ関連の障害に耐えることが可能です。 以下に説明する方法を使用することで、RTOがわずかに延長されますが、デプロイの複雑さが大幅に軽減されます。

0
0 1173
お知らせ Mihoko Iijima · 3月 16, 2021

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

世界中の開発者からの熱いご要望により、新たなコンテストの開催が決定しました!

🏆 InterSystems IRIS プログラミングコンテスト: 開発者ツール 🏆

応募期間は 2021年3月29日~4月18日 です!

💰 賞金総額: $8,500 💰

(投票期間は 2021年4月19日~25日、勝者発表は 4月26日を予定しています)

InterSystems IRIS を使用して、開発の迅速化、より質の高いコードの提供、テスト、デプロイ、サポート、またはソリューションの監視を支援するアプリケーションやツールを開発し、ご応募ください!

優勝特典

1、審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。

🥇 1位 - $4,000 

🥈 2位 - $2,000 

🥉 3位 - $1,000

2、開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。

🥇 1位 - $750 

🥈 2位 - $500 

🥉 3位 - $250

複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。

参加資格

どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)

0
0 172
記事 Toshihiko Minamoto · 3月 15, 2021 16m read

InterSystems IRIS では、情報を格納する「グローバル」というユニークなデータ構造をサポートしています。 基本的に、グローバルとは、マルチレベルのインデックスを持つ永続配列であり、トランザクションの実行やツリー構造のスピーディなトラバーサルといった機能が備えられているほか、ObjectScript として知られるプログラミング言語にも対応しています。

ここから先、少なくともコードサンプルについては、グローバルの基礎を理解されているという想定のもとに話しを進めていきます。

グローバルはデータを保存するための魔法の剣です パート1
グローバルはデータを保存するための魔法の剣ですパート2 - ツリー
グローバルはデータを保存するための魔法の剣です パート3 - 疎な配列

グローバルは、普通のテーブルとは全く異なる構造でデータを格納し、OSI モデルの下位層で動作します。 それでは、グローバルを使ったトランザクションとはいかなるもので、どのような特性が見られるのでしょうか。

リレーショナルデータベースの理論では、ACID テスト (Wikipedia で ACID を参照する) に合格するトランザクションこそが、適切に実装されたトランザクションとされています。

0
0 960
質問 Mitsuru Amano · 3月 13, 2021

こんにちは、皆さん

私は、%CSP.WebSocketの非同期動作(SharedConnection=1)で、ソケットのクローズを検知する手段が見つからなくて困っています。

WebアプリケーションとIRIS間でソケットの接続、データの送受信は出来ましたが、Webアプリケーション側でソケットクローズしたとき、IRIS側でそれを検知する方法が分かりませんでした。

どなたか、IRIS(サーバ側)でソケットのクローズを検知する方法をご存じでしたら教えて下さい。

3
0 203
お知らせ Toshihiko Minamoto · 3月 13, 2021

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

最近、インターシステムズ開発者コミュニティにより貢献したいという要望が多く寄せられます。

やり方は簡単です。

1. 質問に答える

開発者コミュニティには多くの 回答のない質問や ベストアンサーのない質問 があります。ぜひ、あなたの知識をシェアして他のメンバーを助けてあげてください。

2. 記事の投稿に貢献する

インターシステムズの技術を使ったあなたの経験をぜひ記事に書いてください。ソリューションや開発時のノウハウ、デバッグ時のTipsやトリック、システム構築、その他、健全な開発をするためのその他のアプローチなど、何でも構いません。

こちらには、コミュニティにとって有益となる記事の例がたくさんあり、各国の言語に翻訳されています。

3. Open Exchangeのアプリケーションに貢献する

あなたのライブラリやソリューション、ツールをGithubやGitlabのリポジトリを使って Open Exchange でシェアしてください。

0
0 201
記事 Megumi Kakechi · 3月 10, 2021 3m read

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

REST アプリケーションはステートレスであることが想定されています。

しかし、複数の REST 呼び出し間でデータを保持したい場合などの理由で、Webセッションを使用したい場合は、UseSession パラメータを使用することができます。

以下のように、Web アプリケーションのディスパッチクラスとして定義された %CSP.REST のサブクラスでUseSession パラメータを指定することで、CSPと同じようにWebセッションを使用することが可能となります。

Class REST.MyServices Extends %CSP.REST
{
 Parameter UseSession As Integer = 1;


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

REST での Web セッションの使用


以下は、UseSession パラメータを使用した簡単なサンプルになります。最初に、2つのクラスを作成してください。


*  REST.SessionTest.cls

0
0 1121
記事 Toshihiko Minamoto · 3月 10, 2021 9m read

デベロッパーの皆さん、こんにちは!

最近、当社は InterSystems Package Manager (ZPM) をリリースしました。 ZPM を開発した理由の 1 つは、ソリューションをパッケージ化して ZPM レジストリに提出することにより、そのデプロイを「install xxx package」のようなコマンドを実行するだけの単純な作業にするためです。

これを行うには、InterSystems IRIS パッケージの中身を説明する module.xml ファイルをリポジトリに導入する必要があります。

この記事では、module.xml ファイルの異なる構成要素を説明し、独自のファイルを作成する方法をご紹介します。

まずは、samples-objectscript パッケージから始めます。以下のコマンドを実行すれば、IRIS に ObjectScript のサンプルアプリケーションがインストールされます。

zpm: USER>install samples-objectscript

おそらく、これほどシンプルなパッケージはないと思います。以下は、パッケージの中身を説明する module.xml です。


<Export generator="Cache" version="25">
  <Document name="samples-objectscript.ZPM">
    <Module>
      <Name>samples-objectscript</Name>
      <Version>1.0.0</Version>
      <Packaging>module</Packaging>
      <SourcesRoot>src</SourcesRoot>
      <Resource Name="ObjectScript.PKG"/>
    </Module>
  </Document>
</Export>
0
0 249
記事 Mihoko Iijima · 3月 9, 2021 1m read

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

ダイナミックオブジェクトから JSON 文字列を生成するときに使用する %ToJSON() の引数にストリームオブジェクトを指定することでエラーを回避できます。

コード例は以下の通りです。

USER>set temp=##class(%Stream.TmpCharacter).%New()

USER>set jsonobj={}

USER>set jsonobj.pro1=["a","b","c","d"]

USER>set jsonobj.pro2=["あ","い","う","え"]

USER>do jsonobj.%ToJSON(temp)

USER>write temp.Size
51
USER>write temp.Read()
{"pro1":["a","b","c","d"],"pro2":["あ","い","う","え"]}

 

詳細はドキュメントもご参照下さい。

【IRIS】大きいダイナミック・エンティティからストリームへのシリアル化

大きいダイナミック・エンティティからストリームへのシリアル化

3
0 511
お知らせ Mihoko Iijima · 3月 8, 2021

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

第10回 InterSystems グランプリ・プログラミングコンテスト への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。

今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!

🏆 Experts Nomination  - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。 

🥇 1位 - $6,000 は  vscode-intersystems-iris を開発された @Dmitriy Maslennikov さんに贈られました! 

🥈 2位 - $3,000 は iris-rad-studio を開発された @Henrique Dias Dias さんに贈られました!

🥉 3位 - $2,000 は HealthInfoQueryLayer を開発された @Botai Zhang さんに贈られました!

🏆 Community Nomination - 最も多くの票を獲得したアプリケーションに贈られます。

🥇 1位 - $3,000 は HealthInfoQueryLayer を開発された @Botai Zhang さんに贈られました!

1
0 91
記事 Mihoko Iijima · 3月 9, 2021 1m read

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

INFORMATION_SCHEMA スキーマを使用して取得できます。

INFORMATION_SCHEMA はシステム用スキーマのため、デフォルトでは管理ポータルの SQL メニューに表示されません。

表示させる方法は以下の通りです。

  1. 管理ポータル→システムエクスプローラ→SQL メニューを開きます。
  2. スキーマのプルダウン左にある「システム」をチェックします。
  3. スキーマのプルダウンから INFORMATION_SCHEMA を選択します。

指定のテーブル(Test.Person)に対するID、フィールド名(COLUMN_NAME)、データタイプ(DATA_TYPE)、説明(DESCRIPTION)を取得するSQLは以下の通りです。

SELECT ID,COLUMN_NAME,DATA_TYPE,DESCRIPTION
FROM INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA='Test' AND TABLE_NAME='Person'

 

関連するFAQトピックもご参照ください:「プログラムから、クラス定義に記述されたプロパティ定義を取得する方法はありますか?」

0
0 298
記事 Mihoko Iijima · 3月 9, 2021 3m read

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

SYS.ApplicationError クラスの ErrorList クエリを使用します。

注意1:%SYS ネームスペースで実行します。

注意2:ストアド化していないユーティリティのため %SQL.Statement ではなく %ResultSet クラスを利用します。

コマンド実行例は以下の通りです。

0
0 150
質問 Seiji Hirose · 2月 23, 2021

弊社では、Cacheの時からExcel(VBA)を使用して、Cache側のクラス定義を抽出して画面に表示する、という開発サポートツールを作成して使用していました。

今回、IRISベースでの開発に移行するにあたって、このExcel(VBA)の動作確認をしました。

実施したことは、VBAのエディタ画面にあるメニューから「ツール」→「参照設定」へと進み、表示される選択リストの「CacheActiveX3.0[IRIS] Type Library」を選択しなおすことで、VBAのコードを変更することなく動作する事が確認できました。

このようなExcel(VBA)への対応はカットされたのではないかと不安がありましたが、流石ですね、ちゃんとカバーされていました。

なお、Type Libraryの名称が「CacheActiveX」で始まっていたのはご愛嬌でしょうか?Cache経験者であれば、問題ないと思いましたが、IRISから使い始めた方にとっては、少々困惑されるかも、と感じました。

Excel(VBA)でIRISに接続する事例がどの程度存在するのかは不明ですが、Excel(VBA)でIRISに接続できると便利だと感じています。今時ですから、ODBC  を使った方が分かりやすいかも知れませんね。

8
0 814
記事 Mihoko Iijima · 3月 5, 2021 1m read

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

永続クラス(=テーブル)定義に提供される %BuildIndices() メソッドの引数に、インデックスを再構築したい ID の開始値と終了値を指定することにより、その範囲内のインデックスのみが再構築できます。
 

例えば、Sample.Person クラスにある NameIDX インデックスと ZipCode インデックスを ID=10~20 のみ再構築する場合は、以下のように実行します(ID の範囲は、第5引数、第6引数に指定してます)。

 set status = ##class(Sample.Person).%BuildIndices($LB("NameIDX","ZipCode"),1,,1,10,20) 

 

$LB() は $ListBuild() 関数で、%BuildIndices() メソッドでは、インデックス名を指定するために使用しています。

インデックスの再構築方法については、ドキュメントもご参照ください。

2018.1 以下はこちらのドキュメントをご参照ください。

0
0 454
記事 Mihoko Iijima · 3月 5, 2021 2m read

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

※ ここで説明するバックアップ方法は、外部バックアップ(##class(Backup.General).ExternalFreeze()を使用する方法)ではご利用いただけません。

その1(差分)

毎週日曜日1時にフルバックアップ、月曜日~土曜日の1時に差分バックアップを取得しているとします。

差分バックアップは、前日の1時に取得したバックアップからの更新ブロックが含まれるバックアップです。

その2(累積)

毎週日曜日1時にフルバックアップ、月~火曜日の1時に差分バックアップ、水曜日1時に累積バックアップ、木~土曜日の1時に差分バックアップを取得するとします。

累積バックアップは、前回のフルバックアップからの更新ブロックが含まれるバックアップで、水曜日に累積バックアップを取得した場合、月曜日と火曜日の差分バックアップは水曜日に累積バックアップに含まれるため、累積バックアップ成功後、月曜日と火曜日に差分バックアップは破棄できます。

オンラインバックアップ詳細については「データベースのバックアップ方法について」や、下記ドキュメントをご参照ください。

オンライン・バックアップ【IRIS】

Cachéオンライン・バックアップ
 

0
0 811
質問 Kota Torikai · 3月 5, 2021

<Ubuntu-Docker>

https://qiita.com/tkyonezu/items/0f6da57eb2d823d2611d 手順を参照

手順2.1-2.5までを実行→Docker環境ができる

<Docker-IRIS>

1. 端末などでディレクトリ /home/usr/docker/iris2020.3 を作成(ディレクトリ名は任意)

2. 上記ディレクトリに、インターシステムズから送られるDLサイトからダウンロードしたirishealth_ml-2020.3.0.304.0-docker.tar.gz を置く

2.1 上記ディレクトリに、データベース・設定を保存するディレクトリを作成(/home/usr/docker/iris2020.3/mgrとする)

3. 上記ディレクトリに、ライセンスされたキーであるiris.keyを置き、端末コマンドcdで上記ディレクトリに移動

4. コマンド実行(tar.gzのままimageのload)

sudo docker load -i /home/usr/docker/iris2020.3/irishealth_ml-2020.3.0.304.0-docker.tar.gz

5. コマンドdocker imagesでREPOSITORY:TAG名称を確認

sudo docker images

2
0 488
記事 Toshihiko Minamoto · 3月 4, 2021 10m read

マッピングの例

三連載で 4 記事目を書いてしまったら、これまでのハイライトとして 5 記事目を書かないわけにはいかないでしょう!

注意:  何年か前に Dan Shusman 氏が私に「グローパルのマッピングは芸術だ」と言いました。  そのやり方に正解も不正解もありません。  どのようなマッピングを行うかは、データをどう解釈するかで決まります。  例のごとく、最終的な結論を出す方法は 1 つに限られません。  ここでご紹介する例の中には、同じ型のデータを異なる方法でマッピングする例がいくつかあります。

この記事の最後には、私が長年お客様のために書いてきたマッピングの例をまとめた zip ファイルをご用意しています。  過去 4 つの記事で触れた内容をまとめたハイライトとして、いくつか例を挙げていきたいと思います。  この記事は単なるハイライトですので、過去 4 記事ほどの詳細はカバーいたしません。  不明な点があれば、遠慮なくご連絡ください。もっと詳しく説明させていただきます。

Row ID Spec: クラス例:  Mapping.RowIdSpec.xml

0
0 200
記事 Hiroshi Sato · 3月 3, 2021 5m read

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

InterSystems製品を停止しないバックアップ方法は、3種類あります。


① 外部バックアップ
② オンライバックアップ
③ レガシー並行外部バックアップ

各詳細については、以下ドキュメントをご参照ください。


バックアップ方法について【IRIS】
バックアップ方法について
それぞれの特徴について、簡単に解説します。

0
0 988
記事 Hiroshi Sato · 3月 3, 2021 3m read

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

通常SQLCODE -110(Locking conflict in filing)のエラーはロックが競合した場合に発生します。

大量レコードが一度に更新された場合、その件数がロック閾値を超えてロックエスカレーションを起こしてテーブルロックとなる可能性があり、そのためにロックの競合が起きやすくなっていることが考えられます。

このロック閾値を上げることにより、この競合を回避できる可能性もあります。

しかしこの閾値を上げることにより、システムが必要とするロック管理用のメモリが増えるという副作用がありますので、慎重な検討が必要です。

あるいはテーブルロックになる可能性を排除できずに、更新タイミング等アプリケーションの仕様を見直す必要があるかもしれません。

またSQLCODE -110はロックテーブルの空き容量が不足した場合にも発生する可能性があります。

コンソールログファイル(※)をご確認いただき、「LOCK TABLE FULL!!!」のエラーが記録されているようであれば、ロックテーブルの容量不足が原因です。

※ InterSystems IRIS のコンソールログファイル名は messages.log、Caché/Ensemble/HealthShare コンソールログファイル名は cconsole.log

この場合は、

0
0 1409
記事 Hiroshi Sato · 3月 3, 2021 2m read

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

InterSystems Data Platform自身には、ソース管理を行う機能はありません。

2016.2以降のバージョンをご使用の場合、統合開発環境として VSCode をご利用いただくことで、VSCode でご利用いただけるソース管理機能をご使用いただけます。

VSCode で ObjectScriptの操作を行うためには、専用エクステンションのインストールが必要です。 

使用方法については、コミュニティの記事「VSCode を使ってみよう!」をご参照ください。

また、「VSCodeでのソースコード管理について」についても併せてご参照ください。

2016.2より前のバージョンをご使用の方でも使用できる方法としては、InterSystems製品 のIDEであるスタジオに、外部のソース管理ツール、製品と連携するためのフック機能があります。

このフック機能は、複数のAPIで構成されており、お客様毎にご自身の環境に合わせて、作りこむことを前提に提供されております。

よく使われるマイクロソフトのVisual Source SafeとSubversion(SVN)については、テンプレートがあります。

このテンプレートを利用すると、作りこみの作業を短縮することが可能です。

0
0 468
ディスカッション Seiji Hirose · 2月 22, 2021

今思えば、製品名に「M」が付いている時代は説明が楽でした。私が記憶している製品は、DTM(Data Tree Mumps:MS-DOS上で巨大なシステムを構築できていましたね)、DSM(Dec Standard Mumps)、MSM(マイクロネティック Standard Mumps あってますか?)、ISM(Intersystems Standard Mumps)、U-MUMPS(?)その他もあったかも知れませんが、M(Mumps)の実装環境です、という説明で何とかなっていました。すると、「へぇ~、MUMPSってまだあったんだね」という答えを頂くこともありました。これらの製品が統合されて「OpenM」となりましたが、まだ「M」の文字が入っており、MUMPSもSQL対応できるようになりました、などと説明していました。

ところが、製品名がCacheになり、趣が大きく変わり、製品の説明が難しくなりました。「データベースです。」→「RDBなの?」→「RDBとしても動作しますがKey-Value的で多次元データ管理もできます」→「OLAP用なの?」→「OLAP処理もできますが、基本はトランザクション処理用です」→「で、結局、何なの」という禅問答のような状況にはまって行きました。

7
0 500
記事 Megumi Kakechi · 3月 2, 2021 2m read

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


管理ポータル:システムオペレーション > データベース にあるオプションボタンラジオボタン)「空き容量ビュー」で表示される内容は、システムクラス SYS.Database のFreeSpace クエリで取得可能です。

    

次のようなコードでクエリを実行します。

例:
(%SYSネームスペースにて作成、実行します)

 /// ZISJ.mac
 Set stmt=##class(%SQL.Statement).%New()
 Set status=stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
 Set rs=stmt.%Execute()
 While rs.%Next() {
   Write !
   For i=1:1:9 {
     Write rs.%GetData(i),","
   }
 } 


もしくは、以下のようにも行えます。

0
0 373
記事 Toshihiko Minamoto · 3月 1, 2021 11m read

グローバルをクラスにマッピングする技術 (4/3)

三連載のはずが 4 記事目に突入してしまいました。『銀河ヒッチハイク・ガイド』のファンという方はいませんか?

古くなった MUMPS アプリケーションに新たな生命を吹き込みたいとお考えですか? 以下にご紹介するステップを実行すれば、グローバルをクラスにマッピングし、美しいデータを Object や SQL に公開できます。

上の内容に馴染みが無い方は、以下の記事を初めからお読みください。

グローバルをクラスにマッピングする技術 (1/3)

グローバルをクラスにマッピングする技術 (2/3)

グローバルをクラスにマッピングする技術 (3/3)

この記事は Joel、あなたのために書きます!  前回の例で定義した親子関係を土台に、今度は孫クラスを作成し、^ParentChild グローバルに追加された季節情報を処理したいと思います。

前回と同じ免責事項:  これらの記事を読んでもグローバルがよく理解できないという方は、WRC (Support@InterSystems.com) までメールでお問い合わせください。喜んでサポートさせていただきます。

グローバルをクラスにマッピングするステップ。

0
0 212