为顺序数据选择合适的类似 DBM 的 C++ 库

Choosing the right DBM-like C++ library for sequential data

我正在尝试为新开发的应用程序选择数据库。有太多的选择,很容易选错。首先,有一个不使用数据库服务器的要求。所需的数据库应该是静态或动态 C++ 库。需要存储的数据是一个记录数组。它们各不相同,但对于给定的数据集是固定的(因此它们可以存储在 table 中)。每行中的信息可能从几百字节到几兆字节不等。一些行目前可能是数百万行并且预计会增长。

行的索引可以用作键。无需维护单独的键列。

数据按顺序插入。读取访问将仅通过按顺序迭代所有数据或其中的某些段来执行(可能需要像每 5 次一样迭代)。

  1. 出于多种原因,我认为关系数据库不是很好。 一种。它们大多基于服务器。我知道 SQLite,但据我所知,它将数据存储在一个文件中,我认为这可能会导致与最大文件大小相关的问题。 b.我们不需要 SQL 提供的功能,相反我们希望在存储的数据类型上有更多的灵活性。
  2. 有 Key/Value 非 SQL 数据库管理系统,例如 BerkeleyDB、RocksDB 或类似 luxio 的更轻量级替代品。他们提供的功能足以完成任务。这可能是正确的选择,但我不知道它们在我们有连续整数键的情况下优化得如何。关联键访问(我们不需要)可能会产生一些性能开销。
  3. 我知道有一些我不熟悉的非SQL 数据库类型,称为“宽列”。然而,这个名字听起来很适合我们的任务。我能找到的所有数据库都是基于云服务器的。如果您知道此类数据库的 dbm-like 库,请告知。 我在数据库方面没有经验,所以如果我在上面 3 个花蕊中的任何一个错误,请纠正我。

如果您的行数据可以增长到兆字节,而您谈论的只是数百万条记录,也许只是想出一种将其布局在文件系统中的方法?如果您需要更像数据库的索引,请使用 SQLite 作为键,并让数据记录指向文件系统上的某个位置。与尝试在一个巨大的数据库中完成所有事情相比,这种事情的实施和正确实施要快得多。