ewd 3トレーニングコース#17 globalストレジ・データベース入門

35
EWD 3 トトトトトト トトト #17 トトトトト トトトトトト トトトトトトトト ・・ M/Gateway Developments Ltd. Rob Tweed ト : トトトトトトトトトトトトト ト トト GT.M トトト : トト ト ※ トトトトトトトト Cache’ トトトトトトト

Upload: kiyoshi-sawada

Post on 15-Apr-2017

19 views

Category:

Software


0 download

TRANSCRIPT

Page 1: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

EWD 3トレーニング・コース  #17

グローバル・ストレージ・データ

ベース入門M/Gateway Developments Ltd.

Rob Tweed訳 : 日本ダイナシステム株式会社 嶋 芳成

GT.M 版編集 : 澤田 潔

※ 本稿オリジナルは Cache’ 向けとして編纂

Page 2: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 2

EWD 3 グローバル・ストレージ・モジュール• ewd-qoper8-cache• cache.node インターフェース・ファイルをラップす

• ewd-qoper8-gtm• NodeM モジュールをラップする

• ewd-qoper8 ワーカーが呼び出すように設計• 2つとも this (ewd-qoper8 ワーカー・オブジェ

クト ) を拡張• this.db

• ewd-xpress をインストールすると自動的にインストールされ構成されます

EWD 3 トレーニング・コース #17

Page 3: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 3

アクセスの 3 つの方式

• Caché と GT.M の関数• グローバル• Caché オブジェクト/クラス

EWD 3 トレーニング・コース #17

Page 4: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 4

関数を呼び出す

• Caché や GT.M アプリケーションを、 EWD 3 で最新式にすることができます• 従来のコードを、 JavaScript 経由で実行できま

す• Caché / GT.M の組み込み言語を用いてグローバ

ル・ストレージを間接的にアクセスできます• JavaScript 開発者が、新しい EWD 3 / ewd-

xpress アプリケーションを構築することを意図あるいは必要としているのではありません

EWD 3 トレーニング・コース #17

Page 5: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 5

関数を呼び出すvar result = this.db.function({ function: 'myFunc^theRoutine', argument: [arg1, arg2]});

EWD 3 トレーニング・コース #17

Page 6: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 6

関数を呼び出すvar result = this.db.function({ function: 'myFunc^theRoutine', argument: [arg1, arg2]});

これは以下のコードと等価

set result=$$myFunc^theRoutine(arg1,arg2)

引数 (arg1 や arg2) は、スカラー変数で、値を参照渡しでは渡せません

result は文字列 ( しかし、文字列化 (stringified) された JSON かもしれません )

EWD 3 トレーニング・コース #17

Page 7: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 7

グローバル・ストレージ・データベースにアクセスする

• 関数についてのさらに詳しい情報は、このコースの後のパートで解説します• ここでは主に、グローバル・ストレージ・

データベースへの直接アクセスについて扱います

EWD 3 トレーニング・コース #17

Page 8: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 8

グローバル・ストレージ : 基礎

EWD 3 トレーニング・コース #17

Page 9: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 9

グローバル・ストレージ・データベース• 主に2つの実装• InterSystems 社製 Caché

• http://www.intersystems.com/our-products/cache/cache-overview/

• FIS 社製 GT.M• https:/www.fisglobal.com/Solutions/Services/Database-Engine• Linux 向け無料のオープン・ソース版

• マルチ・モデルの NoSQL データベース

EWD 3 トレーニング・コース #17

Page 10: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 10

グローバル・ストレージ・データベース• 階層構造

EWD 3 トレーニング・コース #17

Page 11: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 11

グローバル・ストレージ・データベース• 階層構造• スキーマなし

EWD 3 トレーニング・コース #17

Page 12: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 12

グローバル・ストレージ・データベース• 階層構造• スキーマなし• 散在 (sparse: スパース、まばら )

EWD 3 トレーニング・コース #17

Page 13: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 13

グローバル・ストレージ・データベース• 階層構造• スキーマなし• 散在 (sparse: スパース、まばら )• 動的

EWD 3 トレーニング・コース #17

Page 14: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 14

グローバル名

EWD 3 トレーニング・コース #17

Page 15: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 15

グローバル名

   Employee

EWD 3 トレーニング・コース #17

Page 16: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 16

グローバル名添字 ( なし , 1 またはそれ以上 )

   Employee

EWD 3 トレーニング・コース #17

Page 17: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 17

グローバル名添字 ( なし , 1 またはそれ以上 ) – 数値/文字列

   Employee(123456, " 名前 ")

EWD 3 トレーニング・コース #17

Page 18: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 18

グローバル名添字 ( なし , 1 またはそれ以上 )値   Employee(123456, " 名前 ")

EWD 3 トレーニング・コース #17

Page 19: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 19

グローバル名添字 ( なし , 1 またはそれ以上 )値 – 数値/文字列   Employee(123456, " 名前 ") = "Rob Tweed"

EWD 3 トレーニング・コース #17

Page 20: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 20

グローバル名添字 ( なし , 1 またはそれ以上 )値 – 数値/文字列   Employee(123456, " 名前 ") = "Rob Tweed"

EWD 3 トレーニング・コース #17

グローバル節

Page 21: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 21

グローバル名添字 ( なし , 1 またはそれ以上 )値 – 数値/文字列   Employee(123456, " 名前 ") = "Rob Tweed"

EWD 3 トレーニング・コース #17

グローバル節

= 格納・保存する単位

Page 22: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 22

グローバル名添字 ( なし , 1 またはそれ以上 )値 – 数値/文字列   Employee(123456, " 名前 ") = "Rob Tweed"

EWD 3 トレーニング・コース #17

グローバル節

= 格納・保存する単位

各グローバルは、1つ以上の グローバル節 を持つ

Page 23: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 23

グローバル名添字 ( なし , 1 またはそれ以上 )値 – 数値/文字列   Employee(123456, " 名前 ") = "Rob Tweed"

EWD 3 トレーニング・コース #17

グローバル節

= 格納・保存する単位

各グローバルは、1つ以上の グローバル節 を持つことができる1 つの MUMPS データベースは、1つ以上の グローバル を持つことができる

Page 24: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 24

グローバル名添字 ( なし , 1 またはそれ以上 )値動的 – 予め宣言したりスキーマを用意する必要なし

EWD 3 トレーニング・コース #17

Page 25: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 25

グローバル名添字 ( なし , 1 またはそれ以上 )値動的 – 予め宣言したりスキーマを用意する必要なし 生成 : Employee(123456," 名前 ") = "Rob Tweed"

EWD 3 トレーニング・コース #17

Page 26: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 26

グローバル名添字 ( なし , 1 またはそれ以上 )値動的 – 予め宣言したりスキーマを用意する必要なし 生成 : Employee(123456," 名前 ") = "Rob Tweed"

削除 : Employee(123456," 名前 ")

EWD 3 トレーニング・コース #17

Page 27: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 27

階層構造

EWD 3 トレーニング・コース #17

Page 28: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 28

階層構造

myGlobal("a")=123

EWD 3 トレーニング・コース #17

Page 29: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 29

階層構造myGlobal("a")=123

EWD 3 トレーニング・コース #17

myGlobal "a" 123

Page 30: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 30

階層構造myGlobal("a")=123myGlobal("b","c1")="foo"

EWD 3 トレーニング・コース #17

myGlobal "a" 123

Page 31: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 31

階層構造myGlobal("a")=123myGlobal("b","c1")="foo"

EWD 3 トレーニング・コース #17

myGlobal

"a" 123"b" "c1" "foo"

Page 32: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 32

階層構造myGlobal("a")=123myGlobal("b","c1")="foo"myGlobal("b","c2")="foo2"

EWD 3 トレーニング・コース #17

myGlobal

"a" 123"b"

"c1" "foo"

"c2" "foo2"

Page 33: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 33

階層構造myGlobal("a")=123myGlobal("b","c1")="foo"myGlobal("b","c2")="foo2"myGlobal("d","e1","f1")="bar1"myGlobal("d","e1","f2")="bar2"myGlobal("d","e2","f1")="bar1"myGlobal("d","e2","f2")="bar2"myGlobal("d","e2","f3")="bar3"

EWD 3 トレーニング・コース #17

myGlobal"a" 123

"b"

"c1" "foo"

"c2" "foo2"

"d"

"e1"

"e2"

"f1" "bar1"

"f2" "bar2"

"f1" "bar1"

"f2" "bar2"

"f3" "bar3"

Page 34: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 34

階層構造

削除

myGlobal("b","c1")

EWD 3 トレーニング・コース #17

myGlobal"a" 123

"b"

"c1" "foo"

"c2" "foo2"

"d"

"e1"

"e2"

"f1" "bar1"

"f2" "bar2"

"f1" "bar1"

"f2" "bar2"

"f3" "bar3"

Page 35: EWD 3トレーニングコース#17 Globalストレジ・データベース入門

05/02/2023 35

階層構造

削除

myGlobal("b")

枝分かれ構造の下のノードもすべてを含む部分が削除されるので注意 !!

EWD 3 トレーニング・コース #17

myGlobal"a" 123

"b"

"c1" "foo"

"c2" "foo2"

"d"

"e1"

"e2"

"f1" "bar1"

"f2" "bar2"

"f1" "bar1"

"f2" "bar2"

"f3" "bar3"