方案介紹
本文檔介紹如何通過 StarRocks 的 JDBC Catalog 功能,結合 MongoDB BI Connector,將 MongoDB 數據便捷接入 StarRocks,實現數據打通和 SQL 查詢分析,以下是整體流程圖。
前提條件
- StarRocks 環境:版本 ≥ 3.0,支持 JDBC Catalog 功能。
- MongoDB BI Connector:已安裝並運行,版本需與 MongoDB 兼容(參考 MongoDB 官方文檔)。
- MySQL JDBC 驅動:推薦使用版本 5.1.X
- MongoDB 權限:MongoDB 用户需具有目標數據庫和集合的讀取權限。
- 網絡環境:StarRocks 的 FE(前端)和 BE(後端)/CN(計算節點)需能訪問 MongoDB BI Connector 的服務地址(默認端口 3307)。
-
工具:
MongoDB BI Connector(mongosqld):將 MongoDB 數據轉換為 SQL 兼容的格式,允許使用 MySQL JDBC 驅動進行連接
MySQL JDBC 驅動(5.1.47)
如需使用認證:安裝 MongoDB JDBC 認證插件(mongosql-auth-1.0.0-rc0.jar)
DEMO案例
本 demo 使用的版本,StarRocks 企業版本3.3.13, MongoDB 版本 MongoDB 7.0.22 Community Edition
準備工作
1 部署 StarRocks 集羣
1.1 參考官網 StarRocks 部署文檔:https://docs.starrocks.io/zh/docs/deployment/deploy_manually/
1.2 將 jdbc 驅動包 mysql-connector-java-5.1.49.jar 放在 StarRocks 的 FE 和 BE 的固定路徑下,注意文件訪問權限
2 部署 MongoDB 單機
2.1 下載 MongoDB 7.0.20 版本
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/7.0/x86_64/RPMS/mongodb-org-server-7.0.20-1.el7.x86_64.rpm
安裝 Mongosh
wget https://downloads.mongodb.com/compass/mongodb-mongosh-2.5.1.x86_64.rpm
2.2 安裝 MongoDB
rpm -ivh mongodb-org-server-7.0.20-1.el7.x86_64.rpm
Tips: 如果是非 root 用户安裝,需要提前創建好目錄,MongoDB 默認將數據存儲在 /var/lib/mongo,日誌存儲在 /var/log/mongodb,並確保這些目錄存在且有權限
2.3 檢查 MongoDB 配置文件
RPM 安裝會自動生成默認配置文件 /etc/mongod.conf, 可以根據需要編輯此文件(例如,修改 bindIp 或 dbPath)
2.4 啓動 MongoDB
sudo systemctl start mongod
驗證是否啓動
mongosh
Run in the mongosh shell: db.version()
2.5 創建測試數據庫,插入數據
# 創建數據庫
use student
# 插入數據
db.myCollection.insertOne({
name: "John Doe",
age: 30,
city: "Beijing"
})
# 查詢數據
db.myCollection.find().pretty()
2.6 其他操作
停止:sudo systemctl stop mongod
重啓:sudo systemctl restart mongod
3安裝 MongoDB BI Connector
3.1 下載 MongoDB BI Connector
wget https://info-mongodb-com.s3.amazonaws.com/mongodb-bi/v2/mongodb-bi-linux-x86_64-rhel70-v2.14.23.tgz
3.2 配置文件
創建配置文件: 創建 /etc/mongosqld.conf
systemLog:
path: '/logs/mongosqld.log'
mongodb:
net:
uri: 'mongodb://127.0.0.1:27017'
net:
bindIp: '127.0.0.1'
port: 3307
注意避開服務器上已被佔用的端口
3.3 啓動 BI Connector
啓動方式有三種,推薦作為服務啓動,參考官網:https://www.mongodb.com/zh-cn/docs/bi-connector/current/launch/
BI Connector 作為系統服務運行時,需要指定 mongosqld.systemLog.path 設置的配置文件。使用首選文本編輯器,創建 mongosqld.conf 文件。要查看配置文件選項,請參閲配置文件。例如:
systemLog:
path: '/logs/mongosqld.log'
net:
bindIp: '172.26.95.165'
port: 3307
啓動服務
sudo mongosqld install --config mongosqld.conf
sudo systemctl start mongosql.service
# 要啓用該服務以使其在啓動時自動啓動,請運行以下命令
systemctl enable mongosql.service
3.4 檢驗狀態
sudo systemctl status mongosqld
3.5 測試 JDBC 連接
mysql -h 172.26.95.165 -P 3307 -uadmin
4 在 StarRocks 中創建 MongoDB 的 JDBC Catalog
CREATE EXTERNAL CATALOG mongodb_bi_catalog
PROPERTIES (
"type" = "jdbc",
"user" = "admin",
"password" = "123456",
"jdbc_uri" = "jdbc:mysql://172.26.95.165:3307/student",
"driver_url" = "file:///home/disk1/sr/mysql-connector-java-5.1.49.jar",
"driver_class" = "com.mysql.cj.jdbc.Driver"
);
方案優勢
用户可以利用 StarRocks 湖倉的特性很方便的訪問 MongoDB 的數據,並且兼容 MySQL 語法,使用門檻低,對用户友好