提问者:小点点

如何解决aws密钥空间中“范围删除请求在单个范围内可删除的项目数上受到限制”的问题?


我将Aws键空间与C#一起使用,首先我选择要按分区键删除的表,然后尝试使用where子句从表中删除许多行:

 var daysToDelete = DateTimeOffset.UtcNow.AddDays(-1);
     foreach (var result in selectResult)
                {
                    Cql deleteQuery = new Cql("WHERE interfaceid = ? and environment = ? and transactionguid < ?", 
                    result .InterfaceId,
                    result .Environment,
                    TimeUuid.Min(daysToDelete)).WithOptions(o => o.SetPageSize(100));
                    mapper.Delete<Transaction>(deleteQuery);
                }

大约有3k-6k行,当我试图删除这些行时,我得到一个错误:

“范围删除请求限制在单个范围内可删除的项目数”

我该如何解决这个问题呢?


共1个答案

匿名用户

这是AWS键空间的一个已知限制。一个可能的解决办法是:

  • 选择transactionguid(其中interfaceid=)吗?和环境=?和transactionguid<?
  • 在跨越“千”、“两千”等边界时,使用TransactionGUID迭代结果。
  • 遍历记住的边界,执行delete

附注。为什么不使用更兼容的cloud Cassandra,比如DataStax Astra,或者类似的东西呢?AWS键空间不是真正的Cassandra,所以您总是需要自己处理限制。