本アダプタではAzure Cosmos DBのDocumentDB APIを使用します。API仕様については以下のページを参照してください。
- 「Azure Cosmos DB: DocumentDB REST API Reference」(https://docs.microsoft.com/ja-jp/rest/api/documentdb/)
本アダプタとほかの方法(Azureポータルのデータ エクスプローラーなど)を併用してunlimitedコレクションにアクセスする場合は、以下の制限事項があります。
本アダプタの各オペレーションは、以下の前提で動作します。
- IDの一意性範囲:コレクション内でIDが一意である
- パーティションキー:パーティションキーを格納するフィールドがドキュメントに存在する
本アダプタ以外の方法で以下のような操作を行った場合、動作はサポートしません。
- 複数のパーティション内に同じIDのドキュメントを作成する
- パーティションキーを持たないドキュメントを作成する
本アダプタでサポートするAzure Cosmos DBのJSON型と、内部データ型(スキーマ型)との対応は以下の通りです。
Azure Cosmos DBデータ型名 | サポート | スキーマ型名 | 備考 |
string | ○ | String | |
number | ○ | BigDecimal | |
true/false | ○ | boolean | |
null | ○ | - | スキーマ型を問わずnullとして扱います。 |
object | × | - | |
array | × | - | |
Azure Cosmos DBでの数値型はIEEE754 倍精度です。
- IEEE754 倍精度を超える数値をBigDecimal型としてAzure Cosmos DBへ書き込むと、数値が丸められます。(エラーにはなりません)
- 丸めを避けたいのであれば、ドキュメント書き込み時にスキーマ型をString型としてください。
- ただし、Azure Cosmos DBにstring型として保存されるため、数値に対するSQLが利用できなくなります。
ドキュメントに対してAzure Cosmos DBが生成する項目に、「_rid」「_ts」「_self」「_etag」「_attachments」などがあります。
これら項目については、任意の値を書き込むことはできません。
Azure Cosmos DBが生成する項目は名称の先頭がアンダースコア(_)であるため、スキーマ定義する項目名の先頭にはなるべくアンダースコアを付けないようにしてください。
Azure Cosmos DBシステムが生成する項目については以下のページを参照してください。
- 「System vs. user defined resources」-(https://docs.microsoft.com/ja-jp/azure/cosmos-db/documentdb-resources#system-vs-user-defined-resources)
- 「Documents」-(https://docs.microsoft.com/ja-jp/rest/api/documentdb/documents)
Azure Cosmos DBアダプタでは、5種類の一貫性(「Strong」「Bounded-Staleness」「Session」「Consistent Prefix」「Eventual」)のうち、「Session」を使用しています。
Azure Cosmos DBでの一貫性については以下のページを参照してください。
- 「Azure Cosmos DB の調整可能なデータの一貫性レベル」-(https://docs.microsoft.com/ja-jp/azure/cosmos-db/consistency-levels)