有没有类似于SQLite的NoSQL平面文件数据库?

51 投票
3 回答
32974 浏览
提问于 2025-04-16 07:27

简短的问题: 有没有像sqlite那样的nosql平面文件数据库?

解释: 平面文件数据库可以在不同的进程中打开进行读取,同时保持一个进程来写入。我觉得如果不需要严格的一致性,这种方式非常适合用作读取缓存。比如说,写入文件或内存块的时间是1到2秒,之后读取者就能获取到更新的数据。

所以我几乎选择使用sqlite作为我的python服务器的读取缓存。但还有一个问题。我不想在另一个地方重新写sql语句,也不想在sqlite中构建一份和我在PostgreSql中一样的数据表的副本,PostgreSql是我用作后端数据库的。

那么还有其他选择吗?谢谢!

3 个回答

0

这是一件简单但可行的事情。如果你在找一种可以存储键值对数据的结构,可以使用“腌制字典”(pickled dictionary)。如果需要更好的性能,可以使用cPickle。

9

BerkeleyDB 是一个广泛使用的嵌入式数据库,历史悠久(它最初源自 BSD 中的数据库库,所以叫这个名字),在很多使用场景下表现非常好(尤其是缓存这个功能),但它也有一些明显的限制。

如果你想在 Python 中使用它,建议你使用 外部维护的 pybsddb/bsddb3,而不是 Python 2.x 中包含的 已经不再推荐的 bsddb(在 3.x 中也没有了)。

现在它归 Oracle 所有,但可以在开源许可证下使用。要特别注意许可证条款——当前版本是 GPL 相关的(与 GPL 兼容),所以确保这与你的计划是兼容的。

更多信息:

19

也许可以用 shelve?它其实就是一个键值存储,你可以在里面存放 Python 对象。你可以查看这个链接了解更多:http://docs.python.org/library/shelve.html

或者你也可以直接使用文件系统呢?

撰写回答