哪种分布式数据库适合处理返回的数据集很大(几兆几十兆)的并发场景?有一批实时的时间序列数据,需要按时间来查询,并做聚合及复杂处理(不止是sum、avg、max这种),目前来看分布式数据库是elasticsearch跟redis这两种都不太适合使用。
elasticsearch是做非关系数据的搜索引擎场景使用的,比如日志查询场景,redis是主要是做零时文件查询cache使用,大数据查询场景,特别是做join,sum等操作,建议使用hive架构、hatp架构还有就是后起之秀ClickHouse数据库在不少大的互联网公司作为实时大数据分析使用,性能非常强,大数据的聚合查询,大数量的复查查询类场景,我理解性能提升关键有下面几点,一是列式存储是提高性能的关键点,二是还有就是分布式节点架构,所有节点都能参与进来,三是节点本身能过滤计算数据集合,减少数据在网络上的传输量,四是可以使用底层的存储级索引,可以在物理存储过滤掉一些成本。
收起提供一个思路,返回数据集很大一般在几个场景中遇到,1、jdbc对数据库进行读取不够合理;2、数据分析场景下需要对千万级数据进行快速计算和响应;3、调用存储过程返回庞大的结果集。
在这种情况下,有一些是通过数据库解决,还有一些通过应用的优化进行解决,比如分页或减少结果集传输次数,如果从数据库层面进行选型,很多分布式数据库都适合,关键看是否匹配场景,匹配能力是否覆盖,1、是否具备多维度关联预先计算出结果的能力;2、是否具备高并发场景的能力,其中涉及锁的机制;3、是否具备应对维度过大和枚举值多的能力。