Cassandra表设计:用户定义的类型或仅保留id作为参考

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

我有一个用户表:

@Table
public class User implements UserDetails {

    @PrimaryKey
    private UUID id;

    @Indexed
    private String username;

    ...
}

和类似这样的意见表:

@Table
public class Opinion {
    ..

    @Indexed
    private User owner;
}

由于在观点上对用户的这种引用不会自动进行,所以我发现您必须像this post中那样声明一些额外的“用户定义类型”。我想这很奇怪,就像许多样板代码一样。

[这是我很多年来经常使用Spring Data做的事情之一。

现在我一直在尝试与Cassandra DB一起玩,我真的不确定如何实现这一目标。问题:这是做这种简单引用东西的方式吗?还是我真的应该像这样引用用户ID?

@Table
public class Opinion {
    ..

    @Indexed
    private String owner_id;
}
cassandra spring-data spring-data-cassandra
1个回答
2
投票

[就像您说的那样,我们只存储对用户的引用(在我们的情况下是UUID字段)。

[当您需要检索链接到Opinion对象的用户时,您将第二个查询发送到cassandra数据库。

另一个选择是复制数据,例如将用户名直接存储在Opinion对象中。这取决于您的应用程序-当此数据可以更改时,您可能需要更新所有Opinion条目。

好文章http://patrickmcfadin.com/2014/02/05/getting-started-with-time-series-data-modeling/http://planetcassandra.org/blog/escaping-from-disco-era-data-modeling/http://www.ebaytechblog.com/2012/07/16/cassandra-data-modeling-best-practices-part-1/#.VH-OezHF_6M

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