Мне нужно сохранить список имен пользователей в семействе столбцов Cassandra (широкие строки/динамические столбцы). Имя столбца/тип компаратора будет целочисленным, чтобы сортировать пользователей на основе оценки. Оценка колеблется от 0 до 100. Проблема в том, что если два или более пользователей имеют одинаковую оценку, как я могу хранить их в разных столбцах?, поскольку кассандра этого не допустит... Есть ли способ преобразовать целое число в timeuuids ? Или любое другое решение этой проблемы?
Как избежать конфликтов имен столбцов в cassandra
Ответы (2)
Это проблема, с которой я сталкивался довольно часто (не оценки, а предотвращение конфликта имен столбцов). В общем, решение представляет собой ту или иную форму объединения UUID с именем столбца (поскольку они никогда не конфликтуют).
Если вы хотите продолжить сортировку по баллам, я советую вам использовать имя столбца CompositeType. Более конкретно:
CompositeType(score: Integer | time: TimeUUID)
Затем компаратор в Cassandra сначала сортирует по счету, а затем по времени (я полагаю, что самое последнее ставится последним). TimeUUID также должен позаботиться об «одновременной» публикации результатов, даже если вероятность того, что это будет иметь длинную метку времени, будет смехотворно низкой.
Вы можете использовать функцию встроенного списка, см. http://www.datastax.com/dev/blog/cql3_collections Просто создайте столбец со значением и списком пользователей для этого значения.