我正在寻找SQL(的替代数据存储方法,也就是说,我也没有想要使用SQL,即使是查询),遇到了一个很少基于JSON。他们和那些做数据库工作的朋友谈话,他们说我不应该考虑这些,但不会详细说明。使用JSON作为数据存储文件格式的潜在(和实用) 缺点是什么?


我认为JSON将是更好的而不是SQL原因:

  1. json是严格定义,没有口味(Oracle,microsoft,mysql等)
  2. 自谷歌开始制作Chrome,JS解释器已经读取,解析和输出了js(并因此json)a 非常 快速简便过程。
  3. 数据库输出可能是纯粹的json ,擦除了一个用于浏览器的中间口译员等。
  4. 等...

有帮助吗?

解决方案

我想你可能想看看no-sql数据库: https://en.wikipedia.org/wiki/nosql

如果您喜欢使用类似JSON的数据,那么我个人使用的是MongoDB。

我还没有用它作为我的应用数据的主要/单一来源,但仅用于次要目的。但是,我猜,你也可以尝试用它作为你的主要数据存储(我认为很多人这样做)。

我尝试了什么,并且非常满意,是MongoDB与C#以及使用Mongovue作为用于执行查询和与DB交互的GUI应用程序。我对Mongovue不太满意,但似乎这是当时最好的选择。

但是,SQL DBS非常擅长定义数据中的关系。例如。从表B的条目中引用表A的条目,以及那种东西。使用这些关系,您可以加入表格并进行许多有趣的东西。我想,在这个领域获得一些体验,它对您有好处。

mongodb不用于定义关系(据我所知)。它具有“文档”的概念,您可以在其中存储JSON的信息,如格式(带嵌套键/值)。您可以查询文档,但加入似乎是围绕其正常使用方式的方式:>>如何在MongoDB中执行SQL连接等同物? 此外,确保数据一致性(以真正可靠的方式)在MongoDB中的关系似乎非常不可能。但即使我错了,也可能,它比与SQL DBS更难以实现10倍。

但是你可以看看维基百科的列表,而且可能比MongoDB适合您的更好的替代品。

但是您可以使用纯粹的JSON以及没有数据库系统。

所以,在摘要中,类似JSON的存储(至少)这些问题:

  • 不擅长定义和利用关系
  • 在使用关系时,数据完整性(或更可能,参考完整性)很难。
  • 如果您没有使用良好的DB系统,但您只需将JSON转储到文件中,当该文件变得太大时,您将具有性能问题。想象一下,查询1GB的JSON编码的对象数组以获取所需的对象数组。您必须在内存上加载整个数组,贯穿整个阵列(自从您没有索引),然后(如果您没有用完内存和连接 - 当使用网络 - 尚未过期时)将得到结果。大多数Nod-SQL DBS等MongoDB和大多数SQL DBS都没有这样的问题(至少在合理的数据量内)。它们是微调,它们支持索引,引用,权限,角色,并且您还可以在DB级别(如触发器和存储过程)定义执行代码。当然,他们更复杂,但大多数时候可能需要复杂程度来实现最终结果。

其他提示

json或JavaScript对象表示法是一种开放标准格式,它使用人类可读文本来传输由属性值对组成的数据对象。它主要用于在服务器和Web应用程序之间传输数据,作为XML的替代方案。

您更像在数据库与平面文件存储之间的比较真的。

即使在使用关系数据库时,数据完整性(或参照完整性)仍然很难,因为通常是时间戳的行。由于此,通常不会强制执行外键。当行更新发生时,您有2个选择。首先,'忘记'前一个版本。其次,更新原始行并将以前的版本复制到TimeStamped“非关系”历史表中,其中外键无用。大多数业务数据都需要更新。在这种类型的业务数据(代表大多数企业数据)中,用于维护关系数据库中的参照完整性的功能是无用的。 所需要的是时间数据库,或抽象层,其基于时间上下文向用户提供相应的行的用户。理想地,在2个维度中,即交易时间和业务时间(AKA有效时间)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top