Как избежать конфликтов имен столбцов в cassandra

Мне нужно сохранить список имен пользователей в семействе столбцов Cassandra (широкие строки/динамические столбцы). Имя столбца/тип компаратора будет целочисленным, чтобы сортировать пользователей на основе оценки. Оценка колеблется от 0 до 100. Проблема в том, что если два или более пользователей имеют одинаковую оценку, как я могу хранить их в разных столбцах?, поскольку кассандра этого не допустит... Есть ли способ преобразовать целое число в timeuuids ? Или любое другое решение этой проблемы?


person Guru RajaSubbaiah    schedule 13.02.2014    source источник


Ответы (2)


Это проблема, с которой я сталкивался довольно часто (не оценки, а предотвращение конфликта имен столбцов). В общем, решение представляет собой ту или иную форму объединения UUID с именем столбца (поскольку они никогда не конфликтуют).

Если вы хотите продолжить сортировку по баллам, я советую вам использовать имя столбца CompositeType. Более конкретно:

CompositeType(score: Integer | time: TimeUUID)

Затем компаратор в Cassandra сначала сортирует по счету, а затем по времени (я полагаю, что самое последнее ставится последним). TimeUUID также должен позаботиться об «одновременной» публикации результатов, даже если вероятность того, что это будет иметь длинную метку времени, будет смехотворно низкой.

person le-doude    schedule 14.02.2014

Вы можете использовать функцию встроенного списка, см. http://www.datastax.com/dev/blog/cql3_collections Просто создайте столбец со значением и списком пользователей для этого значения.

person Martin Podval    schedule 13.02.2014