2012-04-25 5 views
3

Я хочу получить разные значения id строки в зависимости от имени суперколла. Для этой цели я использовал этот кодкак получить все значения супер столбца в заданном rowID из columnfamily в Hector Cassandra

SuperColumnQuery<String, String, String, String> superColumnQuery = 
      HFactory.createSuperColumnQuery(keyspaceOperator, se, se,se,se); 
    superColumnQuery.setColumnFamily(COLUMN_FAMILY).setKey(rowID).setSuperName(superColumnName); 
    QueryResult<HSuperColumn<String, String, String>> result = superColumnQuery.execute(); 
    //rowID contains a list of rows separated by ',' 

Но это не работает.

+0

Что означает «не работает»? –

ответ

1

Учитывая, что вы пытаетесь выбрать клавиши строк на основе имен столбцов, я бы рискнул предположить, что ваша модель данных обратная. Обычно вы должны перемещаться извне: выберите строку строки, затем имя суперколонки, затем имя столбца. В противном случае вы будете застревать по строкам в своем коде, пытаясь сопоставить имя столбца, вместо использования механизма Cassandra, чтобы выбрать то, что вам нужно. Такой подход никогда не будет масштабироваться.

Так что я предлагаю переделать вашу модель данных - или если вам нужно это сделать, подумайте о добавлении еще одного ColumnFamily, который служит индексом для первого. В отличие от старых баз данных SQL, кредо в NoSQL dbs, как Cassandra, - «Если вы денормализуете - вы делаете это правильно».

+1

Eugene это не очень хорошая практика для подрезки супер колонки. Вот почему даже сообщество кассандры осуждает эту технику Super Column, я думаю. Поэтому лучше не тратить свое время и искать новую технику, составную колонку, которая в конечном итоге решает все проблемы. – abhi