卡桑德拉中的增删改查
CRUD in Cassandra
我正在使用简单的 CRUD 操作尝试 Cassandra,但不明白我应该如何对数据建模。
比方说,我们需要管理简单的用户数据:
UserId | Email | Name
我们希望能够通过 UserId
或 Email
获取信息。我们还希望能够更改用户信息,即 Email
和 Name
.
这让我进退两难:要按Email
查询,我应该将其添加到PRIMARY KEY。但是如果我索引它,我将无法更新它。
我应该如何更改数据模型或索引才能更新数据?
据我所知,二级索引在 Cassandra 中是邪恶的,我不应该使用它们来保持 Cassandra 的性能处于良好水平。
事实上,除非万不得已,否则不应使用二级索引。但是,如果您需要通过电子邮件进行搜索,您可以创建另一个 table,其中包含 2 列 - Email
和 UserId
。主键将是 Email
,这就是您通过 Email
搜索 UserId
的方式。将其视为传统关系数据库中的索引。由于 Email
值应该是唯一的 - 查找 table 方法应该比二级索引更有效。
一旦您通过 Email
找到了 UserId
,您就可以在 table.
的查询中使用它
我正在使用简单的 CRUD 操作尝试 Cassandra,但不明白我应该如何对数据建模。
比方说,我们需要管理简单的用户数据:
UserId | Email | Name
我们希望能够通过 UserId
或 Email
获取信息。我们还希望能够更改用户信息,即 Email
和 Name
.
这让我进退两难:要按Email
查询,我应该将其添加到PRIMARY KEY。但是如果我索引它,我将无法更新它。
我应该如何更改数据模型或索引才能更新数据?
据我所知,二级索引在 Cassandra 中是邪恶的,我不应该使用它们来保持 Cassandra 的性能处于良好水平。
事实上,除非万不得已,否则不应使用二级索引。但是,如果您需要通过电子邮件进行搜索,您可以创建另一个 table,其中包含 2 列 - Email
和 UserId
。主键将是 Email
,这就是您通过 Email
搜索 UserId
的方式。将其视为传统关系数据库中的索引。由于 Email
值应该是唯一的 - 查找 table 方法应该比二级索引更有效。
一旦您通过 Email
找到了 UserId
,您就可以在 table.