Кассандра и суперколонны - PullRequest
2 голосов
/ 12 марта 2012

У меня следующий вопрос: возможно ли создать семейство столбцов в Кассандре, которое будет выглядеть следующим образом, и как определить его структуру:

Users = {   //CF
     AlexS : { //row key
         Address : { //supercolumn
               state: "NJ",
               country: "US",
               phone : { //super column
                    zip: "00283",
                    number : { // supercolumn
                       home: "23756511",
                       mobile : "23756512"
                    } 
               } 
         }
     }   
}

Ответы [ 2 ]

7 голосов
/ 13 марта 2012

Вложенный супер столбец в супер столбце для четырех уровней Насколько я знаю, это невозможно. Потому что вам нужно указать, ссылаясь на то, какое семейство столбцов этой текущей вставки вы хотите использовать. Обратите внимание на следующее: вы можете определить семейство столбцов верхнего уровня для семейства столбцов типа super. Тогда вы можете иметь несколько суперколонок в этом семействе суперколонок, и эти суперколонки будут иметь несколько пар столбец = значение, которые называются подколонками. Например,

list Users;    
Using default limit of 100
-------------------
RowKey: AlexS
=> (super_column=Address,
     (column=country, value=US, timestamp=1331614891360000)
     (column=state, value=NJ, timestamp=1331614891355000))
=> (super_column=number,
     (column=home, value=23756511, timestamp=1331614891406000)
     (column=mobile, value=23756512, timestamp=1331614891406001))
=> (super_column=phone,
     (column=zip, value=00283, timestamp=1331614891396000))

1 Row Returned.
Elapsed time: 21 msec(s).
2 голосов
/ 21 мая 2012

Еще один вариант - сохранить часть или всю пользовательскую сущность как JSON, поскольку именно так вы ее представляете. Затем, если вам нужно сделать обратный поиск, просто напишите свой собственный индекс для этого. В этом случае ваш ключ - «AlexS», тогда у вас будет столбец «Адрес», который будет содержать представление JSON (или любую сериализацию, которую вы хотите использовать) из данных адреса.

Тогда, если вы хотите искать по номеру телефона, у вас будет домашний индекс с ключом = номер телефона, а затем столбец для каждого идентификатора пользователя.

Это довольно распространенный подход с Кассандрой.

...