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

35
EWD 3 トレーニング・コース #18 Global ストレージを用いて NoSQL データベースをモデル化する M/Gateway Developments Ltd. Rob Tweed 訳: 日本ダイナシステム株式会社 芳成 GT.M版編集: 澤田 潔 ※ 本稿オリジナルはCache’向けとして編纂

Upload: kiyoshi-sawada

Post on 21-Jan-2018

38 views

Category:

Software


0 download

TRANSCRIPT

Page 1: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

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

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

M/Gateway Developments Ltd.

Rob Tweed

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

GT.M版編集: 澤田 潔

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

Page 2: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

NoSQL データベース

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

• 表型 (カラム型)

• グラフ型

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

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

Page 3: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

NoSQL データベース

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

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

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

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

Page 4: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

キー/値ストア

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

telephone

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

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

Page 5: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

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

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"

Page 6: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

索引

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

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

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

Page 7: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

索引

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"

Page 8: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

索引

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" ""

Page 9: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

索引

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" ""

Page 10: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

索引

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" ""

Page 11: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 12: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 13: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 14: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 15: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 16: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 17: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 18: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 19: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 20: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 21: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 22: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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"

Page 23: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 24: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 25: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

リンクされたリスト

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

Page 26: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

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

表型/カラム型

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番目のセル"

Page 27: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

グラフ型

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

名前="Rob"

名前="George"

名前="John"

1

2

7

開示 = public年齢 = 2 年

開示 = public年齢 = 3 日

知って

いる

Page 28: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

グラフ型

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"

Page 29: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

グラフ型

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"

Page 30: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

グラフ型

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"

Page 31: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

グラフ型

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"

Page 32: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

グラフ型

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"

Page 33: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

グラフ型

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"

Page 34: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

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

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'

}}

}

Page 35: EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する

他のモデルも表現可能

• リレーショナル• 実際 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