在以下情况中,您推荐什么:
我有一个名为Users的azure表,其中列为:
然后每个用户都有不同类型的任务,我们称之为TaskType1和TaskType2。
这两种任务类型都有公共列,但是也有类型的特定列:
然后TaskType1有其他列:
和TaskType2拥有自己的特定列:
我知道我可以将两种类型存储在同一个表中,我的问题是:
如果我对TaskType1和TaskType2使用不同的表,那么对交易成本的影响是什么?我猜想如果我为每个任务类型都有2个表,那么我将发出一个类似于get me all tasks where the task Primarykey is equal to a specific user from Users table PrimaryKey
的查询,然后我将为每种类型运行2个查询(因为用户可以同时拥有两种任务类型),这意味着更多事务...相反,如果两个任务都在同一个表中,那么它将像1个查询(在分页事务后的限制为1000),因为我将获得PartitionKey是用户PartitionKey的所有行,因此分区不会被分割这意味着1个交易对吗?
如果我将任务存储在不同的表中,那么我理解我会有更多的交易吗?
答案 0 :(得分:6)
您的理解完全正确。将任务拆分为2个单独的表将意味着2个单独的查询因此2个事务(让我们暂时保留超过1000个实体的等式)。虽然交易成本是将它们保存在同一个表中的一个原因,但还有其他原因:
Entity Group Transaction
,因为两个实体(一个用于任务1,另一个用于任务2)将具有相同的PartitionKey(即用户ID)。如果将它们保存在单独的表中,则无法利用实体组事务。我要给出的一个建议是在Tasks表中有一个“TaskType”属性。这样你就可以更轻松地按任务过滤。