Семейство динамических столбцов в cassandra для фидов

В моем случае использования мне нужно преобразовать статические столбцы (CQL3 CF) в динамические столбцы (чтобы я мог увеличивать или уменьшать столбцы во время выполнения). Я работаю в DSE 4.5.

В этом семействе столбцов я должен писать каналы (вставка данных будет в режиме реального времени). Например: CF будет хранить каналы пользователей на основе идентификатора пользователя и отметки времени, а user1 может иметь 10 столбцов, user2 может иметь 20 столбцов (каждый пользовательские столбцы могут различаться).

В настоящее время в CQL3 CF,

CREATE TABLE USER_FEED (
userid int,
timestamp int,
col1 string,
col2 int,
col3 string,
....
PRIMARY KEY (userid,timestamp)

Мне нужно разработать модель данных. Я думаю, что я должен создать Dynamic CF. Но мой вопрос: могу ли я объединить строки, чтобы сделать ключ строки? Если да, то как я могу читать данные с комбинированным ключом строки и могу ли я хранить фид, как данные, в Dynamic CF? Есть ли какой-либо пример или вариант использования?


person user3632180    schedule 11.07.2014    source источник


Ответы (1)


Конечно, вы можете не заполнять определенные столбцы данной строки или удалять один или несколько столбцов существующих строк, но все столбцы всех строк должны быть объявлены при создании таблицы.

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

Или... вы можете определить столбец "user_data", который является картой, а затем вы можете заполнить или удалить элементы этого столбца карты. Но тогда запросы становятся более громоздкими, и все части пользовательских данных должны иметь один и тот же тип, например строку.

Или... вы можете пойти по маршруту больших двоичных объектов и использовать DSE/Solr с преобразователем ввода полей для извлечения полей больших двоичных объектов и заполнения динамических столбцов Solr, которые затем можно легко запросить.

Фактически, подход столбца карты приводит к тому, что DSE/Solr неявно создает динамические поля Solr для каждого элемента карты, поэтому разница между использованием карты или большого двоичного объекта с преобразователем ввода поля может быть больше вопросом предпочтения, стиля и удобства.

Как вы собираетесь запрашивать данные?

person Jack Krupansky    schedule 11.07.2014
comment
Джек, мне нужно искать данные с любым ключом (для которого я создал вторичные индексы через solr) и, возможно, требуется выполнить аналитику (объединение, вычисления...) через Hive или Shark. - person user3632180; 15.07.2014
comment
Джек, подскажите, как мне использовать DSE/Solr с полевым входным преобразователем для извлечения полей больших двоичных объектов и заполнения динамических столбцов Solr, которые затем можно легко запрашивать? - person user3632180; 19.08.2014