Является ли суперстолбец в Cassandra подходящей моделью для отношений 1:n в традиционной СУБД?

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

У меня следующая ситуация: в транзакционной системе у нас есть таблица с бизнес-процессами, которые выполняются пользователями. Этим процессом может быть что-то вроде «списания автомобиля с ID xzy». Сам процесс включает в себя произвольные задачи, которые могут потребоваться или не потребоваться для выполнения процесса.

Теперь в БД Cassandra мы хотим настроить мониторинг процессов. То есть количество процессов в день, количество открытых процессов, количество отмененных процессов и самое главное: на каком шаге процесс был остановлен, отменен или приостановлен. Также представляет интерес количество времени, которое потребовалось для шага до его завершения.

Имейте в виду, что все эти процессы и шаги выполняются вручную и сообщаются в системе.

Теперь я думаю, как лучше смоделировать это.

Я думаю о суперстолбце с идентификатором процесса (хранящимся как uuid) и информацией о самом задании/процессе, а также о строках для шагов, каждый с идентификатором шага (также UUID) в качестве ключа столбца.

Будет ли это подходящей моделью?

Я также не уверен в значениях времени. У меня есть время начала и окончания всего процесса, а также время начала и окончания для каждого шага. Учитывая тот факт, что большинство запросов будут основаны на времени, например, «сколько заданий по выводу из эксплуатации было запущено сегодня?», значения времени имеют жизненно важное значение. Должен ли я использовать вторичный индекс или лучше подходит таблица со временем в качестве ключа столбца?

Может быть, кто-то может направить меня в правильном направлении, так как я все еще новичок в Кассандре.

С уважением,

Крис


person siliconchris    schedule 23.02.2015    source источник


Ответы (1)


Для этого вам не нужны суперстолбцы (которые, кстати, устарели). Вместо этого следует использовать ключи кластеризации. Вы можете получить представление о том, как они работают, из этого ответа. Следующий первичный файл позволит вам отслеживать статус каждого процесса, задачи и времени события: primary key (process_id, task_id, time). После этого вы можете запросить его либо только по идентификатору процесса, либо по идентификатору процесса и идентификатору задачи.

person Stefan Podkowinski    schedule 24.02.2015
comment
Ключи кластеризации — это концепция CQL для (устаревших) столбцов динамики Thrift; но это то же самое в конце. - person Cedric H.; 26.12.2015