`
大涛学长
  • 浏览: 110811 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实战课堂 | 让大数据分析更简单,4步教你玩转MongoDB BI Connector

阅读更多
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核心技术的教程,主要包括DDS产品基础知识的认识和特性了解,以及高阶功能的介绍,理论与案例全方位解析,深入应用场景及功能实现。需要的朋友可下载试试! 适合...

    mongodb实战中文pdf

    MongoDB是一种分布式数据库系统,专为处理大量数据而设计,特别是在大数据分析、内容管理系统和实时应用程序等领域表现出色。本PDF文档“MongoDB实战”提供了一种深入理解和应用MongoDB的途径,适合对NoSQL数据库感...

    mongodb数据分析工具

    通过使用MongoDB Compass,数据分析师可以更高效地完成数据清洗、预处理、探索和洞察提取,从而提升整个数据分析流程的效率。同时,它的友好界面使得非技术背景的业务人员也能更好地理解和使用MongoDB中的数据。因此...

    Flink CDC MongoDB Connector 的实现原理和使用实践.pdf

    Flink CDC MongoDB Connector 是一种实时数据同步解决方案,旨在解决 MongoDB 数据变更捕获和实时数据同步问题。本文将详细介绍 MongoDB CDC Connector 的实现原理和使用实践。 一、MongoDB Change Stream 技术简介...

    阿里巴巴:玩转MongoDB从入门到实战.pdf

    本书"阿里巴巴:玩转MongoDB从入门到实战"旨在帮助读者从基础到高级掌握MongoDB的使用,结合阿里巴巴的实践经验,深入理解MongoDB的核心特性和最佳实践。 在2016年,随着MongoDB 3.2版本的发布,引入了WiredTiger...

    藏经阁-《玩转MongoDB 从入门到实战》-37.pdf

    MongoDB 是一种流行的开源NoSQL数据库,...总之,《玩转MongoDB 从入门到实战》是一本面向开发者和数据库管理员的实用指南,无论你是MongoDB的新手还是经验丰富的用户,都能从中获益,更好地驾驭这个强大的数据库系统。

    张龙 MongoDB实战张龙 MongoDB实战张龙

    张龙 MongoDB实战张龙 MongoDB实战

    2020年最新MongoDB 4.0专讲从入门到精通视频教程.txt

    day4:教你学会MongoDB聚合操作 day5:索引的特性及应用 day6:MongoDB实例搭建仓位管理API day7:数据模型优化及设计 day8:复制集介绍及演练 day9:海量数据分片 day10:数据库认证与授权介绍及演练 day11:MongoDB数据库...

    mongodb-测试数据

    5. **分片集群**:对于大规模数据,测试数据可能涉及分片配置,让你了解如何通过分片扩展数据库的存储和处理能力。 6. **性能基准测试**:可能包含用于性能基准测试的脚本,帮助你评估MongoDB在不同工作负载下的...

    MongoDB聚合实战:数据分析与财务应用轻松入门

    本书“MongoDB 聚合实战:数据分析与财务应用轻松入门”是为初学者和专业人士设计的一份指南,旨在帮助读者快速理解并应用 MongoDB 的聚合功能。 在第一部分,书中介绍了 MongoDB 的基础知识。从聚合的魅力开始,...

    基于Hadoop与MongoDB整合技术的大数据处理分析.pdf

    Hadoop与MongoDB都是在大数据时代被广泛使用的技术,它们在处理和分析大规模数据方面拥有各自的优势。为了更好地处理日益增长的数据量,Hadoop与MongoDB之间的整合技术变得越来越重要。 Hadoop是一个由Apache基金会...

    MongoDB的分析和报告的解决方案

    Databazel可能是一个用于MongoDB数据分析的工具或框架,虽然具体功能未知,但通常这样的工具会提供更高级的查询和分析功能,简化报表生成过程,或者提供可视化界面来交互式地探索数据。例如,它可以包含数据预处理...

    MongoDB教程

    4. **大数据分析**:MongoDB支持在数据库内部进行数据分析,如使用聚合框架和MapReduce。此外,还可以与其他大数据工具(如Hadoop、Spark)集成,进行更复杂的批量处理和分析。 接下来,"MongoDB权威指南(第2版)...

    mongodb教程

    本教程将通过实例和实践教你如何安装MongoDB、创建数据库和集合、插入和查询数据、执行更新和删除操作、构建索引、实现分片和复制、进行数据聚合以及与其他应用的集成。通过学习,你将能够熟练地运用MongoDB解决实际...

    MongoDB入门指南.pdf

    1.大数据处理:MongoDB可以处理大量的数据,可以用于大数据处理和分析。 2.实时数据处理:MongoDB可以实时地处理数据,可以用于实时数据分析和报表生成。 3.内容管理:MongoDB可以用于内容管理,可以用于管理大量的...

    MONGODB实战第2版.pdf.zip

    MongoDB实战第2版.pdf.zip是一个压缩包,包含了一份关于MongoDB的实战指南。MongoDB是一种流行的开源、文档型数据库,适用于处理大量结构化和半结构化的数据。这本书的第二版很可能提供了对MongoDB最新特性和最佳...

    如何安装MongoDB 如何使用MongoDB

    本课程是一套关于MongoDB应用开发的实战性教程,名为《深入浅出MongoDB应用实战开发(基础、开发指南、系统管理、集群及系统架构)》,教程侧重于讲解MongoDB的常用特性及高级特性,从实际开发的角度出发对MongoDB...

    MongoDB大数据处理

    MongoDB大数据处理权威指南 MongoDB大数据处理权威指南 MongoDB大数据处理权威指南

    Mongodb视频-燕十八 mongodb视频教程全集21讲+mongodb高级实战开发视频教程

    与传统的关系型数据库不同,MongoDB通过灵活的数据模型和高效的查询语言,为大规模数据存储和处理提供了强大的支持。 ### 燕十八MongoDB视频教程全集21讲知识点概览 #### 第一部分:MongoDB基础篇 **第1讲:...

    mongoDB集群实战.pdf

    MongoDB集群实战的知识点包括了MongoDB的基本概念、集群的部署方法以及主从复制模式的实战部署步骤。 首先,我们来看MongoDB的基本概念。MongoDB是一个开源的非关系型数据库,它的特点包括分布式存储、面向文档的...

Global site tag (gtag.js) - Google Analytics