1

你知道任何类似 SQLite 的数据库,它以易于阅读的纯文本格式(如多行 json 或 yaml)存储其数据吗?

我想将一些数据与我的项目一起存储在版本控制系统中,但如果我使用 sqlite,我无法合并不同工作副本中发生的数据更改。

我不想只使用某种配置文件,因为我希望我的程序能够修改这些数据并有效地查询它,而无需将所有数据加载到内存中

可以通过某种 sql 方言访问数据库中的数据,但这不是必需的。

编辑:

我正在寻找可以为 json/yaml/whatever 构建和维护索引文件的东西,它允许尽可能地访问数据片段,因为正确的数据库可以做到这一点。

我还需要修改数据的能力,因此仅允许查询的解决方案是不够的。

4

7 回答 7

3

MongoDB 与 CouchDB 有很多共同点,但更简单。

你可以试试我的图书馆(小心)http://code.google.com/p/mongodloid/让你的生活更轻松

于 2010-01-06T15:08:37.197 回答
2

大多数编程语言都附带工具来序列化和反序列化其原生数据结构。使用它们将数据存储在文本文件中。

这样,您将拥有与您的编程语言兼容并受支持的数据,而无需慢速解析器

例如,在 PHP 中,您可以使用该serialize()函数将任何数据结构转换为字符串unserialize()相反)。

查询变得像访问本机数据结构一样简单,无需 SQL 的复杂/缓慢。

于 2010-01-06T12:44:51.340 回答
2

这可能不是您正在寻找的东西,但我认为像 CouchDB 这样的应用程序将是此类应用程序的绝佳选择。它是通过 json 查询的,但我认为存储的数据不能直接编辑。

于 2010-01-06T13:06:28.477 回答
2

平面文件数据库表明这个想法并不过分……

我想知道为什么您的要求不包括“将所有数据加载到内存中”。你认为你会有几 GB 的“一些数据”吗?即使是一些 MB 的数据也不应该在内存中加载和维护太多,毕竟浏览器使用大型网页的 Dom 会消耗更多的内存......

我想您可以使用内存映射文件来减少内存使用量,但维护准确的索引可能更具挑战性。
我想知道以纯文本文件(mbox 格式)存储邮箱的 Thunderbird 是否使用了这种技术。

于 2010-01-06T15:05:14.723 回答
1

伯克利 XML 数据库?http://www.oracle.com/database/berkeley-db/xml/index.html

于 2010-01-08T15:28:48.377 回答
1

Xml,使用 Linq-To-Xml?

人类可读,可以部分更新或一次全部读取。

于 2010-01-06T12:46:50.677 回答
1

在我年轻的时候,存在某种基于 awk 的数据库引擎。它只是一组 shell 脚本。但我不记得它的名字,也不知道它是符合 SQL 的还是免费的。

但存储的数据完全基于文本。

我没有在那里找到它,但这个链接也可能有用:

免费数据库目录

于 2010-01-06T12:59:11.623 回答