解决mongo大数据量下复杂查询的性能问题

解决mongo大数据量下复杂查询的性能问题

本篇背景是我们获取应用运行时产出的日志,做展示。比如机器人运行时日志,用户问句对应意图这些信息,对于业务方是关注的,
他可以检索相关日志信息,对不正确问句意图进行重新标注。然而该机器人运行日志每小时千万级,当时我们系统也只保存2个月数据,
并存放在mongo中的,最终日志会同步给数据平台,所有我们并没有使用hbase和hive这类存储。

mongo 游标

游标不是查询结果,而是查询的一个返回资源或者接口,通过这个接口,可以逐条读取数据。
就类似java中的读取文件流一样,使用readLine()方法一行一行去读。

  • batchSize(int size):每次网络请求返回的document条数,比如你需要查询1000条数据,mongodb不会一次性全部load并返回给client,
    而是每次返回batchSize条,遍历完之后后再通过网路IO获取直到cursor耗尽。默认情况下,首次批量获取101个document或者1M的数据,此后每次4M,
    当然我们可以通过此方法来覆盖默认值,如果文档尺寸较小,则建议batchSize可以大一些。

  • skip(int number)、limit(int number):同SQL中的limit字句,即表示在符合匹配规则的结果集中skip一定数量的document,并最终返回limit条数据。可以实现分页查询。

  • sort(Bson bson):根据指定field排序,参与排序的字段最好是索引,如

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值