Azure表存储删除行键位于两个行键值之间的位置

时间:2014-02-23 21:17:54

标签: azure azure-table-storage

在给定行键范围的情况下,是否有一种删除同一分区中的实体的好方法?看起来这样做的唯一方法是进行范围查找,然后在查找后批量删除。我会在删除实体的时候知道我的范围,所以我宁愿跳过查找。

我希望能够删除一些东西以防止我的分区变得太大。据我所知,单个分区无法跨多个服务器进行扩展。每个分区将代表用户发送的一种消息。可能会少于50种类型。我需要一种方法来显示发送的每种类型的所有消息(例如:显示最近的消息,无论是谁发送了类型0)。这就是为什么我打算将类型设为分区键。由于类型不随用户/消息的数量而扩展,但我不想让每个分区无限增长。

1 个答案:

答案 0 :(得分:3)

不幸的是,您需要知道精确的分区键和行键才能发出删除。如果您知道精确的RowKeys,则无需从存储中检索实体,但您需要使用它们才能发出批量删除。在SQL中没有神奇的“从table中删除partitionkey = 10”命令。

但是,请考虑将数据分解为表示可存档时间单位的表。例如,在AzureWatch中,我们将所有度量标准数据存储到表示一个月数据的表中。 IE:Metrics201401,Metrics201402等。因此,当归档时,将在特定月份清除整个表。

这种方法的明显缺点是,如果您的查询跨越很宽的时间范围,则需要从多个表“联合”数据。但是,如果您将时间范围保持在最小数量,工会数量就不会那么大。基本上,这种方法允许您将表名用作另一个分区机会。