在Azure表存储中删除大量条目

Delete a very large number of entries in Azure Table Storage

本文关键字:删除 Azure 存储      更新时间:2023-09-26

这是我的设置:

我在Azure中运行一个Node.js Web应用程序,它使用Azure表存储(非SQL(。为了使用表存储,我使用azure存储npm模块。

我要做的事情:

所以我有一个跟踪设备事件的系统。在存储中,我将PartitionKey设置为deviceId,将RowKey设置为eventId。

添加事件是直接的;一次添加一个。

使用查询结构可以很容易地检索它们。

然而,删除大量条目似乎是一件痛苦的事。看起来一次只能删除一个实体。似乎没有基于查询的实现。

有一个选项可以使用批创建大批量的删除操作;但我刚刚发现,每批操作的上限是100次。

因此,我试图删除单个设备的所有事件;在我目前的情况下,我有大约5000个活动。因此,为了实现这一点,我首先必须使用GET请求查询我的所有事件(并使用连续令牌连接它们(,然后将它们分成100个批次,然后发送50个大请求以删除所有条目。。。

SQL中的相同内容是DELETE*WHERE设备Id="xxxxxxxx">

肯定还有比这更好的办法!

SQL中的相同内容是DELETE*WHERE设备Id="xxxxxxxx">

肯定还有比这更好的办法!

遗憾的是,没有:(。您必须根据需求获取实体,然后删除它们(分批或单独删除(。

但是,您可以通过仅从表中获取PartitionKeyRowKey而不是所有属性来优化获取过程,因为删除实体只需要这两个属性。