Docs 菜单
Docs 主页
/
BI Connector
/

独立运行模式(缓存采样)

在此页面上

  • Overview
  • 缓存采样的用户权限

2.3 版新增功能:

默认, mongosqld对连接的MongoDB实例上的每个集合进行采样,并生成模式的关系表示,然后将其缓存在内存中。

注意

如果已启用authentication ,请确保 MongoDB 用户具有正确的权限。 请参阅下面的用户权限

默认情况下, mongosqld在生成模式后不会自动对数据进行重新采样。 指定--schemaRefreshIntervalSecs选项以指示mongosqld自动对数据进行重采样并按固定安排重新生成模式。

如果mongosqld创建的模式不能满足 BI 工作负载需求,您可以手动生成模式文件并根据需要进行编辑。

要了解有关采样模式的更多信息,请参阅采样模式参考图。

如果您的 MongoDB 实例使用身份验证,而您希望使用缓存采样,则 BI Connector 实例也必须使用身份验证。 通过mongosqld程序连接到 MongoDB 的管理员用户必须有权读取要从中采样数据的所有命名空间

如果要对所有命名空间进行采样,则管理员用户需要以下权限:

  • listDatabases 在集群上

  • listCollections 在每个数据库上

  • find 在每个数据库上

或者,创建具有内置readAnyDatabase角色的用户:

use admin
db.createUser(
{
user: "<username>",
pwd: "<password>",
roles: [
{ "role": "readAnyDatabase", "db": "admin" }
]
}
)

注意

在将readAnyDatabase角色授予用户之前,请了解该角色包含的所有权限。

要对所有命名空间进行采样,请启动不带 选项的 {mongosqld --sampleNamespaces

mongosqld --auth --mongo-username <username> --mongo-password <password>

如果您希望对特定命名空间进行采样,则管理员用户需要以下权限:

  • listCollections 对于每个对所有collection进行采样的数据库

  • find 对所有集合进行采样的每个集合或每个数据库

或者,创建一个具有内置readAnyDatabase角色的用户。 有关创建具有此角色的用户的示例,请参阅“所有命名空间示例”部分。

注意

在将readAnyDatabase角色授予用户之前,请了解该角色包含的所有权限。

以下示例在 中创建一个 自定义角色 mongoshell,该角色具有对test 数据库中的每个集合进行采样所需的最低特权:

1
use admin
db.createRole(
{
role: "samplingReader",
privileges: [
{
resource: {
db: "test",
collection: ""
},
actions: [ "find", "listCollections" ]
}
],
roles: []
}
)
2
db.createUser(
{
user: "<username>",
pwd: "<password>",
roles: [ "samplingReader" ]
}
)

注意

上述示例中的用户没有 权限,因此在运行listDatabases 时,您必须使用--sampleNamespaces mongosqld选项指定要从中示例数据的数据库。

3

在启用身份验证的情况下运行mongosqld ,并使用--sampleNamespaces选项对test数据库中所有集合的数据进行采样:

mongosqld --auth --mongo-username <username> --mongo-password <password> \
--sampleNamespaces 'test.*'

提示

另请参阅:

后退

将关系模式映射到 MongoDB