gpt4 book ai didi

Azure表存储存储多种类型

转载 作者:行者123 更新时间:2023-12-05 00:28:43 26 4
gpt4 key购买 nike

在以下场景中您有何建议:

我有一个名为 Users 的 azure 表,其中列如下:

  • 主键
  • 行键
  • 时间戳
  • 名字
  • 姓氏
  • 电子邮件
  • 电话

然后,每个用户都有不同类型的任务,我们将它们称为 TaskType1 和 TaskType2。

两种任务类型都有公共(public)列,但也有类型特定的列,如下所示:

  • 主键(与用户主键相同,用于查找属于某个用户的所有任务)
  • 行键
  • 时间戳
  • 姓名
  • 截止日期
  • 描述
  • 优先

那么 TaskType1 有额外的列:

  • 预计完成日期
  • 可行

TaskType2 有它自己的特定列:

  • 预计费用

我知道我可以将两种类型存储在同一个表中,我的问题是:

如果我对 TaskType1 和 TaskType2 使用不同的表,会对交易成本产生什么影响?我会猜测,如果每种任务类型都有 2 个表,然后我将发出如下查询: 获取任务 Primarykey 等于 Users 表 PrimaryKey 中的特定用户的所有任务 然后我会必须为每种类型运行 2 个查询(因为用户可以同时拥有两种任务类型),这意味着更多事务...相反,如果两个任务都在同一个表中,那么它将类似于 1 个查询(分页事务后限制为 1000)因为我将获取 PartitionKey 是用户 PartitionKey 的所有行,因此分区不会拆分,这意味着 1 个事务,对吗?

那么我是否理解正确,如果我将任务存储在不同的表中,我将会有更多的事务..?

最佳答案

您的理解完全正确。将任务拆分为 2 个单独的表意味着 2 个单独的查询,从而意味着 2 个事务(现在让我们将 1000 多个实体排除在等式之外)。虽然交易成本是将它们保留在同一个表中的原因之一,但还有其他原因:

  • 通过将它们保存在同一个表中,您可以充分利用 Azure 表存储的无架构特性。
  • 2 个表意味着 2 个网络调用。尽管该服务具有高可用性,但您需要考虑调用第一个表成功但调用第二个表失败的情况。在这种情况下您的应用程序会如何表现?您是否也丢弃第一个表中的结果?通过将它们保留在一张表中可以避免这种情况。
  • 假设您的应用程序中有一个场景,用户可以同时订阅任务 1 和 2。如果将它们放在同一个表中,则可以使用Entity Group Transaction因为两个实体(一个用于任务 1,另一个用于任务 2)将具有相同的 PartitionKey(即用户 ID)。如果将它们保存在单独的表中,您将无法利用实体组事务。

我给出的一个建议是在任务表中添加“TaskType”属性。这样您就可以更轻松地按任务进行过滤。

关于Azure表存储存储多种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18450819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com