Docs Menu

독립형 스키마 모드(캐시된 샘플링)

버전 2.3에 새로 추가됨:

기본적으로 mongosqld 는 연결된 MongoDB 인스턴스에서 각 collection을 샘플링하고 스키마의 관계형 표현을 생성한 다음 메모리에 캐시합니다.

참고

authentication 를 활성화한 경우 MongoDB 사용자에게 올바른 권한이 있는지 확인합니다. 아래의 사용자 권한 을 참조하세요.

기본적으로 mongosqld 는 스키마를 생성한 후 데이터를 자동으로 리샘플링하지 않습니다. --schemaRefreshIntervalSecs 옵션을 지정하면 { mongosqld 가 자동으로 데이터를 리샘플링하고 고정된 일정에 따라 스키마를 다시 생성하도록 지시합니다.

mongosqld 가 생성하는 스키마가 BI 워크로드 요구 사항을 충족하지 않는 경우, 스키마 파일 을 수동으로 생성하고 필요에 따라 편집할 수 있습니다.

샘플링 모드에 대해 자세히 알아보려면 샘플링 모드 참고 차트를 참조하세요.

MongoDB 인스턴스가 인증 을 사용하고 캐시된 샘플링을 사용하려는 경우 BI Connector 인스턴스도 인증을 사용해야 합니다. mongosqld 프로그램을 통해 MongoDB에 연결하는 관리자에게는 데이터를 샘플링하려는 모든 네임스페이스 에서 읽을 수 있는 권한이 있어야 합니다.

모든 네임스페이스를 샘플링하려면 관리 사용자에게 다음 권한이 필요합니다.

또는 기본 제공 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

  • 각 컬렉션 또는 모든 컬렉션이 샘플링되는 각 데이터베이스 에서 find

또는 기본 제공 readAnyDatabase 역할이 있는 사용자를 생성합니다. 이 역할을 가진 사용자를 만드는 예는 모든 네임스페이스 샘플 섹션을 참조하세요.

참고

readAnyDatabase 역할에 포함된 모든 권한을 사용자에게 부여하기 전에 확인하세요.

다음 예에서는 test 데이터베이스의 모든 컬렉션을 샘플링하는 데 필요한 최소 권한을 가진 사용자 지정 역할mongo shell 에서 생성합니다.

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 권한 이 없으므로mongosqld를 실행 때 --sampleNamespaces 옵션을 사용하여 데이터를 샘플 할 데이터베이스 를 지정해야 합니다

3

인증을 활성화한 상태에서 mongosqld 를 실행하고 --sampleNamespaces 옵션을 사용하여 test 데이터베이스의 모든 collection에서 데이터를 샘플링합니다.

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

다음도 참조하세요.