是否有像sqlite一样的任何nosql平面文件数据库?

dav*_*ang 28 python database sqlite caching nosql

简短问题:是否有任何nosql平面文件数据库可用作sqlite?

说明:可以在不同的进程中打开平面文件数据库进行读取,并保持一个进程写入.如果不需要严格的一致性,我认为它非常适合读缓存.说1-2秒写入文件甚至内存块,读者在此之后获得更新数据.

所以我几乎选择使用sqlite,因为我的python服务器读取缓存.但仍有一个问题.我不喜欢在另一个地方再次重写sqls并在sqlite中构建我的数据表的另一个副本,就像我在PostgreSql中用作后端数据库一样.

还有其他选择吗?谢谢!

knu*_*tin 12

也许shelve?它基本上是一个键值存储,您可以在其中存储python对象.http://docs.python.org/library/shelve.html

或者你可以只使用文件系统?

  • 请注意,对于并发读/写,`shelve`不是sqlite的可行替代方法.来自python docs:"搁置模块不支持对搁置对象的并发读/写访问.(多个同时读取访问是安全的.)当程序打开一个架子进行写入时,没有其他程序可以打开它进行读取或Unix文件锁定可用于解决这个问题,但这在Unix版本中有所不同,需要了解所使用的数据库实现." 另一方面,sqlite在所有支持的操作系统上都符合ACID,并且锁定适用于您. (2认同)

Nic*_*ght 7

BerkeleyDB是一个广泛使用的嵌入式数据库,它一直存在(它最初来自BSD中包含的数据库库,因此得名),并且对于许多用例具有出色的性能特征(并且缓存是经常使用的),但它确实有一些重大的局限性.

如果你想在Python中使用它,你可能需要外部维护的pybsddb/bsddb3,而不是Python 2.x中包含的弃用bsddb(不再是3.x).

它目前由Oracle拥有,但可以在开源许可下使用.请仔细注意许可条款 - 当前版本是GPLish(与GPL兼容),因此请确保与您计划的内容兼容.

更多信息:

  • 非常感谢你的推荐!但在我看到他们对mysql做了什么之后,我将离开oracle.但我真的认为bsdb与sqlite相比.如果他们没有卖掉它,我一定会顺其自然.感谢您提供的信息.这很有价值. (3认同)