5. e
Hierarchy structure of Entity
5#jcdug
https://docs.microsoft.com/en-us/azure/cosmos-db/databases-containers-items
6. e
Databases
データベース
・Azure Cosmos DB アカウントの配下に、1 つ以
上のデータベースを作成可能
・名前空間 (namespace) のようなもの
・Azure Cosmos DB コンテナーを管理する単位
がデータベース
6#jcdug
これがデータベース
1 つ以上のコンテナーを
管理する
7. e
No exists databases in Table API?
Azure Table API の場合はデータベースがない︖
・Table API にも データベースはある
・最初のテーブルを作ると、⾃動的にデータベース
(TablesDB) が作成され、変更は不可
・Cosmos DB の Azure Table API では、ユー
ザーによるデータベース作成は不可
7#jcdug
作れるのはテーブルのみ
システム既定として
TablesDB が作成される
Cosmos DB Entity Cosmos DB Databases
SQL API Database
Cassandra API Keyspace
API for MongoDB Database
Gremlin API Database
Table API N/A (TablesDB only)
https://docs.microsoft.com/en-us/azure/cosmos-
db/databases-containers-items#azure-cosmos-databases
8. e
Operations on an Azure Cosmos database
Azure Cosmos データベースに対する操作
8
Support Enumerate all DB Read DB Create new DB Update DB
Azure CLI ✔ ✔ ✔ ✔
SQL API ✔ ✔ ✔ ✔
Cassandra
API
✔
mapped to a keyspace
✔
mapped to a keyspace
✔
mapped to a keyspace
✔
mapped to a keyspace
API for
MongoDB
✔ ✔ ✔ ✔
Gremlin API
Table API
#jcdug
https://docs.microsoft.com/en-us/azure/cosmos-db/databases-containers-items#operations-on-an-azure-cosmos-database
18. e
Split Physical partitions
物理パーティションの分割
18#jcdug
Containers (Name = Perfume)
Logical Partition 1
Logical Partition 2
Logical Partition 3
“title”: “Challenger”
Storage 1
Up to 50GB
per physical storage
(1 物理パーティションは
最⼤ 50 GB まで) 20 GB
20 GB
10 GB
1 GB
Can not write because “Storage 1” already has 50 GB?
(すでに Storage 1 は 50 GB あるので書き込めない︖)
19. e
Split Physical partitions
物理パーティションの分割
19#jcdug
Containers (Name = Perfume)
Logical Partition 1
Logical Partition 2
Logical Partition 3
Storage 1
20 GB
11 GB
Automatically
created by system
(システム側で
⾃動作成)
Storage 2
Logical Partition 2
20 GB
Internal implementation / Fully managed by Cosmos DB
(システムの内部実装 / Cosmos DB が完全管理)
20. e
How replicated across multiple regions?
どのように複数リーション間で複製されるのか︖
20#jcdug
https://docs.microsoft.com/en
-us/azure/cosmos-
db/partition-data#replica-sets
Replica sets
(レプリカセット)
Unit of replicate
(複製の単位)
22. e
Throughput modes
スループットモード
22
・Dedicated provisioned throughput (専⽤プロビジョニングスループット)
- 単⼀のコンテナー専⽤にスループットを予約し、他のコンテナーとの共⽤は不可
- SLA によってバックアップ
- Cosmos DB Serverless を使⽤する場合は、こちらが必須選択
・Shared provisioned throughput (共有プロビジョニングスループット)
- 同じデータベース内の他のコンテナーと、プロビジョニングされたスループットを共有
- 専⽤プロビジョニングスループットが設定されたコンテナーとは、プロビジョニングされたスループットの共有は不可
- 異なるデータベース間での、プロビジョニングされたスループットの共有は不可
#jcdug
Can be set only when creating a container
(コンテナーの作成時のみ設定可能)
23. e
Other information about the container
コンテナーに関するその他情報
23
・インデックス作成ポリシー
- 既定では、コンテナーに追加するすべての項⽬に⾃動的にインデックス付与
- コンテナー単位でインデックス作成の動作をカスタマイズすることも可能
・Time to Live (TTL)
- コンテナー内の選択されたアイテム、またはコンテナー全体に対して設定
- 設定された有効期限が切れると、システムによって⾃動的に削除
・変更フィード (Change Feed)
- コンテナー内のアイテムに対して⾏われた挿⼊操作と更新操作の操作ログ(実データと実⾏ログ)を出⼒
- 操作ログは、コンテナーの論理パーティションごとに管理
- 現在は更新のみ取得可能、今後プレビューで削除も取得できるようになる⾒込み
#jcdug
24. e
Handling of containers by each API
各 API によるコンテナーの扱い
24
・Azure Cosmos コンテナーは、Cosmos DB がサポートする 各 API 固有のエンティティに特化
#jcdug
Entity SQL API Cassandra API API for
MongoDB
Gremlin Table API
Container Container Table Collection Graph Table
Beginners (初⼼者)
Containers? Collections? Which is right?
(コンテナー︖コレクション︖どっちが正しいの︖)
Recognition differs depending on API
(API によって認識が異なる)
26. e
Container system-defined properties
コンテナーのシステム定義プロパティ
26
Properies SQL API Cassandra
API
API for
MongoDB
Gremlin API Table API
_rid System-generated ✔
_etag System-generated ✔
_ts System-generated ✔
_self System-generated ✔
id User-configurable ✔ ✔ ✔ ✔ ✔
indexingPolicy User-configurable ✔ ✔
TimeToLive User-configurable ✔ ✔
changeFeedPolicy User-configurable ✔ ✔
uniqueKeyPolicy User-configurable ✔ ✔
#jcdug
Depending on the API used, some properties may not be directly exposed
(使⽤するAPIによっては、⼀部のプロパティが直接公開されない場合がある)
27. e
Operations on an Azure Cosmos container
Azure Cosmos コンテナーに対する操作
27
Support Enumerate
containers in a
DB
Read a
container
Create a
container
Update a
container
Delete a
container
Azure CLI ✔ ✔ ✔ ✔ ✔
SQL API ✔ ✔ ✔ ✔ ✔
Cassandra
API
✔ ✔ ✔ ✔ ✔
API for
MongoDB
✔ ✔ ✔ ✔ ✔
Gremlin
API
Table API
#jcdug
https://docs.microsoft.com/en-us/azure/cosmos-db/databases-containers-items#operations-on-an-azure-cosmos-container
31. e
Handling of items by each API
各 API によるアイテム (項⽬)の扱い
31
・Azure Cosmos アイテムは、Cosmos DB がサポートする 各 API 固有のエンティティとマッピング
#jcdug
Entity SQL API Cassandra API API for
MongoDB
Gremlin Table API
Item Item Row Document Node or edge Item
Beginners (初⼼者)
Item? Document? Which is right?
(アイテム︖ドキュメント︖どっちが正しいの︖)
Recognition differs depending on API
(API によって認識が異なる)
32. e
Item system-defined properties
アイテムのシステム定義プロパティ
32
Properties Purpose (⽬的・意味)
_rid アイテムの⼀意識別⼦
_etag 楽観的同時実⾏制御に使⽤されるエンティティタグ
_ts アイテムの最終更新時のタイムスタンプ
_self アイテムのアドレス指定可能な URI
id 論理パーティション内ののユーザーが定義した⼀意の名前
※アイテムにおける id プロパティの⼀意性は、各論理パーティション内でのみ適⽤
※異なる論理パーティションで同じ id プロパティを使⽤可能
Arbitrary user-defined
properties
(任意のユーザー定義プロパ
ティ)
API のネイティブ表現 (JSON、BSON、CQL など) で表されるユーザー定義のプロパティ
#jcdug
33. e
Item system-defined properties
アイテムのシステム定義プロパティ
33
Properies SQL API Cassandra
API
API for
MongoDB
Gremlin API Table API
_rid System-generated ✔
_etag System-generated ✔
_ts System-generated ✔
_self System-generated ✔
id User-configurable ✔ ✔ ✔ ✔ ✔
Arbitrary user-
defined properties
User-configurable
✔ ✔ ✔ ✔ ✔
#jcdug
Depending on the API used, some properties may not be directly exposed
(使⽤するAPIによっては、⼀部のプロパティが直接公開されない場合がある)
34. e
Operations on an Azure Cosmos item
Azure Cosmos アイテムに対する操作
34
Support Insert Replace Delete Upsert Read
Azure CLI
SQL API ✔ ✔ ✔ ✔ ✔
Cassandra API ✔ ✔ ✔ ✔ ✔
API for MongoDB ✔ ✔ ✔ ✔ ✔
Gremlin API ✔ ✔ ✔ ✔ ✔
Table API ✔ ✔ ✔ ✔ ✔
#jcdug
https://docs.microsoft.com/en-us/azure/cosmos-db/databases-containers-items#operations-on-items
※ Upsert = Blend of update + insert
36. e
Hierarchy structure of Entity
36#jcdug
https://docs.microsoft.com/en-us/azure/cosmos-db/databases-containers-items
37. e
SPs, Triggers, UDFs etc.
ストアドプロシージャ、トリガー、ユーザー定義関数 その他
・SQL API でのみ、ストアドプロシージャ、トリガー、
ユーザー定義関数が利⽤可能
・データベースエンジン内で実⾏されるロジックを
JavaScript で記述
・Azure ポータル、JavaScript query API in
Azure Cosmos DB、Cosmos DB SQL API
client SDKs で作成、および実⾏が可能
37#jcdug
https://docs.microsoft.com/en-us/azure/cosmos-db/stored-procedures-triggers-udfs