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,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,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,PRIMARY KEY (email,userid)
);

-- user history
CREATE TABLE IF NOT EXISTS users.user_history(
    userid TIMEUUID,action TEXT,date TIMESTAMP,PRIMARY KEY (userid,date,action)
);
  1. 根据cassandra数据建模,以上表格设计是否有效?
  2. 为什么要创建用户,必须插入5个表
  3. 如果我想更新电子邮件,电话或密码,首先我必须删除表中的条目,然后使用更新后的值插入

解决方法

根据cassandra数据建模,以上表格设计是否有效?

是的,根据Cassandra数据建模,这是有效的表设计。

为什么要创建用户,必须插入5个表

这是在Cassandra中的工作方式,首先要满足您要查询的查询,然后根据它们设计表。

如果我想更新电子邮件,电话或密码,首先我必须 删除表中的条目,然后插入更新后的值

只需更新值,则无需先删除它们。但是请确保在每个表中更新相应的条目。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...