Версионированный формат взаимодействия с динамическими таблицами
В сортированных динамических таблицах для каждого значения колонки хранится timestamp его записи. Эти временные метки могут быть полезны для реализации пользовательской логики, либо же миграций данных, когда необходимо сохранить оригинальные timestamp-ы для правильной работы очистки данных по TTL.
Версионированный формат взаимодействия не несет практически никаких накладных расходов, кроме случаев, когда сама колонка не запрошена, а её timestamp запрошен, в таком случае будут прочитаны данные самой колонки.
Для всех последующих видов взаимодействия предполагается, что timestamp колонки value
обозначается, как $timestamp:value
.
Версионированный lookup и select
Версионированные lookup и select поддержаны в C++ и Python API. Для добавления колонок с timestamps в вывод необходимо указать versioned_read_options = {read_mode = latest_timestamp}
.
В select-запросах необходимо дополнительно экранировать timestamp колонки квадратными скобками [$timestamp:value]
.
В Python API вместо versioned_read_options
, можно указать опцию with_timestamps
Примеры
yt.lookup_rows("//path/to/table", [{"key": 123}], with_timestamps=True)
# Прочитать все колонки и их timestamp-ы.
yt.select_rows("* from [//path/to/table]", with_timestamps=True)
# Прочитать отдельные колонки и timestamp-ы.
yt.select_rows("col_a, [$timestamp:col_a] as ts_a, [$timestamp:col_b] as ts_b from [//path/to/table]", with_timestamps=True)
Версионированный map-reduce
Чтение
Для чтения timestamp-колонок в map-reduce операциях необходимо добавить опцию в rich YPath входной таблицы: <versioned_read_options = {read_mode = latest_timestamp}>
Запись
Для записи данных в map-reduce операциях в версионированном формате необходимо добавить в rich YPath выходной таблицы <versioned_write_options = {read_mode = latest_timestamp}>
. Для колонок, для которых указан timestamp будет записан он, для остальных будет взят commit timestamp транзакции bulk insert.
Внимание
Версионированный формат записи имеет несколько ограничений:
- Запись не поддержана в sort операции.
- Во время записи не происходит проверка на возможное дублирование timestamp-ов у разных записей одной колонки по одному ключу.