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

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

2 ответа

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

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

CompositeType(score: Integer | time: TimeUUID)

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

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

Другие вопросы по тегам