MongoDB 探索二三事

这篇文章涉及如下工具:
1、mongodb
2、datax
3、superset
4、redash
5、metabase

最近一直在探索着数据相关的事情。

比如什么开源BI工具啊。像superset、redash和metabase啦,每个工具都有优劣,我会在后续文章继续更新。

最近的项目呢,又用到了mongodb,那么顺其自然的呢,这些BI工具调研的时候呢,自然的数据源,就优先选择了mongodb。

那么万事俱备,只欠东风了。我的数据哪里找呢?为了探索这些BI工具的优劣,我么的数据集一定要大,对不对。当然你可以造假数据,但是呢,我也是比较“傲娇”吧,就是不愿意自己造数据。

那怎么办呢,我就百(gu)度(ge)了一下“开放数据平台”这样的字眼,找到了很多结果,选定了滴滴的“盖亚计划”,获取了一个月的轨迹数据+订单数据。滴滴也是够“大方”,我试着用datax导入了一下,三天的轨迹数据,竟然已经达到了9kw的数据量级。那相关探索工作,就做起来吧!

9kw数据!

先大概讲讲BI工具

我只想说,superset、redash和metabase只是做了工具到数据库的连接,其他的任何性能上的优化,都没有做。
工具做的优化,主要是让不太懂sql语句的人可以快速上手,制作数据报告。

MongoDB查询优化

实验环境

- centos6
- CPU 2Core 4G
- 存储空间 500G
- MongoDB 3.4.11

我是用三台这样的机器,组成了一个Replica Set。

索引初步探索

我先做了一个简单的查询,查询的结果,大跌我的眼镜。。。


MongoDB 探索二三事_第1张图片
100s的查询,吓尿了

看来replica set也不能拯救单纯的但数据存储啊。那怎么办呢?

上索引!!

// 查询索引
db.collection.getIndexes();
// 增加索引
db.collection.createIndex({
    "你要加索引的字段": 1/-1
});
// 1代表正序、-1代表倒序
// 当然,mongodb的索引有很多种。比如单索引、组合索引、"text"、"Geospatial Index"等等。
// 我最开始使用了"text",但是没有优化查询速度,这个我后续会继续探索原因。

replica set添加索引的方法有些特殊。

1、在备用机器上添加索引

1.shutdown mongo

>> use admin
>> db.shutdownServer()

2.非replica set方式启动mongo。
3.createIndex

2、在备用机器上添加索引

1.mongo 退级

>> rs.stepDown()

2.shutdown mongo

>> use admin
>> db.shutdownServer()

3.非replica set方式启动mongo。
4.createIndex

添加好了索引以后,给了我极大的惊喜。


MongoDB 探索二三事_第2张图片
这才是大数据应该有的速度

MongoDB 探索二三事_第3张图片
这才是大数据应该有的速度

group by 呢?

很遗憾的是,添加索引,并没有优化group by的表现。(我猜是因为 group by必须要全表查询吧)


MongoDB 探索二三事_第4张图片
group by 挺慢的

那么,下一步能做的是什么呢?

后续更新预告

  1. replica set搭建
  2. sharding cluster搭建
  3. superset+redash+metabase
MongoDB 探索二三事_第5张图片
赞赏是第一生产力

My Press.one Signature:
https://press.one/file/v?s=860edfdd2013c73300da7ae84f904bc23f03faf4d24821ab52443cca449d3e496918469b3f643ab944b0e15011942e9ec93aea9685dc5634c5c1f0bf372da5751&h=3ebac8793b0184ef90feb58c9eedef8fd19261ad98cddf4a72376f02e4a461e3&a=866597c04655a093a3e1f31a317c7addd0df9123&f=P1&v=2

你可能感兴趣的:(MongoDB 探索二三事)