aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorilnaz <ilnaz@ydb.tech>2022-08-04 01:38:53 +0300
committerilnaz <ilnaz@ydb.tech>2022-08-04 01:38:53 +0300
commit3305b730bd7faada7c1134b7296b099098deb897 (patch)
treec99ba90d974e8ff99e2996de57301ad8e7808797
parent16b2eba4a9b2f5e1b2891730b8c39c7289f1ec1e (diff)
downloadydb-3305b730bd7faada7c1134b7296b099098deb897.tar.gz
Additional info about the JSON record structure
-rw-r--r--ydb/docs/ru/core/concepts/cdc.md53
1 files changed, 38 insertions, 15 deletions
diff --git a/ydb/docs/ru/core/concepts/cdc.md b/ydb/docs/ru/core/concepts/cdc.md
index cb50cd8a6b..55e729b448 100644
--- a/ydb/docs/ru/core/concepts/cdc.md
+++ b/ydb/docs/ru/core/concepts/cdc.md
@@ -35,10 +35,13 @@ Change Data Capture (CDC) обеспечивает захват изменени
}
```
-* `<key components>` — массив значений компонент первичного ключа.
-* `<columns>` — словарь из названий столбцов (ключ) и их значений (значение).
+* `key` — массив значений компонент первичного ключа. Присутствует всегда.
+* `update` — признак обновления. Присутствует, если запись соответствует операции обновления. В режиме `UPDATES` так же содержит названия и значения изменившихся столбцов.
+* `erase` — признак удаления. Присутствует, если запись соответствует операции удаления.
+* `newImage` — снимок состояния строки, получившегося в результате изменения. Присутствует в режимах `NEW_IMAGE` и `NEW_AND_OLD_IMAGES`. Содержит названия и значения столбцов.
+* `oldImage` — снимок состояния строки, предшествовавшего изменению. Присутствует в режимах `OLD_IMAGE` и `NEW_AND_OLD_IMAGES`. Содержит названия и значения столбцов.
->Например:
+>Например, запись об обновлении в режиме `UPDATES`:
>
>```json
>{
@@ -49,21 +52,41 @@ Change Data Capture (CDC) обеспечивает захват изменени
> }
>}
>```
+>
+>Запись об удалении:
+>```json
+>{
+> "key": [2, "two"],
+> "erase": {}
+>}
+>```
+>
+>Запись со снимками строки:
+>```json
+>{
+> "key": [1, 2, 3],
+> "update": {},
+> "newImage": {
+> "textColumn": "value1",
+> "intColumn": 101,
+> "boolColumn": true
+> },
+> "oldImage": {
+> "textColumn": null,
+> "intColumn": 100,
+> "boolColumn": false
+> }
+>}
+>```
-В некоторых режимах часть ключей может быть опущена:
-
-Ключ | `KEYS_ONLY` | `UPDATES` | `NEW_IMAGE` | `OLD_IMAGE` | `NEW_AND_OLD_IMAGES`
-:--- | :---: | :---: | :---: | :---: | :---:
-`"key"` | + | + | + | + | +
-`"update"` | Пустой | + | Пустой | Пустой | Пустой
-`"erase"` | Пустой | Пустой | Пустой | Пустой | Пустой
-`"newImage"` | - | - | + | - | +
-`"oldImage"` | - | - | - | + | +
+{% note info %}
-Как видно, вне зависимости от режима в записи всегда указываются:
+* Одна и та же запись не может содержать поля `update` и `erase` одновременно, так как эти поля являются признаками операции (невозможно одновременно обновить и удалить строку таблицы). Но каждая запись содержит одно из этих полей (любая операция является обновлением или удалением).
+* В режиме `UPDATES` для операций обновления поле `update` выполняет роль не только признака операции (обновление), но и содержит названия и значения изменившихся столбцов.
+* Поля JSON-объекта, содержащие названия и значения столбцов (`newImage`, `oldImage` и `update` в режиме `UPDATES`), *не включают* в себя столбцы, являющиеся компонентами первичного ключа.
+* Если в записи присутствует поле `erase` (то есть запись соответствует операции удаления), то это всегда пустой JSON-объект (`{}`).
-* значения компонент первичного ключа таблицы (`"key"`);
-* признак изменения (`"update"` или `"erase"`).
+{% endnote %}
## Создание и удаление потока изменений {#ddl}