方案介绍
本文章介绍如何通过 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 语法,使用门槛低,对用户友好