Статьи

RocksDB 101

RocksDBПосле того, как мы объявили, что Percona предлагает поддержку RocksDB, мы увидели, что многие люди искали больше информации об этом механизме хранения. Вот краткий список некоторых наиболее часто задаваемых вопросов.

Q: Что такое RocksDB?

A: Цитирование домашней страницы проекта :

RocksDB — это встраиваемое постоянное хранилище значений ключей для быстрого хранения. RocksDB также может быть основой для клиент-серверной базы данных, но в настоящее время мы сосредоточены на встроенных рабочих нагрузках.

RocksDB основан на LevelDB, чтобы быть масштабируемым для работы на серверах со многими ядрами ЦП, для эффективного использования быстрого хранилища, для поддержки рабочих нагрузок, связанных с вводом-выводом, в оперативной памяти и однократной записи, и для обеспечения гибкости, позволяющей внедрять инновации.

Q: Где это доступно?

A: У вас есть 2 основных варианта получить RocksDB:

В обоих случаях вам потребуется запустить MongoDB --storageEngine = rocksdb.

В: Каковы основные характеристики RocksDB?

A: Благодаря своей конструкции, использующей деревья LSM, RocksDB предлагает отличную производительность записи, не жертвуя при этом слишком высокой скоростью чтения. И как современный механизм хранения, он сжимает данные.

Поэтому каждый раз, когда вас интересует производительность записи MongoDB, RocksDB является хорошим кандидатом.

Также обратите внимание, что RocksDB был разработан с учетом быстрого хранения.

Q: Почему запись RocksDB оптимизирована?

A: RocksDB использует LSM-деревья для хранения данных, в отличие от большинства других механизмов хранения, которые используют B-Trees.

В большинстве случаев B-Trees предлагают очень хороший компромисс между производительностью чтения и производительностью записи; Вот почему они так широко используются в мире баз данных. Однако, когда рабочий набор больше не помещается в память, запись становится чрезвычайно медленной, потому что для каждой операции записи требуется как минимум ввод-вывод.

Деревья LSM предназначены для амортизации стоимости записи: данные записываются в файлы журнала, которые последовательно записываются на диск и никогда не изменяются. Затем фоновый поток объединяет файлы журнала (уплотнение). При такой конструкции один ввод / вывод может сбрасывать на диск десятки или сотни операций записи.

Компромисс заключается в том, что чтение документа является более сложным и, следовательно, медленнее, чем для B-дерева; поскольку мы заранее не знаем, в каком файле журнала хранится последняя версия данных, нам может потребоваться прочитать несколько файлов, чтобы выполнить одно чтение. Такие хитрости, как фильтры Блума, помогают решить эту проблему.

В: Какова производительность RocksDB по сравнению с другим механизмом хранения?

Марк Каллаган из Facebook опубликовал результаты для кэшированных баз данных (данные помещаются в память) некоторое время назад.

Вадим Ткаченко из Percona опубликовал дополнительные результаты, когда данные больше памяти.

Q: Где я могу найти поддержку RocksDB?

О: Вы можете сообщить о проблемах здесь , перейти в эту группу Facebook, чтобы обсудить темы, связанные с RocksDB, или нанять нас .

В: Как я могу запустить резервное копирование?

Методы, независимые от механизма хранения, такие как холодное резервное копирование или моментальные снимки томов, работают с RocksDB.

RocksDB также имеет встроенную поддержку горячего резервного копирования с помощью следующей команды:

db.adminCommand({setParameter:1, rocksdbBackup: /path/to/backup/dir”})

Смотрите этот пост от команды разработчиков Facebook / Parse для более подробной информации.

Конструкция LSM дерево делает добавочное резервное копирование гораздо проще , чем со многими технологиями и горных пород страт , вероятно , является хорошим местом для начала.

Вывод

Экосистема механизма хранения для MongoDB быстро развивается сейчас, по крайней мере, с 3 сильными соперниками: WiredTiger, RocksDB и PerconaFT. Если вы хотите узнать больше о RocksDB, PerconaFT и Percona Server для MongoDB, пожалуйста, зарегистрируйтесь на мой бесплатный вебинар в среду, 28 октября, в 11:00 по тихоокеанскому времени.