gpt4 book ai didi

Azure 表存储 - 用于快速查询的分区键设计

转载 作者:行者123 更新时间:2023-12-02 07:48:57 25 4
gpt4 key购买 nike

我们正在将日志条目存储到 Azure 表存储中。我们正在存储以下属性:

  • 日期(日期时间)
  • tenantId(长)
  • 用户名(字符串)
  • 严重性(整数 - 错误 (0)、警告 (1)、信息 (2)、调试 (3) 的枚举)
  • ...目前不重要的其他属性

日志条目数量巨大,我们希望根据以下几列快速查询日志:

  • 日期(从/到)
  • tenantId(等于)
  • 严重程度(从/到)
  • 用户名(等于)

所以我们将rowKey设计为date + guid来保证唯一性。现在我们需要设计PartitionKey。我们需要能够根据tenantId、username和severity进行查询。所以我想我们需要将它们获取到 PartitionKey。

以下格式: {severity}-{tenantId}-{username} 似乎是候选者(键的示例是 [email protected] ,这意味着严重性:警告,tenantId:500,用户:[email protected] )。例如我想查询:

  • 调试和信息严重性

没关系,因为我可以写 PartitionKey >= 2 AND PartitionKey < 4 , - 它将减少其他严重程度的所有结果。

但是,如果我需要增强tenantId = 500的查询(因此仅针对tenantId 500进行调试和信息),我需要编写PartitionKey >= 2-500 AND PartitionKey < 2-501 AND PartitionKey >= 3-500 AND PartitionKey < 3-501

所以这似乎是可能的,但查询变得更加复杂。我知道我只能通过基准测试来测试其性能,但问题是是否有更好的 RowKey 和 PartitionKey 设计来实现更好的性能。

最佳答案

推荐的方法是使用不同的 PartitionKeys 为相同的数据添加多行。例如,如果您有以下数据:

date: 2017-07-31

tenantId: 3

severity: 2

username: [email protected]

以下是数据在表中的存储方式:

PartitionKey    RowKey  date        tenantId    severity    user
----------------------------------------------------------------------
D|2017-07-31 GUID() 2017-07-31 500 2 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7419113419115a171b19" rel="noreferrer noopener nofollow">[email protected]</a>
T|500 GUID() 2017-07-31 500 2 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9df0f8ddf0f8b3fef2f0" rel="noreferrer noopener nofollow">[email protected]</a>
S|2 GUID() 2017-07-31 500 2 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="90fdf5d0fdf5bef3fffd" rel="noreferrer noopener nofollow">[email protected]</a>
U|<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f9949cb9949cd79a9694" rel="noreferrer noopener nofollow">[email protected]</a> GUID() 2017-07-31 500 2 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a4c9c1e4c9c18ac7cbc9" rel="noreferrer noopener nofollow">[email protected]</a>

因此,当您需要查询租户 ID 和严重性时,您可以执行以下操作:

PartitionKey eq 'T|500' and severity eq 2

PartitionKey eq 'S|2' and tenant eq 500

关于Azure 表存储 - 用于快速查询的分区键设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45416050/

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