Cockroach Labs представила Pebble, который описывается как хранилище ключей, основанное на RocksDB и совместимое с RocksDB. До сих пор CockroachDB использовала RocksDB в качестве хранилища ключей и значений, но Pebble обеспечивает больший контроль над будущими улучшениями, адаптированными для нужд CockroachDB.
CockroachDB — это распределенная база данных SQL, встроенная в облако и обеспечивающая горизонтальную масштабируемость без единой точки отказа.
Команда Cockroach Labs заявляет, что Pebble не только дает больше контроля, но и обеспечивает лучшую производительность и стабильность, а также позволяет избежать проблем, связанных с выходом за границы Cgo. Этой осенью Pebble заменит RocksDB в качестве механизма хранения по умолчанию для CockroachDB из версии 20.2.
Pebble наследует форматы файлов RocksDB и несколько расширений, таких как надгробные камни для удаления диапазона, фильтры цветения на уровне таблицы и обновления формата МАНИФЕСТА. В нем нет всех функций RocksDB, вместо этого он сосредоточен на наборе функций, необходимых для CockroachDB.
API и внутренняя структура Pebble напоминают RocksDB. Pebble — это хранилище ключей и значений LSM, которое обеспечивает операции Set, Merge, Delete и DeleteRange. Операции могут быть сгруппированы в атомарные пакеты, а записи могут быть прочитаны индивидуально с помощью Get или повторяться в ключевом порядке с помощью Iterator.
Pebble поддерживает моментальные снимки только для чтения, чтобы облегчить просмотр базы данных на определенный момент времени. Внутри данные в Pebble хранятся в виде комбинации журналов предварительной записи (WAL) и таблицы сортированных строк (sstables). Недавно записанные данные сохраняются в памяти в серии таблиц Memtables. Они сбрасываются на диск для создания sstables, а sstables периодически сжимаются в фоновом режиме.
Список функций начинается с основных операций — Set, Get, Merge, Delete, Single Delete и Range Delete. Вы получаете блочные таблицы и контрольные точки, а также индексированные пакеты и пакеты только для записи. Он поддерживает параметры итератора, включая нижнюю и верхнюю границы и фильтры таблицы. Поддерживается горизонтальное, ручное и одновременное уплотнение, а также внутреннее уплотнение Lo.
Хотя Pebble станет механизмом хранения по умолчанию, RocksDB останется альтернативным механизмом хранения в 20.2, но в какой-то момент будет полностью удален. Pebble доступен на GitHub.