2013-08-27 35 views
0

我在Cassandra的https://github.com/kallaspriit/Cassandra-PHP-Client-Library/中使用了php庫。 儘管我試圖在Web中找到我的問題的答案,但我不能。所以,我想聽聽一些意見。在Cassandra的一個關鍵空間內索引多個屬性

例如,我在考慮以下結構(即列)。

ID,品牌,速度

對於這三個數據,我想這樣做兩種操作:1, 讓所有的ID在卡桑德拉 2.品牌得到所有列,希望通過使用正則表達式。

到目前爲止,我可以通過創建一個名爲「car」的超級列家族來實現第一個「1.獲取Cassandra中的所有ID」。 而且,插入類似下面的數據:

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

然後,我可以用下面的代碼獲取ID的所有名單:

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

當我試圖做的第二個問題,我被困。 在Web上搜索後,看起來我需要創建另一個超級列族,以便按「品牌」進行搜索。 但是,當我發現那種信息時,問題就出來了。 如果我們創建另一個具有相同結構的超級列族,我覺得它是非常低效的內存。 創建另一個超級列族意味着即使我們創建相同的結構,Cassandra也會創建另一個空間? 如果有任何有效的方法來實現這一點,你可以建議嗎?

而且,這也是非常具體的問題。 getWhere這個php庫的方法可以使用一些條件,例如大於24歲? 預先感謝您。

回答

0

您正在關注這個問題,但Cassandra鼓勵我們編寫數據的多個副本,不支持分組/聚合或連接。

您可能會覺得這很有用; 「數據模型已經死了,數據模型已經存在了」。

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

+0

謝謝,我看了一下。因此,鼓勵在多個地方爲不同目的編寫相同的數據。所以,這表明我是否想要進行兩種搜索(在本例中是id和品牌名稱),我應該創建兩個不同的列族?這是一個合適的方法嗎?我仍然無法擺脫關係的頭腦。 – user2533493

+0

「取決於」的經典案例:) - 當您通過ID搜索時,您是否知道品牌?如果是這樣,您可以使用(品牌,ID)主鍵設置一個表 - 查詢機制將從左到右,以便您可以根據該單個表按品牌,品牌和ID進行搜索。 –