MongoDB是一个文档数据库,具有可伸缩性和您需要的查询和索引的灵活性。MongoDB是XSQL支持的数据源之一。本节将对MongoDB接入XSQL的安装、配置、运行作简单的介绍。

Installation

​ 由于MongoDB提供了Java API,所以不需要任何安装。对于想要了解MongoDB的用户请查阅MongoDB官网

Configuration

​ MongoDB接入XSQL的配置继承了Configurations中介绍的通用配置。MongoDB接入XSQL还有一些特有的配置,下表将对他们进行介绍。

Property Name Default Meaning
spark.xsql.datasource.$dataSource.authenticationDatabase admin MongoDB进行权限验证的MongoDB数据库名称

MongoDB没有严格、明确的schema定义,所以需要

这里给出一个MongoDB接入XSQL的配置示例:

spark.xsql.datasources        default

spark.xsql.datasource.default.type   mongo
spark.xsql.datasource.default.url   mongodb://test:test@127.0.0.1:7787/?replicaSet=7787
spark.xsql.datasource.default.authenticationDatabase   admin
spark.xsql.datasource.default.user   test
spark.xsql.datasource.default.password   test
spark.xsql.datasource.default.version   3.4.13
spark.xsql.datasource.default.schemas  mongo.schemas

Execution

​ MongoDB接入XSQL支持Common Commands中介绍的通用原则。MongoDB接入XSQL后,XSQL会把SQL转换为MongoDB的Java API。XSQL支持大多数的MongoDB功能。本节将XSQL的SQL为例,来介绍如何使用XSQL查询MongoDB。

Create MongoDB Collection

创建MongoDB的collection,与关系型数据库(例如MySQL、Oracle等)创建表的方式有很多不同之处。例如:

create table test (
  key keyword,
  value text,
  other String
) using com.mongodb.spark.sql

上面using的含义是创建MongoDB中的collection。不过,这种用法也许会让人觉得繁琐,所以也可以用下面的SQL:

create table test (
  name string,
  age int,
  comment String
) using mongo

Discover Table Schema

由于MongoDB是一个文档数据库,因此各个字段可能会存储各种类型的数据。如果存储的内容包含了复合结构(例如:对象、数组),用户想要把复合结构反映到表的元信息中,那么可以关闭二级缓存(此时不需要提供额外的schema定义文件),这将促使XSQL帮助用户去解析、推断表的元数据信息。