Моделирование данных пользовательских таблиц Cassandra

#cassandra #data-modeling #cassandra-3.0 #datamodel

#cassandra #моделирование данных #cassandra-3.0 #модель данных

Вопрос:

Я изучаю cassandra. Я должен выполнить базовое моделирование пользовательских таблиц. Вот что я сделал.

 CREATE KEYSPACE IF NOT EXISTS users 
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};

CREATE TYPE IF NOT EXISTS users.date_type(
    month SMALLINT,
    day SMALLINT,
    year INT
);

CREATE TYPE IF NOT EXISTS users.phone_type(
    code INT,
    phone TEXT,
);

-- create user
CREATE TABLE IF NOT EXISTS users.user(
    userid TIMEUUID,
    name TEXT,
    dob FROZEN<date_type>,
    username TEXT,
    email TEXT,
    phone FROZEN<phone_type>,
    email_verified BOOLEAN,
    phone_verified BOOLEAN,
    created_on TIMESTAMP,
    PRIMARY KEY (userid)
);

-- get user by username
CREATE TABLE IF NOT EXISTS users.user_by_username(
    userid TIMEUUID,
    username TEXT,
    password TEXT,
    PRIMARY KEY (username)
);

-- get user by user phone number
-- can have same number for more than one account
CREATE TABLE IF NOT EXISTS users.user_by_phone(
    userid TIMEUUID,
    phone FROZEN<phone_type>,
    password TEXT,
    PRIMARY KEY (phone, userid)
);

-- get user by email
-- can have same email for more than one account
CREATE TABLE IF NOT EXISTS users.user_by_email(
    userid TIMEUUID,
    email TEXT,
    password TEXT,
    PRIMARY KEY (email, userid)
);

-- user history
CREATE TABLE IF NOT EXISTS users.user_history(
    userid TIMEUUID,
    name TEXT,
    dob FROZEN<date_type>,
    username TEXT,
    phone FROZEN<phone_type>,
    email TEXT,
    phone_verified BOOLEAN,
    email_verified BOOLEAN,
    action TEXT,
    date TIMESTAMP,
    PRIMARY KEY (userid, date, action)
);
  
  1. Является ли приведенная выше конструкция таблицы действительной в соответствии с моделированием данных cassandra?
  2. Почему, потому что, если я хочу создать пользователя, мне нужно вставить в 5 таблиц
  3. И если я хочу обновить адрес электронной почты, телефон или пароль, сначала я должен удалить запись в таблице, а затем вставить с обновленными значениями

Комментарии:

1. в Cassandra все начинается с перечисления всех запросов, а затем создания таблиц

2. Кроме того, пожалуйста, задавайте только один вопрос за вопрос.

Ответ №1:

Является ли приведенная выше конструкция таблицы действительной в соответствии с моделированием данных cassandra?

Да, это допустимый дизайн таблицы в соответствии с моделированием данных Cassandra.

Почему, потому что, если я хочу создать пользователя, мне нужно вставить в 5 таблиц

Вот как вы работаете в Cassandra: сначала у вас есть запросы, которые вы хотите обслуживать, а затем разрабатываете свои таблицы в соответствии с ними.

И если я хочу обновить адрес электронной почты, телефон или пароль, сначала я должен удалить запись в таблице, а затем вставить с обновленными значениями

Просто обновите значения, вам не нужно сначала их удалять. Но убедитесь, что вы обновили соответствующие записи в каждой таблице.