Кассандра, если она не существует, чтобы обеспечить уникальные электронные письма

Здравствуйте, я новичок в Cassandra и начал изучать ее пару дней назад. У меня есть вопрос, когда дело доходит до функции if not exists. Если не существует, работает только с 1 столбцом? . Меня беспокоит то, что если у меня есть семейство столбцов, содержащее 3 свойства, такие как

ID (UUID: первичный ключ), адрес электронной почты (текст) и имя (текст). и сохранить это в базе данных

        1,   "[email protected]"  ,   "John"

Если кто-то еще попытается зарегистрироваться и введет «[email protected]» и «Джон» в качестве имени, пройдет ли это и будет принято? Очевидно, что будут люди с одинаковым именем и разными адресами электронной почты, и я не хотел бы, чтобы эта вставка была отклонена. По сути, я просто хочу отклонить вставку, если электронная почта уже существует в базе данных и ничего больше.


person Ignacio Perez    schedule 24.07.2016    source источник


Ответы (1)


Когда вы выполняете INSERT … IF NOT EXISTS, это гарантирует, что вставка выполняется только тогда, когда запись с тем же PK не существует. Помните, что без предложения IF EXISTS это будет похоже на ОБНОВЛЕНИЕ для этого PK, т.е. INSERT с использованием того же PK — это просто UPDATE в Cassandra, и если вы не хотите такого поведения, то это где IF NOT EXISTS aka Lightweight Transaction (LWT) помогает. Таким образом, в вашем случае, если кто-то еще поместит «[email protected]» и «Джон», тогда он будет продолжаться, если идентификатор отличается. Обратите внимание, что «ЕСЛИ НЕ СУЩЕСТВУЕТ» здесь просто гарантирует, что существующее значение идентификатора не будет перезаписано. , Поскольку ваш идентификатор имеет тип UUID, поэтому кажется, что вы можете получить один и тот же адрес электронной почты для разных идентификаторов, что, я думаю, может быть не тем, что вам нужно.Если вы хотите отклонить вставку, если электронная почта уже существует, тогда будет лучше используйте email_address как PK, и это гарантирует, что никакая вставка с существующим PK не разрешена.

person dwivedialok    schedule 24.07.2016