天天看點

mongoDB BI 分析利器 - PostgreSQL FDW (MongoDB Connector for BI)

mongodb是近幾年迅速崛起的一種文檔型資料庫,廣泛應用于對事務無要求,但是要求較好的開發靈活性,擴充彈性的領域,。

随着企業對資料挖掘需求的增加,使用者可能會對存儲在mongo中的資料有挖掘需求,但是mongodb的文法較為單一,不能滿足挖掘的需求。

postgresql是起源于伯克利大小的一個開源資料庫,已經有20多年的曆史,以穩定性,功能強大著稱,号稱"開源界的oracle"。

在國内外各個行業都有非常多的使用者,如平安銀行,郵儲銀行,中移動,去哪兒,高德,菜鳥,美國宇航局,俄羅斯杜馬等等。

postgresql 9.6 新增了基于cpu的并行計算。 20tb以内的oltp+olap的混合場景,postgresql 會是很好的選擇。

postgresql的fdw特性,可以允許它連接配接任何資料源,将外部資料源當成本地源使用。

mongodb connector for bi就是postgresql 的fdw衍生的産品。 為mongodb使用者提供豐富的sql接口。

mongoDB BI 分析利器 - PostgreSQL FDW (MongoDB Connector for BI)

除了可以連接配接mongodb,postgresql fdw還能連接配接幾乎所有資料源,圖中沒有完全列出。

mongoDB BI 分析利器 - PostgreSQL FDW (MongoDB Connector for BI)

fdw請參考

<a href="http://wiki.postgresql.org/wiki/fdw">http://wiki.postgresql.org/wiki/fdw</a>

本文将從mongodb使用者視角,講解一下mongodb bi connector的用法。

因為國内下載下傳mongodb-bi的包非常慢,我這裡沒有驗證整個過程,以網際網路上一篇文檔或藍本,細化一下整個過程。

os環境

python版本

下載下傳 mongodb-bi-1.1.3-1-centos6-rpms.tar.bz2, 解壓

包含了postgresql, fdw接口以及mongodb schema轉換成sql的工具等。

安裝這些 rpm

安裝 mongodb-bi-multicorn

安裝完後,檢查python 的collections子產品是否正常

檢查 本地 mongo

建立 mongodb bi 使用者

對應的操作是在postgresql 中使用 create server和create user mapping for定義foreign server與user mapping的操作。( 指向提供的 mongodb url )

檢查postgresql是否啟動

mongo bi connector修改了postgresql中的一些預設選項,例如端口已修改為27032,當然你也可以自己去修改這個端口。

以下是postgresql在unix socket上的監聽,監聽端口27032,如果你需要監聽在ip端口上,需要修改postgresql.conf重新開機資料庫.

檢視postgresql 配置檔案的位置

其實用 rpm -ql mongodb-bi-server 更好

修改監聽,在所有的接口上。這樣你的bi軟體才能通過網絡連到postgresql

配置postgresql pg_hba.conf,允許所有來源ip通路這個postgresql

重新開機postgresql

使用mongodrdl将需要參與bi分析的collection導出成為建立postgresql 外部表的ddl

使用mongobischema 将ddl導入postgresql

檢查已導入的外部表

如何重新開機postgresql,也可直接使用pg_ctl。

列出bi使用者,也可以直接用postgresql中的sql或視圖檢視

檢查連接配接postgresql是否正常

現在你可以用bi軟體連接配接postgresql來分析存儲在mongodb的資料了 。

其實建立fdw沒有這麼麻煩,幾條sql語句就搞定了。 mongodb隻是出于mongodb使用者可能不熟悉postgresql的考慮,把操作都封裝成了指令,便于mongodb的使用者使用。

如果使用者未來又新增了需要分析的collection,使用導出和導入的步驟即可。

postgresql作為mongodb bi connector的作用是擴充mongodb的sql功能,并不存儲資料,資料都是在mongodb中的。 如果涉及到比較複雜的運算無法下推到mongodb,則會将資料提取到postgresql本地進行運算(過程自動,對使用者透明)。但是如果資料量非常龐大(例如每次分析都超過百gb需要提取)會被資料在網絡傳輸的時間拖累。

如果資料量很龐大,建議還是講mongodb的資料導出到postgresql或者greenplum,直接在postgresql或greenplum中分析。效率會更高。

greenplum 是基于postgresql的一個mpp olap産品,在olap領域有着非常好的口碑,國内外的使用者群也非常多。

使用者群覆寫了網際網路,金融、物流、政府部門等各大行業,最大的叢集規模有超過1000 segment的。

20tb ~ 1pb 純olap場景 greenplum 會是更好的選擇。

<a href="http://rajkiran-dba.blogspot.com/2016/06/how-to-setup-mongodb-connector-for-bi.html">http://rajkiran-dba.blogspot.com/2016/06/how-to-setup-mongodb-connector-for-bi.html</a>

<a href="https://docs.mongodb.com/bi-connector/">https://docs.mongodb.com/bi-connector/</a>

<a href="http://multicorn.org/">http://multicorn.org/</a>

<a href="https://yq.aliyun.com/articles/31632">https://yq.aliyun.com/articles/31632</a>

《當物流排程遇見postgresql - gis, routing, 機器學習 (獅子,女巫,魔衣櫥)》

<a href="https://yq.aliyun.com/articles/57857">https://yq.aliyun.com/articles/57857</a>

《postgresql 如何輕松搞定行駛、運動軌迹合并和切分》

<a href="https://yq.aliyun.com/articles/54445">https://yq.aliyun.com/articles/54445</a>

《postgresql 百億資料量地理位置資料 近鄰查詢性能》

<a href="https://yq.aliyun.com/articles/2999">https://yq.aliyun.com/articles/2999</a>

《利用openstreetmap(osm)資料搭建一個地圖服務》

<a href="https://yq.aliyun.com/articles/16907">https://yq.aliyun.com/articles/16907</a>

《postgresql 百億資料 秒級響應 正則及模糊查詢》

<a href="https://yq.aliyun.com/articles/7444">https://yq.aliyun.com/articles/7444</a>

《apsaradb for greenplum 雲資料倉庫》

<a href="https://yq.aliyun.com/articles/57604">https://yq.aliyun.com/articles/57604</a>

《greenplum 資料分布黃金法則 - 論分布列與分區的選擇》

<a href="https://yq.aliyun.com/articles/57822">https://yq.aliyun.com/articles/57822</a>

《阿裡雲apsaradb rds使用者 - olap最佳實踐》

<a href="https://yq.aliyun.com/articles/57778">https://yq.aliyun.com/articles/57778</a>

《greenplum 資源隔離的原理與源碼分析》

<a href="https://yq.aliyun.com/articles/57763">https://yq.aliyun.com/articles/57763</a>

《三張圖讀懂greenplum在企業的正确使用姿勢 》

<a href="https://yq.aliyun.com/articles/57736">https://yq.aliyun.com/articles/57736</a>

祝大家玩得開心,歡迎随時來 阿裡雲促膝長談 業務需求 ,恭候光臨。

阿裡雲的小夥伴們加油,努力做 最貼地氣的雲資料庫 。