The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

22.11.2013 17:34  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 может использоваться для сохранения состояния пользователя и истории его действий на сайте; в программах определения спама; в системах, занимающихся перебором набора данных в режиме реального времени; для организации очередей сообщений с большим числом операций добавления и удаления записей.

  1. Главная ссылка к новости (https://www.facebook.com/notes...)
  2. OpenNews: Компания Google открыла исходные тексты БД LevelDB
  3. OpenNews: Компания Oracle представила открытую БД Oracle NoSQL Database 2.0
  4. OpenNews: Facebook выпустил модуль Flashcache 3.0 для организации кэширования на SSD-накопителях
  5. OpenNews: Facebook открыл код распределённого SQL-движка для петабайтных хранилищ
Лицензия: CC-BY
Тип: Программы
Ключевые слова: rocksdb, nosql
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, pavlinux, 18:03, 22/11/2013 [ответить] [смотреть все]
  • –3 +/
    У файловой системы спросить не забыли Это только в теории, в реальности включи... весь текст скрыт [показать]
     
     
  • 2.3, oxyum, 18:53, 22/11/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Тут закон Амдала особо мешать не будет, ибо узким местом для распаралелливания с... весь текст скрыт [показать] [показать ветку]
     
  • 2.7, all_glory_to_the_hypnotoad, 22:56, 22/11/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    хранилища всегда масштабируются линейно, если, конечно, не нужна транзакционност... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.11, pavlinux, 04:20, 23/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Ну я и не сомневался, что дальше чтения википедии мало кто способен пойти ... весь текст скрыт [показать]
     
  • 2.9, linux must __RIP__, 23:54, 22/11/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    а зачем файловая система на raw device ? :)
     
     
  • 3.18, kurokaze, 04:33, 24/11/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    В твоём ПТУ этого не объяснили? Печалька
     
     
  • 4.19, Crazy Alex, 15:57, 24/11/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    А что не так Базы сплошь и рядом на raw device работают Тем более на энтерпрай... весь текст скрыт [показать]
     
     
  • 5.20, all_glory_to_the_hypnotoad, 16:14, 24/11/2013 [^] [ответить] [смотреть все]  
  • +/
    сплошь и рядом не работают Этим путём шли некоторые СУБД в 9х, но многие верн... весь текст скрыт [показать]
     
  • 5.24, Maniaq, 15:53, 25/11/2013 [^] [ответить] [смотреть все]  
  • +/
    А бэкап и рестор на RAW-девайсах ты будешь писать и поддерживать ... весь текст скрыт [показать]
     
     
  • 6.26, all_glory_to_the_hypnotoad, 20:43, 25/11/2013 [^] [ответить] [смотреть все]  
  • +/
    коли субд взялась работать с raw девайсом, то тулзы для саппорта тоже даёт Но э... весь текст скрыт [показать]
     
  • 1.2, Аноним, 18:49, 22/11/2013 [ответить] [смотреть все]  
  • +/
    это они петабайт на SSD хранят? оО А как же голодающие дети в Африке?
     
     
  • 2.4, oxyum, 18:54, 22/11/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +15 +/
    > это они петабайт на SSD хранят? оО А как же голодающие дети
    > в Африке?

    SSD диски всё равно не сытные - можно и под данные использовать.

     
  • 1.6, Dmitry77, 19:15, 22/11/2013 [ответить] [смотреть все]  
  • –1 +/
    Месяц баз данных от facebook.
    Это уже вторая база открытая  ими: https://www.opennet.ru/opennews/art.shtml?num=38368
     
  • 1.8, YetAnotherOnanym, 23:44, 22/11/2013 [ответить] [смотреть все]  
  • +/
    "Log-Structured-Merge-Database"
    Хмммм... как бы это перевести? БД со слиянием, структурированным по журналу?
     
  • 1.10, Аноним, 02:17, 23/11/2013 [ответить] [смотреть все]  
  • –4 +/
    так она не sql что ли? :(
     
     
  • 2.14, Аноним, 15:32, 23/11/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    вообще не понимаю, зачем ноускьюэль нужны базы?
     
  • 1.22, Аноним, 09:29, 25/11/2013 [ответить] [смотреть все]  
  • +/
    для хранения картинок
     
  • 1.23, count0krsk, 14:18, 25/11/2013 [ответить] [смотреть все]  
  • –1 +/
    Где сравнение производительности с mysql/postgresql/oracle?
    И чисто ради лулзов - c MSSQL ))) Сколько запросов она успеет обработать в секунду? 50-100, может 1000 даже, ггг.


     
     
  • 2.25, SpiritOfStallman, 15:57, 25/11/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    >Где сравнение производительности с mysql/postgresql/oracle?

    Сравнивать NoSQL с SQL?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor TopList