mrkeyoor.com_
Tue 03 Nov 17:53 UTC
Dataevaluationupdated 03 Nov 2026

rocksdb review

RocksDB is a C++ library for storing persistent key-value data inside an application. It gives storage developers control over compaction and the tradeoffs between read work, write work and disk space. You build the application or server around that engine.

Verdict

RocksDB stopped at CMake configuration after 1 second in our sandbox because gflags could not be found, leaving no build or test result for judging the engine. Choose it for a storage team willing to own native packaging and workload-specific evaluation. If your application mainly needs SQL tables, start by evaluating SQLite instead.

We ran it

Lab card: what happened when we ran rocksdbScreenshot of rocksdb (rocksdb.org)
Install✗ · 1s
Build—
Repo2379 files~1,044,953 lines of source · 52.6 MB · 14 CI workflows

Answers from our run

Does rocksdb build from source?

The dependency install failed, and the project has no separate build step. We cloned commit 563d4b1 into a clean Debian container with 3 CPUs and no project-specific setup.

Who should not use rocksdb?

Teams shopping for a ready-made network database: the README describes a library that forms a server building block.

What are the alternatives to rocksdb?

SQLite, LevelDB. RocksDB stopped at CMake configuration after 1 second in our sandbox because gflags could not be found, leaving no build or test result for judging the engine.

SetupN/AConfiguration stopped at gflags discovery, so installation in a supported, fully configured environment was not reproduced.
Docs4/5The README identifies the public interface and storage tradeoffs, while the compilation guide explains library targets, tool dependencies and CPU portability. This rates coverage, not verified setup.
CommunityN/ARecent pull-request activity and a current push show maintenance, but user-support outcomes and contributor capacity were not assessed.
MaturityN/ARelease notes describe maintained storage APIs, but our configuration failure left engine operation and recovery unassessed.

Who it’s for

Storage teams building a database or service whose local key-value engine is part of the product.
C++ developers prepared to manage native libraries and restrict integration to the documented public headers.
Operators who can evaluate compaction and recovery with representative data before adopting a release.

Who it’s NOT for

Teams shopping for a ready-made network database: the README describes a library that forms a server building block.
Applications whose code must depend on private RocksDB headers: the README warns those interfaces can change without notice.
Teams that distribute one native artifact across different CPUs without checking compiler targets: the compilation guide documents host-specific optimization by default.
Developers expecting our run to establish storage speed or recovery quality: configuration stopped at missing gflags before either could be evaluated.

Setup reality

Our RocksDB install step failed with exit 1 after 1 second at commit 563d4b1 on October 31, 2026. CMake could not find gflags, including its libraries and include directory, and reported configuration incomplete. The supplied record contains no build or test result.

This is a library integration, with native dependency and compiler choices rather than a model account to configure. The compilation guide distinguishes the core library from tools that use gflags and documents optional compression libraries. That distinction supplies context for the configuration failure, not a verified repair.

Our sandbox had 3 CPUs, 8 GB RAM and image label lab-cpp:1. The label establishes neither a compiler nor an operating-system version. Current documentation calls for a C++20-capable compiler and describes CPU-specific optimization by default. Confirm the requirements and target options of the revision you intend to ship.

CMake stopped our RocksDB setup before the storage engine had a chance to do anything. It couldn't find gflags. For a team choosing an embedded database, that failure is useful evidence about the native build path, while leaving the larger question open: does your application need enough control over storage to justify owning that path?

The RocksDB README calls the project a library that forms a building block for a key-value server. That's the right starting point. A storage team can put it underneath a service and make deliberate choices about compaction. A developer mainly looking for application tables should first ask whether an embedded SQL engine would answer the actual requirement with less application code.

What happened when we ran it

Our run of RocksDB failed its install step with exit 1 after 1 second. We cloned commit 563d4b1 on October 31, 2026. CMake reported that it could not find gflags, naming gflags_DIR, GFLAGS_LIBRARIES and GFLAGS_INCLUDE_DIR as missing. It ended with configuration incomplete. The supplied record contains no build or test result, so this review has no measured storage workload to report.

The error establishes that this configuration could not locate the required gflags material. It doesn't establish whether a package was absent, installed outside the search path or otherwise unavailable to CMake. We have no successful repair to report. It would be misleading to turn this into a claim that RocksDB itself cannot run, or to attach a throughput conclusion to a configuration failure.

Our measurement setup recorded 3 CPUs, 8 GB RAM and image label lab-cpp:1. That label does not identify the actual compiler or operating-system version. The checkout contained 2,379 files, approximately 1,044,953 source lines and 52.6 MB. The scan found 14 CI workflow files, no Dockerfile and no tests directory. Those observations don't establish CI outcomes or the absence of test code elsewhere in the repository.

The compilation guide separates the library from its tools

RocksDB's compilation guide identifies gflags as a tool dependency and distinguishes tools from the core library. That distinction matters when deciding what artifact you actually need. It explains why a dependency encountered by one configuration shouldn't automatically become a claim about every way to integrate RocksDB. Our recorded run doesn't include the command or a verified alternative route.

The same guide calls for C++20 support and describes optional compression libraries. Its default CPU optimization targets the machine doing the compilation, with a portability option documented for broader deployment. These are choices to record alongside your selected revision. A library artifact intended for a mixed server fleet needs its target considered explicitly, rather than inherited casually from the machine that produced it.

I'd resolve dependency discovery in a reproducible environment and retain the resulting configuration before evaluating the engine. Keep the chosen compiler target and compression options with that record. This is a proposed next step, not a repair we performed. The useful outcome would be an artifact your deployment can reproduce, followed by a representative application workload whose behavior you can inspect.

Compaction trades read work against write work and space

RocksDB's README describes an LSM design with multithreaded compaction and tradeoffs among read, write and space amplification. These are the reasons a storage engineer might accept more integration work. They give you questions to investigate for your own data: which cost dominates, what background work is acceptable, and how much disk headroom does the workload need?

Our run answers none of those operating questions. I'd avoid importing performance numbers from a different machine or workload into this decision. First define representative keys, values and access patterns, then assess them with your chosen artifact. Recovery belongs in that evaluation too. Persistent data makes an unexplained error materially different from an ordinary failed request, even when the API for writing a value looks simple.

Public headers are the integration boundary

The README identifies include/ as the public interface and warns that other headers may change without notice. A team relying on internals would be accepting an explicit compatibility risk. Keep that boundary visible in code review. Convenience today can become upgrade work when an internal class changes, and a release number alone won't tell you how much application code depends on it.

Release v11.12, published October 26, 2026, includes public API changes and fixes involving background-error recovery and external table checksums. Those notes are a reason to read the relevant upgrade sections carefully. They are upstream maintenance reports, not defects reproduced in our sandbox or proof that your application exercises the affected paths.

The last push was November 3, 2026, and the recent pull-request feed includes same-day work on remote compaction and compaction-resume behavior. Read alongside the October release, that shows continuing development. It doesn't establish a support response time or justify calling every open issue a storage bug. Pin the revision you evaluate and review its behavior changes before moving durable data.

SQLite offers SQL; LevelDB declares limited maintenance

SQLite is an embedded SQL database engine without a separate server process. I'd start there when the desired interface is tables and SQL. LevelDB offers an ordered mapping from string keys to string values, but its README explicitly declares very limited maintenance. It is a candidate for that narrower interface, with that policy accepted. We measured neither alternative here.

Documentation receives 4/5 on a coverage scale: 1 is a bare description, 2 partial instructions, 3 an explained starting path, 4 that path plus operational boundaries, and 5 independently verified coverage across assessed paths. The public-header warning and compilation choices support 4. Other dimensions remain unassessed. Before choosing RocksDB, write down which storage control your application needs enough to own its packaging and recovery evaluation.

Alternatives

ProjectWhat it isPick it when
SQLiteAn embedded SQL database engine that operates without a separate server process.Choose it when tables and SQL are the application interface you want, rather than a key-value engine you will wrap yourself.
LevelDBA storage library with an ordered mapping from string keys to string values.Consider it when its documented ordered key-value interface fits and you accept its explicitly limited maintenance policy. Do not choose it on an assumed speed advantage.

What people are saying

  1. [velocity-scout] meta/rocksdb

Sources

  1. RocksDB README
  2. RocksDB compilation guide
  3. RocksDB v11.12
  4. RocksDB recent issues and pull requests
  5. About SQLite
  6. LevelDB README

More data reviews

redash · akshare · DB-GPT · spektrafilm · jq · pgx · the whole board →