从 Azure 表存储中删除批次时如何避免 404

Woj*_*icz 5 .net c# azure azure-table-storage

问题

我正在尝试从表存储中删除可能存在或可能不存在的大量行。协议是我需要最小化 I/O 并最大化带宽,所以一击就能统治它们就太棒了。问题是,如果任何批处理实体不存在,则整个批处理都会失败。

为什么

这也给我带来了一个设计问题——为什么请求不简单地返回一个删除结果,指示哪些对象由于 404 而没有被删除。为什么它会抛出异常?这是什么原因呢。

更多信息

批量大小在表存储约束 100 内,并且它们都在同一分区内。

小智 2

您可以在删除空实体之前放置具有相同 PartitionKey 和 EntityKey 的空实体。这样您就可以确保不会出现 404 错误。每个批次都有两次一致的调用,而不是多次重试并使应用程序的逻辑复杂化。这不是一个理想的答案,但我们并不生活在一个理想的世界中:)

  • 我认为这不是一个好主意。恕我直言,在删除之前进行插入只是为了确保删除不会失败并不是一个好的设计。基本上插入记录是一个网络调用,它可能会失败。此外,即使执行此操作后,您的删除操作也可能会因多种原因而失败,在这种情况下您的实体数据会损坏。我的 2 美分:) (6认同)