您是否知道任何类似SQLite的数据库以易于阅读的纯文本格式存储其数据(如多行json或yaml)?
我想将一些数据与我的项目一起存储在版本控制系统中,但如果我使用sqlite,我就无法合并在不同工作副本中发生的数据更改。
我不想只使用某种配置文件,因为我希望我的程序能够修改此数据并有效地查询而不将所有数据加载到内存中。
数据库中的数据可能通过某种sql方言访问,但这不是必需的。
编辑:
我正在寻找为json / yaml构建和维护索引文件的东西/允许以快速访问数据片段的任何内容,因为正确的数据库可以执行此操作
我还需要能够修改数据,因此仅允许查询的解决方案是不够的。
答案 0 :(得分:3)
MongoDB与CouchDB有很多共同点,但更简单。
你可以试试我的图书馆(小心)http://code.google.com/p/mongodloid/让你的生活更轻松
答案 1 :(得分:2)
大多数编程语言都带有用于序列化和反序列化其本机数据结构的工具。使用它们将数据存储在文本文件中。
通过这种方式,您将拥有符合您编程语言并且不需要慢速解析器的数据。
例如在PHP中,您可以使用serialize()
函数将任何数据结构转换为字符串(unserialize()
执行相反的操作)。
查询变得像访问本机数据结构一样简单,不需要SQL的复杂/慢。
答案 2 :(得分:2)
这可能不是您正在寻找的工作,但我认为CouchDB之类的东西对于这种应用程序来说是一个很好的选择。它是通过json查询的,但我认为存储的数据不能直接编辑。
答案 3 :(得分:2)
Flat file database表明这个想法并不太紧张......
我想知道为什么你的要求不包括“将所有数据加载到内存中”。你认为你会有几GB的“一些数据”吗?甚至一些MB的数据也不应该在内存中加载和维护太多,毕竟浏览器在大型网页的Dom中消耗了更多的内存...
我认为您可以使用memory-mapped file来减少内存使用量,但维护准确的索引可能更具挑战性。
我想知道以纯文本文件(mbox格式)存储邮箱的Thunderbird是否使用了这种技术。
答案 4 :(得分:1)
Xml,使用Linq-To-Xml?
人类可读,可以一次性部分更新或阅读。
答案 5 :(得分:1)
在我年轻时,存在某种基于awk的数据库引擎。它只是一组shell脚本。但我不记得它的名字,我不知道它是符合SQL还是免费。
但存储的数据完全基于文本。
我没有在那里找到它,但这个链接也许有用:
答案 6 :(得分:1)
Berkeley XML DB? http://www.oracle.com/database/berkeley-db/xml/index.html