RocksDB - RocksDB
Оригинальный автор (ы) | Дхруба Бортакур |
---|---|
Разработчики) | |
изначальный выпуск | Май 2012 г. |
Стабильный выпуск | 6.14.5 / 18 ноября 2020 г. |
Репозиторий | |
Написано в | C ++ |
Операционная система | Windows, macOS, Linux, FreeBSD, OpenBSD, Солярис, AIX |
Платформа | x86, x86_64, ppc64, ppc64le, aarch64 |
Тип | Встроенная база данных |
Лицензия | Apache 2.0 или же GPL 2 |
Интернет сайт | Rocksdb |
RocksDB это высокая производительность[1][2][3][4][5] встроенная база данных за ключ-значение данные. Это форк Google LevelDB оптимизирован для использования многих Ядра процессора и эффективно использовать быстрое хранилище, например твердотельные накопители (SSD), для ввод, вывод (I / O) связанные рабочие нагрузки. Он основан на лог-структурированное дерево слияния (LSM-дерево) структура данных. Это написано в C ++ и предоставляет официальные языковые привязки за C ++, C, и Ява; наряду со многими привязки сторонних языков. RocksDB - это программное обеспечение с открытым исходным кодом, и изначально был выпущен под BSD 3-пункт лицензия[6][7][8]. Однако в июле 2017 года проект был переведен на двойную лицензию Apache 2.0 и лицензию GPLv2.[9], возможно, в ответ на черный список Apache Software Foundation предыдущего пункта лицензии BSD + Patents.[10][11]
RocksDB используется в производственных системах на различных веб-шкала предприятия[12] включая Facebook, Yahoo!,[13] и LinkedIn.[14]
Функции
RocksDB, вроде LevelDB, хранит ключи и значения в произвольных байтовых массивах, а данные сортируются побайтово по ключу или с помощью специального компаратора.
RocksDB предоставляет все функции LevelDB, а также:
- Сделки[15]
- Резервные копии[16] и снимки[17]
- Семейства столбцов[18]
- Фильтры Блума[19]
- Пора жить (TTL) поддержка[20]
- Универсальное уплотнение[21]
- Операторы слияния[22]
- Сбор статистики[23]
- Геопространственная индексация[24]
и другие: Список возможностей RocksDB, которых нет в LevelDB.
RocksDB не является SQL база данных (хотя MyRocks объединяет RocksDB с MySQL ). Как и другие NoSQL и dbm store, он не имеет реляционной модели данных и не поддерживает запросы SQL. Кроме того, он не имеет прямой поддержки вторичных индексов, однако пользователь может создавать свои собственные, используя семейства столбцов или внешне. Приложения используют RocksDB как библиотеку, поскольку она не предоставляет серверного интерфейса или интерфейса командной строки.
История
RocksDB был создан в Facebook Дхруба Бортакур[25][26] в апреле 2012 г., как ответвление LevelDB с первоначально заявленной целью повышения производительности для серверных рабочих нагрузок.[27][28]
Интеграция
В качестве встраиваемой базы данных RocksDB можно использовать в качестве механизма хранения в более крупных база данных система управления (СУБД). Например, ТараканDB использует RocksDB в качестве механизма хранения[29], в основном для транзакционных рабочих нагрузок, а Rockset использует RocksDB в основном для аналитической обработки данных. Это показывает, что RocksDB можно использовать в качестве механизма хранения как для Обработка онлайн-транзакций и Онлайн-аналитическая обработка.
Альтернативный бэкэнд
Следующие проекты были начаты для замены или предложения альтернативных механизмов хранения для уже установленных систем баз данных с RocksDB:
ArangoDB
ArangoDB добавил RocksDB в свой предыдущий механизм хранения («mmfiles»).[30] Начиная с ArangoDB 3.4, RocksDB будет механизмом хранения по умолчанию в ArangoDB.[31]
Кассандра
Cassandra на RocksDB может значительно улучшить производительность Apache Cassandra (в 3-4 раза быстрее в целом, в 100 раз быстрее в некоторых случаях использования).[нужна цитата ] Команда Instagram в Facebook разработала и выложила в открытый доступ свой код, а также тесты производительности.[32]
MariaDB
MariaDB может использовать механизм хранения MyRocks (разветвленный из RocksDB), начиная с MariaDB 10.2.5 (статус Alpha). [33] и стабильна с MariaDB 10.2.16 в 2018 году.[34]
MongoDB
Проект MongoRocks предоставляет модуль хранения для MongoDB где механизм хранения - RocksDB.[35][36][37]
Связанная программа - Rocks Strata, инструмент, написанный на Идти, который позволяет управлять инкрементными резервными копиями MongoDB, когда RocksDB используется в качестве механизма хранения.[38]
MySQL
Проект MyRocks создает новый механизм хранения на основе RocksDB для MySQL.[39][40] Подробные сведения о MyRocks были представлены на Percona Live 2016.[41]
Встроенный
Следующие системы баз данных и приложения решили использовать RocksDB в качестве встроенного механизма хранения:
BlueStore Ceph
В Ceph's Уровень хранилища BlueStore использует RocksDB для управления метаданными в устройствах OSD.[42]
Apache Flink
Apache Flink использует RocksDB для хранения контрольных точек.[43]
FusionDB
FusionDB[44] использует RocksDB в качестве механизма хранения XML, ключа / значения и JSON.[45]
LogDevice LogsDB
LogsDB от LogDevice построен поверх RocksDB.[46]
Rockset
В Rockset Сервис, который используется для анализа операционных данных, использует RocksDB в качестве механизма хранения.[47]
SSDB
SSDB-камни[48] проект использует RocksDB в качестве механизма хранения для SSDB[49] База данных NoSQL.
TiDB
TiDB[50] проект использует RocksDB в качестве механизма хранения.[51]
Сторонние языковые привязки
Привязки сторонних языков программирования, доступные для RocksDB, включают:
Рекомендации
- ^ «Контрольные показатели производительности». Получено 29 ноября, 2015.
- ^ «Сравнительный анализ семейства leveldb». Получено 10 марта, 2016.
- ^ «Сравнивая LevelDB и RocksDB, возьмите 2». Получено 10 марта, 2016.
- ^ «Сравнение производительности LevelDB, RocksDB, HyperLevelDB и производительности LMDB для InfluxDB». Получено 10 марта, 2016.
- ^ Голан-Гета, Гай; Бортников, Эдуард; Гиллель, Эшар; Кейдар, Идит (21 апреля 2015 г.). «Масштабирование одновременных хранилищ данных с лог-структурой». EuroSys '15 Труды десятой европейской конференции по компьютерным системам. Дои:10.1145/2741948.2741973.
- ^ «Последняя разработка Facebook с открытым исходным кодом: база данных на базе флэш-памяти под названием RocksDB». Получено 10 марта, 2016.
- ^ "Под капотом: создание и открытый исходный код RocksDB". Получено 10 марта, 2016.
- ^ "RocksDB - база данных Facebook теперь с открытым исходным кодом". Получено 10 марта, 2016.
- ^ "Запрос на перенос GitHub". Получено 20 июля, 2017.
- ^ «Apache говорит« нет »библиотекам кода Facebook». Получено 20 июля, 2017.
- ^ «Проблема с GitHub». Получено 20 июля, 2017.
- ^ "Users.md". Получено 1 декабря, 2015.
- ^ "RocksDB на стероидах". Получено 10 марта, 2016.
- ^ «Тестирование Apache Samza: 1,2 миллиона сообщений в секунду на одном узле». Получено 10 марта, 2016.
- ^ «Сделки RocksDB». GitHub. Получено 2016-04-04.
- ^ "Как сделать резервную копию RocksDB?". Получено 2017-07-19.
- ^ «Контрольно-пропускные пункты». Получено 2017-07-19.
- ^ "Семейства колонн в RocksDB". GitHub. Получено 2016-04-04.
- ^ "Фильтры цветения RocksDB". GitHub. Получено 2016-04-04.
- ^ "Поддержка RocksDB TTL". GitHub. Получено 2016-04-04.
- ^ «Универсальное уплотнение». GitHub. Получено 2016-04-04.
- ^ «Оператор слияния RocksDB». GitHub. Получено 2016-04-04.
- ^ "Контекст производительности RocksDB и контекст статистики ввода-вывода". GitHub. Получено 2016-04-04.
- ^ «Пространственное индексирование в RocksDB». Rockdb.org. Получено 2018-07-19.
- ^ "Первая фиксация, где RocksDB расходится с LevelDB". 10 мая 2012 г.. Получено 15 марта, 2016.
- ^ "файл README Rockdb". 30 ноя.2012. Получено 15 марта, 2016.
- ^ "История RocksDB". 24 ноября 2013 г.. Получено 10 марта, 2016.
- ^ Бортакур, Друба (22 ноября 2013 г.). «RocksDB: высокопроизводительное встроенное хранилище ключей и значений для флэш-хранилищ - Data @ Scale». Получено 10 марта, 2016.
... История того, почему мы решили сделать RocksDB ...
- ^ Эдвардс, Джессика (2015-10-29). «Привет, мир: познакомьтесь с CockroachDB, устойчивой базой данных SQL». Новый стек. Получено 2016-07-08.
- ^ «Сравнение новых механизмов хранения RocksDB и MMFiles».
- ^ "RC1 ArangoDB 3.4 - Что нового?".
- ^ "Открытый исходный код 10-кратного сокращения задержки хвоста Apache Cassandra".
- ^ "MyRocks". База знаний MariaDB. Получено 2019-04-28.
- ^ https://mariadb.com/kb/en/mariadb-10216-release-notes/
- ^ "монгодб-партнеры / монго-скалы".
- ^ «Интеграция RocksDB с MongoDB». Получено 19 июля, 2018.
- ^ "MongoDB + RocksDB в Parse". Получено 1 декабря, 2015.
- ^ "facebookgo / rocks-strata".
- ^ "facebook / mysql-5.6".
- ^ «MyRocks: MySQL на RocksDB» (PDF). Получено 29 ноября, 2015.
- ^ "MyRocks Deep Dive". Получено 9 мая, 2016.
- ^ "Устройства хранения - документация Ceph".
- ^ «Документация Apache Flink 1.8: серверные модули состояния». ci.apache.org. Получено 2019-08-11.
- ^ «FusionDB». Развитый двоичный файл.
- ^ «Дизайн и реализация FusionDB» (PDF). XML Прага.
- ^ «LogDevice: распределенное хранилище данных для журналов». Марк Марчуков, Facebook.
- ^ «Как мы используем RocksDB в Rockset». rockset.com. Получено 2019-07-10.
- ^ "ideawu / ssdb-rocks".
- ^ https://ssdb.io
- ^ "pingcap / tidb".
- ^ «TiDB Internal (I) - Хранение данных». Шен Ли.
- ^ "Уорренфолк / Rockdb-Sharp".
- ^ "b1naryth1ef / rocksdb".
- ^ "urbint / rox".
- ^ "leo-project / erocksdb".
- ^ "бочка-дб / эрланг-рокдб".
- ^ "tecbot / gorocksdb".
- ^ "Rocksdb-haskell: привязки Haskell к RocksDB".
- ^ "RocksJava".
- ^ "Rocksdb".
- ^ "iabudiab / ObjectiveRocks".
- ^ "Привязки OCaml для RocksDB".
- ^ "Привязка OCaml RocksDb с использованием ocaml-ctypes".
- ^ "RocksDB - расширение Perl для RocksDB - metacpan.org".
- ^ "Photonios / rocksdb-php".
- ^ "Интерфейс SWI-Prolog для RocksDB".
- ^ "Стефан-Хоф / pyrocksdb".
- ^ "rocksdb-ruby - RubyGems.org - хост вашего драгоценного камня сообщества".
- ^ "spacejam / rust-rocksdb".