我希望能从多个来源将数据存储在Cassandra中,并每小时运行一次任务,以处理该特定小时的数据点。为此,最好使用哪种模式?
为避免热点问题,我不能将每小时的所有数据都放在单个分区中,因此每小时的数据需要分布在许多分区中。
所以我看到两种查询特定小时的方式:
1.每小时创建一个新表,并对该表执行无where子句的select *以读取该小时的数据。我认为这对于读写是有效的,但管理如此多的表会很麻烦。
2.每周创建一个新表,并在其中包含一列用于表示一周内的小时数(即1至168),并在其上创建一个二级索引。然后可以执行where hour=x的select *。这似乎有效,但如果有大量行,则担心它不会很好地扩展。
是否有人知道哪种方法更好?还有其他更好的方法吗?
谢谢。
为避免热点问题,我不能将每小时的所有数据都放在单个分区中,因此每小时的数据需要分布在许多分区中。
所以我看到两种查询特定小时的方式:
1.每小时创建一个新表,并对该表执行无where子句的select *以读取该小时的数据。我认为这对于读写是有效的,但管理如此多的表会很麻烦。
2.每周创建一个新表,并在其中包含一列用于表示一周内的小时数(即1至168),并在其上创建一个二级索引。然后可以执行where hour=x的select *。这似乎有效,但如果有大量行,则担心它不会很好地扩展。
是否有人知道哪种方法更好?还有其他更好的方法吗?
谢谢。
TokenAwarePolicy
http://docs.datastax.com/en/drivers/java/2.1/com/datastax/driver/core/policies/TokenAwarePolicy.html - joscas