【问题标题】:Column filtering in cassandracassandra中的列过滤
【发布时间】:2014-01-01 03:44:57
【问题描述】:

您好,我想知道是否有一些了解 Cassandra 的人可以帮助我。现在我正在使用调试器调查 Cassandra 的读取路径,但由于某种原因无法找到针对查询过滤行列的特定位置。

我已发出两个查询:

"select * from table where name1='rowkey8888';"

"select name9 from table where name1='rowkey999211';"

让我感到困惑的是,它们都被视为 SliceFromReadCommand 命令,而 与命令关联的 SliceQueryFilter 对象对于两者都是相同的:[reversed=false, slices=[[, ]], count=10000, toGroup = 0]

我的问题是,任何人都可以向我解释这种行为的原因,因为我在查询中给出了列名时的印象(在上述情况下为 name9)然后 该命令将是 SliceByNamesReadCommand 并且指定的列将在 QueryFilter 切片数组中。另外,由于我找不到,任何人都可以指出此过滤的完成位置吗?

【问题讨论】:

    标签: nosql cassandra


    【解决方案1】:

    对于reasons related to TTL handling,C* 实际上必须查询分区的“切片”,即使您为其指定了特定名称。

    CollationController 是开始代码潜水的好地方。

    【讨论】:

    • 感谢您的回复。我仍然想知道实际过滤是在哪里为请求的实际列完成的。当我谈到 ColumnFamilyStore 类中的 getColumnFamily(QueryFilter filter) 方法时。其中行 (1306) ColumnFamily cf = getTopLevelColumns(filter, gcBefore); cf 包含当时的所有列,我看不到在此之后进行任何过滤。
    猜你喜欢
    • 2012-08-05
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2017-07-23
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多