咨询每天1000万数据量的插入、更新操作,以及6个条件各种组合查询的快速响应解决方案

我们有个需求,每天会有1000万数据量的插入、更新操作(存在该条数据就插入,不存在就更新),同时,在查询页面,有6个查询条件,可以随便组合,可能根据1个条件查、也可能3个,也可能6个条件一起查,并且要求查询响应时间最好在秒级,最差要在5s以内。麻烦问下各位,需要使用什么技术,最好在帮我简单说一下具体的实现方案?MongoDB吗,还是其他什么技术方案能实现啊?跪谢 跪谢 跪谢~~~~~~~

建议如下

       1、拆库。根据提供的实例,考虑按时间拆分数据库,如几个小时或一个小时一个库,查询时,根据查询时间代码计算库名,启动多线程并发查询不同库,以此提升效率。

        2、插入和更新优化。查询、插入、更新分开操作,查询算一步,按第一步处理,讲插入和更新的数据分别存放队列,启用异步线程批量处理,减少查询等待时间。

        3、考虑分布式,MongoDB支持分布式,多台机器效率必定提升。

 

建议使用大数据平台hbase,设计好rowkey规则。

mongodb能实现吗?用mongodb建这6个字段的联合索引,有的时候查询的很快(秒级),有的时候查询的很慢(几分钟或者十几分钟),是我建的索引的问题吗?还是说mongodb就是这个性能了,快不了了?

如果mongodb能解决的话还是想用mongodb。用mongodb能实现这个需求吗?

如果用mongodb能解决的话,实现方案简单的说一下呗。跪谢 跪谢 ~~~

如果要控制查询快的话,可以做读写分离。数据量大可以做分库分表。查询慢可以看下是执行计划是否有走索引。

执行计划走索引了。我建了一个索引(见下图)。 但是查询还是那么慢。如这个查询:{ $and: [ { "datetime": { $gte: ISODate("2021-01-27T04:00:00.000+0000") } }, { "datetime": { $lte: ISODate("2021-01-27T04:00:59.000+0000") } }, { "a": { $in: ['FROM1'] } }, { "b": "202120210118002"}, { "c": { $in: ['1'] } } , { "d": "13801000007" } ] } ,用了2分钟才查出来。我建的索引有问题吗?

https://mp.weixin.qq.com/s/XlwvwizvlC8gmp8cYElDVg Druid, 其核心是通过数据预先聚合提高查询性能,针对预先定义好的Schema,因此适合实时分析的场景,结果返回时间在亚秒级。我们从查询性能响应不佳的OpenTSDB(基于HBase)方案切换到Druid之后,响应速度上确实有一个数量级的提升,复杂的筛选条件下查询千万级的数据范围基本秒级响应。