URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 92799
[ Назад ]

Исходное сообщение
"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."

Отправлено opennews , 22-Ноя-13 18:03 
Компания Facebook объявила (https://www.facebook.com/notes/facebook-engineering/under-th...) об открытии исходных текстов проекта RocksDB (http://rocksdb.org/), в рамках которого развивается система для хранения данных в формате ключ/значение, рассчитанная на использование на Flash-накопителях. Код RocksDB написан на языке С++ и распространяется (https://github.com/facebook/rocksdb) под лицензией BSD. В качестве основы для RocksDB использованы прошлогодний выпуск проекта LevelDB 1.5 (http://code.google.com/p/leveldb/), развиваемого компанией Google.


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


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


В рамках одной атомарной операции в базу может быть внесено сразу несколько изменений. Поддерживается создание снапшотов со срезом состояния БД в текущий момент времени. Для контроля за возможным повреждением данных для каждого блока сохраняется контрольная сумма. Возможно открытие базы в режиме только для чтения. Данные могут автоматически сжиматься перед сохранением с использованием библиотек snappy (http://www.opennet.me/opennews/art.shtml?num=30003), zlib и bzip2.  Для отладочных целей предусмотрена возможность ведения детализированного отладочного лога. Доступны инструменты для полного и инкрементального хранения данных, а также механизм для реплицирования лога изменений на другую систему (например, для создания горячего бэкапа на удалённой системе).

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


Тестирование показало, что RocksDB в 10 раз быстрее обрабатывает запросы на запись и в 30 раз быстрее операции случайного чтения по сравнению с использованием LevelDB на том же накопителе, дополнительно предоставляя гибкие возможности по масштабированию хранилища на несколько накопителей. При этом RocksDB потребляет заметно больше оперативной памяти, так как операции записи вначале сохраняются (https://github.com/facebook/rocksdb/wiki/Rocksdb-Architectur...) в размещённой в памяти структуре memtable, после чего  сбрасываются в последовательно заполняемый лог, а после заполнения пула данные из лога сохраняются в основное упорядоченное SST-хранилище (https://github.com/facebook/rocksdb/wiki/Rocksdb-table-format).

URL: https://www.facebook.com/notes/facebook-engineering/under-th...
Новость: http://www.opennet.me/opennews/art.shtml?num=38499


Содержание

Сообщения в этом обсуждении
"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено pavlinux , 22-Ноя-13 18:03 
> рассчитанная на использование на Flash-накопителях.

У файловой системы спросить не забыли?

> Если один SSD-накопитель демонстрирует производительность до 100 тысяч случайных операций
> записи и чтения в секунду, распределив хранилище на десять таких накопителей,
> производительность может быть увеличена до миллиона операций в секунду.

Это только в теории, в реальности включится Закон Амдала и его друзей.


"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено oxyum , 22-Ноя-13 18:53 
Тут закон Амдала особо мешать не будет, ибо узким местом для распаралелливания скорее всего будут процессор, память и шина, а они пока быстрее чем SSD.

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено all_glory_to_the_hypnotoad , 22-Ноя-13 22:56 
хранилища всегда масштабируются линейно, если, конечно, не нужна транзакционность - единственное ограничение масштабируемости в данном  случае. Закон Амдала  вообще не из этой оперы.

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено pavlinux , 23-Ноя-13 04:20 
> хранилища всегда масштабируются линейно, если, конечно, не нужна транзакционность - единственное
> ограничение масштабируемости в данном  случае. Закон Амдала  вообще не
> из этой оперы.

Ну я и не сомневался, что дальше чтения википедии мало кто способен пойти. :)


"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено linux must __RIP__ , 22-Ноя-13 23:54 
а зачем файловая система на raw device ? :)

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено kurokaze , 24-Ноя-13 04:33 
В твоём ПТУ этого не объяснили? Печалька

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено Crazy Alex , 24-Ноя-13 15:57 
А что не так? Базы сплошь и рядом на raw device работают. Тем более на энтерпрайзных SSD, где контроллер нормальный, в FS особого смысла нет.

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено all_glory_to_the_hypnotoad , 24-Ноя-13 16:14 
сплошь и рядом не работают.  Этим путём шли некоторые СУБД в  9х, но многие вернулись назад.

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено Maniaq , 25-Ноя-13 15:53 
> А что не так? Базы сплошь и рядом на raw device работают.
> Тем более на энтерпрайзных SSD, где контроллер нормальный, в FS особого смысла нет.

А бэкап и рестор на RAW-девайсах ты будешь писать и поддерживать?


"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено all_glory_to_the_hypnotoad , 25-Ноя-13 20:43 
коли субд взялась работать с raw девайсом, то тулзы для саппорта тоже даёт. Но это чаще геморее чем работать с традиционной фс.

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено Аноним , 22-Ноя-13 18:49 
это они петабайт на SSD хранят? оО А как же голодающие дети в Африке?

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено oxyum , 22-Ноя-13 18:54 
> это они петабайт на SSD хранят? оО А как же голодающие дети
> в Африке?

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


"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено Dmitry77 , 22-Ноя-13 19:15 
Месяц баз данных от facebook.
Это уже вторая база открытая  ими: http://www.opennet.me/opennews/art.shtml?num=38368

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено YetAnotherOnanym , 22-Ноя-13 23:44 
"Log-Structured-Merge-Database"
Хмммм... как бы это перевести? БД со слиянием, структурированным по журналу?

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено Аноним , 23-Ноя-13 02:17 
так она не sql что ли? :(

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено Аноним , 23-Ноя-13 15:32 
вообще не понимаю, зачем ноускьюэль нужны базы?

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено Аноним , 25-Ноя-13 09:29 
для хранения картинок

"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено count0krsk , 25-Ноя-13 14:18 
Где сравнение производительности с mysql/postgresql/oracle?
И чисто ради лулзов - c MSSQL ))) Сколько запросов она успеет обработать в секунду? 50-100, может 1000 даже, ггг.



"Facebook открыл код NoSQL БД RocksDB, оптимизированной для F..."
Отправлено SpiritOfStallman , 25-Ноя-13 15:57 
>Где сравнение производительности с mysql/postgresql/oracle?

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