2016-02-12 146 views
1

我试图使用Cassandra-Java驱动程序的映射注释。我有一个对象Cassandra自定义类型映射器

@Table(keyspace = "ks", name = "logs") 
public Log() { 
    @PartitionKey 
    private String source; 
    @ClusteringColumn 
    private long timestamp; 
    private String message; 
} 

业务逻辑就是这样写的。问题是我需要限制分区的增长。所以,我决定在分区键中使用部分时间戳。新的主键将是((source, date), timestamp)

我可以在不向Log类添加新字段的情况下执行此操作吗?我可以更改“日志”类的注释或添加任何其他中介类。

回答

2

新的主键将是((源,日期),时间戳)。

@Table(keyspace = "ks", name = "logs") 
public Log() { 
    @PartitionKey(0) 
    private String source; 

    @PartitionKey(1) 
    private long date; 

    @ClusteringColumn 
    private long timestamp; 

    private String message; 
} 

只要创建一个从timestamp现场提取的新date现场和@PartitionKey注释定义分区键顺序

+0

感谢您的快速答复。我可以在不向Log类添加新字段的情况下执行此操作吗? – yolgun

+0

不,这是唯一的方法 – doanduyhai