Схема Cassandra для аутентификации
Я пытаюсь создать базу данных для хранения информации о пользователях и их аутентификации.
Мои поля включают имя, адрес электронной почты, пароль, номер телефона, город.
Как мне разделить свои данные, чтобы их можно было эффективно аутентифицировать?
1 ответ
Есть разные способы справиться с этим в зависимости от ваших потребностей. Мы рекомендуем использовать естественный ключ, например адреса электронной почты, поскольку по умолчанию они универсально уникальны.
Вот схема таблицы, в которой в качестве ключа раздела используются электронные письма:
CREATE TABLE users_by_email (
email text,
name text,
password text,
phone text,
city text,
PRIMARY KEY (email)
)
Вариант - если вы хотите, чтобы пользователи могли выбирать имя пользователя:
CREATE TABLE users_by_username (
username text,
email text,
name text,
password text,
phone text,
city text,
PRIMARY KEY (username)
)
Мы рекомендуем вам использовать функцию Cassandra compare-and-set (CAS) с облегченными транзакциями (LWT) с использованием условного
IF EXISTS
а также
IF NOT EXISTS
. Например, чтобы предотвратить перезапись данных существующих пользователей:
INSERT INTO users_by_email (...) VALUES (...) IF NOT EXISTS
INSERT INTO users_by_username (...) VALUES (...) IF NOT EXISTS
В качестве побочного примечания, не связанного со схемой, мы рекомендуем в качестве передовой практики шифровать пароли пользователей перед их сохранением в базе данных. Ваше здоровье!