RocksDB

Встроенная база данных «ключ-значение»
RocksDB
Оригинальный автор(ы)Дхруба Бортхакур
Разработчик(и)Meta Platforms (ранее Facebook, Inc.)
Первоначальный выпускМай 2012 ; 12 лет назад ( 2012-05 )
Стабильный релиз
9.10.0 [1]  / 12 декабря 2024 г.
Репозиторий
  • github.com/facebook/rocksdb
Написано вС++
Операционная система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

ArangoDB добавил RocksDB к своему предыдущему механизму хранения данных («mmfiles»). [32] RocksDB является механизмом хранения данных по умолчанию, начиная с ArangoDB 3.4. [33]

Кассандра

Cassandra на RocksDB может значительно улучшить производительность Apache Cassandra (в целом в 3–4 раза быстрее, в 100 раз быстрее в некоторых случаях использования). [ необходима цитата ] Команда Instagram в Facebook разработала и открыла свой код вместе с результатами тестов производительности. [34]

MariaDB

MariaDB может использовать движок хранения MyRocks (который является ответвлением RocksDB) начиная с версии MariaDB 10.2.5 (статус альфа) [35] и стабильную версию с версии MariaDB 10.2.16 в 2018 году. [36]

MongoDB

Проект MongoRocks предоставляет модуль хранения для MongoDB , где механизмом хранения является RocksDB. [37] [38] [39]

Связанная программа — Rocks Strata, инструмент, написанный на Go , который позволяет управлять инкрементными резервными копиями MongoDB, когда RocksDB используется в качестве хранилища. [40]

MySQL

Проект 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

Уровень хранения BlueStore Ceph использует RocksDB для управления метаданными в устройствах OSD. [46]

Apache Flink использует RocksDB для хранения контрольных точек. [47]

FusionDB

FusionDB [48] использует RocksDB в качестве своего механизма хранения для XML, Key/Value и JSON. [49]

LogDeviceБД журналов

LogsDB от LogDevice построена на базе RocksDB. [50]

Кафка Стримс

Kafka Streams использует RocksDB для хранения состояний. [51]

Манхэттен

Manhattan Distributed Key-Value Store использует RocksDB в качестве основного движка для хранения данных Twitter с 2018 года. [52]

Роксет

Служба Rockset [53] , используемая для оперативной аналитики данных, использует RocksDB в качестве своего механизма хранения. [54]

SSDB

Проект ssdb-rocks [55] использует RocksDB в качестве хранилища для базы данных SSDB [56] NoSQL.

ТиДБ

Проект TiDB [57] использует RocksDB в качестве своего хранилища. [58]

ЮгабайтДБ

База данных YugabyteDB использует модифицированную версию RocksDB как часть своего механизма хранения DocDB. [59]

Привязки сторонних языков

Для RocksDB доступны следующие привязки к сторонним языкам программирования:

Ссылки

  1. ^ . 2 января 2025 г. https://github.com/facebook/rocksdb/releases/tag/v9.10.0 . Получено 2 января 2025 г. . {{cite web}}: Отсутствует или пусто |title=( помощь )
  2. ^ "Performance Benchmarks". GitHub . Получено 29 ноября 2015 г.
  3. ^ "Benchmarking the leveldb family". 7 июля 2014 г. Получено 10 марта 2016 г.
  4. ^ "Сравнение LevelDB и RocksDB, дубль 2". 27 апреля 2015 г. Получено 10 марта 2016 г.
  5. ^ "Сравнительный анализ производительности LevelDB, RocksDB, HyperLevelDB и LMDB для InfluxDB". 20 июня 2014 г. Получено 10 марта 2016 г.
  6. ^ Голан-Гуэта, Гай; Бортников, Эдвард; Хиллель, Эшар; Кейдар, Идит (21 апреля 2015 г.). «Масштабирование параллельных журнально-структурированных хранилищ данных». Труды Десятой Европейской конференции по компьютерным системам . С.  1– 14. doi :10.1145/2741948.2741973. ISBN 9781450332385. S2CID  5849146.
  7. ^ "Последняя попытка Facebook с открытым исходным кодом: база данных на основе флэш-памяти RocksDB". 21 ноября 2013 г. Архивировано из оригинала 24 февраля 2020 г. Получено 10 марта 2016 г.
  8. ^ "Под капотом: Создание и открытый исходный код RocksDB". Facebook . Получено 10 марта 2016 г. .
  9. ^ "RocksDB — база данных Facebook теперь с открытым исходным кодом" . Получено 10 марта 2016 г.
  10. ^ "GitHub pull request". GitHub . Получено 20 июля 2017 г. .
  11. ^ "Apache говорит „нет“ библиотекам кода Facebook". The Register . Получено 20 июля 2017 г. .
  12. ^ "Проблема GitHub". GitHub . Получено 20 июля 2017 г. .
  13. ^ "Users.md". GitHub . Получено 1 декабря 2015 г. .
  14. ^ "RocksDB на стероидах" . Получено 10 марта 2016 г.
  15. ^ "Тестирование Apache Samza: 1,2 миллиона сообщений в секунду на одном узле" . Получено 10 марта 2016 г.
  16. ^ "Транзакции RocksDB". GitHub . Получено 2016-04-04 .
  17. ^ "Как сделать резервную копию RocksDB?". GitHub . Получено 2017-07-19 .
  18. ^ "Контрольные точки". GitHub . Получено 2017-07-19 .
  19. ^ "Семейства столбцов в RocksDB". GitHub . Получено 2016-04-04 .
  20. ^ "Фильтры Блума RocksDB". GitHub . Получено 2016-04-04 .
  21. ^ "Поддержка RocksDB TTL". GitHub . Получено 2016-04-04 .
  22. ^ "Универсальное уплотнение". GitHub . Получено 2016-04-04 .
  23. ^ "Оператор слияния RocksDB". GitHub . Получено 2016-04-04 .
  24. ^ "Контекст производительности RocksDB и контекст статистики ввода-вывода". GitHub . Получено 2016-04-04 .
  25. ^ "Пространственное индексирование в RocksDB". rocksdb.org . Получено 2018-07-19 .
  26. ^ "Функции, отсутствующие в LevelDB". GitHub .
  27. ^ "Первый коммит, в котором RocksDB расходится с LevelDB". GitHub . 10 мая 2012 г. Получено 15 марта 2016 г.
  28. ^ "Rocksdb readme file". GitHub . 30 ноября 2012 г. Получено 15 марта 2016 г.
  29. ^ "История RocksDB". 24 ноября 2013 г. Получено 10 марта 2016 г.
  30. ^ Borthakur, Dhruba (22 ноября 2013 г.). "RocksDB: Высокопроизводительное встроенное хранилище ключей и значений для флэш-накопителей - Data@Scale". YouTube . Получено 10 марта 2016 г. . ... История о том, почему мы решили использовать RocksDB ...
  31. ^ Дхут, Сандип (27.06.2019). «Как мы используем RocksDB в Rockset». rockset.com . Получено 01.03.2023 .
  32. ^ "Сравнение новых хранилищ RocksDB и MMFiles". ArangoDB .
  33. ^ «RC1 ArangoDB 3.4 — Что нового?». 6 сентября 2018 г.
  34. ^ "Открытый исходный код для 10-кратного сокращения задержки Apache Cassandra tail". 5 марта 2018 г.
  35. ^ "MyRocks". База знаний MariaDB . Получено 28.04.2019 .
  36. ^ "MariaDB 10.2.16 Release Notes". База знаний MariaDB .
  37. ^ "mongodb-partners/mongo-rocks". GitHub . 29 октября 2021 г.
  38. ^ "Интеграция RocksDB с MongoDB" . Получено 19 июля 2018 г.
  39. ^ "MongoDB + RocksDB at Parse" . Получено 1 декабря 2015 г. .
  40. ^ "facebookgo/rocks-strata". GitHub . 31 октября 2021 г.
  41. ^ "facebook/mysql-5.6". GitHub . 2 ноября 2021 г.
  42. ^ "MyRocks: MySQL на RocksDB" (PDF) . Получено 29 ноября 2015 г.
  43. ^ "MyRocks Deep Dive". 19 апреля 2016 г. Получено 9 мая 2016 г.
  44. ^ Пеллиссье Танон, Томас (12 июля 2024 г.). «Oxigraph» – через GitHub.
  45. ^ abcde "unum-cloud/ukv". Гитхаб . 28 декабря 2022 г.
  46. ^ "Устройства хранения данных -- Документация Ceph". Архивировано из оригинала 2020-02-24 . Получено 2017-11-08 .
  47. ^ "Apache Flink 1.8 Documentation: State Backends". ci.apache.org . Получено 2019-08-11 .
  48. ^ "FusionDB". Эволюционный двоичный файл.
  49. ^ «Проектирование и реализация FusionDB» (PDF) . XML Прага.
  50. ^ "LogDevice: распределенное хранилище данных для журналов". Марк Марчуков, Facebook. 31 августа 2017 г.
  51. ^ "Настройка потокового приложения". kafka.apache.org . Получено 2024-03-11 .
  52. ^ «Внедрение RocksDB в Манхэттене». Twitter . 28 декабря 2022 г.
  53. ^ "Rockset: База данных поиска и аналитики". rockset.com .
  54. ^ "Как мы используем RocksDB в Rockset". rockset.com . Получено 10 июля 2019 г. .
  55. ^ "ideawu/ssdb-rocks". GitHub . 21 августа 2021 г.
  56. ^ "Главная". ID-2Sbo .
  57. ^ "pingcap/tidb". Гитхаб . 4 ноября 2021 г.
  58. ^ «Внутренний TiDB (I) - Хранение данных» . Шен Ли. 11 июля 2017 г.
  59. ^ «Как мы построили высокопроизводительное хранилище документов на RocksDB?». 20 февраля 2019 г.
  60. ^ "warrenfalk/rocksdb-sharp". GitHub . 28 сентября 2021 г.
  61. ^ "Привязки RocksDB для CHICKEN Scheme 5". wiki.call-cc.org . Получено 2024-07-13 .
  62. ^ "b1naryth1ef/rocksdb". GitHub . 22 октября 2019 г.
  63. ^ "urbint/rox". GitHub . Сентябрь 2021 г.
  64. ^ "leo-project/erocksdb". GitHub . Сентябрь 2021 г.
  65. ^ "barrel-db / erlang-rocksdb · GitLab". GitLab .
  66. ^ "tecbot/gorocksdb". GitHub . 29 октября 2021 г.
  67. ^ "rocksdb-haskell". Взлом .
  68. ^ "RocksJava". GitHub .
  69. ^ "RocksDB-Android". GitHub .
  70. ^ "RocksDB Kotlin Multiplatform". GitHub .
  71. ^ "rocksdb". 25 марта 2022 г.
  72. ^ "rocksdb". GitHub .
  73. ^ "iabudiab/ObjectiveRocks". GitHub . 2 августа 2021 г.
  74. ^ "OCaml bindings for RocksDB". GitHub . 8 октября 2021 г.
  75. ^ "Связывание OCaml RocksDb с использованием ocaml-ctypes". GitHub . 28 сентября 2020 г.
  76. ^ "RocksDB". MetaCPAN .
  77. ^ "Photonios/rocksdb-php". GitHub . 11 августа 2021 г.
  78. ^ "Пакет "rocksdb" для SWI-Prolog". www.swi-prolog.org .
  79. ^ "stephan-hof/pyrocksdb". GitHub . 27 октября 2021 г.
  80. ^ "rocksdb-ruby | RubyGems.org | ваш общественный хост gem". rubygems.org .
  81. ^ "rust-rocksdb/rust-rocksdb". GitHub . 11 июля 2024 г.
  • Официальный сайт
Взято с "https://en.wikipedia.org/w/index.php?title=RocksDB&oldid=1269372673"