Создание потока изменений таблицы
Поток изменений таблицы
Описание ресурса yandex_ydb_table_changefeed
Создать поток изменений таблицы можно с помощью ресурса yandex_ydb_table_changefeed:
resource "yandex_ydb_table_changefeed" "ydb_changefeed" {
table_id = yandex_ydb_table.test_table_2.id
name = "changefeed"
mode = "NEW_IMAGE"
format = "JSON"
consumer {
name = "test_consumer"
}
}
В создании потока изменений таблицы мы использовали следующий набор полей:
table_id— идентификатор таблицы, для которой создается поток изменений;name— название потока изменений;mode— режим работы потока изменений. Все доступные режимы работы потока изменений описаны в документации .format— формат потока изменений. Доступен только JSON формат.
Полное описание всех полей ресурса yandex_ydb_table_changefeed:
| Название поля | Тип | Описание |
|---|---|---|
| table_path | stringrequired |
Путь до таблицы |
| connection_string | stringrequired |
Строка соединения, конфликтует с table_id |
| database_id | stringrequired |
Идентификатор базы данных, конфликтует с table_path и connection_string |
| table_id | stringrequired |
Terraform-идентификатор таблицы |
| name | stringrequired |
Имя потока изменений |
| mode | stringrequired |
Режим работы потока изменений |
| format | stringrequired |
Формат потока изменений |
| virtual_timestamps | booloptional |
Использование виртуальных таймстеймпов |
| retention_period | stringoptional |
Время хранения данных в топике в формате ISO 8601 |
| consumer | array[consumer]optional |
Консьюмеры (читатели) для потока изменений |
При инициализации ресурса yandex_ydb_table_changefeed можно указать только одно поле соединения: connection_string, table_path или table_id. При указании нескольких полей соединения между ними возникают конфликты. Например, поле table_id с указанием относительной ссылки в формате: <ресурс>.<идентификатор>.<параметр> — yandex_ydb_table.test_table_2.id.
Внутри ресурса потока изменений располагается блок consumer. Consumername (имя читателя). При инициализации ресурса yandex_ydb_table_changefeed можно задать несколько читателей, а можно не создавать ни одного, но тогда невозможно будет читать данные из потока изменений.
Полный перечень полей блока consumer:
| Название поля | Тип | Описание |
|---|---|---|
| name | stringrequired |
Имя читателя |
| supported_codecs | array[string]optional |
Поддерживаемые кодировки данных |
| starting_message_timestamp_ms | integeroptional |
Временная метка в формате UNIX timestamp, с которой читатель начнет читать данные |
Имя читателя используется в SDK или CLI для чтения данных