我是 Cassandra 的新手,我开始设计一个简单的用户表用于帐户注册和登录目的。这很简单:
行键:用户名;列:电子邮件、姓名、密码、盐。
或者:
行键:uuid;列:用户名、电子邮件、姓名、密码、盐。
关于这个简单的结构,我有两个问题:
- 我需要一个用于查找电子邮件(和用户名)的索引。我可以使用二级索引或手动创建索引。由于电子邮件/用户名列的基数很高,我应该选择第二个选项吗?显然二级索引适用于低基数列。
- 更重要的是,我立即遇到了同时向表中插入键的问题——我需要先读后写以确保用户名(或电子邮件)不在数据库中。有没有办法避免潜在的竞争条件(例如两个用户同时注册相同的用户名/电子邮件)?还是使用额外的关系数据库来处理用户注册并将用户帐户详细信息复制到 cassandra 数据库以用于登录和其他目的的正确解决方案?