Docs Menu
Docs Home
/
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 すべてのコレクションがサンプリングされる各データベースの

  • find 各コレクションまたはすべてのコレクションがサンプリングされる各データベースの場合

または、組み込みのreadAnyDatabaseロールを持つユーザーを作成します。 このロールを持つユーザーの作成例については、「すべての名前空間のサンプル」セクションを参照してください。

注意

readAnyDatabaseロールをユーザーに付与する前に、このロールに含まれるすべての特権に注意してください。

次の例では、 データベース内のすべてのコレクションをサンプリングするために必要な最小限の特権を持つ mongo shelltest カスタムロール を作成します。

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データベース内のすべてのコレクションのデータをサンプリングします。

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

Tip

以下も参照してください。

戻る

MongoDB へのリレーショナル スキーマのマッピング