這篇文章涉及如下工具:
1、mongodb
2、datax
3、superset
4、redash
5、metabase
最近一直在探索著數(shù)據(jù)相關(guān)的事情。
比如什么開源BI工具啊。像superset、redash和metabase啦,每個(gè)工具都有優(yōu)劣,我會(huì)在后續(xù)文章繼續(xù)更新。
最近的項(xiàng)目呢,又用到了mongodb,那么順其自然的呢,這些BI工具調(diào)研的時(shí)候呢,自然的數(shù)據(jù)源,就優(yōu)先選擇了mongodb。
那么萬事俱備,只欠東風(fēng)了。我的數(shù)據(jù)哪里找呢?為了探索這些BI工具的優(yōu)劣,我么的數(shù)據(jù)集一定要大,對(duì)不對(duì)。當(dāng)然你可以造假數(shù)據(jù),但是呢,我也是比較“傲嬌”吧,就是不愿意自己造數(shù)據(jù)。
那怎么辦呢,我就百(gu)度(ge)了一下“開放數(shù)據(jù)平臺(tái)”這樣的字眼,找到了很多結(jié)果,選定了滴滴的“蓋亞計(jì)劃”,獲取了一個(gè)月的軌跡數(shù)據(jù)+訂單數(shù)據(jù)。滴滴也是夠“大方”,我試著用datax導(dǎo)入了一下,三天的軌跡數(shù)據(jù),竟然已經(jīng)達(dá)到了9kw的數(shù)據(jù)量級(jí)。那相關(guān)探索工作,就做起來吧!

先大概講講BI工具
我只想說,superset、redash和metabase只是做了工具到數(shù)據(jù)庫的連接,其他的任何性能上的優(yōu)化,都沒有做。
工具做的優(yōu)化,主要是讓不太懂sql語句的人可以快速上手,制作數(shù)據(jù)報(bào)告。
MongoDB查詢優(yōu)化
實(shí)驗(yàn)環(huán)境
- centos6
- CPU 2Core 4G
- 存儲(chǔ)空間 500G
- MongoDB 3.4.11
我是用三臺(tái)這樣的機(jī)器,組成了一個(gè)Replica Set。
索引初步探索
我先做了一個(gè)簡(jiǎn)單的查詢,查詢的結(jié)果,大跌我的眼鏡。。。

看來replica set也不能拯救單純的但數(shù)據(jù)存儲(chǔ)啊。那怎么辦呢?
上索引?。?/strong>
// 查詢索引
db.collection.getIndexes();
// 增加索引
db.collection.createIndex({
"你要加索引的字段": 1/-1
});
// 1代表正序、-1代表倒序
// 當(dāng)然,mongodb的索引有很多種。比如單索引、組合索引、"text"、"Geospatial Index"等等。
// 我最開始使用了"text",但是沒有優(yōu)化查詢速度,這個(gè)我后續(xù)會(huì)繼續(xù)探索原因。
replica set添加索引的方法有些特殊。
1、在備用機(jī)器上添加索引
1.shutdown mongo
>> use admin
>> db.shutdownServer()
2.非replica set方式啟動(dòng)mongo。
3.createIndex
2、在備用機(jī)器上添加索引
1.mongo 退級(jí)
>> rs.stepDown()
2.shutdown mongo
>> use admin
>> db.shutdownServer()
3.非replica set方式啟動(dòng)mongo。
4.createIndex
添加好了索引以后,給了我極大的驚喜。


group by 呢?
很遺憾的是,添加索引,并沒有優(yōu)化group by的表現(xiàn)。(我猜是因?yàn)?group by必須要全表查詢吧)

那么,下一步能做的是什么呢?
后續(xù)更新預(yù)告
- replica set搭建
- sharding cluster搭建
- superset+redash+metabase
