Новости IT, хостинга
  Android, Apple, Facebook, Google, Linux, Microsoft, Samsung, Twitter, Интернет, Россия, браузеры, обновление ПО, онлайн-сервисы, операционные системы, планшеты, рынок ИТ, сделки, смартфоны, социальные сети, уязвимости  
  новостей: 10361
  комментариев: 2302

Facebook открыл код NoSQL БД RocksDB, оптимизированной для Flash-накопителей


Компания Facebook объявила об открытии исходных текстов проекта RocksDB, в рамках которого развивается система для хранения данных в формате ключ/значение, рассчитанная на использование на Flash-накопителях. Код RocksDB написан на языке С++ и распространяется под лицензией BSD. В качестве основы для RocksDB использован прошлогодний выпуск проекта LevelDB 1.5, развиваемого компанией Google.

Так же как LevelDB, SQLite и BerkeleyDB, проект RocksDB оформлен в виде разделяемой библиотеки, подключаемой к приложениям в процессе компиляции (для работы с базой из командной строки поставляется утилита ldb). Библиотека может быть использована в качестве низкоуровневого звена для создания более сложных серверов хранения. Ключевым отличием от LevelDB является переработанная структура хранилища, оптимизированная для Flash-накопителей. Хранение в базе организовано в форме лога (Log-Structured-Merge-Database), при этом разработчики Facebook попытались найти оптимальный компромисс между различными сценариями использования БД (интенсивное добавление/чтение/удаление, большой размер базы). При необходимости оптимизации для конкретных применений или типов аппаратных устройств архитектура RocksDB предусматривает возможность замены различных подсистем на свои обработчики и изменение формата хранилища. Например, можно выбирать разные методы кэширования в памяти, алгоритмы сборки мусора и методы сжатия данных.

Ключами и привязанными к ним значениями могут выступать произвольные байтовые массивы данных. Связки ключ/значение хранятся в отсортированном по ключу упорядоченном виде, метод сортировки задаётся через задаваемую пользователем функцию сравнения (comparator). Управление данными производится через базовые операторы Put, Write (запись в пакетном режиме) , Get, MultiGet, Delete и Scan, RangeScan (переход на удовлетворяющие определённым критериям соседние элементы отсортированного списка).

В рамках одной атомарной операции в базу может быть внесено сразу несколько изменений. Поддерживается создание снапшотов со срезом состояния БД в текущий момент времени. Для контроля за возможным повреждением данных для каждого блока сохраняется контрольная сумма. Возможно открытие базы в режиме только для чтения. Данные могут автоматически сжиматься перед сохранением с использованием библиотек snappy, zlib и bzip2. Для отладочных целей предусмотрена возможность ведения детализированного отладочного лога. Доступны инструменты для полного и инкрементального хранения данных, а также механизм для реплицирования лога изменений на другую систему (например, для создания горячего бэкапа на удалённой системе).

В библиотеке реализован встроенный многопоточный упаковщик, занимающийся чисткой устаревших записей (блоки данных в RocksDB не изменяются, а только добавляются новые с последующим освобождением устаревших) и пригодный для использования в ситуациях размещения в одном хранилище терабайт данных. В процессе работы RocksDB операции записи вначале сохраняются в размещённой в памяти структуре memtable, после чего сбрасываются в последовательно заполняемый лог, а после заполнения пула, данные из лога сохраняются в основное упорядоченное SST-хранилище.

C позиции производительности RocksDB позволяет выжать максимум из возможностей кластеров Flash-накопителей. Тестирование производительности показало, что RocksDB в 10 раз быстрее обрабатывает запросы на запись и в 30 раз быстрее операции случайного чтения по сравнению с использованием LevelDB на том же накопителе, дополнительно предоставляя гибкие возможности по масштабированию хранилища на несколько накопителей. Если один SSD-накопитель демонстрирует производительность до 100 тысяч случайных операций записи и чтения в секунду, то при распределении хранилища на десять таких накопителей, производительность может быть увеличена до миллиона операций в секунду.

Система уже достаточно хорошо отлажена и используется в Facebook для хранения почти петабайта данных. Наиболее востребованным применением RocksDB являются приложения, требующие минимальной задержки при сохранении или чтении данных. Например, RocksDB может использоваться для сохранения состояния пользователя и истории его действий на сайте; в программах определения спама; в системах, занимающихся перебором набора данных в режиме реального времени; для организации очередей сообщений с большим числом операций добавления и удаления записей.


Источник: opennet.ru

  24 ноября 2013 667
Версия для печати

← предыдущая новость следующая новость →

Мой комментарий
Ваше имя*:
Email:
Комментарий*:
Зарегистрироваться автоматически: Вы будете зарегистрированы на сайте автоматически при добавлении комментария. Обязательно заполните поле Email для этого.
Сумма чисел 6 и 16*:            


Хостеры (2453)
HostDB (35)
Софт (2640)
Железо (993)
Интернет (1435)
Статистика и аналитика (3324)




Отправить сообщение администратору

Сумма чисел 13 и 2*:


Яндекс цитирования
сообщить о неточности