Модель данных NoSQL (cassandra) для моего проекта

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

коллекция1 { алгоритм1, алгоритм5, алгоритм6}

коллекция2 { алгоритм5, алгоритм6, алгоритм7, алгоритм8}

и т. д.

и мне нужно хранить такие данные, как успех, вероятность выбора, оценка и т. д. для каждого алгоритма (каждые 2 минуты) в коллекции. Поэтому я выбрал Cassandra в качестве хранилища данных, потому что она отлично работает с временными рядами. Мне нужно, чтобы мои данные были сохранены для последующего отображения на некоторых графиках и диаграммах. Как вы думаете, мое решение модели данных в порядке? Я сделал это таким образом:

CREATE TABLE algorithm_by_collection_and_date (
   algorithm_id text,
   collection_id text,
   date text,
   event_time timestamp,
   score double,
   probability double,
   PRIMARY KEY ((algorithm_id,collection_id,date),event_time)
);

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

Что Вы думаете об этом? Спасибо, Ян


person Jan Bouchner    schedule 29.03.2014    source источник


Ответы (1)


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

CREATE TABLE algorithm
(
    algorithmId uuid PRIMARY KEY,
    algorithmName text
)

CREATE TABLE collection
(
    collectionID uuid PRIMARY KEY,
    collectionName text
)

CREATE TABLE algo_collection
(
    algoCollectionID uuid PRIMARY KEY
    collectionID
    algorithmID
)

CREATE TABLE recommendation
(
    algoCollectionID 
    date    
    event_time,
    score,
    probability

)
person M.K.    schedule 31.03.2014