【问题标题】:How to solve "Range delete requests are limited in the amount of items that can be deleted in a single range" issue in aws Keyspaces?如何解决aws Keyspaces中的“范围删除请求限制在单个范围内可以删除的项目数量”问题?
【发布时间】:2021-06-28 13:55:17
【问题描述】:

我在 c# 中使用 Aws Keyspaces,首先我从表中选择以按分区键删除,然后尝试使用 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 行,而我正在尝试删除这些行 我收到一个错误:

"范围删除请求的数量是有限的 单个范围内可以删除的项目"

我该如何解决这个问题?

【问题讨论】:

    标签: c# .net cassandra amazon-keyspaces


    【解决方案1】:

    这是一个known limitation of AWS Keyspaces。一种可能的解决方案是:

    • select transactionguid WHERE interfaceid = ? and environment = ? and transactionguid &lt; ?
    • 当您跨越千、两千等边界时,记住transactionguid 的结果迭代。
    • 遍历记住的边界执行delete

    附:为什么不使用更兼容的云 Cassandra,例如 DataStax Astra 或类似的东西? AWS Keyspaces 不是真正的 Cassandra,因此您始终需要自己处理限制。

    【讨论】:

    • 在那个问题之后我仍然无法删除任何东西(即使是 1 行)idk 为什么,也许你知道问题出在哪里?不幸的是,我没有为此选择技术,在我开始使用它之前就已经选择了它
    • 我不知道 - 不要使用键空间。
    • 虽然 - 检查该记录的写入时间 - 也许它在未来?
    • keyspaces 尚不支持此功能
    【解决方案2】:

    使用 Amazon Keyspaces,you can delete up to 1,000 rows within a range in a single operation。要在单个分区中删除超过 1,000 行,最好将操作分解为更小的范围或迭代主键。

    • 首先尝试按分区删除 - 如果大多数分区低于 1,000 行,最好尝试按分区删除。如果分区包含超过 1,000 行,请尝试按聚类列删除。
    • 按聚类列删除 - 如果您的模型包含多个聚类列,您可以使用列层次结构删除多行。聚类列是一种嵌套结构,可以通过对顶级列进行操作来删除很多项。
    • 按单行删除 - 遍历项目并按其完整主键(分区列和集群列)删除每一行。
    • 还可以考虑将行拆分为多个分区。在 NoSQL 中,最好在表分区之间分配吞吐量。这样可以跨物理资源平均分配数据和访问权限,从而提供最佳吞吐量。

    关于删除繁重的工作负载,还要考虑以下几点。

    • 使用 Amazon Keyspaces,CQL 分区可以包含几乎无限数量的行。这使您可以比传统的 Cassandra 指导的 100 MB 扩展“更宽”的分区。随着时间的推移,时间序列或壁架超过 GB 的数据增长并不少见。
    • 使用 Amazon Keyspaces,当您删除繁重的工作负载时,无需考虑压缩策略或逻辑删除。您可以在不影响读取性能的情况下随意删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多