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

Простите, что спросил что-то, что, вероятно, объясняется в другом месте, но у меня возникают проблемы при разработке модели данных в Кассандре.

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

Мне не удалось найти ресурс, который объясняет, как это делать.Мои первые мысли включают в себя несколько CF - CF транзакции, CF ключевого слова_транзакции, CF источника_транзакции и, возможно, CF дня_транзакции (или что-то подобное).Это сделало бы очень простым поиск транзакций, основанных на любом из вышеперечисленных пунктов, но не похоже, что это позволит мне выполнять поиск по всем перечисленным пунктам.

Есть мысли?

1 Ответ

3 голосов
/ 14 марта 2012

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

cf : transactions
rowkey : source/uuid (suggestion)
  cn : source  
  cv : UTF8
  cn : keyword
  cv : UTF8
  cn : date
  cv : DateType
  cn : time
  cv : DateType


cf : keywords
rowkey : keyword
   cn : source
   cv : UTF8

, где у вас будет стандартное семейство столбцов под названием транзакции и несколько столбцовимя (cn) и соответствующее ему значение столбца (cv).Каждая из этих транзакций идентифицируется ключом строки.Другое стандартное семейство столбцов - это ключевые слова, в которых ключевое слово будет rowkey.

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

  • получить все транзакции, где источник равен ''
       get transactions where source = '' 
       
  • получить все транзакции, где источник равен'' и ваша дата> ''
       get transactions where source = '' and date > '';
       
  • получить всю транзакцию на дату x
       get transactions where date = '';
       
  • получить все имя источника на основе ключевого слова
       get keywords['keyword'];
       
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...