cassandra用户表数据建模

hc8w905p  于 2021-06-09  发布在  Cassandra
关注(0)|答案(1)|浏览(276)

我在学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)
);

根据Cassandra数据模型,上表设计是否有效?
为什么?因为如果我想创建一个用户,我必须在5个表中插入
如果我想更新电子邮件、电话或密码,首先我必须删除表中的条目,然后用更新的值插入

r7s23pms

r7s23pms1#

根据Cassandra数据模型,上表设计是否有效?
是的,这是有效的表设计,根据Cassandra数据建模。
为什么?因为如果我想创建一个用户,我必须在5个表中插入
这就是在cassandra中所做的,首先你有你想要满足的查询,然后根据它们设计你的表。
如果我想更新电子邮件、电话或密码,首先我必须删除表中的条目,然后用更新的值插入
只需更新这些值,不需要先删除它们。但要确保更新每个表中相应的条目。

相关问题