如何使用Cassandra存储用户实体(“PK决定唯一ID与电子邮件”)

问题描述 投票:0回答:1

这是我的第一篇文章,因为我确信有一个比我更好的解决方案。我的问题是设计问题。

我使用Spring Boot 2.1.x在Cassandra数据库中存储用户实体。这到目前为止运作良好。它存储有

  • java生成的uuid
  • 邮件地址
  • 盐渍的密码
  • 一些用户定义的类型......

好吧,如果有人使用登录,我将获得邮件和密码以获取凭据。

为了检索用户对象,我希望一些WHERE子句带有“select * from user where username = mail”。

但是,在这种情况下,邮件必须是Cassandra中的分区键。但是,我希望用户能够更改她/他的邮件地址,然后它可能不是Cassandra表的主键的一部分。

我天真的想法是使用一个带有元组的反表(mail,java生成的uuid)来查找用户,然后使用uuid加载用户。

我正在学习如何正确处理Cassandra,但在恕我直言,我的设计是垃圾。

这就是我在用户bean中的含义。

@PrimaryKeyColumn(type = PrimaryKeyType.PARTITIONED, ordinal = 0, name = "id")
@JsonProperty("id")
private String id;

@PrimaryKeyColumn(type = PrimaryKeyType.CLUSTERED, ordinal = 1, name = "email")
@Email(message = "*Please provide a valid email")
@NotEmpty(message = "*Please provide an email")
@JsonProperty("email")
private String email;
spring spring-boot cassandra composite-primary-key
1个回答
0
投票

我只想提一下,这个主题基本上涉及卡桑德拉物化观点的正当性。我尝试使用带注释的自定义方面解决它,但将来我将使用物化视图。

© www.soinside.com 2019 - 2024. All rights reserved.