无模式数据存储相对于带有模式的数据存储的优势

8

我希望选择一个后端的web服务来为我的应用提供支持。阅读这些服务(Parse、Proxomo、Cocoafish和StackMob等)的文档,发现其中一些服务提供无结构数据存储,而其他服务则要求事先规定结构。我了解什么是数据架构,并且希望无结构数据存储会更容易使用,但想了解每种方式的优缺点。非常感谢您的任何解释。

2个回答

6
最大的区别在于可扩展性。
有模式的数据存储方案比无模式的数据存储方案更难分发。对于容错来说,复制(无模式)键值对非常容易。将副本分布在节点上以实现快速读取也很容易,并且最终一致性可以提供快速写入。如果您管理自己的数据库,则需要扩展到多个服务器时,使用无模式解决方案将更加容易。如果您正在使用服务,则这意味着无模式解决方案通常更便宜和更快。
无模式方案的问题在于当您需要跨各种数据集或表进行事务和一致性时,所有这些都必须在代码中完成。
所以底线是:如果您需要大量数据并希望快速访问廉价,那么必须使用无模式方案。另一方面,如果您的数据大小和负载较小,则基于模式的系统更好。
如果您需要帮助选择哪种服务,请更好地决定是对应用程序进行读/秒写/秒和预期数据大小分析,然后选择更便宜的解决方案。所有这些服务都会按比例缩放,但成本将是决定因素。

1

我不是一个真正的专家,但从我所读到的来看,这是我的看法:

  • 大多数情况下,无模式数据库使您能够轻松存储键/值、JSON对象。因此,很容易将您在应用程序中操作的对象与DB存储桥接起来。 您不必使用ORM(对象关系映射器),因为您的对象直接以DB接受的格式存在(大多数情况下,很容易从应用程序中的对象生成JSON)。

  • 如果您没有任何模式,您可以轻松调整(添加/删除)要存储在DB中的对象的属性,而无需经过模式更新和数据从旧模式迁移到新模式的迁移。

  • 在无模式的缺点方面,我的感觉是您不能像标准SQL那样表达许多约束条件来检索数据(您不进行任何连接等),因此您可能必须仔细检查您想要从db数据中检索什么,并查看无模式引擎提供了什么。


非常感谢Yonel的想法和解释。我不仅是对Web服务,而且对编程一般都是新手,所以我可能会错,但(关于您的第三点),无模式数据存储服务实际上是对数据检索的许多过滤。我将等待更多时间,然后将您的答案标记为正确并给予奖励。 - chatur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接