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
我有一个用户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