Cassandra 分区的最佳方法
Best approach for Cassandra Partitioning
我是 Cassandra 的新手,我使用过 Oracle SQL 和 Mongo 数据库,我正在尝试学习 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 个条目
- 每月 26 万条条目
根据您为每一行存储的其他数据,很难将每个分区的大小保持在建议的 100MB。这不是一个硬性限制,因此您的分区可以超过 100MB,但您的分区越大,性能就越差。
就其本身而言,Cassandra 并不是执行分析查询的理想选择,因为它针对 OLTP 工作负载进行了优化,在这种情况下,您需要为每个应用程序请求读取一个分区。如果你需要做 OLAP,你将需要在 Spark 中做,以提高效率。干杯!
我是 Cassandra 的新手,我使用过 Oracle SQL 和 Mongo 数据库,我正在尝试学习 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 个条目
- 每月 26 万条条目
根据您为每一行存储的其他数据,很难将每个分区的大小保持在建议的 100MB。这不是一个硬性限制,因此您的分区可以超过 100MB,但您的分区越大,性能就越差。
就其本身而言,Cassandra 并不是执行分析查询的理想选择,因为它针对 OLTP 工作负载进行了优化,在这种情况下,您需要为每个应用程序请求读取一个分区。如果你需要做 OLAP,你将需要在 Spark 中做,以提高效率。干杯!