microsoft - 次世代データベース サービス「azure …...table api ターンキー...

82
次世代データベース サービス Azure Cosmos DB 」を使いこなそう Azure Cosmos DB Deep Dive DA19

Upload: others

Post on 09-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

次世代データベースサービス

「Azure Cosmos DB」を使いこなそう

~ Azure Cosmos DB Deep Dive ~

DA19

Page 2: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

https://twitter.com/satonaoki

https://satonaoki.wordpress.com

http://aka.ms/weeklyazure

スピーカー

Page 3: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

http://www.shuwasystem.co.jp/products/7980html/4573.html

https://www.oreilly.co.jp/books/9784873117140/

Page 4: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

https://www.microsoft.com/ja-jp/events/decode/2018/sessions.aspx#DA19

セッション概要

Page 5: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

アジェンダ

Page 6: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Azure Cosmos DB 概要

Page 7: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Azure Cosmos DB

SQLMongoDB

Table API

ターンキー

グローバル分散

ストレージ、スループットの

エラスティック スケール アウト

99 パーセンタイルでの

低レイテンシ保証

包括的な SLA

5 つの明確に定義された

整合性モデル

ドキュメント列ファミリキー/値 グラフ

Page 8: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

キー/値

Key Value

Key1 $3.05

Key2 9/22/1974

Key3 $4.99 Profile1.jpg

Page 9: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

列指向

Page 10: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

ドキュメント

Page 11: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

グラフ

Page 12: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Azure Cosmos DB

SQLMongoDB

Table API

ターンキー

グローバル分散

ストレージ、スループットの

エラスティック スケール アウト

99 パーセンタイルでの

低レイテンシ保証

包括的な SLA

5 つの明確に定義された

整合性モデル

ドキュメント列ファミリキー/値 グラフ

Page 13: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Azure Cosmos DBユースケース

Page 14: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

ミッション クリティカルなアプリケーションを世界中に分散

Page 15: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

IoT

Page 16: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

パーソナライズ

Page 17: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

小売業と E コマース

Page 18: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

ゲーム

Page 19: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

サーバーレス アプリ

Page 20: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Jet.com在庫処理システム「Panther」

Event streams (CosmosDB)

Raw sellable inventory

(Kafka)

Commands (Kafka)

Process command

Events (Kafka)

Change Feed

Snapshot event stream

Map raw sellable inventory

Process command (reservations only)

Commands (HTTP)

Customer front-end checkout

Event stream snapshots

(CosmosDB)

Inventory & order updates (Kafka)

Marts (Walmart.com,

Jet.com)

Filter available inventory per mart

External to Panther system

Communication channel

Panther μs

Data store

Map msg to command

https://satonaoki.wordpress.com/2018/05/18/azure-cosmos-db-customer-profile-jet-com/

Page 21: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Azure Cosmos DBリソース モデル

Page 22: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

リソース モデル

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

Page 23: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

アカウント URI と資格情報

********.azure.com

IGeAvVUp …

Page 24: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

アカウントの作成

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

Page 25: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

データベース

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

DatabaseDatabaseContainer

DatabaseDatabaseItem

Page 26: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

コンテナー

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

=Collection Graph Table

Page 27: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

コレクションの作成 - SQL API

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

Page 28: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

コンテナー レベルのリソース

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem ConflictSproc Trigger UDF

Page 29: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Atom-Record-Sequence (ARS)

Atom-Record-Sequence (ARS)

Page 30: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Atom-Record-Sequence (ARS)

コンテナー

Atom-Record-Sequence (ARS)

Page 31: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Atom-Record-Sequence (ARS)

コンテナー

コレクション テーブル グラフ

プロジェクション

Page 32: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Atom-Record-Sequence (ARS)

アイテム

Projection

Page 33: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

システム トポロジ

Resource Manager

LanguageRuntime(s)

Hosts

Query Processor

RSM

Index Manager

Bw-tree++/LLAMA++

Log Manager

IO Manager

Resource Governor

Transport

Database engine

Admission control

……

地球 Azureリージョン データセンター スタンプ 障害ドメイン

クラスター マシン レプリカ データベース エンジン

Container

Various agents

Page 34: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

リソース階層

コンテナー

リソース パーティション

コレクションテーブル グラフ

テナント

リーダー

フォロワー

フォロワー

フォワーダー

レプリカ セット

リモートのリソース

パーティションへ

Page 35: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Azure Cosmos DB Graph APIによるフライト データの処理

Page 36: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト
Page 37: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

C#からの Gremlin クエリの実行

g.V('{from}').union(outE().inV().hasId('{to}'), outE().inV().outE().inV().hasId('{to}')).path()

Page 38: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト
Page 39: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

要求ユニット (RU)

Page 40: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

要求ユニット (RU)

% IOPS% CPU% メモリ

Page 41: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

要求ユニット (RU)

GET

POST

PUT

Query

=

=

=

=

Page 42: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

要求ユニット (RU)

最小 RU/秒

最大 RU/秒

入力リクエスト

レプリカが

休止状態

レート制限

レート制限なし

Page 43: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

New一連のコンテナーに対するRU/秒のプロビジョニング

コンテナー レベルでスループットをプロビジョニング

データベース レベルでスループットをプロビジョニング

テナント

テーブル コンテナー グラフ

コンテナーデータベース内の

一連のコンテナー

リソース パーティション リソース パーティション

データベース レベルでのスループットのプロビジョニング

Page 44: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

スケール アウト

Page 45: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

ストレージとスループットのエラスティックなスケール アウト

Page 46: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

ストレージとスループットのエラスティックなスケール アウト

Page 47: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

パーティション

Cosmos DB コンテナー

(コレクション)

パーティション キー:

ユーザー ID

論理パーティション

分割の抽象化

背後にある物理

パーティション セット

ハッシュ (ユーザー ID)

ハッシュ値の範囲にわたる疑似ランダムなデータ分散

Page 48: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

パーティション

パーティション 1 パーティション 2 パーティション n

実際のストレージ、スループットのニーズを基にした少ないパーティション数

(低い TCO でスケーラビリティを実現)

ハッシュ (ユーザー ID)

ハッシュ値の範囲にわたる疑似ランダムなデータ分散

Andrew

Mike

Bob

Dharma

Shireesh

Karthik

Rimma

Alice

Carol

Page 49: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

パーティション

パーティション1 パーティション2 パーティションn

パーティションが増大する必要があるとき、何が起こるか?

ハッシュ (ユーザー ID)

ハッシュ値の範囲にわたる疑似ランダムなデータ分散

Andrew

Mike

Bob

Dharma

Shireesh

Karthik

Rimma

Alice

Carol

Page 50: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

パーティション

+

パーティ

ション x

パーティ

ション x1

パーティ

ション x2

ハッシュ (ユーザー ID)

ハッシュ値の範囲にわたる疑似ランダムなデータ分散

Rimma

Karthik

Dharma

Shireesh

Karthik

Rimma

Alice

Carol

Dharma

Shireesh

Page 51: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

パーティション

Page 52: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

パーティション

Page 53: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

New Bulk Executor Library

Page 54: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

レプリケーション

Page 55: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

ターンキー グローバル分散

Page 56: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

ターンキー グローバル分散

Writes/

ReadsReads

"airport" : “AMS" "airport" : “MEL"

West US

Container

"airport" : "LAX"

Local Distribution (via horizontal partitioning)

Glo

bal D

istr

ibutio

n (o

f re

sourc

e p

art

itio

ns)

Reads

30K transactions/secWrites/

ReadsReads

Reads

West Europe

30K transactions/sec

Partition-key = "airport"

Page 57: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

グローバルなデータ レプリケーション

Page 58: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

グローバルなデータ レプリケーション

Page 59: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

グローバルなデータ レプリケーション

Page 60: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

自動フェールオーバー

Page 61: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

自動フェールオーバー

Page 62: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

手動フェールオーバー

Page 63: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Strong Bounded-staleness Session Consistent prefix Eventual

5つの明確に定義された整合性モデル

Page 64: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Azure Cosmos DBの整合性レベル

Page 65: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Newグローバルスケールのマルチ マスター (プレビュー)

Page 66: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

マルチ マスターでの競合解決モデル

Page 67: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Azure Cosmos DB PxDraw https://pxdraw.azure.com/

Page 68: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

スキーマ非依存のインデックス作成

Page 69: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

スキーマなし、インデックス作成なしで、あらゆるデータを処理

Item ColorMicrowave

safe

Liquid

capacityCPU Memory Storage

Geek

mug

Graphite Yes 16ox ??? ??? ???

Coffee

Bean

mug

Tan No 12oz ??? ??? ???

Surface

book

Gray ??? ??? 3.4 GHz

Intel

Skylake

Core i7-

6600U

16GB 1 TB SSD

GEEK

Page 70: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

JSON ドキュメントのインデックス作成{

"locations": [

{

"country": "Germany",

"city": "Berlin"

},

{

"country": "France",

"city": "Paris"

}

],

"headquarter": "Belgium",

"exports": [

{ "city": "Moscow" },

{ "city": "Athens" }

]

}

locations headquarter exports

0

country city

Germany Berlin

1

country city

France Paris

0 1

city

Athens

city

Moscow

Belgium

Page 71: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

JSON ドキュメントのインデックス作成{

"locations": [

{

"country": "Germany",

"city": "Bonn",

"revenue": 200

}

],

"headquarter": "Italy",

"exports": [

{

"city": "Berlin",

"dealers": [

{ "name": "Hans" }

]

},

{ "city": "Athens" }

]

}

locations headquarter exports

0

country city

Germany Bonn

revenue

200

0 1

citycity

Berlin

Italy

dealers

0

name

Hans

Page 72: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

JSON ドキュメントのインデックス作成

Athens

locations headquarter exports

0

country city

Germany Bonn

revenue

200

0 1

citycity

Berlin

Italy

dealers

0

name

Hans

locations headquarter exports

0

country city

Germany Berlin

1

country city

France Paris

0 1

city

Athens

city

Moscow

Belgium

Page 73: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

転置インデックス

locations headquarter exports

0

country city

Germany

Berlin

revenue

200

0 1

city

Athens

city

Berlin

Italy

dealers

0

name

Hans

Bonn

1

country city

France Paris

Belgium

Moscow

Page 74: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

インデックス ポリシー{

"automatic": true,

"indexingMode": "Consistent",

"includedPaths": [{

"path": "/*",

"indexes": [{

"kind": "Hash",

"dataType": "String",

"precision": -1

}, {

"kind": "Range",

"dataType": "Number",

"precision": -1

}, {

"kind": "Spatial",

"dataType": "Point"

}]

}],

"excludedPaths": [{

"path": "/nonIndexedContent/*"

}]

}

Page 75: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Build 2018 での新機能

Page 76: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

一連のコンテナーに対するRU/秒のプロビジョニング

コンテナー レベルでスループットをプロビジョニング

データベース レベルでスループットをプロビジョニング

テナント

テーブル コンテナー グラフ

コンテナーデータベース内の

一連のコンテナー

リソース パーティション リソース パーティション

データベース レベルでのスループットのプロビジョニング

Page 77: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

Bulk Executor Library

Page 78: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

グローバル スケールのマルチ マスター (プレビュー)

Page 79: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

VNET サービス エンドポイント

Page 80: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

SQL API向けの Java 非同期ライブラリ

Page 81: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

まとめ

Page 82: Microsoft - 次世代データベース サービス「Azure …...Table API ターンキー グローバル分散 ストレージ、スループットの エラスティックスケールアウト

© 2018 Microsoft Corporation. All rights reserved.

本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。