对“千万量级数据中查询 10W 量级的数据”设计了如下方案:
-
多线程+CK 翻页方案
-
ES scroll scan 深翻页方案
-
ES+Hbase 组合方案
-
RediSearch+RedisJSON 组合方案
初版设计方案
整体方案设计为:
-
先根据配置的「筛选规则」,从底池表中筛选出「目标数据」
-
在根据配置的「排序规则」,对「目标数据」进行排序,得到「结果数据」
技术方案如下:
①每天运行导数任务,把现有的千万量级的底池数据(Hive 表)导入到 Clickhouse 中,后续使用 CK 表进行数据筛选。
②将业务配置的筛选规则和排序规则,构建为一个「筛选 + 排序」对象 SelectionQueryCondition
。
③从 CK 底池表取「目标数据」时,开启多线程,进行分页筛选,将获取到的「目标数据」存放到 result 列表中。
//分页大小 默认 5000
int pageSize