#グローバル

0 フォロワー · 35 投稿

グローバルは、InterSystemsデータプラットフォームに格納されている多次元スパース配列です。 InterSystems製品のすべては、クラス、テーブル、ドキュメント、コードなどのグローバルに格納されます。 ドキュメント

記事 Minoru Horita · 8月 27, 2020 7m read

NoSQLデータベースという言葉を聞かれたことがあると思います。色々な定義がありますが、簡単に言えば、文字通りSQLを使わない、つまりリレーショナルデータベース(RDB)以外のデータベースのことを指すのが一般的です。

InterSystems IRIS Data Platformでは、テーブルを定義してSQLでデータにアクセスできます。ですから、InterSystems IRIS Data Platformは厳密にNoSQLデータベースというわけではありません。しかし、InterSystems IRISの高パフォーマンスを支える「グローバル」は、40年も前からInterSystemsのコア技術として、現代で言うNoSQLデータベースを提供してきました。本稿では、InterSystems IRISの「グローバル」でグラフ構造を作り、それをPythonでアクセスする方法を紹介します。

本稿で説明する内容は動画でも公開しています。ぜひご覧ください。

NoSQL

NoSQLに分類されるデータベースには様々なデータモデルを扱うものがあります。以下に代表的なものを挙げます。

0
0 869
記事 Mihoko Iijima · 6月 28, 2020 2m read

Python から InterSystems IRIS へ接続する方法の1つである「Native API」(※)の使用方法ご説明します。

※ Python からのアクセスは、Native API の他に、PyODBC を利用した接続方法もあります。PyODBC の利用については別の記事でご説明します。

もくじ

最初~1:47 前回のビデオの学習(セルフラーニングビデオの索引記事もご参照ください)

1:47~3:18 今回の説明内容解説

3:18~5:14  Python Native APIを利用するための準備

5:14~10:48 IRISに接続する~^employee(1)の作成と参照

10:48~12:49 グローバル変数のサブスクリプトのループ方法(Iteratorの使い方)

12:49~14:19 グローバル変数の削除とコネクションのクローズ

14:19~20:21 国税庁が公開している都道府県別酒類消費量をグローバル変数に登録する (東京のアルコール消費量の登録)

20:21~21:43 大阪のアルコール消費量の追加登録

21:43~24:22 ^Alcoholから東京だけのデータ取得

24:22~27:22 ^Alcohol全件取得

27:22~28:27 特定のサブスクリプトの情報を削除する

28:27~30:53 おまけ(Pythonの便利なパッケージをインポートし、CSVデータのグラフ化)

0
0 560
記事 Minoru Horita · 6月 3, 2020 10m read

前のパート(12)では、ツリーとしてのグローバルを話題に取り上げました。 この記事では、それらを疎な配列と見なします。 

疎な配列は、ほとんどの値が同一であると想定される配列の種類です。 

疎な配列は実際には非常に大きいため、同一の要素でメモリを占有することには意味がありません。 したがって、疎な配列を整理し、重複した値の格納にメモリが浪費されないようにすることには意味があります。 

疎な配列は、JMATLABなど一部のプログラミング言語では言語の一部になっています。 他の言語では、疎な配列を使用できるようにする特別なライブラリが存在します。 C++の場合は、Eigenなどがあります。 

次の理由により、グローバルは疎な配列を実装するのに適した候補であると言えます。 

  1. 特定のノード値のみを保存し、未定義のノード値を保存しないこと。 
  1. ノード値のアクセスインターフェースが、多くのプログラミング言語が多次元配列の要素にアクセスするために提供しているものとよく似ていること。 
Set ^a(1, 2, 3)=5 
Write ^a(1, 2, 3) 
  1. グローバルはデータを格納するためにかなり低レベルの構造を採用しているため、優れたパフォーマンス特性を備えていること(ハードウェアによっては毎秒数十万から数千万のトランザクションを処理可能、1をご覧ください)。 
0
0 785
記事 Minoru Horita · 6月 2, 2020 14m read

最初の記事については、パート1を参照してください。 

3. グローバルを使用する場合のさまざまな構造 

順序付きツリーなどの構造には、さまざまな特殊ケースがあります。 グローバルを使用する上で実用的な価値があるものを見てみましょう。 

3.1 特殊ケース1  - 枝のない1つのノード 

グローバルは配列のようにも、通常の変数のようにも使用できます。 例えば、カウンターを作成する場合を考えてみましょう。 

Set ^counter = 0  ; カウンターの設定 

Set id=$Increment(^counter) ;  アトミックなインクリメント操作 

  

また、グローバルには値に加えて枝を持たせることができます。 一方が他方を除外することはありません。 

3.2 特殊ケース2  - 1つのノードと複数の枝 

実際、これは典型的なキー・バリューベースのデータ構造です。 また、値の代わりに値のタプルを保存すると、主キーを持つ通常のテーブルが得られます。 

グローバルに基づくテーブルを実装するには、カラムの値から文字列を作成し、主キー別にそれをグローバルに保存する必要があります。 読み取りの時に文字列をカラムに分割できるようにするため、以下のいずれかを使用することができます。 

  1. 区切り文字
0
0 752
記事 Minoru Horita · 4月 30, 2020 9m read

データを格納するための魔法の剣であるグローバルは、かなり前から存在しています。しかしながら、これを効率的に使いこなせる人や、この素晴らしい道具の全貌を知る人はそう多くありません。 グローバルを本当に効果を発揮できるタスクに使用すると、パフォーマンスの向上やソリューション全体の劇的な単純化といった素晴らしい結果を得ることができます(12)。 

グローバルは、SQLテーブルとはまったく異なる特別なデータの格納・処理方法を提供します。 グローバルは1966年にM(UMPS)プログラミング言語で初めて導入され、医療データベースで使用されていました。 また、現在も同じように使用されていますが、金融取引など信頼性と高いパフォーマンスが最優先事項である他のいくつかの業界でも採用されています。 

M(UMPS)は後にCaché ObjectScript(COS)に進化しました。 COSはInterSystemsによってMの上位互換として開発されました。 元の言語は現在も開発者コミュニティに受け入れられており、いくつかの実装で生き残っています。 ウェブ上では、MUMPS GoogleグループMumpsユーザーグループISO規格といった複数の活動が見られます。 

0
0 809