ewd 3トレーニングコース#18...

Post on 21-Jan-2018

38 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Global ストレージを用いてNoSQL データベースをモデル化する

M/Gateway Developments Ltd.

Rob Tweed

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

GT.M版編集: 澤田 潔

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

NoSQL データベース

• 主な4種類のモデル• キー/値ストア型

• 表型 (カラム型)

• グラフ型

• ドキュメント (文書)型

2016/9/11 EWD 3 トレーニング・コース #18 2

NoSQL データベース

• ここから示すのは、これらを Global ストレージを用いてモデル化するかということです• 方法はひとつではありません

• もっと良い方法があるかもしれません

• ここでの目的は、Global ストレージ・データベースが実際いかに柔軟で可能性に満ちているかを示すことです

2016/9/11 EWD 3 トレーニング・コース #18 3

キー/値ストア

2016/9/11 EWD 3 トレーニング・コース #18 4

telephone

"221-555-9012" "James, George"

"617-555-1414" "Tweed, Rob"

より複雑なキー/値ストア

2016/9/11 EWD 3 トレーニング・コース #18 5

telephone

"221-555-9012"

"James, George"

"617-555-1414"

"Tweed, Rob"

"住所"

"氏名"

"住所"

"氏名"

"5308,12th Avenue, Brooklyn"

"112 Beacon Street, Boston"

索引

• Global ストレージ・データベースは、索引を自動的には生成しません

• 索引は、Global ストレージを用いて自分で生成します

2016/9/11 EWD 3 トレーニング・コース #18 6

索引

2016/9/11 EWD 3 トレーニング・コース #18 7

telephone

"221-555-9012"

"James, George"

"617-555-1414"

"Tweed, Rob"

"住所"

"氏名"

"住所"

"氏名"

"5308,12th Avenue, Brooklyn"

"112 Beacon Street, Boston"

nameIndex

"James, George"

索引

2016/9/11 EWD 3 トレーニング・コース #18 8

telephone

"221-555-9012"

"James, George"

"617-555-1414"

"Tweed, Rob"

"住所"

"氏名"

"住所"

"氏名"

"5308,12th Avenue, Brooklyn"

"112 Beacon Street, Boston"

nameIndex

"James, George" "211-555-9012" ""

索引

2016/9/11 EWD 3 トレーニング・コース #18 9

telephone

"221-555-9012"

"James, George"

"617-555-1414"

"Tweed, Rob"

"住所"

"氏名"

"住所"

"氏名"

"5308,12th Avenue, Brooklyn"

"112 Beacon Street, Boston"

nameIndex

"James, George" "211-555-9012" ""

"Tweed, Rob" "617-555-1414" ""

索引

2016/9/11 EWD 3 トレーニング・コース #18 10

telephone

"221-555-9012"

"James, George"

"617-555-1414"

"Tweed, Rob"

"住所"

"氏名"

"住所"

"氏名"

"5308,12th Avenue, Brooklyn"

"112 Beacon Street, Boston"

nameIndex

"James, George"

"211-555-9012" ""

"Tweed, Rob" "617-555-1414" ""

"211-863-3932" ""

"224-543-5431" ""

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 11

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 5

4

5"Rob""value"

"nextNode" 4

RobGeorgeJohn

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 12

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 5

4

5"Rob""value"

"nextNode" 4

RobGeorgeJohn

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 13

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 5

4

5"Rob""value"

"nextNode" 4

RobGeorgeJohn

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 14

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 5

4

5"Rob""value"

"nextNode" 4

RobGeorgeJohn

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 15

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 5

4

5"Rob""value"

"nextNode" 4

RobGeorgeJohn

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 16

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 5

4

5"Rob""value"

"nextNode" 4

RobGeorgeJohn

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 17

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 5

4

5"Rob""value"

"nextNode" 4

RobGeorgeJohn

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 18

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 5

4

5"Rob""value"

"nextNode" 4

RobGeorgeJohn

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 19

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 5

4

5"Rob""value"

"nextNode" 4

RobGeorgeJohn

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 20

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 5

4

5"Rob""value"

"nextNode" 4

ChrisRobGeorgeJohn

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 21

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 6

4

5

"Rob""value"

"nextNode" 4ChrisRobGeorgeJohn

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 22

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 6

4

5

"Rob""value"

"nextNode" 4ChrisRobGeorgeJohn

6"Chris""value"

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 23

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 6

4

5

"Rob""value"

"nextNode" 4ChrisRobGeorgeJohn

6"Chris""value"

"nextNode" 5

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 24

list

"firstNode"

2"lastNode"

"John""value"

5

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 6

4

5

"Rob""value"

"nextNode" 4ChrisRobGeorgeJohn

6"Chris""value"

"nextNode" 5

"previousNode" 6

リンクされたリスト

2016/9/11 EWD 3 トレーニング・コース #18 25

list

"firstNode"

2"lastNode"

"John""value"

6

"previousNode" 4

"node"

"nextNode" 2

2

"previousNode" 5

"value" "George"

"myList"

"nodeCounter" 6

4

5

"Rob""value"

"nextNode" 4ChrisRobGeorgeJohn

6"Chris""value"

"nextNode" 5

"previousNode" 6

テーブル名 行番号 列番号 セルの値

表型/カラム型

2016/9/11 EWD 3 トレーニング・コース #18 26

^table "myTable"

1 "最初のセル"

3 "3番目のセル"

5 "5番目のセル"

1

2"3番目のセル"3

2 "2番目のセル"

3"5番目のセル"5

4 "4番目のセル"

グラフ型

2016/9/11 EWD 3 トレーニング・コース #18 27

名前="Rob"

名前="George"

名前="John"

1

2

7

開示 = public年齢 = 2 年

開示 = public年齢 = 3 日

知って

いる

グラフ型

2016/9/11 EWD 3 トレーニング・コース #18 28

名前="Rob"

名前="George"

名前="John"

1

2

7

開示 = public年齢 = 2 年

開示 = public年齢 = 3 日

知って

いる

個人

1

2

7

"知っている"

"名前"

"名前"

"知っている"

"名前"

2

7

""

"開示"

"日時"

""

"開示"

"日時"

""

"Rob"

"John"

"George"

2

"公的"

"公的"

"2009-12-16T10:06:44Z"

"2008-08-16 T12:23:01Z"

グラフ型

2016/9/11 EWD 3 トレーニング・コース #18 29

名前="Rob"

名前="George"

名前="John"

1

2

7

開示 = public年齢 = 2 年

開示 = public年齢 = 3 日

知って

いる

個人

1

2

7

"知っている"

"名前"

"名前"

"知っている"

"名前"

2

7

""

"開示"

"日時"

""

"開示"

"日時"

""

"Rob"

"John"

"George"

2

"公的"

"公的"

"2009-12-16T10:06:44Z"

"2008-08-16 T12:23:01Z"

グラフ型

2016/9/11 EWD 3 トレーニング・コース #18 30

名前="Rob"

名前="George"

名前="John"

1

2

7

開示 = public年齢 = 2 年

開示 = public年齢 = 3 日

知って

いる

個人

1

2

7

"知っている"

"名前"

"名前"

"知っている"

"名前"

2

7

""

"開示"

"日時"

""

"開示"

"日時"

""

"Rob"

"John"

"George"

2

"公的"

"公的"

"2009-12-16T10:06:44Z"

"2008-08-16 T12:23:01Z"

グラフ型

2016/9/11 EWD 3 トレーニング・コース #18 31

名前="Rob"

名前="George"

名前="John"

1

2

7

開示 = public年齢 = 2 年

開示 = public年齢 = 3 日

知って

いる

個人

1

2

7

"知っている"

"名前"

"名前"

"知っている"

"名前"

2

7

""

"開示"

"日時"

""

"開示"

"日時"

""

"Rob"

"John"

"George"

2

"公的"

"公的"

"2009-12-16T10:06:44Z"

"2008-08-16 T12:23:01Z"

グラフ型

2016/9/11 EWD 3 トレーニング・コース #18 32

名前="Rob"

名前="George"

名前="John"

1

2

7

開示 = public年齢 = 2 年

開示 = public年齢 = 3 日

知って

いる

個人

1

2

7

"知っている"

"名前"

"名前"

"知っている"

"名前"

2

7

""

"開示"

"日時"

""

"開示"

"日時"

""

"Rob"

"John"

"George"

2

"公的"

"公的"

"2009-12-16T10:06:44Z"

"2008-08-16 T12:23:01Z"

グラフ型

2016/9/11 EWD 3 トレーニング・コース #18 33

名前="Rob"

名前="George"

名前="John"

1

2

7

開示 = public年齢 = 2 年

開示 = public年齢 = 3 日

知って

いる

個人

1

2

7

"知っている"

"名前"

"名前"

"知っている"

"名前"

2

7

""

"開示"

"日時"

""

"開示"

"日時"

""

"Rob"

"John"

"George"

2

"公的"

"公的"

"2009-12-16T10:06:44Z"

"2008-08-16 T12:23:01Z"

ドキュメント・データベース

2016/9/11 EWD 3 トレーニング・コース #18 34

myGlobal

"a" 123

"b""c1" "foo"

"c2" "foo2"

"d""e1"

"e2"

"f1" "bar1"

"f2" "bar2"

"f1" "bar1"

"f2" "bar2"

"f3" "bar3"

myGlobal = {a: 123,b: {

c1: 'foo',c2: 'foo2'

},d: {

e1: {f1: 'bar1',f2: 'bar2'

},e2: {

f1: 'bar1",f2: 'bar2',f3: 'bar3'

}}

}

他のモデルも表現可能

• リレーショナル• 実際 Caché は、グローバル・ストレージの上に リレーショナ

ル・ストレージを実現してサポートしています

• オブジェクト• Caché ではこれもサポートしています

• ネイティブな XML データベース• eXtc (今は廃止)

• http://www.mgateway.com/eXtcOverview4_0.pdf

• SimpleDB のエミュレーション• https://github.com/robtweed/node-mdb

2016/9/11 EWD 3 トレーニング・コース #18 35

top related