【问题标题】:Windows Azure table access latency Partition keys and row keys selectionWindows Azure 表访问延迟 分区键和行键选择
【发布时间】:2014-02-04 14:39:12
【问题描述】:

我们有一个 Windows azure 表存储系统,我们有各种实体类型,它们在白天报告值,所以我们有以下分区和行键场景:

大约有 4000 - 5000 个实体。实体类型有6种,类型分布大致均匀。所以每个大约 800 左右。

ParitionKey:实体类型-日期

行键:entityId

每一行记录一个实体在特定日期的值。这目前是 JSON 序列化的。

数据很详细。

我们会在一个月或两个月内定期查看这些分区中的值,具体取决于我们的网站用户想要查看的内容。

我们遇到了一个问题,如果我们想查询一个实体一个月的数据,我们发现我们必须通过 entityId 查询 31 个分区键。

最初这很慢,但在第一次调用后结果被缓存。

不幸的是,该站点的性质是会有不同数量的不同查询,因此数据不太可能从缓存中受益。

我们显然可以使分区更大,即可能是一整周的数据,并将 rowKeys 扩展到 entityId 和 date。

还有哪些其他选项可供我选择,或者仅仅是 Windows Azure 表遭受相当高延迟的情况?

【问题讨论】:

  • 不确定这是否适用于您的场景,但我们在应用程序中处理它的方式是我们将数据存储两次。第二份数据的 PartitionKeyRowKey 值颠倒了,即 RowKey 值变为 PartitionKey,反之亦然。这样,如果我们要搜索特定的EntityId,我们将直接进入该分区并在那里搜索。

标签: azure azure-table-storage data-partitioning


【解决方案1】:

一些选项包括

  1. 并行进行 31 个查询

  2. 对分区键范围进行单个查询,即

    分区键 >= entityType-StartDate 和分区键

根据您的数据,此查询的延迟可能比您当前的查询短。

【讨论】:

  • 您能否提供您的分区键的格式和示例。我很想知道,为什么那行不通。
  • 刚刚删除了该评论。工作正常。很抱歉弄糊涂了。它工作正常,但是我需要使用 ge、lte 和 eq。这是我困惑的根源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2014-06-09
  • 2014-02-04
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
相关资源
最近更新 更多