我正在为我的大数据项目寻找最佳数据库。 我们正在从一些传感器收集数据。每行大约有一百列。 每天我们存储数百万行。
最常见的查询是在一个日期范围内检索一个传感器的数据。
此刻,我使用percona mysql集群。当我几天询问数据范围时,响应速度很快。问题是当我问一个月的数据时。 数据库已经过完美优化,但是响应时间不可接受。
我想用能够在所有节点上并行执行查询的数据库来更改percona集群,以缩短响应时间。
有了Cassandra,我可以跨节点对数据进行分区(也许基于当前日期),但是我已经读到cassandra无法并行地在分区之间读取数据,但是我必须每天创建一个查询。 (我不知道为什么)
是否有一个数据库可以自动管理分片查询,所以我可以在所有节点上分发数据?
答案 0 :(得分:0)
使用Cassandra,如果将数据拆分到多个分区中,则仍然可以通过异步执行多个查询来并行读取分区之间的数据。
Cassandra驱动程序可帮助您解决此问题,请参见python driver中的execute_concurrent
。
此外,cassandra驱动程序知道数据分区,它知道哪个节点保存哪些数据。因此,在读取或写入时,它会根据驱动程序load balancing policy(特别是TokenAwarePolicy
)来选择一个合适的节点来发送查询。
因此,客户端充当负载平衡器,并且可用节点并行处理您的请求。