无模式数据存储优于存储模式的数据

时间:2012-01-24 12:09:35

标签: android iphone web-services schema data-storage

我想为我的应用选择后端网络服务。阅读这些服务的文档(Parse,Proxomo,Cocoafish,StackMob等)揭示了其中一些提供以无模式形式存储数据,而另一些提及必须先指定模式。我理解什么是数据模式,希望无模式易于使用,但想知道每个的优点和缺点。任何解释将不胜感激。

2 个答案:

答案 0 :(得分:6)

最大的不同是可扩展性。

使用架构的数据存储解决方案比Schema免费数据存储解决方案更难分发。它非常容易复制(无架构)键值对以实现容错。它非常容易在节点之间分发副本,以便快速读取,并且更容易提供快速写入和最终的一致性。如果您正在管理自己的数据库,这意味着当您需要扩展到多个服务器时,管理无架构解决方案会更容易。如果您正在使用服务,这意味着无架构解决方案通常更便宜,更快。

当您需要跨各种数据集或表的事务和一致性时,会出现架构免费的问题。所有这一切都必须在代码中完成。

所以最重要的是:如果您需要快速访问的大量数据,那么它必须是无架构的。另一方面,如果您的数据大小和负载适度,则基于模式的系统更好。

如果您需要帮助选择要使用哪种服务,更好的方法是在您的应用程序上进行读/秒写/秒和预期的数据大小分析,然后选择哪种解决方案更便宜。所有这些服务可能会扩展到您的负载,但成本将是决定因素。

答案 1 :(得分:1)

我不是真正的专家,但从我读到的,这就是我的看法:

  • 大部分时间,无模式数据库使您可以轻松存储Key / Values,JSON对象。因此,将您在应用程序中操作的对象桥接到数据库存储通常非常容易。 您不必使用ORM(对象关系映射器),因为您的对象直接采用DB接受的格式(大多数情况下,从应用程序中的对象生成JSON非常容易)

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

  • 在无架构的CON中,我的感觉是你不能表达你在标准SQL中检索数据所做的那么多限制(你没有做任何连接等)所以也许你必须要真正检查如何从db数据中检索内容并查看无模式引擎提供的内容。