MongoDB使用BI Connector支持BI组件直接使用SQL或ODBC数据源方式直接访问MongoDB,在早期MongoDB直接使用Postgresql FDW实现 SQL到MQL的转换,后来实现更加轻量级的mongosqld支持BI工具的连接。
![e411f1b8264781f0e6fcccc1d60ecaf3c8ea61ae.png](https://ucc.alicdn.com/pic/developer-ecology/7ad28347e38b46b0b5e44b4a7ac576f7.png)
安装 BI Connector
---------------
参考 **Install BI Connector**
[https://docs.mongodb.com/bi-connector/master/installation/](https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fdocs.mongodb.com%2Fbi-connector%2Fmaster%2Finstallation%2F)
```
wget https://info-mongodb-com.s3.amazonaws.com/mongodb-bi/v2/mongodb-bi-linux-x86_64-rhel70-v2.12.0.tgz
$tar xvf mongodb-bi-linux-x86_64-rhel70-v2.12.0.tgz
mongodb-bi-linux-x86_64-rhel70-v2.12.0/LICENSE
mongodb-bi-linux-x86_64-rhel70-v2.12.0/README
mongodb-bi-linux-x86_64-rhel70-v2.12.0/THIRD-PARTY-NOTICES
mongodb-bi-linux-x86_64-rhel70-v2.12.0/example-mongosqld-config.yml
mongodb-bi-linux-x86_64-rhel70-v2.12.0/bin/mongosqld
mongodb-bi-linux-x86_64-rhel70-v2.12.0/bin/mongodrdl
mongodb-bi-linux-x86_64-rhel70-v2.12.0/bin/mongotranslate
```
![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")
* mongosqld 接受 SQL 查询,并将请求发到 MongoDB Server,是 BI Connector 的核心
* mongodrdl 工具生成数据库 schema 信息,用于服务 BI SQL 查询
* mongotranslate 工具将 SQL 查询转换为 MongoDB Aggregation Pipeline
启动 mongosqld
------------
参考 Lauch BI Connector
[https://docs.mongodb.com/bi-connector/current/launch/](https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fdocs.mongodb.com%2Fbi-connector%2Fcurrent%2Flaunch%2F)
```
mongodb-bi-linux-x86_64-rhel70-v2.12.0/bin/mongosqld --addr 127.0.0.1:3307 --mongo-uri 127.0.0.1:9555
```
![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")
\--addr 指定 mongosqld 监听的地址
\--mongo-uri 指定连接的 MongoDB Server 地址
默认情况下,mongosqld 自动会分析目标 MongoDB Server 里数据的 Schema,并缓存在内存,我们也可以直接在启动时指定 schema 影射关系。schema 也可以直接 mongodrdl 工具来生成,指定集合,可以将集合里的字段 shema 信息导出。
```
$./bin/mongodrdl --uri=mongodb://127.0.0.1:9555/test -c coll01
schema:
- db: test
tables:
- table: coll01
collection: coll01
pipeline: []
columns:
- Name: _id
MongoType: float64
SqlName: _id
SqlType: float
- Name: qty
MongoType: float64
SqlName: qty
SqlType: float
- Name: type
MongoType: string
SqlName: type
SqlType: varchar
```
![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")
使用 MySQL 客户端连接 mongosqld
------------------------
mongosqld 可直接支持 MySQL 客户端访问,还可以通过 Excel、Access、Tableau等BI工具连接
[https://docs.mongodb.com/bi-connector/current/client-applications/](https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fdocs.mongodb.com%2Fbi-connector%2Fcurrent%2Fclient-applications%2F)
```
mysql --protocol=tcp --port=3307
mysql> use test
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| coll |
| coll01 |
| coll02 |
| inventory |
| myCollection |
| yourCollection |
+----------------+
6 rows in set (0.00 sec)
mysql> select * from coll01;
+------+------+--------+
| _id | qty | type |
+------+------+--------+
| 1 | 5 | apple |
| 2 | 10 | orange |
| 3 | 15 | banana |
+------+------+--------+
3 rows in set (0.00 sec)
// 对照 MongoDB 数据库里的原始数据
mongo --port
mymongo:PRIMARY> use test
switched to db test
mymongo:PRIMARY> show tables;
coll
coll01
coll02
inventory
myCollection
yourCollection
mymongo:PRIMARY> db.coll01.find()
{ "_id" : 1, "type" : "apple", "qty" : 5 }
{ "_id" : 2, "type" : "orange", "qty" : 10 }
{ "_id" : 3, "type" : "banana", "qty" : 15 }
```
![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")
SQL 转 Aggregation
-----------------
比如要将针对 test.coll01 的 SQL 查询转换为 MongoDB Aggregation Pipeline,需要先通过 mongodrdl 分析 schema,然后使用 mongotranslate 工具来转换
```
// 导出分析的 shema 文件
$./bin/mongodrdl --uri=mongodb://127.0.0.1:9555/test -c coll01 > coll01.schema
// SQL 转换为 Aggregation
$./bin/mongotranslate --query "select * from test.coll01" --schema coll01.schema
[
{"$project": {"test_DOT_coll01_DOT__id": "$_id","test_DOT_coll01_DOT_qty": "$qty","test_DOT_coll01_DOT_type": "$type","_id": NumberInt("0")}},
]
```
![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")
分享到:
相关推荐
MongoDB是一种分布式数据库系统,专为处理大量数据而设计,特别是在大数据分析、内容管理系统和实时应用程序等领域表现出色。本PDF文档“MongoDB实战”提供了一种深入理解和应用MongoDB的途径,适合对NoSQL数据库感...
通过使用MongoDB Compass,数据分析师可以更高效地完成数据清洗、预处理、探索和洞察提取,从而提升整个数据分析流程的效率。同时,它的友好界面使得非技术背景的业务人员也能更好地理解和使用MongoDB中的数据。因此...
Flink CDC MongoDB Connector 是一种实时数据同步解决方案,旨在解决 MongoDB 数据变更捕获和实时数据同步问题。本文将详细介绍 MongoDB CDC Connector 的实现原理和使用实践。 一、MongoDB Change Stream 技术简介...
本书"阿里巴巴:玩转MongoDB从入门到实战"旨在帮助读者从基础到高级掌握MongoDB的使用,结合阿里巴巴的实践经验,深入理解MongoDB的核心特性和最佳实践。 在2016年,随着MongoDB 3.2版本的发布,引入了WiredTiger...
MongoDB 是一种流行的开源NoSQL数据库,...总之,《玩转MongoDB 从入门到实战》是一本面向开发者和数据库管理员的实用指南,无论你是MongoDB的新手还是经验丰富的用户,都能从中获益,更好地驾驭这个强大的数据库系统。
张龙 MongoDB实战张龙 MongoDB实战
day4:教你学会MongoDB聚合操作 day5:索引的特性及应用 day6:MongoDB实例搭建仓位管理API day7:数据模型优化及设计 day8:复制集介绍及演练 day9:海量数据分片 day10:数据库认证与授权介绍及演练 day11:MongoDB数据库...
5. **分片集群**:对于大规模数据,测试数据可能涉及分片配置,让你了解如何通过分片扩展数据库的存储和处理能力。 6. **性能基准测试**:可能包含用于性能基准测试的脚本,帮助你评估MongoDB在不同工作负载下的...
本书“MongoDB 聚合实战:数据分析与财务应用轻松入门”是为初学者和专业人士设计的一份指南,旨在帮助读者快速理解并应用 MongoDB 的聚合功能。 在第一部分,书中介绍了 MongoDB 的基础知识。从聚合的魅力开始,...
Hadoop与MongoDB都是在大数据时代被广泛使用的技术,它们在处理和分析大规模数据方面拥有各自的优势。为了更好地处理日益增长的数据量,Hadoop与MongoDB之间的整合技术变得越来越重要。 Hadoop是一个由Apache基金会...
Databazel可能是一个用于MongoDB数据分析的工具或框架,虽然具体功能未知,但通常这样的工具会提供更高级的查询和分析功能,简化报表生成过程,或者提供可视化界面来交互式地探索数据。例如,它可以包含数据预处理...
4. **大数据分析**:MongoDB支持在数据库内部进行数据分析,如使用聚合框架和MapReduce。此外,还可以与其他大数据工具(如Hadoop、Spark)集成,进行更复杂的批量处理和分析。 接下来,"MongoDB权威指南(第2版)...
本教程将通过实例和实践教你如何安装MongoDB、创建数据库和集合、插入和查询数据、执行更新和删除操作、构建索引、实现分片和复制、进行数据聚合以及与其他应用的集成。通过学习,你将能够熟练地运用MongoDB解决实际...
1.大数据处理:MongoDB可以处理大量的数据,可以用于大数据处理和分析。 2.实时数据处理:MongoDB可以实时地处理数据,可以用于实时数据分析和报表生成。 3.内容管理:MongoDB可以用于内容管理,可以用于管理大量的...
MongoDB实战第2版.pdf.zip是一个压缩包,包含了一份关于MongoDB的实战指南。MongoDB是一种流行的开源、文档型数据库,适用于处理大量结构化和半结构化的数据。这本书的第二版很可能提供了对MongoDB最新特性和最佳...
本课程是一套关于MongoDB应用开发的实战性教程,名为《深入浅出MongoDB应用实战开发(基础、开发指南、系统管理、集群及系统架构)》,教程侧重于讲解MongoDB的常用特性及高级特性,从实际开发的角度出发对MongoDB...
MongoDB大数据处理权威指南 MongoDB大数据处理权威指南 MongoDB大数据处理权威指南
与传统的关系型数据库不同,MongoDB通过灵活的数据模型和高效的查询语言,为大规模数据存储和处理提供了强大的支持。 ### 燕十八MongoDB视频教程全集21讲知识点概览 #### 第一部分:MongoDB基础篇 **第1讲:...
MongoDB集群实战的知识点包括了MongoDB的基本概念、集群的部署方法以及主从复制模式的实战部署步骤。 首先,我们来看MongoDB的基本概念。MongoDB是一个开源的非关系型数据库,它的特点包括分布式存储、面向文档的...
3. 大数据处理:MongoDB 可以用于处理大规模的数据,包括数据存储、处理和分析等。 MongoDB 是一种功能强大且灵活的数据库系统,广泛应用于互联网应用和移动应用领域。掌握 MongoDB 的安装、配置、命令基础和性能...