我想你可能想看看 NO-SQL 数据库:
https ://en.wikipedia.org/wiki/NoSQL
如果您喜欢使用类似 JSON 的数据,那么我个人使用的是 MongoDB。
我没有将它用作我的应用数据的主要/单一来源,但仅用于次要目的。但是,我想,您也可以尝试将它用作您的主要数据存储(我想很多人都这样做)。
我尝试过并且非常满意的是使用 C# 的 MongoDB,并使用 MongoVue 作为 GUI 应用程序来执行查询和与 DB 交互。我对 MongoVUE 不是很满意,但在当时看来它是最好的选择。
但是,SQL DB 非常擅长定义数据中的关系。例如,从表 B 上的条目中引用表 A 上的条目,等等。使用这些关系,您可以连接表并做许多有趣的事情。我认为,你也可以在这个领域获得一些经验。
MongoDB 不是为定义关系而构建的(据我所知)。它具有“文档”的概念,您可以在其中以类似 JSON 的格式(带有嵌套的键/值)存储信息。您可以查询文档,但加入似乎是在绕过其正常用法:如何在 MongoDB 中执行等效的 SQL 加入?
此外,在 MongoDB 中使用关系时确保数据一致性(以真正可靠的方式)对我来说似乎是不可能的。但即使我错了并且有可能,实现它也比使用 SQL DB 难 10 倍。
但是您可以查看 WikiPedia 中的列表,可能有比 MongoDB 更好的选择。
但是您也可以在没有数据库系统的情况下使用纯 JSON。
因此,总而言之,类似 JSON 的存储(至少)存在以下问题:
- 不善于定义和利用关系
- 使用关系时,数据完整性(或更可能是引用完整性)很难。
- 如果您没有使用好的数据库系统,而只是将 JSON 转储到一个文件中,那么当该文件变得太大时,您将遇到性能问题。想象一下查询一个 1GB 的 JSON 编码的对象数组来获取你想要的对象。您必须将整个数组加载到内存中,遍历整个数组(因为您将没有索引)然后(如果您没有用完内存并且您的连接 - 使用网络时 - 没有过期)会得到一个结果。大多数像 MongoDB 这样的 NO-SQL 数据库和大多数 SQL 数据库都没有这样的问题(至少在合理的数据量内)。它们经过微调,支持索引、引用、权限、角色,您还可以在 DB 级别定义执行代码(如触发器和存储过程)。当然,它们更复杂,但大多数时候可能需要这种复杂性才能实现最终结果。