RocksDB

RocksDB 是一个用于键值数据的高性能嵌入式数据库 [2] [3] [4] [5] [6]。它由 Google LevelDB 分支而来,针对输入/输出(I/O)性能受限的负载状况,对多核处理器(CPUs)进行了优化,可以有效利用高速存储,如固态驱动器(SSD)等。它采用结构化日志合并树(LSM 树)的数据结构,由 C++ 开发,并在官方提供 C++CJava语言绑定,并由众多其他第三方语言绑定所支持。 RocksDB 是免费的开源软件,最初发布于 BSD 3 条款许可下 [7] [8] [9]。2017 年 7 月,项目迁移到 Apache 2.0GPLv2 的双重许可下 [10]。在将先前的 BSD+Patents 许可条款列入黑名单之后,这一改变有助于它在 Apache 软件基金会的项目中得到采用 [11] [12]

RocksDB
原作者Dhruba Borthakur
開發者Meta Platforms (was Facebook, Inc.)
首次发布2012年5月2012-05
当前版本
  • 8.10.0 (2023年12月15日;穩定版本)[1]
源代码库
编程语言C++
操作系统Windows, macOS, Linux, FreeBSD, OpenBSD, Solaris, AIX
平台Cross-platform
类型Embedded database
许可协议Apache 2.0 or GPL 2
网站rocksdb.org

RocksDB 被广泛用于各大互联网企业 [13] 的生产环境,这些厂商包括 FacebookYahoo! [14]LinkedIn [15] 等。

特性

RocksDB 与 LevelDB 一样,将键和值存储在任意字节数组中,并且数据按键或通过提供自定义比较器按字节排序。

RocksDB 提供了 LevelDB 的所有功能,此外还包括:

以及其他 RocksDB 包含但 LevelDB 中没有的功能

RocksDB 并不是一种 SQL 数据库(尽管在 MyRocks 中结合了 RocksDB 与 MySQL)。类似于 NoSQLdbm 存储的实现,RocksDB 使用的不是关系数据模型,不支持 SQL 查询。另外,它也不提供对二级索引的直接支持,不过,用户可通过列族构建索引。在使用方面,应用程序需要以的形式调用 RocksDB,其本身并不提供服务器或命令行界面

历史

2012 年 4 月,时任 Facebook 开发者的 Dhruba Borthakur 在 LevelDB 的基础上创建了一个新分支,自此开启了 RocksDB 项目[26] [27]。项目的初衷是提高服务器在高工作负载下的性能 [28] [29]

集成

作为一个嵌入式数据库,RocksDB 可用作大型数据库管理系统(DBMS)中的存储引擎。例如,Rockset 使用 RocksDB [30] 用于分析数据处理。

替代后端

以下项目已将现有数据库系统替换为 RocksDB,或把 RocksDB 作为备选存储引擎:

ArangoDB

ArangoDB 已将 RocksDB 添加到存储引擎配置 “mmfiles” 中 [31]。自 ArangoDB 3.4 版本起,RocksDB 将成为默认存储引擎 [32]

Cassandra

采用 RocksDB 可显著提高 Cassandra 的性能。一般情况下快 3-4 倍,个别用例中快至 100 倍。该项目由 Facebook 的 Instagram 团队开发,他们在开源代码的同时也发布了性能结果基准 [33]

MariaDB

MariaDB 可将 MyRocks 用作存储引擎,后者为 RocksDB 的一个分支。该功能自 MariaDB 10.2.5(Alpha 版)[34] 起可用,于 2018 年的 MariaDB 10.2.16 版后稳定 [35]

MongoDB

MongoRocks 项目为 MongoDB 提供了一个存储模块,其存储引擎为 RocksDB [36] [37] [38]

Rocks Strata 项目与该项目有关。当把 RocksDB 用作存储引擎时,这个采用 Go 语言编写的工具可用于管理 MongoDB 的增量备份 [39]

MySQL

以 RocksDB 为基础,MyRocks 项目为 MySQL 提供了一个新型存储引擎 [40] [41],并于 Percona Live 2016 展示了其详细信息 [42]

Oxigraph

Oxigraph是一个实现 SPARQL 标准的图数据库,它基于RocksDB。

UKV 项目 [43] 允许用户使用 RocksDB 作为底层键值存储。它对创建、读取、更新和删除(CRUD) 这些不同存储引擎都会涉及的共有操作进行了抽象,并对多个高级语言(包括 PythonJavaGo )进行结构化绑定。

嵌入式

以下数据库系统和应用程序选择使用 RocksDB 作为其嵌入式存储引擎:

Ceph's BlueStore

Ceph's BlueStore 存储层采用 RocksDB 对 OSD 设备中的元数据进行管理 [44]

Apache Flink 采用 RocksDB 存储检查点 [45]

FusionDB

FusionDB [46] 将 RocksDB 作为 XML、键值对和 JSON 的存储引擎 [47]

LogDevice LogsDB

LogDevice 的 LogsDB 构建在 RocksDB 之上 [48]

Manhattan

自 2018 年以来,Manhattan 分布式键值存储系统一直采用 RocksDB 作为存储 Twitter 数据的主要引擎 [49]

Rockset

用于运营数据分析的 Rockset 服务采用 RocksDB 作为其存储引擎 [50]

SSDB

在 ssdb-rocks 项目 [51] 中, RocksDB 被用作 SSDB NoSQL 数据库的存储引擎 [52]

TiDB

TiDB 项目 [53] 采用 RocksDB 作为其存储引擎 [54]

YugabyteDB

YugabyteDB [55] 数据库采用 RocksDB 的修改版本作为其 DocDB 存储引擎的一部分。

第三方语言绑定

可用于 RocksDB 的第三方编程语言绑定包括:  

参考

  1. https://github.com/facebook/rocksdb/releases/tag/v8.10.0; 出版日期: 2023年12月15日; 检索日期: 2023年12月15日.
  2. . GitHub. [November 29, 2015].
  3. . 7 July 2014 [March 10, 2016].
  4. . 27 April 2015 [March 10, 2016].
  5. . 20 June 2014 [March 10, 2016].
  6. Golan-Gueta, Guy; Bortnikov, Edward; Hillel, Eschar; Keidar, Idit. . April 21, 2015: 1–14. ISBN 9781450332385. doi:10.1145/2741948.2741973.
  7. . 21 November 2013 [March 10, 2016].
  8. . Facebook. [March 10, 2016].
  9. . [March 10, 2016].
  10. . GitHub. [July 20, 2017].
  11. . The Register. [July 20, 2017].
  12. . GitHub. [July 20, 2017].
  13. . GitHub. [December 1, 2015].
  14. . [March 10, 2016].
  15. . [March 10, 2016].
  16. . GitHub. [2016-04-04].
  17. . GitHub. [2017-07-19].
  18. . GitHub. [2017-07-19].
  19. . GitHub. [2016-04-04].
  20. . GitHub. [2016-04-04].
  21. . GitHub. [2016-04-04].
  22. . GitHub. [2016-04-04].
  23. . GitHub. [2016-04-04].
  24. . GitHub. [2016-04-04].
  25. . rocksdb.org. [2018-07-19].
  26. . GitHub. May 10, 2012 [March 15, 2016].
  27. . GitHub. Nov 30, 2012 [March 15, 2016].
  28. . November 24, 2013 [March 10, 2016].
  29. Borthakur, Dhruba. . YouTube. November 22, 2013 [March 10, 2016]. ... The story of why we decided to do RocksDB ...
  30. Dhoot, Sandeep. . rockset.com. 2019-06-27 [2023-03-01].
  31. .
  32. . 6 September 2018.
  33. . 5 March 2018.
  34. . MariaDB KnowledgeBase. [2019-04-28].
  35. .
  36. . GitHub. 29 October 2021.
  37. . [July 19, 2018].
  38. . [December 1, 2015].
  39. . GitHub. 31 October 2021.
  40. . GitHub. 2 November 2021.
  41. (PDF). [November 29, 2015].
  42. . 19 April 2016 [May 9, 2016].
  43. . GitHub. 28 December 2022.
  44. .
  45. . ci.apache.org. [2019-08-11].
  46. . Evolved Binary.
  47. (PDF). XML Prague.
  48. . Mark Marchukov, Facebook. 31 August 2017.
  49. . Twitter. 28 December 2022.
  50. . rockset.com. [2019-07-10] (英语).
  51. . GitHub. 21 August 2021.
  52. https://ssdb.io
  53. . GitHub. 4 November 2021.
  54. . Shen Li. 11 July 2017.
  55. . 20 February 2019.
  56. . GitHub. 28 September 2021.
  57. .
  58. . GitHub. 22 October 2019.
  59. . GitHub. September 2021.
  60. . GitHub. September 2021.
  61. .
  62. . GitHub. 29 October 2021.
  63. .
  64. . GitHub.
  65. . 25 March 2022.
  66. . GitHub.
  67. . GitHub. 2 August 2021.
  68. . GitHub. 8 October 2021.
  69. . GitHub. 28 September 2020.
  70. .
  71. . GitHub. 11 August 2021.
  72. .
  73. . GitHub. 27 October 2021.
  74. .
  75. . GitHub. 2 November 2021.

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.