diff options
author | ilnaz <ilnaz@ydb.tech> | 2022-08-04 01:38:53 +0300 |
---|---|---|
committer | ilnaz <ilnaz@ydb.tech> | 2022-08-04 01:38:53 +0300 |
commit | 3305b730bd7faada7c1134b7296b099098deb897 (patch) | |
tree | c99ba90d974e8ff99e2996de57301ad8e7808797 | |
parent | 16b2eba4a9b2f5e1b2891730b8c39c7289f1ec1e (diff) | |
download | ydb-3305b730bd7faada7c1134b7296b099098deb897.tar.gz |
Additional info about the JSON record structure
-rw-r--r-- | ydb/docs/ru/core/concepts/cdc.md | 53 |
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} |