2010-12-23 176 views
0

我只是想知道,如果任何有经验的Azure表存储的人可以评论,如果使用1表来存储多种类型是一个好主意?Azure Table存储设计问题:使用1个表来存储多种类型是一个好主意吗?

我想这样做的原因是我可以做交易。但是,我也想从发展的角度来理解,这种方法是否容易处理?到目前为止,我正在使用Azure存储资源管理器来协助开发和在一个表中查看多种类型已经很麻烦。如果我将所有博客文章,类别,注释存储在一张表中,我会遇到什么问题?例如,我设计了一个博客社区网站,另一方面,如果我不这样做,那么我应该如何确保类别和帖子的一致性(假设1个帖子可以有一个1类别)?

或者是否有任何其他不同的方法来解决使用表格存储的问题?

谢谢。

回答

2

如果您的目标是要有完美的一致性,那么使用单个表格是一个好方法。不过,我认为你可能会让自己变得更加困难,并获得很少的回报。我这样说的原因是表格存储非常可靠。如果你处理的是非常重要的数据,交易是非常重要的,但是在大多数情况下,比如博客,我认为你会更好:1)允许一小部分不一致的数据,2)处理失败以更手动的方式。

在同一个表中存储多种类型会遇到的最大问题是序列化。目前大多数表格存储SDK和实用程序都是为处理单一类型而设计的。也就是说,您可以手动处理多个模式(即将对象反序列化为包含所有可能属性的主对象),或直接与REST服务交互(即不通过Azure SDK)。如果您直接使用REST服务,则必须自己处理序列化,因此您可以更高效地处理多种类型,但折衷之处在于,您正在手动执行通常由Azure SDK处理的所有内容。

确实没有正确或错误的方式来做到这一点。这两种情况都会起作用,这只是最实际的问题。除非有非常好的理由否则我个人倾向于为每个表格放一个模式。我认为你会发现表存储是足够可靠的,而无需使用交易。您可能想要查看Windows Azure Toolkit。我们设计了该工具包来简化一些更常见的天蓝色任务。

+0

非常感谢Nathan的洞察力!很高兴知道表存储是如此可靠。基于这个事实,我会相应地设计我的应用程序。我在看Azure Table Storage白皮书,在第7.2节中解释了交叉表一致性技术,实现起来非常复杂。我已将你的标记为答案。谢谢! – 2010-12-24 03:34:57

相关问题