Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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, а также:

  • Сделки [16]
  • Резервные копии [17] и снимки [18]
  • Семейства столбцов [19]
  • Фильтры Блума [20]
  • Поддержка времени жизни (TTL) [21]
  • Универсальное уплотнение [22]
  • Операторы слияния [23]
  • Сбор статистики [24]
  • Геопространственная индексация [25]

и другие: Список функций RocksDB, которых нет в LevelDB .

RocksDB не является базой данных SQL (хотя MyRocks объединяет RocksDB с MySQL ). Как и другие хранилища NoSQL и dbm , он не имеет реляционной модели данных и не поддерживает запросы SQL. Кроме того, он не имеет прямой поддержки вторичных индексов, однако пользователь может создавать свои собственные, используя семейства столбцов или внешне. Приложения используют RocksDB как библиотеку, поскольку она не предоставляет серверного интерфейса или интерфейса командной строки.

История [ править ]

RocksDB был создан в Facebook Дхрубой Бортакур [26] [27] в апреле 2012 года как форк LevelDB с первоначальной заявленной целью повышения производительности для серверных рабочих нагрузок. [28] [29]

Интеграция [ править ]

В качестве встраиваемой базы данных RocksDB может использоваться в качестве механизма хранения в более крупной системе управления базами данных (СУБД). Например, CockroachDB использует RocksDB в качестве механизма хранения [30] в основном для транзакционных рабочих нагрузок, в то время как Rockset использует RocksDB в основном для аналитической обработки данных. Это показывает, что RocksDB можно использовать в качестве механизма хранения как для онлайн-обработки транзакций, так и для онлайн-аналитической обработки .

Альтернативный бэкэнд [ править ]

Следующие проекты были начаты для замены или предложения альтернативных механизмов хранения для уже установленных систем баз данных с RocksDB:

ArangoDB [ править ]

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

Кассандра [ править ]

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

MariaDB [ править ]

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

MongoDB [ править ]

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

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

MySQL [ править ]

Проект MyRocks создает новый механизм хранения на основе RocksDB для MySQL . [40] [41] Подробные сведения о MyRocks были представлены на Percona Live 2016. [42]

Встроенный [ править ]

Следующие системы баз данных и приложения решили использовать RocksDB в качестве встроенного механизма хранения:

BlueStore Ceph [ править ]

В Ceph в запоминающем слое BlueStore использует RocksDB для метаданных управления в экранных устройствах. [43]

Apache Flink [ править ]

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

FusionDB [ править ]

FusionDB [45] использует RocksDB в качестве механизма хранения XML, ключа / значения и JSON. [46]

LogDevice LogsDB [ править ]

LogsDB от LogDevice построен поверх RocksDB. [47]

Rockset [ править ]

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

SSDB [ править ]

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

TiDB [ править ]

Проект TiDB [51] использует RocksDB в качестве механизма хранения. [52]

Сторонние языковые привязки [ править ]

Привязки сторонних языков программирования, доступные для RocksDB, включают:

  • C # [53]
  • D [54]
  • Эликсир [55]
  • Эрланг [56] [57]
  • Вперед [58]
  • Хаскелл [59]
  • Java [60]
  • Node.js [61]
  • Objective-C и Swift [62]
  • OCaml [63] [64]
  • Perl [65]
  • PHP [66]
  • Пролог [67]
  • Python [68]
  • Рубин [69]
  • Ржавчина [70]

Ссылки [ править ]

  1. ^ "RocksDB 6.14.6" . 1 декабря 2020 . Дата обращения 17 декабря 2020 .
  2. ^ «Тесты производительности» . Проверено 29 ноября 2015 года .
  3. ^ "Тестирование семейства leveldb" . Проверено 10 марта 2016 года .
  4. ^ «Сравнивая LevelDB и RocksDB, возьмите 2» . Проверено 10 марта 2016 года .
  5. ^ «Сравнительный анализ LevelDB против RocksDB против HyperLevelDB против производительности LMDB для InfluxDB» . Проверено 10 марта 2016 года .
  6. ^ Golan-Gueta, Гай; Бортников, Эдуард; Гиллель, Эшар; Кейдар, Идит (21 апреля 2015 г.). «Масштабирование одновременных хранилищ данных с лог-структурой». EuroSys '15 Труды десятой европейской конференции по компьютерным системам . DOI : 10.1145 / 2741948.2741973 .
  7. ^ «Последняя разработка Facebook с открытым исходным кодом: база данных на базе флэш-памяти под названием RocksDB» . Проверено 10 марта 2016 года .
  8. ^ "Под капотом: Создание и открытый исходный код RocksDB" . Проверено 10 марта 2016 года .
  9. ^ «RocksDB - база данных Facebook теперь с открытым исходным кодом» . Проверено 10 марта 2016 года .
  10. ^ "Запрос на включение GitHub" . Проверено 20 июля 2017 года .
  11. ^ «Apache говорит« нет »библиотекам кода Facebook» . Проверено 20 июля 2017 года .
  12. ^ "Проблема с GitHub" . Проверено 20 июля 2017 года .
  13. ^ "Users.md" . Проверено 1 декабря 2015 года .
  14. ^ «RocksDB на стероидах» . Проверено 10 марта 2016 года .
  15. ^ «Тестирование Apache Samza: 1,2 миллиона сообщений в секунду на одном узле» . Проверено 10 марта 2016 года .
  16. ^ "Сделки RocksDB" . GitHub . Проверено 4 апреля 2016 .
  17. ^ "Как сделать резервную копию RocksDB?" . Проверено 19 июля 2017 .
  18. ^ «Контрольно-пропускные пункты» . Проверено 19 июля 2017 .
  19. ^ "Семейства столбцов в RocksDB" . GitHub . Проверено 4 апреля 2016 .
  20. ^ "Фильтры цветения RocksDB" . GitHub . Проверено 4 апреля 2016 .
  21. ^ "Поддержка RocksDB TTL" . GitHub . Проверено 4 апреля 2016 .
  22. ^ «Универсальное уплотнение» . GitHub . Проверено 4 апреля 2016 .
  23. ^ "Оператор слияния RocksDB" . GitHub . Проверено 4 апреля 2016 .
  24. ^ "Контекст производительности RocksDB и контекст статистики ввода-вывода" . GitHub . Проверено 4 апреля 2016 .
  25. ^ «Пространственная индексация в RocksDB» . Rockdb.org . Проверено 19 июля 2018 .
  26. ^ «Первая фиксация, где RocksDB расходится с LevelDB» . 10 мая 2012 . Проверено 15 марта 2016 года .
  27. ^ "README файл Rockdb" . 30 ноября 2012 . Проверено 15 марта 2016 года .
  28. ^ "История RocksDB" . 24 ноября 2013 . Проверено 10 марта 2016 года .
  29. ^ Borthakur, Dhruba (22 ноября 2013). «RocksDB: высокопроизводительное встроенное хранилище ключей и значений для флэш-хранилищ - Data @ Scale» . Проверено 10 марта 2016 года . ... История того, почему мы решили сделать RocksDB ...
  30. ^ Эдвардс, Джессика (2015-10-29). «Привет, мир: познакомьтесь с CockroachDB, устойчивой базой данных SQL» . Новый стек . Проверено 8 июля 2016 .
  31. ^ «Сравнение новых механизмов хранения RocksDB и MMFiles» .
  32. ^ "RC1 ArangoDB 3.4 - Что нового?" .
  33. ^ «Открытый исходный код 10-кратного сокращения задержки хвоста Apache Cassandra» .
  34. ^ "MyRocks" . База знаний MariaDB . Проверено 28 апреля 2019 .
  35. ^ https://mariadb.com/kb/en/mariadb-10216-release-notes/
  36. ^ "монгодб-партнеры / монго-скалы" .
  37. ^ «Интеграция RocksDB с MongoDB» . Проверено 19 июля 2018 года .
  38. ^ «MongoDB + RocksDB при разборе» . Проверено 1 декабря 2015 года .
  39. ^ "facebookgo / rocks-strata" .
  40. ^ "facebook / mysql-5.6" .
  41. ^ «MyRocks: MySQL на RocksDB» (PDF) . Проверено 29 ноября 2015 года .
  42. ^ "MyRocks Deep Dive" . Проверено 9 мая, 2016 .
  43. ^ «Устройства хранения - документация Ceph» .
  44. ^ «Apache Flink 1.8 Documentation: State Backends» . ci.apache.org . Проверено 11 августа 2019 .
  45. ^ "FusionDB" . Развитый двоичный файл.
  46. ^ «Дизайн и реализация FusionDB» (PDF) . XML Прага.
  47. ^ «LogDevice: распределенное хранилище данных для журналов» . Марк Марчуков, Facebook.
  48. ^ «Как мы используем RocksDB в Rockset» . rockset.com . Проверено 10 июля 2019 .
  49. ^ "ideawu / ssdb-rocks" .
  50. ^ https://ssdb.io
  51. ^ "pingcap / tidb" .
  52. ^ «TiDB Internal (I) - Хранение данных» . Шен Ли.
  53. ^ "Уорренфолк / RocksDB-Sharp" .
  54. ^ "b1naryth1ef / rocksdb" .
  55. ^ "urbint / rox" .
  56. ^ "leo-project / erocksdb" .
  57. ^ "бочка-дб / эрланг-рокдб" .
  58. ^ "tecbot / gorocksdb" .
  59. ^ «Rocksdb-haskell: привязки Haskell к RocksDB» .
  60. ^ "RocksJava" .
  61. ^ "RocksDB" .
  62. ^ "iabudiab / ObjectiveRocks" .
  63. ^ "Привязки OCaml для RocksDB" .
  64. ^ «Привязка OCaml RocksDb с использованием ocaml-ctypes» .
  65. ^ "RocksDB - расширение Perl для RocksDB - metacpan.org" .
  66. ^ "Photonios / rocksdb-php" .
  67. ^ "Интерфейс SWI-Prolog для RocksDB" .
  68. ^ "Стефан-Хоф / pyrocksdb" .
  69. ^ "Rocksdb-ruby - RubyGems.org - хост вашего сообщества gem" .
  70. ^ "spacejam / rust-rocksdb" .

Внешние ссылки [ править ]

  • Официальный веб-сайт