説明
注意
MongoDB Connector for BI と関連するユーティリティは、現在サポートされているすべての MongoDB サーバー バージョンと互換性があります。
mongodrdl は、MongoDB Connector for BI のリレーショナル スキーマ管理ツールです。 mongodrdlバイナリは次のことが可能です。
Produce a schema1 つ以上の MongoDB コレクション の内容に基づいて を作成し、.drdlで使用されるmongosqldファイルに書き込みます。UploadBI Connector が読み込んでいる MongoDB 配置への.drdlファイルのスキーマ。DownloadMongoDB 配置から保存されたスキーマ。DeleteMongoDB 配置から保存されたスキーマ。Nameを使用して MongoDB 配置にスキーマを保存し、管理を容易にします。
.drdlファイルを手動で編集して、BI Connector のスキーマをカスタマイズできます。 .drdl形式と.drdlファイルの手動編集の詳細については、「 CRDL ファイルからスキーマを読み込む 」を参照してください。
BI Connector のすべてのスキーマ管理オプションの詳細については、「 MongoDB へのリレーショナル スキーマのマッピング 」を参照してください。
重要
DDL ファイルに加えた変更を適用するには、 mongosqldを再起動する必要があります。
構文
mongodrdl は、次の構文を使用します。
mongodrdl [<command>] [<options...>] 
最小限必要な TLS バージョン(デフォルト)
バージョン 2.6 の新機能.
デフォルトで最小限必要な TLS バージョンは、 mongodrdlから MongoDB への送信接続に1.1です。
この設定は--minimumTLSVersionオプションで調整できます。
コマンド
バージョン 2.11 の新機能。
mongodrdlの動作は、次のコマンドのいずれかによって決まります。 コマンドが指定されていない場合、 mongodrdlは指定された名前空間をサンプリングします。
sample--db、オプションの--collection、およびその他のコマンドライン オプションで指定された名前空間をサンプリングし、 .drdlを出力します ファイル。sampleコマンドは、バージョン2より前のすべてのmongodrdlの動作をカプセル化します。 11 。mongodrdl sample --db <db-name> --collection <collection-name> --out <filename>.drdl 
list-schema-ids保存された各スキーマのObjectIdの string 表現と、それが作成された日付を一覧表示します。
list-schema-idsには次のオプションが必要です。名前説明必須。 スキーマ情報を保存するデータベースを指定します。
たとえば、次のコマンドは、
schemasデータベース内のスキーマ ID を一覧表示します。mongodrdl list-schema-ids --schemaSource schemas 出力は次のようになります。
5d72ad695c23a9e3e26e3c85 2019-09-06T15:03:05.556Z 5d72adea5c23a9e44882a1ad 2019-09-06T15:05:14.349Z 
list-schema-names名前を持つ保存済みスキーマごとのObjectIdの名前と string 表現を一覧表示します。
保存されたスキーマには、デフォルトで名前が付けられません。 名前付きスキーマを参照するには、
download} コマンドとdeleteコマンドで--nameオプションを使用します。 スキーマに名前を付けるか、名前を変更するには、name-schemaコマンドを使用します。list-schema-namesには次のオプションが必要です。名前説明必須。 スキーマ情報を保存するデータベースを指定します。
たとえば、次のコマンドは、
schemasデータベース内の各名前付きスキーマの名前と ObjectId を返します。mongodrdl list-schema-names --schemaSource schemas 出力は次のようになります。
movies 5d72ad695c23a9e3e26e3c85 theaters 5d72adea5c23a9e44882a1ad 
upload指定された
.drdlファイルから--schemaSourceオプションで指定されたデータベースにスキーマをアップロードします。 スキーマはschemasコレクションにアップロードされます。uploadには次のオプションが必要です。名前説明必須。 スキーマ情報を保存するデータベースを指定します。
--drdl必須。 アップロードする
.drdlファイルへのパス。たとえば、次のコマンドは、
movies.drdlファイル内のスキーマをschemasデータベースにアップロードします。mongodrdl upload --schemaSource schemas --drdl ./movies.drdl アップロードされたスキーマのObjectIdの string 表現が返されます。
5d793f3f6a26a3ce66c304ea 次の手順では、
name-schemaコマンドを使用して、指定した名前でスキーマを保存します。mongodrdl name-schema --name movies --schemaSource schemas --schema 5d793f3f6a26a3ce66c304ea 指定された名前を受け取った、新しくアップロードされたスキーマを使用するには、 オプションで指定されたスキーマ データベースと、 で指定されたスキーマ名で
mongosqld--schemaSourceを再起動します。--schemaNamemongosqld --schemaSource <schema-db> --schemaName movies 重要
カスタム スキーマをアップロードする場合、 を使用して、指定された名前でスキーマを保存してから、
name-schemaを使用してこの名前をmongosqld--schemaNameに指定する必要があります。アップロード時にスキーマの名前を保存しない場合、デフォルトのスキーマ名であるdefaultSchemaが適用されます。 スキーマ名が存在しない場合は、mongosqldから次のようなエラーが返されます。「MongoDB スキーマはまだ利用できません。 スキーマの初期化エラー: 名前に対応するスキーマが見つかりません。
downloadObjectIdの名前または string 表現で指定されたスキーマをダウンロードし、コンソールに出力します。
downloadは、次のオプションを受け入れます。名前説明必須。 スキーマ情報を保存するデータベースを指定します。
--nameスキーマの名前。 スキーマの名前付けの詳細については、
name-schemaコマンドを参照してください。--schemaが指定されていない場合は必須です。--schemaスキーマのObjectIdの string 表現。
--nameが指定されていない場合は必須です。たとえば、次のコマンドは
moviesスキーマを コンソールに出力します。mongodrdl download --schemaSource schemas --name movies スキーマを
.drdlファイルに保存するには、出力を目的の.drdlファイルに向けます。mongodrdl download --schemaSource schemas --name movies > ./movies.drdl 
delete名前またはObjectId の string 表現によって指定されたスキーマを削除します。
deleteは、次のオプションを受け入れます。名前説明必須。 スキーマ情報を保存するデータベースを指定します。
--nameスキーマの名前。 スキーマの名前付けの詳細については、
name-schemaコマンドを参照してください。--schemaが指定されていない場合は必須です。--schemaスキーマのObjectIdの string 表現。
--nameが指定されていない場合は必須です。たとえば、次のコマンドは、
schemasデータベース内の ID5d7941dc6a26a3d0fc397284のスキーマを削除します。mongodrdl delete --schemaSource schemas --schema 5d7941dc6a26a3d0fc397284 
name-schemaスキーマの新しい名前を作成するか、スキーマの既存の名前を更新します。
保存されたスキーマには、デフォルトで名前が付けられません。 名前付きスキーマを参照するには、
download} コマンドとdeleteコマンドで--nameオプションを使用します。 スキーマに名前を付けるか、名前を変更するには、name-schemaコマンドを使用します。name-schemaには次のオプションが必要です。名前説明必須。 スキーマ情報を保存するデータベースを指定します。
必須。 スキーマの新しい名前。
必須スキーマのObjectIdの string 表現。
たとえば、次のコマンドは、
schemasデータベース内の5d72adea5c23a9e44882a1adスキーマにmoviesとして名前を付けます。mongodrdl name-schema --name movies --schemaSource schemas --schema 5d72adea5c23a9e44882a1ad 
オプション
中心的オプション
--helpmongodrdlのオプションと使用に関する情報を返します。
--versionmongodrdlのリリース番号を返します。
--verbose <level>, -v <level>mongodrdlがより詳細なログ出力を提供するように指定します。 冗長性を高めるには複数回含めます(例:-vvvvv)、または数値を指定します(例:--verbose=5)。
--uri <mongodb-uri>バージョン 2.12 の新機能。
MongoDB URI 接続文字列 。
重要
次のコマンドライン オプションは、
--uriオプションと組み合わせて使用することはできません。--password(URI 接続文字列にパスワードも含まれている場合)
代わりに、
--uri接続文字列の一部としてこれらのオプションを指定します。
--host <hostname><:port>, -h <hostname><:port>デフォルト: localhost:27017
接続先の
mongodの解決可能なホスト名を指定します。 デフォルトでは、mongodrdlはポート番号27017のローカルホストで実行されている MongoDB インスタンスに接続しようとします。レプリカセットに接続するには、
replSetNameとセットノードのシードリストを次のように指定します。<replSetName>/<hostname1><:port>,<hostname2><:port>,<...> ホストとポート番号を直接指定することで、いつでも単一の MongoDB インスタンスに直接接続できます。
--collection <collection>, -c <collection>.drdlスキーマ ファイルを生成するコレクションを指定します。 コレクションを指定せずにこのオプションは、指定されたデータベースまたはインスタンス内のすべてのコレクションを使用します。
--customFilterField <name>, -f <name>カスタム MongoDB フィルターに追加するフィールド名を指定します。 詳細については、「カスタム フィルター」を参照してください。
--out <path>, -o <path>デフォルト: 標準出力。
mongodrdlがスキーマ ファイルを書き込むパスを指定します。 スキーマを標準出力に送信するには、パスの代わりに「-」を指定します。
--uuidSubtype3Encoding <old|csharp|java>, -b <old|csharp|java>UUID バイナリ サブタイプ 3 の生成に使用するエンコーディングを指定します。次のいずれかの値を選択してください。
old: 古い BSON バイナリ サブタイプ形式csharp: C#/.NET レガシー UUID 形式java: Java レガシー UUID 形式
--schema <db-id>バージョン 2.11 の新機能。
必須。 スキーマのObjectIdの string 表現を指定します。
--name <db-name>バージョン 2.11 の新機能。
スキーマ名を指定します。
重要
カスタム スキーマをアップロードする場合、 を使用して、指定された名前でスキーマを保存してから、
name-schemaを使用してこの名前をmongosqld--schemaNameに指定する必要があります。アップロード時にスキーマの名前を保存しない場合、デフォルトのスキーマ名であるdefaultSchemaが適用されます。 スキーマ名が存在しない場合は、mongosqldから次のようなエラーが返されます。「MongoDB スキーマはまだ利用できません。 スキーマの初期化エラー: 名前に対応するスキーマが見つかりません。
--schemaSource <db-name>バージョン 2.11 の新機能。
スキーマ情報を保存するデータベースを指定します。 このオプションは
sampleコマンドでは使用されません。
TLS/SSL オプション
--sslデフォルト: False
MongoDB インスタンスに接続するときに TLS/SSL を使用するように
mongodrdlに指示します。
--sslCAFile <filename>MongoDB インスタンスの
.pemファイルのうち、認証局からのルート証明書チェーンを含むものを指定します。相対パスまたは絶対パスを使用して、.pemファイルのファイル名を指定します。
--sslPEMKeyFile <filename>MongoDB への接続時に
mongosqldが使用する TLS/SSL 証明書と鍵の両方を含む.pemファイルを指定します。 相対パスまたは絶対パスを使用して、.pemファイルのファイル名を指定できます。このオプションは、
--sslオプションを使用して、net.ssl.allowConnectionsWithoutCertificatesなしでmongodmongosCAFileが有効になっている または に接続する場合に必要です。
--sslAllowInvalidCertificatesMongoDB インスタンスが無効なサーバー SSL/TLS 証明書を提示することを許可します。
allowInvalidCertificates設定を使用すると、MongoDB は警告として無効な証明書の使用をログに記録します。
--sslAllowInvalidHostnamesTLS/SSL 証明書のホスト名の検証を無効にします。 証明書のホスト名が指定されたホスト名と一致しない場合、
mongodrdlによる MongoDB インスタンスへの接続を許可します。
--sslFIPSModeインストールされた OpenSSL ライブラリの FIPS モードを使用するように
mongodrdlに指示します。--sslFIPSModeオプションを使用するには、システムに FIPS 準拠の OpenSSL ライブラリが必要です。
認証オプション
--username <username>, -u <username>認証を使用する MongoDB database への認証すに使用するユーザー名を指定します。
--passwordおよび--authenticationDatabaseオプションと組み合わせて使用します。
--password <password>, -p <password>認証を使用する MongoDB database に対して認証するためのパスワードを指定します。
--usernameおよび--authenticationDatabaseオプションと組み合わせて使用します。
--authenticationDatabase <dbname>ユーザーが作成されるデータベースを指定します。 詳細については、「認証データベース 」を参照してください。
--authenticationMechanism <name>デフォルト: SCRAM-SHA-1
mongodrdlインスタンスがmongodまたはmongos. への認証に使用する認証メカニズムを指定します。値説明RFC5802 標準の Salted Challenge Response Authentication Mechanism。1
バージョン 2.6 の新機能: RFC7677 標準の Salted Challenge Response Authentication Mechanism。2
PLAIN(LDAP SASL)
LDAP を使用する外部認証。データベース内のユーザー認証には、
PLAINを使用することもできます。PLAINはパスワードをプレーン テキストで送信します。このメカニズムは MongoDB Enterprise でのみ使用できます。GSSAPI(Kerberos)
Kerberos を使用する外部認証。このメカニズムは MongoDB Enterprise でのみ使用できます。
カスタムフィルター
BI Connector は、 MongoDB集計パイプラインを使用して、MongoDB databaseに対してクエリを実行します。 スキーマに特別なフィールドを追加して、カスタムMongoDB $matchクエリstringをMongoDBインスタンスに渡すことができます。
カスタム フィルター フィールドに名前を付けるには、 mongodrdlと--customFilterFieldオプションを併用します。 このフィールドでは、ネイティブの MongoDB $matchステージが集計パイプラインの最初のステージとして使用され、MongoDB から返された結果がフィルタリングされます。 BI Connector は、SQL からプッシュダウンされる追加のステージの前にこのステージを適用します。
クエリは、フィールドがリレーショナル スキーマで公開されていない場合でも、コレクション内の任意のフィールドを参照できます。
カスタム フィルターの使用例については、「カスタム フィルターの例 」を参照してください。
使用例
スキーマ生成の例
データベースtest内のコレクションabcに次の形状のドキュメントがあるとします。
{     "_id": ObjectId(),     "close": 7.45,     "detail": { "a": 2, "b": 3 } } 
このコレクションに基づいてスキーマを生成するには、 mongodrdlを実行します。
mongodrdl -d test -c abc -o schema.drdl 
生成されたスキーマ ファイル( schema.drdl )は、次のようになります。
schema: - db: test   tables:   - table: abc     collection: abc     pipeline: []     columns:     - Name: _id       MongoType: bson.ObjectId       SqlName: _id       SqlType: varchar     - Name: close       MongoType: float64       SqlName: close       SqlType: numeric     - Name: detail.a       MongoType: float64       SqlName: detail.a       SqlType: numeric     - Name: detail.b       MongoType: float64       SqlName: detail.b       SqlType: numeric 
カスタム フィルターの例
このフィールドを使用するには、このフィールドに含める名前を指定して--customFilterFieldフラグを指定します。
mongodrdl [ other options ] --customFilterField _MONGOFILTER -o schema.drdl 
DDL ファイルschema.drdlでは、生成されたすべてのテーブルに次のフィールドが含まれます。
- Name: _MONGOFILTER   MongoType: mongo.Filter   SqlName: _MONGOFILTER   SqlType: varchar 
特別な MongoDB クエリ ステージを標準 SQL に追加するには、次の SQL 構文を使用します。
SELECT <normal>   FROM <tablename>   WHERE <normal conditions> AND       _MONGOFILTER='{ <json string that represents query to use> }' SELECT name,age   FROM users   WHERE active='t' AND       _MONGOFILTER='{"addr":{"$elemMatch":{"city":"Springfield","state":"CA"}}}' 
BI Connector は、上記の SQL を次の MongoDB集計式に変換します。
db.users.aggregate([    {$match:{"addr":{"$elemMatch":{"city":"Springfield","state":"CA"}}},    {$match:{"active":true}},    {$project:{"name":1, "age":1}} ]); 
このカスタム フィルターは、特別なフィールドでフィルタリングし、有効なbusiness intelligence を表す単一の引用 として一致する値を提供することで、任意のstring JSONツールで使用できます。JSON内のすべての引用符はdouble引用符である必要があります。
認証例
MongoDB サーバーが認証を有効にして実行している場合は、 mongodrdlコマンドのオプションとしてユーザー名、パスワード、認証データベースを指定する必要があります。
.drdlを作成するには 認証が有効になっているmongodインスタンスからの ファイルには、次のコマンド形式を使用します。
mongodrdl --host myhost.example.net:27017 \           --username dbUser \           --password myPassword \           --db reports \           --collection FY2017 \           --authenticationDatabase admin \           --out schema.drdl 
MongoDB Atlas の例
MongoDB Atlasは MongoDB 配置の実行、モニター、メンテナンス用クラウド サービスです。MongoDB インスタンス専用サーバーのプロビジョニングもサービスの一環です。
注意
MongoDB Atlas はホストされた BI Connector を提供します。 Atlas がホストする BI Connector では、 mongodrdlコマンドの.drdlファイル出力は使用できません。 Atlas BI Connector では、サンプル更新間隔とサンプル サイズが調整可能なサンプリングが必要です。
Atlas がホストするBI Connector の詳細については、「 BI Connector 経由でクラスターに接続する 」を参照してください。
BI Connector をローカルで実行していて、 .drdlを作成する場合 Atlas データベースからの ファイルには、次のコマンド形式を使用します。
mongodrdl --host <domain0>.mongodb.net:27017,<domain1>.mongodb.net:27017,... \           --username <username> \           --password <password> \           --ssl \           --authenticationDatabase admin \           --db <database> \           --out schema.drdl