【问题标题】:Only row key in a Cassandra column familyCassandra 列族中的唯一行键
【发布时间】:2013-02-28 21:18:14
【问题描述】:

我正在使用 Cassandra 1.1.8,今天我在我的键空间中看到了一个包含以下内容的列族

 SELECT * FROM challenge;
 KEY
----------------------------
 49feb2000100000a556522ed68  
 49feb2000100000a556522ed74  
 49feb2000100000a556522ed7a   
 49feb2000100000a556522ed72   
 49feb2000100000a556522ed76   
 49feb2000100000a556522ed6a   
 49feb2000100000a556522ed70   
 49feb2000100000a556522ed78   
 49feb2000100000a556522ed6e   
 49feb2000100000a556522ed6c   

所以,只有行键。 昨天那些行在那里,我进行了一些删除(正是在那些行上)。我正在使用赫克托

Mutator<byte []> mutator = HFactory.createMutator(keyspace, BYTES_ARRAY_SERIALIZER)
    .addDeletion(challengeRowKey(...), CHALLENGE_COLUMN_FAMILY_NAME)
    .execute();

这是一个在单机/单节点上的小型开发和测试环境,所以我不认为硬件细节是相关的。 可能我在做一些愚蠢的事情,或者我没有明白事情是如何工作的,但据我所知,上面的行是无效的......列名和列值坐标丢失,所以没有有效的单元格(行键/列名/列值)……对吗?

我读过关于幽灵读取的文章,但我认为这是分布式环境中的一个场景……这在一天后在单个 Cassandra 节点上是否有效?

【问题讨论】:

    标签: nosql cassandra


    【解决方案1】:

    来自http://www.datastax.com/docs/1.0/dml/about_writes#about-deletes

    “已删除行的行键可能仍会出现在范围查询结果中。当您在 Cassandra 中删除一行时,它会用墓碑标记该行键的所有列。直到通过压缩清除这些墓碑,您有一个空行键(不包含列的行)。这些删除的键可以显示在 get_range_slices() 调用的结果中。如果您的客户端应用程序对行执行范围查询,您可能希望过滤掉返回空列的行键名单。”

    【讨论】:

      猜你喜欢
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 2012-09-17
      • 2013-07-08
      相关资源
      最近更新 更多