【问题标题】:Index multiple attributes within one key space in Cassandra在 Cassandra 的一个键空间内索引多个属性
【发布时间】:2013-08-28 02:02:23
【问题描述】:

我在 https://github.com/kallaspriit/Cassandra-PHP-Client-Library/ 中为 Cassandra 使用 php 库。 虽然我试图在网络上找到我的问题的答案,但我做不到。所以,我想听听一些意见。

例如,我正在考虑以下结构(即列)。

ID、品牌、速度

对于这三个数据,我想做两种操作: 1.获取Cassandra中的所有ID 2. 按品牌名称获取所有列,希望使用正则表达式。

到目前为止,我可以通过创建一个名为“car”的超级列族来实现第一个“1.get all IDs in Cassandra”。 并且,插入如下数据:

cassandra->set(
            $this->columnFamily.'.ID',
            array(
                $id => array(
                    'ID' => $id,
                    'brand' => $brand,
                    'speed' =>$speed
                )
            )
        );

然后,我可以通过以下代码获取所有 ID 列表:

 cassandra->cf('car')->getAll('ID')

当我尝试做第二个问题时,我被卡住了。 在网上搜索后,看来我需要创建另一个超级列族来按“品牌”搜索。 但是,当我找到那种信息时,问题就出来了。 如果我们创建另一个具有相同结构的超级列族,我觉得它的内存效率非常低。 创建另一个超级列族意味着即使我们创建相同的结构,Cassandra 也会创建另一个空间?? 如果有任何有效的方法来实现这一点,你能建议吗?

而且,这也是一个非常具体的问题。这个 php 库的 getWhere 方法可以使用一些条件,例如大于24岁? 提前谢谢你。

【问题讨论】:

    标签: php cassandra


    【解决方案1】:

    您以关系方式考虑这一点,但 Cassandra 鼓励我们编写数据的多个副本,并且不支持分组/聚合或联接。

    您可能会发现这很有用; “数据模型已死,数据模型万岁”。

    http://www.youtube.com/watch?v=px6U2n74q3g

    【讨论】:

    • 谢谢,我看了一点。因此,鼓励出于不同目的在多个位置写入相同的数据。那么,这表明如果我想获得两种搜索(在本例中为 id 和品牌名称),我应该创建两个不同的列族吗?这是一个合适的方法吗?我仍然无法摆脱关系的心态。
    • “看情况”的经典案例 :) - 当您通过 ID 搜索时,您知道品牌吗?如果是这样,您可以设置一个主键为 (Brand, ID) 的表 - 查询机制将从左到右,因此您可以根据该单个表按品牌以及品牌和 ID 进行搜索。
    猜你喜欢
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 2011-06-11
    • 1970-01-01
    • 2017-11-09
    • 2018-11-12
    • 2016-08-08
    相关资源
    最近更新 更多