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

Cassandra Table Design: User Defined Types or just holding the id as reference

我有一个用户table:

@Table
public class User implements UserDetails {

    @PrimaryKey
    private UUID id;

    @Indexed
    private String username;

    ...
}

和这样的意见 table:

@Table
public class Opinion {
    ..

    @Indexed
    private User owner;
}

由于这种对用户意见的引用不会自动起作用,我发现你必须声明一些额外的 "user defined types" 就像在 中一样。我觉得很奇怪。样板代码。

这是我多年来使用 Spring 数据所做的事情之一,非常容易。

现在我一直在尝试使用 Cassandra DB,但我真的不确定如何实现。 问题:这是做这种简单的参考资料的方式吗?或者我真的应该像这样引用用户 ID 吗?

@Table
public class Opinion {
    ..

    @Indexed
    private String owner_id;
}

就像你说的——我们只存储对用户的引用(在我们的例子中是 UUID 字段)。

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

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

好文章
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