Как MVCCKey формируется в CockroachDB?
Я хочу создать MVCCKey с временной меткой и довольно хорошим значением, которое я знаю. Но я понимаю, roachpb.key
не очень прост; есть какой-то префикс / суффикс? Имя базы данных также закодировано в roachpb.key
?
Может кто-нибудь сказать, пожалуйста, как формируется MVCCKey? Какая информация у него есть? В документации просто сказано, что это выглядит как /table/primary/key/column.
1 ответ
engine.MVCCKey
сочетает в себе обычный ключ с отметкой времени. MVCCKeys
закодированы в байтовые строки для использования в качестве ключей RockDB (RocksDB настроен с пользовательским компаратором, так MVCCKeys
отсортированы правильно, хотя временная метка использует кодирование переменной ширины).
Обычные ключи - это байтовые строки типа roachpb.Key
, Для обычных записей данных ключи составляются из идентификаторов таблицы, столбца и индекса вместе со значениями индексированных столбцов. (Идентификатор базы данных здесь не включен; базу данных, к которой принадлежит таблица, можно найти в system.descriptors
Таблица)
Функция keys.PrettyPrint
может преобразовать roachpb.Key
в удобочитаемой форме.