Оригинальный автор(ы) | Дхруба Бортхакур |
---|---|
Разработчик(и) | Meta Platforms (ранее Facebook, Inc.) |
Первоначальный выпуск | Май 2012 ( 2012-05 ) |
Стабильный релиз | 9.10.0 [1] / 12 декабря 2024 г. |
Репозиторий |
|
Написано в | С++ |
Операционная система | Windows , Mac OS , Linux , FreeBSD , OpenBSD , Solaris , AIX |
Платформа | Кроссплатформенный |
Тип | Встроенная база данных |
Лицензия | Apache 2.0 или GPL 2 |
Веб-сайт | rocksdb.org |
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] и LinkedIn . [15]
RocksDB, как и LevelDB , хранит ключи и значения в произвольных массивах байтов, а данные сортируются побайтно по ключу или с помощью пользовательского компаратора.
RocksDB предоставляет все функции LevelDB, а также:
и другие. [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] RocksDB является механизмом хранения данных по умолчанию, начиная с ArangoDB 3.4. [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]
Проект MyRocks создал новый движок хранения данных на базе RocksDB для MySQL . [41] [42] Подробная информация о MyRocks была представлена на Percona Live 2016. [43]
Oxigraph [44] — графовая база данных , реализующая стандарт SPARQL , основанная на RocksDB.
Проект UKV [45] позволяет пользователям использовать RocksDB наравне с LevelDB в качестве базового хранилища ключей и значений . Он представляет собой общую абстракцию для операций создания, чтения, обновления и удаления (CRUD), общих для каждого механизма хранения. Он дополняет ее структурированными привязками для нескольких языков высокого уровня, включая Python , Java и Go .
Следующие системы баз данных и приложения решили использовать RocksDB в качестве встроенного механизма хранения данных:
Уровень хранения BlueStore Ceph использует RocksDB для управления метаданными в устройствах OSD. [46]
Apache Flink использует RocksDB для хранения контрольных точек. [47]
FusionDB [48] использует RocksDB в качестве своего механизма хранения для XML, Key/Value и JSON. [49]
LogsDB от LogDevice построена на базе RocksDB. [50]
Kafka Streams использует RocksDB для хранения состояний. [51]
Manhattan Distributed Key-Value Store использует RocksDB в качестве основного движка для хранения данных Twitter с 2018 года. [52]
Служба Rockset [53] , используемая для оперативной аналитики данных, использует RocksDB в качестве своего механизма хранения. [54]
Проект ssdb-rocks [55] использует RocksDB в качестве хранилища для базы данных SSDB [56] NoSQL.
Проект TiDB [57] использует RocksDB в качестве своего хранилища. [58]
База данных YugabyteDB использует модифицированную версию RocksDB как часть своего механизма хранения DocDB. [59]
Для RocksDB доступны следующие привязки к сторонним языкам программирования:
{{cite web}}
: Отсутствует или пусто |title=
( помощь )... История о том, почему мы решили использовать RocksDB ...