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

Post on 09-Jul-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

~ Azure Cosmos DB Deep Dive ~

DA19

https://twitter.com/satonaoki

https://satonaoki.wordpress.com

http://aka.ms/weeklyazure

スピーカー

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

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

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

セッション概要

アジェンダ

Azure Cosmos DB 概要

Azure Cosmos DB

SQLMongoDB

Table API

ターンキー

グローバル分散

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

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

99 パーセンタイルでの

低レイテンシ保証

包括的な SLA

5 つの明確に定義された

整合性モデル

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

キー/値

Key Value

Key1 $3.05

Key2 9/22/1974

Key3 $4.99 Profile1.jpg

列指向

ドキュメント

グラフ

Azure Cosmos DB

SQLMongoDB

Table API

ターンキー

グローバル分散

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

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

99 パーセンタイルでの

低レイテンシ保証

包括的な SLA

5 つの明確に定義された

整合性モデル

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

Azure Cosmos DBユースケース

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

IoT

パーソナライズ

小売業と E コマース

ゲーム

サーバーレス アプリ

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/

Azure Cosmos DBリソース モデル

リソース モデル

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

アカウント URI と資格情報

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

IGeAvVUp …

アカウントの作成

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

データベース

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

DatabaseDatabaseContainer

DatabaseDatabaseItem

コンテナー

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

=Collection Graph Table

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

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem

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

Account

DatabaseDatabaseDatabase

DatabaseDatabaseContainer

DatabaseDatabaseItem ConflictSproc Trigger UDF

Atom-Record-Sequence (ARS)

Atom-Record-Sequence (ARS)

Atom-Record-Sequence (ARS)

コンテナー

Atom-Record-Sequence (ARS)

Atom-Record-Sequence (ARS)

コンテナー

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

プロジェクション

Atom-Record-Sequence (ARS)

アイテム

Projection

システム トポロジ

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

リソース階層

コンテナー

リソース パーティション

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

テナント

リーダー

フォロワー

フォロワー

フォワーダー

レプリカ セット

リモートのリソース

パーティションへ

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

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

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

要求ユニット (RU)

要求ユニット (RU)

% IOPS% CPU% メモリ

要求ユニット (RU)

GET

POST

PUT

Query

=

=

=

=

要求ユニット (RU)

最小 RU/秒

最大 RU/秒

入力リクエスト

レプリカが

休止状態

レート制限

レート制限なし

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

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

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

テナント

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

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

一連のコンテナー

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

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

スケール アウト

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

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

パーティション

Cosmos DB コンテナー

(コレクション)

パーティション キー:

ユーザー ID

論理パーティション

分割の抽象化

背後にある物理

パーティション セット

ハッシュ (ユーザー ID)

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

パーティション

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

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

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

ハッシュ (ユーザー ID)

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

Andrew

Mike

Bob

Dharma

Shireesh

Karthik

Rimma

Alice

Carol

パーティション

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

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

ハッシュ (ユーザー ID)

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

Andrew

Mike

Bob

Dharma

Shireesh

Karthik

Rimma

Alice

Carol

パーティション

+

パーティ

ション x

パーティ

ション x1

パーティ

ション x2

ハッシュ (ユーザー ID)

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

Rimma

Karthik

Dharma

Shireesh

Karthik

Rimma

Alice

Carol

Dharma

Shireesh

パーティション

パーティション

New Bulk Executor Library

レプリケーション

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

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

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"

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

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

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

自動フェールオーバー

自動フェールオーバー

手動フェールオーバー

Strong Bounded-staleness Session Consistent prefix Eventual

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

Azure Cosmos DBの整合性レベル

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

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

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

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

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

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

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

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

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

転置インデックス

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

インデックス ポリシー{

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

}]

}

Build 2018 での新機能

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

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

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

テナント

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

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

一連のコンテナー

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

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

Bulk Executor Library

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

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

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

まとめ

© 2018 Microsoft Corporation. All rights reserved.

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

top related