Схема 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

В качестве побочного примечания, не связанного со схемой, мы рекомендуем в качестве передовой практики шифровать пароли пользователей перед их сохранением в базе данных. Ваше здоровье!

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