我正在尝试设计一个数据库来存储用户信息并对其进行身份验证。
我的字段包括姓名、电子邮件、密码、电话号码、城市。
我应该如何对我的数据进行分区,以便有效地对它们进行身份验证?
我正在尝试设计一个数据库来存储用户信息并对其进行身份验证。
我的字段包括姓名、电子邮件、密码、电话号码、城市。
我应该如何对我的数据进行分区,以便有效地对它们进行身份验证?
根据您的需要,有不同的处理方法。我们建议您使用自然键,例如电子邮件地址,因为默认情况下它们是普遍唯一的。
这是一个使用电子邮件作为分区键的表模式:
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 EXISTS
和IF NOT EXISTS
. 例如,为了防止覆盖现有用户的详细信息:
INSERT INTO users_by_email (...) VALUES (...) IF NOT EXISTS
INSERT INTO users_by_username (...) VALUES (...) IF NOT EXISTS
作为与架构无关的旁注,我们建议您在将用户密码存储到数据库之前对其进行加密,以获得最佳实践。干杯!