Как 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 в удобочитаемой форме.

Другие вопросы по тегам