我正在尝试简单的CRUD操作Cassandra,并且不明白我应该如何建模数据。
假设我们需要管理简单的用户数据:
UserId | Email | Name
我们希望能够通过UserId
或Email
获取信息。此外,我们希望能够更改用户信息,即Email
和Name
。
这让我陷入两难境地:通过Email
查询,我应该将它添加到PRIMARY KEY。但如果我将其编入索引,我将无法更新它。
我应该如何更改数据模型或索引以便能够更新数据?
据我所知,二手指数在卡桑德拉是邪恶的,我不应该用它们来保持卡桑德拉的表现。
答案 0 :(得分:3)
实际上,除非绝对必须,否则不应使用二级索引。但是,如果您需要通过电子邮件进行搜索,则可以创建另一个包含2列的表格,Email
和UserId
。主键为Email
,这就是UserId
按Email
搜索的方式。可以将其视为传统关系数据库中的索引。由于Email
值应该是唯一的 - 查找表方法应该比二级索引更有效。
按UserId
找到Email
后,您可以在对主表的查询中使用它。