Cassandra Partitioning的最佳方法



我对Cassandra很陌生,我曾与Oracle SQL和Mongo DB一起工作,我正在努力学习Apache Cassandra在我正在工作的一个项目中使用它。

我有一定数量的传感器(假设是20个),将来可能会增加。他们每10秒发送一次数据到存储。我知道要处理这种情况,但不知道哪一种更好。

PRIMARY KEY ((sensor_id, day_month_year), reported_at);
PRIMARY KEY ((sensor_id, month_year), reported_at);

我不知道是否使用month_year对于单个分区来说数据太多,另一方面我认为如果我使用day_month_year它会创建太多分区,并且在尝试获取数据时读取速度太慢,因为它必须访问多个分区。

我应该用哪一个?如果你有其他好的建议或者只是给我一些解释,我很想听听。

把我的答案贴在这里,你也问过https://community.datastax.com/questions/10596/。

每10秒采集的传感器数据相当于:

  • 每分钟6条
  • 每小时360项
  • 每天8,640项
  • 每月260K条目

根据您为每行存储的其他数据,很难将每个分区的大小保持在推荐的100MB。这不是硬限制,所以您的分区可以超过100MB,但是您的分区越大,性能就越差。

就其本身而言,Cassandra并不适合执行分析查询,因为它是针对OLTP工作负载进行优化的,在OLTP工作负载中,您为每个应用程序请求读取一个分区。如果需要使用OLAP,则需要使用Spark来提高效率。干杯!

最新更新