データの一意性は、Partition Key と Unique keys で決まる。
Partition Key 、 Unique keys は、コンテナ作成時に設定する。
以下 Partition Key に/pk
、Unique keys に/col1, /col2
を設定した場合の例。
サンプルデータ
説明に使用するサンプルデータは以下形式とする。
ただし、データ INSERT 時に、id
(一意の値)が自動的に追加される。
{
"pk": String,
"col1": Number,
"col2": Number,
"col3": Number
}
Partition Key
Partition Key を/pk
とした場合、
pk
とid
が一致するデータは INSERT、UPDATE 時に競合となる。
以下、競合パターンイメージ。
test-container
│
├─ pk: A
│ ├─ {pk: "A", id: "1", ...} ※ Partition Key conflict ※
│ ├─ {pk: "A", id: "2", ...}
│ ├─ {pk: "A", id: "3", ...}
│ └─ {pk: "A", id: "1", ...} ※ Partition Key conflict ※
│
├─ pk: B
│ ├─ {pk: "B", id: "1", ...}
│ ├─ {pk: "B", id: "2", ...}
│ └─ {pk: "B", id: "3", ...}
│
Partition Key を指定する必要がない場合、
デフォルトの/id
のままにすることで、id
が一致するデータは INSERT、UPDATE 時に競合となる。
参考: パーティション キーとして項目 ID を使用する
以下、競合パターンイメージ。
test-container
│
├─ id: "1"
│ └─ {pk: "A", id: "1", ...} ※ Partition Key conflict ※
│
├─ id: "2"
│ └─ {pk: "A", id: "2", ...}
│
├─ id: "3"
│ └─ {pk: "A", id: "3", ...}
│
├─ id: "1"
│ └─ {pk: "B", id: "1", ...} ※ Partition Key conflict ※
│
Unique keys
Unique keys に/col1, /col2
を設定した場合、
col1
とcol2
が一致するデータは INSERT、UPDATE 時に競合となる。
Unique keys を設定した場合も Partition Key による一意性は維持される。
以下 Partition Key に/pk
、Unique keys に/col1, /col2
を設定した場合の競合パターンイメージ。
test-container
│
├─ pk: A
│ ├─ {pk: "A", id: "1", col1: 1, col2: 2, ...} ※ Partition Key conflict ※
│ ├─ {pk: "A", id: "1", col1: 2, col2: 2, ...} ※ Partition Key conflict ※
│ ├─ {pk: "A", id: "2", col1: 3, col2: 2, ...}
│ ├─ {pk: "A", id: "3", col1: 4, col2: 2, ...} ※ Unique keys conflict ※
│ └─ {pk: "A", id: "4", col1: 4, col2: 2, ...} ※ Unique keys conflict ※
│
├─ pk: B
│ ├─ {pk: "B", id: "1", col1: 1, col2: 2, ...}
│ ├─ {pk: "B", id: "2", col1: 2, col2: 2, ...}
│ └─ {pk: "B", id: "3", col1: 3, col2: 2, ...}
│