cassandra - Hector Cassandra 数据检索

标签 cassandra key slice hector

有没有办法从列族或键空间中获取所有数据?

如果不知道对数据库所做的每个条目的每个键,我想不出这样做的方法。

我的问题是我正在尝试创建一个 Twitter 克隆,其中每条消息都有自己的 ID,并将它们存储在相同列族的相同键空间中。

但是我如何让他们回来呢?我必须跟踪每一个 id,这是不可能的。

任何帮助/想法将不胜感激。

最佳答案

您可以使用 get_range_slices 检索列族中的所有数据,将范围开始和结束设置为相同的值以指示您需要所有数据。

  • 参见 Cassandra FAQ
  • 有关 Thrift 示例,请参阅 http://aquiles.codeplex.com/discussions/278245

  • 还没有找到一个方便的 Hector 示例,但我认为它使用 RangeSlicesQuery ...

    但是,不清楚您为什么要这样做 - 对于此类应用程序,您通常会按 ID 查找消息,并使用索引来确定您需要哪些 ID。例如,为每个用户存储一行,列出他们的所有消息。例如,在消息列族中,您可能有以下内容:
    MsgID0001 -> time     text
                 1234567  Hello world
    MsgID0300 -> time     text
                 3456789  LOL ROTFL 
    

    然后在“user2msg”列族中存储消息,可能使用时间戳列名称,以便按时间顺序存储消息:
    UserID001 -> 1234567   3456789  
                 MsgID0001 MsgID0300
    

    然后可以使用它来查找特定用户的消息,可能按时间过滤。

    然后,您还需要更多的列族来存储用户配置文件等。

    也许您需要为您的问题添加更多细节?

    更新 以回应评论:是的,如果每行有一条消息,则必须单独检索每条消息。但是你的选择是什么?检索所有消息仅对批量处理消息有用,不适用于(例如)向用户显示他们最近的消息。请记住,检索所有消息可能需要很长时间 - 您还没有解释为什么要检索所有消息以及您将如何处理所有消息。您希望收到多少条消息?

    一种可能性是非规范化,即为每个用户在一行中存储整个消息,因此您不必为每条消息执行单独的查找步骤。但是,这会使所需的存储量增加一倍。

    关于cassandra - Hector Cassandra 数据检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9398108/

    相关文章:

    python - 当切片索引超出范围时如何引发 IndexError?

    Cassandra 数据建模 - 涉及两个以上实体的访问模式

    cassandra - 将 cassandra 2.1.19 集群升级到 3.11.1

    java - Cassandra UDT 和 JAVA

    performance - Cassandra 和 Tombstones : Creating a Row , 删除行,重新创建行 = 性能?

    python - 将键发送到 Python 中的非事件窗口

    php - 保护私有(private) API key

    python - key 没有发挥应有的作用

    python从字符串创建切片对象

    python - 如何使用切片运算符更改嵌套列表中的元素