Azure表存储设计问题:使用1个表存储多个类型是一个好主意吗?

时间:2010-12-23 04:13:08

标签: azure azure-storage azure-table-storage

我只是想知道是否有任何有Azure桌面存储经验的人可以评论是否使用1个表存储多种类型是个好主意?

我想这样做的原因是我可以做交易。但是,我也希望在开发方面有所了解,这种方法难以处理吗?到目前为止,我正在使用Azure存储资源管理器来协助开发,并在一个表中查看多种类型一直很混乱。

举个例子,假设我正在设计一个博客社区网站,如果我将所有博客文章,类别,评论存储在一个表格中,我会遇到什么问题?另一方面,如果我不这样做,那么我如何确保类别和帖子的一致性(假设1个帖子可以有1个类别)?

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

谢谢。

1 个答案:

答案 0 :(得分:2)

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

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

确实没有正确或错误的方法来做到这一点。这两种情况都可行,这只是最实际的问题。我个人倾向于为每个表放置一个模式,除非有充分的理由不这样做。我认为你会发现表存储足够可靠而不使用事务。

您可能想查看Windows Azure Toolkit。我们设计了该工具包来简化一些更常见的天蓝色任务。