РоксДБ
![]() | |
Оригинальный автор(ы) | Дхруба Бортакур |
---|---|
Разработчик(и) | Метаплатформы (было Facebook, Inc.) |
Первоначальный выпуск | май 2012 г |
Стабильная версия | 9.4.0 [1] ![]() |
Репозиторий | |
Написано в | С++ |
Операционная система | Windows , macOS , Linux , FreeBSD , OpenBSD , Solaris , AIX |
Платформа | Кросс-платформенный |
Тип | Встроенная база данных |
Лицензия | Апач 2.0 или GPL 2 |
Веб-сайт | RockDB |
RocksDB — это высокая производительность [2] [3] [4] [5] [6] встроенная база данных для данных «ключ-значение» . Это ответвление LevelDB от Google, оптимизированное для использования многоядерных процессоров (ЦП) и эффективного использования быстрых хранилищ, таких как твердотельные накопители (SSD), для вводом/выводом (I/O) рабочих нагрузок, связанных с . Он основан на структуре данных дерева слияния (LSM-дерева) с журнальной структурой. Он написан на C++ и предоставляет официальные языковые привязки для C++ , C и Java . Существует множество сторонних языковых привязок . RocksDB — это бесплатное программное обеспечение с открытым исходным кодом , первоначально выпущенное под лицензией BSD с тремя пунктами . [7] [8] [9] Однако в июле 2017 года проект был переведен на двойную лицензию Apache 2.0 и лицензию GPLv2 . [10] Это изменение помогло его принятию в проектах Apache Software Foundation после внесения в черный список предыдущей статьи лицензии BSD+Patents. [11] [12]
RocksDB используется в производственных системах на различных веб- предприятиях. [13] включая Facebook , Yahoo! , [14] и Линкедин . [15]
Функции
[ редактировать ]RocksDB, как и LevelDB , хранит ключи и значения в произвольных массивах байтов, а данные сортируются побайтово по ключу или с помощью специального компаратора.
RocksDB предоставляет все функции LevelDB, а также:
- Транзакции [16]
- Резервные копии [17] и снимки [18]
- Семейства колонн [19]
- Фильтры Блума [20]
- Поддержка «Время жить» (TTL) [21]
- Универсальное уплотнение [22]
- Операторы слияния [23]
- Сбор статистики [24]
- Геопространственная индексация [25]
и другие. [26]
RocksDB не является базой данных SQL (хотя MyRocks сочетает в себе RocksDB с MySQL ). Как и другие хранилища NoSQL и dbm , он не имеет реляционной модели данных и не поддерживает запросы SQL. Кроме того, он не имеет прямой поддержки вторичных индексов, однако пользователь может создавать свои собственные внутренние индексы с использованием семейств столбцов или внешние. Приложения используют RocksDB в качестве библиотеки , поскольку она не предоставляет сервера или интерфейса командной строки .
История
[ редактировать ]RocksDB был создан на Facebook Дхрубой Бортакуром. [27] [28] в апреле 2012 года как ответвление LevelDB с первоначально заявленной целью повышения производительности серверных рабочих нагрузок. [29] [30]
Интеграция
[ редактировать ]В качестве встраиваемой базы данных RocksDB может использоваться в качестве механизма хранения в более крупной системе управления базами данных (СУБД). Например, Rockset использует RocksDB. [31] в основном для аналитической обработки данных.
Альтернативный бэкэнд
[ редактировать ]Следующие проекты были начаты для замены или предложения альтернативных механизмов хранения для уже существующих систем баз данных с RocksDB:
АрангоДБ
[ редактировать ]ArangoDB добавила RocksDB к своему предыдущему механизму хранения («mmfiles»). [32] Начиная с ArangoDB 3.4, RocksDB будет механизмом хранения по умолчанию в ArangoDB. [33]
Кассандра
[ редактировать ]Cassandra на RocksDB может значительно повысить производительность Apache Cassandra (в целом в 3–4 раза быстрее, в некоторых случаях — в 100 раз быстрее). [ нужна ссылка ] Команда Instagram в Facebook разработала и открыла исходный код своего кода, а также результаты тестов производительности. [34]
МарияДБ
[ редактировать ]MariaDB может использовать механизм хранения MyRocks (который является ответвлением RocksDB), начиная с версии MariaDB 10.2.5 (альфа-статус). [35] и стабильна с версии MariaDB 10.2.16 в 2018 году. [36]
МонгоБД
[ редактировать ]Проект MongoRocks предоставляет модуль хранения для MongoDB, в котором механизмом хранения является RocksDB. [37] [38] [39]
Связанная программа — Rocks Strata, инструмент, написанный на Go , который позволяет управлять инкрементными резервными копиями MongoDB, когда RocksDB используется в качестве механизма хранения. [40]
MySQL
[ редактировать ]Проект MyRocks создал новый механизм хранения данных для MySQL на базе RocksDB . [41] [42] Подробная информация о MyRocks была представлена на Percona Live 2016. [43]
Оксиграф
[ редактировать ]Оксиграф [44] это графовая база данных , реализующая стандарт SPARQL , основанная на RocksDB.
УКВ
[ редактировать ]УКВ [45] Проект позволяет пользователям использовать RocksDB наравне с LevelDB в качестве базового хранилища «ключ-значение» . Он представляет собой общую абстракцию для операций создания, чтения, обновления и удаления (CRUD), общих для каждого механизма хранения. Он дополняет его структурированными привязками для нескольких языков высокого уровня, включая Python , Java и Go .
Встроенный
[ редактировать ]Следующие системы баз данных и приложения выбрали RocksDB в качестве встроенного механизма хранения:
BlueStore Ceph
[ редактировать ]использует Уровень хранения BlueStore Ceph RocksDB для управления метаданными в устройствах OSD. [46]
Апач Флинк
[ редактировать ]Apache Flink использует RocksDB для хранения контрольных точек. [47]
FusionDB
[ редактировать ]FusionDB [48] использует RocksDB в качестве механизма хранения XML, ключей/значений и JSON. [49]
LogDevice LogsDB
[ редактировать ]LogDevice's LogsDB построен на основе RocksDB. [50]
Кафка Стримы
[ редактировать ]Kafka Streams использует RocksDB для своих хранилищ состояний. [51]
Манхэттен
[ редактировать ]Манхэттенское распределенное хранилище ключей и значений использует RocksDB в качестве основного механизма для хранения данных Twitter с 2018 года. [52]
Роксет
[ редактировать ]Роксет [53] Сервис, используемый для оперативного анализа данных, использует RocksDB в качестве механизма хранения. [54]
SSDB
[ редактировать ]ssdb-качается [55] проект использует RocksDB в качестве механизма хранения данных SSDB. [56] База данных NoSQL.
ТиБД
[ редактировать ]ТиБД [57] проект использует RocksDB в качестве механизма хранения. [58]
ЮгабайтДБ
[ редактировать ]ЮгабайтДБ [59] база данных использует модифицированную версию RocksDB как часть своего механизма хранения DocDB.
Сторонние языковые привязки
[ редактировать ]Привязки сторонних языков программирования, доступные для RocksDB, включают:
Ссылки
[ редактировать ]- ^ «Выпуск RocksDB 9.4.0 · facebook/rocksdb · GitHub» . 23 июня 2024 г. Проверено 23 июня 2024 г.
- ^ «Эталоны производительности» . Гитхаб . Проверено 29 ноября 2015 г.
- ^ «Сравнительный анализ семейства leveldb» . 7 июля 2014 года . Проверено 10 марта 2016 г.
- ^ «Сравнивая LevelDB и RocksDB, дубль 2» . 27 апреля 2015 года . Проверено 10 марта 2016 г.
- ^ «Сравнение производительности LevelDB, RocksDB, HyperLevelDB и LMDB для InfluxDB» . 20 июня 2014 года . Проверено 10 марта 2016 г.
- ^ Голан-Гета, Гай; Бортников, Эдвард; Гилель, Эшар; Кейдар, Идит (21 апреля 2015 г.). «Масштабирование параллельных хранилищ данных с журнальной структурой». Материалы Десятой Европейской конференции по компьютерным системам . стр. 1–14. дои : 10.1145/2741948.2741973 . ISBN 9781450332385 . S2CID 5849146 .
- ^ «Последняя разработка Facebook с открытым исходным кодом: база данных на флэш-памяти под названием RocksDB» . 21 ноября 2013 г. Архивировано из оригинала 24 февраля 2020 г. . Проверено 10 марта 2016 г.
- ^ «Под капотом: создание и открытие RocksDB» . Фейсбук . Проверено 10 марта 2016 г.
- ^ «RocksDB — база данных Facebook теперь с открытым исходным кодом» . Проверено 10 марта 2016 г.
- ^ «Запрос на извлечение GitHub» . Гитхаб . Проверено 20 июля 2017 г.
- ^ «Apache говорит «нет» библиотекам кода Facebook» . Регистр . Проверено 20 июля 2017 г.
- ^ «Проблема с GitHub» . Гитхаб . Проверено 20 июля 2017 г.
- ^ «Пользователи.md» . Гитхаб . Проверено 1 декабря 2015 г.
- ^ «RocksDB на стероидах» . Проверено 10 марта 2016 г.
- ^ «Сравнительный анализ Apache Samza: 1,2 миллиона сообщений в секунду на одном узле» . Проверено 10 марта 2016 г.
- ^ «Транзакции RocksDB» . Гитхаб . Проверено 4 апреля 2016 г.
- ^ «Как сделать резервную копию RocksDB?» . Гитхаб . Проверено 19 июля 2017 г.
- ^ «КПП» . Гитхаб . Проверено 19 июля 2017 г.
- ^ «Семейства столбцов в RocksDB» . Гитхаб . Проверено 4 апреля 2016 г.
- ^ «Фильтры Блума RocksDB» . Гитхаб . Проверено 4 апреля 2016 г.
- ^ «Поддержка RocksDB TTL» . Гитхаб . Проверено 4 апреля 2016 г.
- ^ «Универсальное уплотнение» . Гитхаб . Проверено 4 апреля 2016 г.
- ^ «Оператор слияния RocksDB» . Гитхаб . Проверено 4 апреля 2016 г.
- ^ «Контекст производительности RocksDB и контекст статистики ввода-вывода» . Гитхаб . Проверено 4 апреля 2016 г.
- ^ «Пространственное индексирование в RocksDB» . rockdb.org . Проверено 19 июля 2018 г.
- ^ «Функции, которых нет в LevelDB» . Гитхаб .
- ^ «Первый коммит, в котором RocksDB отличается от LevelDB» . Гитхаб . 10 мая 2012 года . Проверено 15 марта 2016 г.
- ^ «Файл Readme RocksDB» . Гитхаб . 30 ноября 2012 г. Проверено 15 марта 2016 г.
- ^ «История RocksDB» . 24 ноября 2013 года . Проверено 10 марта 2016 г.
- ^ Бортакур, Дхруба (22 ноября 2013 г.). «RocksDB: высокопроизводительное встроенное хранилище значений ключей для флэш-хранилищ — Data@Scale» . Ютуб . Проверено 10 марта 2016 г.
... История о том, почему мы решили сделать RocksDB...
- ^ Дхут, Сандип (27 июня 2019 г.). «Как мы используем RocksDB в Rockset» . Rocket.com . Проверено 01 марта 2023 г.
- ^ «Сравнение новых механизмов хранения RocksDB и MMFiles» . АрангоДБ .
- ^ «RC1 ArangoDB 3.4 — Что нового?» . 6 сентября 2018 г.
- ^ «Открытие исходного кода для десятикратного сокращения задержки хвоста Apache Cassandra» . 5 марта 2018 г.
- ^ «МойРокс» . База знаний MariaDB . Проверено 28 апреля 2019 г.
- ^ «Примечания к выпуску MariaDB 10.2.16» . База знаний MariaDB .
- ^ "mongodb-partners/mongo-rocks" . Гитхаб . 29 октября 2021 г.
- ^ «Интеграция RocksDB с MongoDB» . Проверено 19 июля 2018 г.
- ^ «MongoDB + RocksDB при разборе» . Проверено 1 декабря 2015 г.
- ^ «facebookgo/rocks-strata» . Гитхаб . 31 октября 2021 г.
- ^ «Фейсбук/mysql-5.6» . Гитхаб . 2 ноября 2021 г.
- ^ «MyRocks: MySQL на RocksDB» (PDF) . Проверено 29 ноября 2015 г.
- ^ «Глубокое погружение в MyRocks» . 19 апреля 2016 года . Проверено 9 мая 2016 г.
- ^ Пеллиссье Танон, Томас (12 июля 2024 г.). «Оксиграф» – через GitHub.
- ^ Jump up to: а б с д и "unum-cloud/ukv" . Гитхаб . 28 декабря 2022 г.
- ^ «Устройства хранения данных — Документация Ceph» . Архивировано из оригинала 24 февраля 2020 г. Проверено 8 ноября 2017 г.
- ^ «Документация Apache Flink 1.8: серверные части состояния» . ci.apache.org . Проверено 11 августа 2019 г.
- ^ «ФьюжнДБ» . Развитый двоичный файл.
- ^ «Проектирование и реализация FusionDB» (PDF) . XML Прага.
- ^ «LogDevice: распределенное хранилище данных для журналов» . Марк Марчуков, Facebook. 31 августа 2017 г.
- ^ «Настройка приложения потоков» . kafka.apache.org . Проверено 11 марта 2024 г.
- ^ «Внедрение RocksDB на Манхэттене» . Твиттер . 28 декабря 2022 г.
- ^ «Rockset: База данных поиска и аналитики» . Rocket.com .
- ^ «Как мы используем RocksDB в Rockset» . Rocket.com . Проверено 10 июля 2019 г.
- ^ "ideawu/ssdb-rocks" . Гитхаб . 21 августа 2021 г.
- ^ "Дом" . ИД-2Сбо .
- ^ "пингкап/тидб" . Гитхаб . 4 ноября 2021 г.
- ^ «TiDB Internal (I) — Хранение данных» . Шен Ли. 11 июля 2017 г.
- ^ «Как мы создали высокопроизводительное хранилище документов на RocksDB?» . 20 февраля 2019 г.
- ^ «Уорренфальк/rocksdb-sharp» . Гитхаб . 28 сентября 2021 г.
- ^ «Привязки RocksDB для схемы CHICKEN 5» . wiki.call-cc.org . Проверено 13 июля 2024 г.
- ^ "b1naryth1ef/rocksdb" . Гитхаб . 22 октября 2019 г.
- ^ "урбинт/рокс" . Гитхаб . Сентябрь 2021 г.
- ^ «лео-проект/erocksdb» . Гитхаб . Сентябрь 2021 г.
- ^ "barrel-db / erlang-rocksdb · GitLab" . ГитЛаб .
- ^ "tecbot/gorocksdb" . Гитхаб . 29 октября 2021 г.
- ^ "rocksdb-хаскелл" . Хакадж .
- ^ «РоксЯва» . Гитхаб .
- ^ "роксдб" . 25 марта 2022 г.
- ^ "роксдб" . Гитхаб .
- ^ «Иабудиаб/ObjectiveRocks» . Гитхаб . 2 августа 2021 г.
- ^ «Привязки OCaml для RocksDB» . Гитхаб . 8 октября 2021 г.
- ^ «Привязка OCaml RocksDb с использованием ocaml-ctypes» . Гитхаб . 28 сентября 2020 г.
- ^ «РоксДБ» . МетаCPAN .
- ^ «Фотониос/rocksdb-php» . Гитхаб . 11 августа 2021 г.
- ^ « Пакет «rocksdb» для SWI-Prolog» . www.swi-prolog.org .
- ^ "штефан-хоф/pyrocksdb" . Гитхаб . 27 октября 2021 г.
- ^ «rocksdb-ruby | RubyGems.org | хост драгоценных камней вашего сообщества» . Rubygems.org .
- ^ "rust-rocksdb/rust-rocksdb" . Гитхаб . 11 июля 2024 г.