web-dev-qa-db-ja.com

Azure Cosmos DB-パーティションキーについて

最初のAzure Cosmos DBをセットアップしています-最初のコレクションに、SQL Serverデータベースの1つのテーブルのデータをインポートします。コレクションを設定する際に、パーティションキーに関する意味と要件を理解するのに苦労しています。この初期コレクションを設定する際に具体的に名前を付ける必要があります。

私はここでドキュメントを読みました:( https://docs.Microsoft.com/en-us/Azure/cosmos-db/documentdb-partition-data )そしてまだどのように進めるかわからないこのパーティションキーの命名規則。

誰かがこのパーティションキーに名前を付ける際に私がどう考えるべきかを理解するのを助けてくれますか?入力しようとしているフィールドについては、以下のスクリーンショットを参照してください。 Partition Key Name

助けになる場合、インポートするテーブルは、一意のプライマリキー、非構造化テキストの列、URLの列、およびそのレコードのURLの他のいくつかのセカンダリ識別子を含む7列で構成されています。その情報のいずれかが、パーティションキーに名前を付ける方法に関係があるかどうかはわかりません。

編集:@Porschieyからのリクエストごとに、インポート元のテーブルからいくつかのレコードのスクリーンショットを追加しました。

enter image description here

31
Stpete111

正直なところ、 ビデオはこちら *は、CosmosDbのパーティション分割を理解する上で大きな助けとなりました。

しかし、簡単に言えば:PartitionKeyは、類似したオブジェクトをグループ化するのに最適な単一のオブジェクトすべてに存在するプロパティです。

良い例としては、場所(市など)、顧客ID、チームなどがあります。当然、ソリューションに大きく依存します。そのため、オブジェクトの外観を投稿する場合は、適切なパーティションキーをお勧めします。

編集:PartitionKeyは10GB未満のコレクションには必要ないことに注意してください。 (David Makogonに感謝)


* ビデオ での使用 このMSドキュメントページ 「Azure Cosmos DBでのパーティション分割と水平スケーリング」と題されていますが、その後削除されました。上記の直接リンクが提供されています。

21
Porschiey

CosmosDBを使用して、データの制限を保存できます。バックエンドでの方法は、パーティションキーを使用することです。主キーと同じですか? - 番号

主キー:データを一意に識別しますパーティションキーは、データの分割に役立ちます(たとえば、市がパーティションキーである場合、ニューヨーク市の1つのパーティション)。

パーティションには10GBの制限があり、パーティション間でデータを分散させるほど、より多く使用できるようになります。最終的には、すべてのパーティションからデータを取得するためにより多くの接続が必要になります。例:クエリ内の同じパーティションからデータを取得する方が、複数のパーティションからデータを取得するよりも常に高速です。

6
Animesh Jain

パーティションキーは論理パーティションとして機能します。

さて、論理パーティションとは何ですか?論理パーティションは要件によって異なる場合があります。顧客に基づいて分類できるデータがあるとします。この顧客「Id」は論理パーティションとして機能し、ユーザーの情報は顧客IDに従って配置されます。

これはクエリにどのような影響を与えますか?

クエリ中に、フィードオプションとしてパーティションキーを配置し、フィルターに含めません。

例:クエリが

SELECT * FROM T WHERE T.CustomerId= 'CustomerId';

今になります

var options = new FeedOptions{ PartitionKey = new PartitionKey(CustomerId)};

var query = _client.CreateDocumentQuery(CollectionUri,$"SELECT * FROM T",options).AsDocumentQuery(); 
5
Udit Gandhi

テーブルの各パーティションには最大10GBを保存できます(また、1つのテーブルに必要な数のドキュメントスキーマタイプを保存できます)。ただし、そのキーに対して保存される(そのパーティションに分類される)すべてのドキュメントが10GBの制限を下回るように、パーティションキーを選択する必要があります。

私も今これについて考えています-パーティションキーは何らかのタイプの日付範囲でなければなりませんか?その場合、一定期間にどれだけのデータが保存されるかに大きく依存します。

3
JakeJ

パーティションキーはシャーディングに使用され、データの論理パーティションとして機能し、Cosmos DBにパーティション間でデータを分散するための自然な境界を提供します。

詳細については、こちらをご覧ください: https://docs.Microsoft.com/en-us/Azure/cosmos-db/partition-data

3
Thiago Custodio