RocksDB

RocksDB 是一个用于键值数据的高性能嵌入式数据库 。它由 Google LevelDB 分支而来，针对输入/输出（I/O）性能受限的负载状况，对多核处理器（CPUs）进行了优化，可以有效利用高速存储，如固态驱动器（SSD）等。它采用结构化日志合并树（LSM 树）的数据结构，由 C++ 开发，并在官方提供 C++ 、 C 和 Java 的语言绑定，并由众多其他第三方语言绑定所支持。 RocksDB 是免费的开源软件，最初发布于 BSD 3 条款许可下 。2017 年 7 月，项目迁移到 Apache 2.0 和 GPLv2 的双重许可下 。在将先前的 BSD+Patents 许可条款列入黑名单之后，这一改变有助于它在 Apache 软件基金会的项目中得到采用 。 RocksDB 被广泛用于各大互联网企业 的生产环境，这些厂商包括 Facebook 、 Yahoo! 和 LinkedIn 等。 RocksDB 与 LevelDB 一样，将键和值存储在任意字节数组中，并且数据按键或通过提供自定义比较器按字节排序。 RocksDB 提供了 LevelDB 的所有功能，此外还包括： 事务 备份 和快照 列族 布隆过滤器 生存时间 (TTL) 支持 通用压实 合并运算符 统计收集 地理空间索引 以及其他 RocksDB 包含但 LevelDB 中没有的功能 （页面存档备份，存于互联网档案馆）。 RocksDB 并不是一种 SQL 数据库（尽管在 MyRocks 中结合了 RocksDB 与 MySQL）。类似于 NoSQL 和 dbm 存储的实现，RocksDB 使用的不是关系数据模型，不支持 SQL 查询。另外，它也不提供对二级索引的直接支持，不过，用户可通过列族构建索引。在使用方面，应用程序需要以库的形式调用 RocksDB，其本身并不提供服务器或命令行界面。 2012 年 4 月，时任 Facebook 开发者的 Dhruba Borthakur 在 LevelDB 的基础上创建了一个新分支，自此开启了 RocksDB 项目 。项目的初衷是提高服务器在高工作负载下的性能 。 作为一个嵌入式数据库，RocksDB 可用作大型数据库管理系统（DBMS）中的存储引擎。例如，Rockset 使用 RocksDB 用于分析数据处理。 以下项目已将现有数据库系统替换为 RocksDB，或把 RocksDB 作为备选存储引擎： ArangoDB 已将 RocksDB 添加到存储引擎配置 “mmfiles” 中 。自 ArangoDB 3.4 版本起，RocksDB 将成为默认存储引擎 。 采用 RocksDB 可显著提高 Cassandra 的性能。一般情况下快 3-4 倍，个别用例中快至 100 倍。该项目由 Facebook 的 Instagram 团队开发，他们在开源代码的同时也发布了性能结果基准 。 MariaDB 可将 MyRocks 用作存储引擎，后者为 RocksDB 的一个分支。该功能自 MariaDB 10.2.5（Alpha 版） 起可用，于 2018 年的 MariaDB 10.2.16 版后稳定 。 MongoRocks 项目为 MongoDB 提供了一个存储模块，其存储引擎为 RocksDB 。 Rocks Strata 项目与该项目有关。当把 RocksDB 用作存储引擎时，这个采用 Go 语言编写的工具可用于管理 MongoDB 的增量备份 。 以 RocksDB 为基础，MyRocks 项目为 MySQL 提供了一个新型存储引擎 ，并于 Percona Live 2016 展示了其详细信息 。 Oxigraph （页面存档备份，存于互联网档案馆）是一个实现 SPARQL 标准的图数据库，它基于RocksDB。 UKV 项目 允许用户使用 RocksDB 作为底层键值存储。它对创建、读取、更新和删除（CRUD） 这些不同存储引擎都会涉及的共有操作进行了抽象，并对多个高级语言（包括 Python、 Java 和 Go ）进行结构化绑定。 以下数据库系统和应用程序选择使用 RocksDB 作为其嵌入式存储引擎： Ceph's BlueStore 存储层采用 RocksDB 对 OSD 设备中的元数据进行管理 。 Apache Flink 采用 RocksDB 存储检查点 。 FusionDB 将 RocksDB 作为 XML、键值对和 JSON 的存储引擎 。 LogDevice 的 LogsDB 构建在 RocksDB 之上 。 自 2018 年以来，Manhattan 分布式键值存储系统一直采用 RocksDB 作为存储 Twitter 数据的主要引擎 。 用于运营数据分析的 Rockset （页面存档备份，存于互联网档案馆） 服务采用 RocksDB 作为其存储引擎 。 在 ssdb-rocks 项目 中， RocksDB 被用作 SSDB NoSQL 数据库的存储引擎 。 TiDB 项目 采用 RocksDB 作为其存储引擎 。 YugabyteDB 数据库采用 RocksDB 的修改版本作为其 DocDB 存储引擎的一部分。 可用于 RocksDB 的第三方编程语言绑定包括：   C C# Chicken Scheme D Elixir Erlang Go Haskell Java Node.js Nim Objective-C, and Swift OCaml Perl PHP Prolog Python Ruby Rust https://github.com/facebook/rocksdb/releases/tag/v9.6.1; 出版日期: 2024年8月24日; 检索日期: 2024年8月24日. Performance Benchmarks. GitHub. [November 29, 2015]. （原始内容存档于2019-08-31）.  Benchmarking the leveldb family. 7 July 2014 [March 10, 2016]. （原始内容存档于2020-02-24）.  Comparing LevelDB and RocksDB, take 2. 27 April 2015 [March 10, 2016]. （原始内容存档于2020-02-24）.  Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB. 20 June 2014 [March 10, 2016]. （原始内容存档于2020-02-24）.  Golan-Gueta, Guy; Bortnikov, Edward; Hillel, Eschar; Keidar, Idit. Scaling concurrent log-structured data stores. April 21, 2015: 1–14. ISBN 9781450332385. doi:10.1145/2741948.2741973.  Facebook's latest open source effort: a flash-powered database called RocksDB. 21 November 2013 [March 10, 2016]. （原始内容存档于2020-02-24）.  Under the Hood: Building and open-sourcing RocksDB. Facebook. [March 10, 2016]. （原始内容存档于2019-10-19）.  RocksDB - Facebook's Database Now Open Source. [March 10, 2016]. （原始内容存档于2020-02-24）.  GitHub pull request. GitHub. [July 20, 2017]. （原始内容存档于2020-02-29）.  Apache says 'no' to Facebook code libraries. The Register. [July 20, 2017]. （原始内容存档于2020-02-24）.  GitHub issue. GitHub. [July 20, 2017]. （原始内容存档于2020-02-29）.  Users.md. GitHub. [December 1, 2015]. （原始内容存档于2020-02-29）.  RocksDB on Steroids. [March 10, 2016]. （原始内容存档于2020-02-24）.  Benchmarking Apache Samza: 1.2 million messages per second on a single node. [March 10, 2016]. （原始内容存档于2020-02-24）.  RocksDB transactions. GitHub. [2016-04-04]. （原始内容存档于2020-02-29）.  How to backup RocksDB?. GitHub. [2017-07-19]. （原始内容存档于2024-01-31）.  Checkpoints. GitHub. [2017-07-19]. （原始内容存档于2020-02-29）.  Column families in RocksDB. GitHub. [2016-04-04]. （原始内容存档于2019-07-17）.  RocksDB bloom filters. GitHub. [2016-04-04]. （原始内容存档于2019-06-09）.  RocksDB TTL support. GitHub. [2016-04-04]. （原始内容存档于2015-04-05）.  Universal compaction. GitHub. [2016-04-04]. （原始内容存档于2015-04-05）.  RocksDB merge operator. GitHub. [2016-04-04]. （原始内容存档于2020-02-18）.  RocksDB perf context and IO stats context. GitHub. [2016-04-04]. （原始内容存档于2020-02-29）.  Spatial indexing in RocksDB. rocksdb.org. [2018-07-19]. （原始内容存档于2020-02-24）.  First commit where RocksDB diverges from LevelDB. GitHub. May 10, 2012 [March 15, 2016]. （原始内容存档于2020-02-29）.  Rocksdb readme file. GitHub. Nov 30, 2012 [March 15, 2016]. （原始内容存档于2020-02-29）.  The History of RocksDB. November 24, 2013 [March 10, 2016]. （原始内容存档于2020-02-24）.  Borthakur, Dhruba. RocksDB: A High Performance Embedded Key-Value Store for Flash Storage - Data@Scale. YouTube. November 22, 2013 [March 10, 2016]. （原始内容存档于2019-08-31）. ... The story of why we decided to do RocksDB ...  Dhoot, Sandeep. How We Use RocksDB at Rockset. rockset.com. 2019-06-27 [2023-03-01]. （原始内容存档于2019-07-09）.  Comparing new RocksDB and MMFiles storage engines. [2024-01-31]. （原始内容存档于2023-12-09）.  RC1 ArangoDB 3.4 - Whats new?. 6 September 2018 [2024-01-31]. （原始内容存档于2020-02-24）.  Open-sourcing a 10x reduction in Apache Cassandra tail latency. 5 March 2018 [2024-01-31]. （原始内容存档于2021-01-12）.  MyRocks. MariaDB KnowledgeBase. [2019-04-28]. （原始内容存档于2019-12-18）.  MariaDB 10.2.16 Release Notes. [2024-01-31]. （原始内容存档于2020-08-03）.  mongodb-partners/mongo-rocks. GitHub. 29 October 2021 [2024-01-31]. （原始内容存档于2018-06-11）.  Integrating RocksDB with MongoDB. [July 19, 2018]. （原始内容存档于2020-02-24）.  MongoDB + RocksDB at Parse. [December 1, 2015]. （原始内容存档于2017-10-21）.  facebookgo/rocks-strata. GitHub. 31 October 2021 [2024-01-31]. （原始内容存档于2018-06-11）.  facebook/mysql-5.6. GitHub. 2 November 2021 [2024-01-31]. （原始内容存档于2019-11-15）.  MyRocks: MySQL on RocksDB (PDF). [November 29, 2015]. （原始内容存档 (PDF)于2016-03-16）.  MyRocks Deep Dive. 19 April 2016 [May 9, 2016]. （原始内容存档于2016-12-16）.  unum-cloud/ukv. GitHub. 28 December 2022 [2024-01-31]. （原始内容存档于2023-03-07）.  Storage Devices -- Ceph Documentation. [2024-01-31]. （原始内容存档于2020-02-24）.  Apache Flink 1.8 Documentation: State Backends. ci.apache.org. [2019-08-11]. （原始内容存档于2018-10-25）.  FusionDB. Evolved Binary. [2024-01-31]. （原始内容存档于2020-02-13）.  The Design and Implementation of FusionDB (PDF). XML Prague. [2024-01-31]. （原始内容存档 (PDF)于2019-02-20）.  LogDevice: a distributed data store for logs. Mark Marchukov, Facebook. 31 August 2017 [2024-01-31]. （原始内容存档于2017-10-06）.  Adopting RocksDB within Manhattan. Twitter. 28 December 2022 [2024-01-31]. （原始内容存档于2024-03-27）.  How we use RocksDB at Rockset. rockset.com. [2019-07-10]. （原始内容存档于2019-07-09） （英语）.  ideawu/ssdb-rocks. GitHub. 21 August 2021 [2024-01-31]. （原始内容存档于2018-06-11）.  存档副本. [2024-01-31]. （原始内容存档于2018-01-05）.  pingcap/tidb. GitHub. 4 November 2021 [2024-01-31]. （原始内容存档于2020-02-21）.  TiDB Internal (I) - Data Storage. Shen Li. 11 July 2017 [2024-01-31]. （原始内容存档于2022-05-19）.  How We Built a High Performance Document Store on RocksDB?. 20 February 2019 [2024-01-31]. （原始内容存档于2022-07-29）.  warrenfalk/rocksdb-sharp. GitHub. 28 September 2021 [2024-01-31]. （原始内容存档于2018-06-11）.  chicken-rocksdb. [2024-01-31]. （原始内容存档于2024-02-05）.  b1naryth1ef/rocksdb. GitHub. 22 October 2019 [2024-01-31]. （原始内容存档于2018-06-13）.  urbint/rox. GitHub. September 2021 [2024-01-31]. （原始内容存档于2018-06-13）.  leo-project/erocksdb. GitHub. September 2021 [2024-01-31]. （原始内容存档于2018-06-11）.  barrel-db/erlang-rocksdb. [2024-01-31]. （原始内容存档于2020-02-24）.  tecbot/gorocksdb. GitHub. 29 October 2021 [2024-01-31]. （原始内容存档于2018-06-11）.  rocksdb-haskell: Haskell bindings to RocksDB. [2024-01-31]. （原始内容存档于2020-02-24）.  RocksJava. GitHub. [2024-01-31]. （原始内容存档于2014-07-01）.  rocksdb. 25 March 2022.  rocksdb. GitHub. [2024-01-31]. （原始内容存档于2023-05-28）.  iabudiab/ObjectiveRocks. GitHub. 2 August 2021 [2024-01-31]. （原始内容存档于2018-06-11）.  OCaml bindings for RocksDB. GitHub. 8 October 2021 [2024-01-31]. （原始内容存档于2020-02-29）.  An OCaml RocksDb binding using ocaml-ctypes. GitHub. 28 September 2020 [2024-01-31]. （原始内容存档于2018-06-11）.  RocksDB - Perl extension for RocksDB - metacpan.org. [2024-01-31]. （原始内容存档于2020-02-24）.  Photonios/rocksdb-php. GitHub. 11 August 2021 [2024-01-31]. （原始内容存档于2018-06-11）.  SWI-Prolog interface for RocksDB. [2024-01-31]. （原始内容存档于2018-06-04）.  stephan-hof/pyrocksdb. GitHub. 27 October 2021 [2024-01-31]. （原始内容存档于2018-06-10）.  rocksdb-ruby - RubyGems.org - your community gem host. [2024-01-31]. （原始内容存档于2020-02-24）.  spacejam/rust-rocksdb. GitHub. 2 November 2021 [2024-01-31]. （原始内容存档于2018-06-11）.  官方网站