我将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行,当我试图删除这些行时,我得到一个错误:
“范围删除请求限制在单个范围内可删除的项目数”
我该如何解决这个问题呢?
这是AWS键空间的一个已知限制。一个可能的解决办法是:
选择transactionguid(其中interfaceid=)吗?和环境=?和transactionguid<?
TransactionGUID
迭代结果。delete
附注。为什么不使用更兼容的cloud Cassandra,比如DataStax Astra,或者类似的东西呢?AWS键空间不是真正的Cassandra,所以您总是需要自己处理限制。