スタンドアロン スキーマ モード(キャッシュされたサンプリング)
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 shell にtest
カスタムロール を作成します。
新しいユーザーを作成し、新しく作成したロールを割り当てます
db.createUser( { user: "<username>", pwd: "<password>", roles: [ "samplingReader" ] } )
注意
上記の例のユーザーにはlistDatabases
特権がないため、mongosqld
を実行中の場合は、 --sampleNamespaces
オプションを使用してデータをサンプリングするデータベースを指定する必要があります
認証を有効にして を起動するmongosqld
認証を有効にしてmongosqld
を実行し、 --sampleNamespaces
オプションを使用してtest
データベース内のすべてのコレクションのデータをサンプリングします。
mongosqld --auth --mongo-username <username> --mongo-password <password> \ --sampleNamespaces 'test.*'