【发布时间】:2021-03-10 00:11:48
【问题描述】:
我正在尝试为新开发的应用程序选择数据库。有很多选择,很容易选择错误的。首先,要求不使用数据库服务器。所需的数据库应该是静态或动态 C++ 库。需要存储的数据是一个记录数组。它们会有所不同,但对于给定的数据集是固定的(因此它们可以存储在表中)。每行中的信息可以从几百字节到几兆字节。目前可能有数百万行,并且预计还会增长。
行的索引可以用作键。无需维护单独的键列。
数据按顺序插入。仅通过按顺序迭代所有数据或其中的某些段来执行读取访问(可能需要像每 5 次这样的步骤进行迭代)。
- 出于多种原因,我不认为关系数据库是好方法。 一种。它们大多是基于服务器的。我知道 SQLite,但据我所知,它将数据存储在一个文件中,我认为这可能会导致与最大文件大小相关的问题。 湾。我们不需要 SQL 提供的强大功能,而是希望在存储数据类型方面具有更大的灵活性。
- 有一些 Key/Value 非 SQL dbms,例如 BerkeleyDB、RocksDB 或类似 luxio 的更轻量级的替代品。他们提供的功能足以完成任务。这可能是正确的选择,但是我不知道它们在我们有连续整数键的情况下优化得如何。关联键访问(我们不需要)可能会产生一些性能开销。
- 我知道有一些我不熟悉的称为“宽列”的非 SQL 数据库。然而,这个名字听起来很适合我们的任务。我能找到的所有数据库都是基于 claud 的服务器。如果您知道此类数据库的类 dbm 库,请告知。 我在数据库方面没有经验,所以如果我在上述 3 个花蕊中的任何一个有错误,请纠正我。
【问题讨论】:
标签: database nosql berkeley-db leveldb rocksdb