常见问题解答:适用于MongoDBconnector 的BI
在此页面上
BI Connector 是否有云托管版本?
您可以在MongoDBconnector 中托管用于商业智能的MongoDB Atlas 。要了解如何启用和连接到 Atlas 托管的 BI Connector,请参阅通过 BI Connector for Atlas 连接。
如何使用 BI Connector 进行身份验证?
版本 2.0 中的更改:在版本 2.0之前,BI Connector 单独存储一组档案。
如果您使用的是旧发布的MongoDB Connector for BI ,则应按照在本地安装BI Connector中的步骤升级到2.0 。
使用身份验证连接到 MongoDB 部署时,您可以以该部署中配置的用户和角色进行身份验证。
有关如何指定身份验证来源和机制的详细信息,请参阅身份验证。
升级 MongoDB 时,BI Connector 应注意哪些事项?
在升级 MongoDB 部署之前,请将 --mongo-versionCompatibility
选项设置为当前安装的 MongoDB 主要版本系列,例如3.4
。 升级完成后,重新启动不带 选项的mongosqld
--mongo-versionCompatibility
,或将其设置为新更新的主要版本系列。
注意
如果使用DRDL 模式文件启动 BI Connector,并且开始使用新引入的BSON 类型,则必须在升级后更新模式文件。
MongoDB 3.4引入十进制 BSON 类型。 当您从 MongoDB 3.2升级到 MongoDB 3.4且模式文件包含float64
值(映射到 MongoDB 中的double
类型)时,您必须在开始使用新的decimal
类型。
BI Connector 是否存储任何数据?
BI Connector 实例仅将 SQL 查询转换为 MongoDB 查询。 它本身不存储任何数据。
如何处理查询?
BI Connector 会构造聚合表达式。
mongosqld
始终启用聚合allowDiskUse
选项。
BI Connector 无法将某些支持的 SQL 构造映射到等效聚合。 在这种情况下,BI Connector 将在内存中执行这些构造。
如何跳过与 DRDL 类型定义不兼容的数据?
使用 MongoDB 视图
MongoDB 3.4引入了只读视图,可用于筛选不兼容的数据。
例如,您可以在test
grade
数据库中创建一个视图,该视图仅包含包含collection的grades
字段中的数字的文档:
db.runCommand( { create: "numericGrades", viewOn: "grades", pipeline: [ { "$match": { "grade": { "$type": "number" } } } ] } )
然后,您可以使用mongodrdl
从该视图生成模式,就像生成collection一样:
mongodrdl -d test -c numericGrades
使用 DRDL 筛选器
如果集合中的文档包含某个字段的不同数据类型,您可以筛选特定的数据类型。 为此,您可以在$match
DRDL 表定义中的管道开头包含 阶段。
例如,要仅匹配grade
字段中包含数字的文档,请使用以下管道阶段:
"$match": { "grade": { "$type": "number" } }
如果您是unwinding
包含不同数据类型的数组字段,则要筛选数组以查找特定数据类型,请将$match
阶段放在$unwind
之后。
我是否可以将 MongoDB 视图与 BI Connector 结合使用?
是的。 BI Connector 将视图视为任何其他集合。 有关在 BI Connector 中使用视图的更多信息,请参阅使用 MongoDB 视图管理模式。
是否有适用于 DRDL 的语法验证工具?
DRDL 文件使用 YAML 语法。任何 YAML 验证器,例如 https://yaml-online-parser.appspot.com/可以帮助您检查 DRDL 文件。
BI Connector 如何处理日期?
BI Connector 将映射到 SQLdatetime
类型,从而正确处理 BSON 日期 数据。例如:
db.data.save({ date: new Date() })
如果将日期数据存储为字符串,BI Connector 会将其视为字符串而不是日期。 例如,BI Connector 将以下内容视为字符串:
db.data.save({ date: '32-FEB-2015' })
如何将 TLS/SSL 与 BI Connector 结合使用?
mongosqld
和 MongoDB 部署之间的连接与 SQL 客户端和mongosqld
之间的连接分开配置了 TLS/SSL。
将mongosqld
连接到MongoDB
如果要连接的 MongoDB 实例使用TLS/SSL ,请为 mongosqld
提供--mongo-ssl
选项
例如:
mongosqld --schema=schema.drdl --mongo-ssl
要指定 TLS/SSL CA 根证书,请使用--mongo-sslCAFile
选项。 要指定客户端证书,请使用--mongo-sslPEMKeyFile
选项。 例如:
mongosqld --schema=schema.drdl \ --mongo-ssl \ --mongo-sslCAFile=/certs/ca.pem \ --mongo-sslPEMKeyFile=/certs/mongodb_client.pem
将客户端连接到 mongosqld
要指定 TLS/SSL CA 根证书,请使用--sslCAFile
选项。 要指定客户端证书,请使用--sslPEMKeyFile
选项。 例如:
mongosqld --schema=schema.drdl \ --sslCAFile=/certs/ca.pem \ --sslPEMKeyFile=/certs/mongosql_server.pem
我可以使用SQLEXPLAIN
函数吗?
如果您使用的是允许直接发出SQL语句的SQL客户端(例如MySQL shell ),则可以在任何查询之前添加 EXPLAIN
来获取有关如何执行该查询的信息。 EXPLAIN
返回 BI Connector 将发送到 MongoDB 的完整聚合操作,而不运行查询或返回任何结果。 如果您想确切了解特定的 SQL 查询如何转换为 MongoDB 查询语言,则EXPLAIN
非常有用。