0

我正在尝试设计一个数据库来存储用户信息并对其进行身份验证。

我的字段包括姓名、电子邮件、密码、电话号码、城市

我应该如何对我的数据进行分区,以便有效地对它们进行身份验证?

4

1 回答 1

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 的比较和设置 (CAS) 功能和轻量级事务(LWT),使用条件IF EXISTSIF NOT EXISTS. 例如,为了防止覆盖现有用户的详细信息:

INSERT INTO users_by_email (...) VALUES (...) IF NOT EXISTS
INSERT INTO users_by_username (...) VALUES (...) IF NOT EXISTS

作为与架构无关的旁注,我们建议您在将用户密码存储到数据库之前对其进行加密,以获得最佳实践。干杯!

于 2021-08-23T02:56:09.250 回答