这是我的设置:
我正在 Azure 中运行 Node.js Web 应用程序,该应用程序使用 Azure 表存储(非 SQL)。为了使用表存储,我使用了 azure-storage npm 模块。
我正在尝试做什么:
所以我有一个跟踪设备事件的系统。在存储中,我将 PartitionKey 设置为 deviceId,并将 RowKey 设置为 eventId。
添加事件非常简单;当它们发生时一次添加一个。
使用查询结构可以轻松检索它们。
但是,删除大量条目似乎很痛苦。看来您一次只能删除一个实体。似乎没有基于查询的实现。
可以选择使用批处理来创建大批量的删除操作;但我刚刚发现每批操作的上限为 100 次。
所以我试图删除单个设备的所有事件;在我目前的情况下,我有大约 5000 个事件。因此,为了实现这一目标,我首先必须使用 GET 请求查询所有事件(并使用延续 token 将它们连接起来),然后将它们分成 100 个批处理,然后发送 50 个大请求以删除所有条目...
SQL 中的相同内容是 DELETE * WHERE deviceId='xxxxxxxx'
肯定有比这更好的方法!
最佳答案
The same thing in SQL would be DELETE * WHERE deviceId='xxxxxxxx'
Surely there must be a better way than this!
遗憾的是,没有:)。您必须根据您的要求获取实体,然后删除它们(批量或单独)。
但是,您可以通过仅从表中获取 PartitionKey
和 RowKey
而不是所有属性来优化获取过程,因为删除实体时只需要这两个属性。
关于javascript - 删除 Azure 表存储中的大量条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39491995/