Мне нужно создать веб-страницу, на которой лидер группы может приглашать людей присоединиться к его/ее группе. Мои требования очень просты.
Нет отправки дубликатов электронных писем, если с человеком уже связались.
Покажите лидеру группы список приглашений, отсортированных по дате приглашения в порядке возрастания.
Кажется легким. Я создал эту таблицу.
CREATE TABLE invites (
email_address text,
invite_date timeuuid,
PRIMARY KEY (email_address, invite_date)
) WITH CLUSTERING ORDER BY (invite_date ASC);
Проблема 1: LWT бесполезен, если в качестве столбца Cluster используется полеvite_date.
Я решил использовать LWT, чтобы убедиться, что email_address уникален, только чтобы узнать, ЕСЛИ НЕ СУЩЕСТВУЕТ, похоже, работает только с целым ПЕРВИЧНЫМ КЛЮЧОМ, поэтому LWT в C * не работает для меня.
Проблема 2: я не могу получить упорядоченный список приглашений, чтобы спасти мне жизнь, даже если в качестве столбца Cluster используется параметрinvite_date.
Если я уберу приглашение_дату, я не смогу оформить «заказ» в CQL. Тем не менее, имея приглашение_date вне ПК, я могу использовать LWT...
Я даже не могу получить таблицу из 2 столбцов, чтобы выполнить 2 простых требования! Любая помощь в разработке моделирования данных для этой проблемы очень ценится.
Новинка от 4 декабря 2015 г.:
В дополнение к бизнес-требованиям у меня есть еще одно техническое требование: я хочу убедиться, что правильно смоделировал это в Cassandra, чтобы это позволило мне использовать возможности CQL LIMIT и pagingState в драйвере Java. Это означает, что я не могу просто прочитать все строки, отсортировать на стороне Java и вернуть результаты.