説明
注意
MongoDB Connector for BI および関連ユーティリティは、現在サポートされているすべての MongoDB サーバー バージョンと互換性があります。
mongodrdl は、MongoDB Connector for BI のリレーショナル スキーマ管理ツールです。 mongodrdlバイナリは次のことが可能です。
Produce a schema1 つ以上のMongoDBコレクションの内容に基づいて を作成し、それらを.drdlで使用されるmongosqldファイルに書き込みます。Upload.drdlBI Connector が読み込んでいるMongoDBデプロイへの ファイルのスキーマを します。DownloadMongoDB 配置から保存されたスキーマ。DeleteMongoDB 配置から保存されたスキーマ。Nameを使用して MongoDB 配置にスキーマを保存し、管理を容易にします。
.drdlファイルを手動で編集して、BI Connector のスキーマをカスタマイズできます。 .drdl形式と.drdlファイルの手動編集の詳細については、「 CRDL ファイルからスキーマを読み込む 」を参照してください。
BI Connector のすべてのスキーマ管理オプションの詳細については、「 MongoDB へのリレーショナル スキーマのマッピング 」を参照してください。
重要
DDL ファイルに加えた変更を適用するには、 mongosqldを再起動する必要があります。
構文
mongodrdl は、次の構文を使用します。
mongodrdl [<command>] [<options...>]
最小限必要な TLS バージョン(デフォルト)
バージョン2.6の新機能。
デフォルトで最小限必要な TLS バージョンは、1.1 mongodrdlからMongoDBへの送信接続に です。
この設定は--minimumTLSVersion オプションで調整できます。
コマンド
バージョン2.11の新機能。
mongodrdlの動作は、次のコマンドのいずれかによって決まります。 コマンドが指定されていない場合、 mongodrdlは指定された名前空間をサンプリングします。
sample--db--collection、オプションの 、およびその他のコマンドラインオプションで指定された名前空間をサンプリングし、.drdlファイルを出力しますsamplemongodrdl2コマンドは、バージョン. より前のすべての の動作をカプセル化します。11mongodrdl 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 表現を一覧表示します。
保存されたスキーマは、デフォルトでは 名前なし です。名前付きスキーマを参照するには、
--namedownloaddeleteコマンドと コマンドで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-schemamongodrdl name-schema --name movies --schemaSource schemas --schema 5d793f3f6a26a3ce66c304ea 指定された名前を受け取った、新しくアップロードされたスキーマを使用するには、 オプションで指定されたスキーマ データベースと、 で指定されたスキーマ名で
mongosqld--schemaSourceを再起動します。--schemaNamemongosqld --schemaSource <schema-db> --schemaName movies
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スキーマの新しい名前を作成するか、スキーマの既存の名前を更新します。
保存されたスキーマは、デフォルトでは 名前なし です。名前付きスキーマを参照するには、
--namedownloaddeleteコマンドと コマンドでname-schemaオプションを使用します。スキーマに名前を付けるまたは名前を変更するには、 コマンドを使用します。name-schemaには次のオプションが必要です。名前説明必須。 スキーマ情報を保存するデータベースを指定します。
必須。 スキーマの新しい名前。
必須スキーマのObjectIdの string 表現。
たとえば、次のコマンドは、
schemasデータベース内の5d72adea5c23a9e44882a1adスキーマにmoviesとして名前を付けます。mongodrdl name-schema --name movies --schemaSource schemas --schema 5d72adea5c23a9e44882a1ad
オプション
中心的オプション
--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のローカルホストで実行中MongoDBインスタンスに接続しようとします。27017replSetNameレプリカセットに接続するには、次のように とセットノードのシードリストを指定します。<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 表現を指定します。
--schemaSource <db-name>バージョン2.11の新機能。
スキーマ情報を保存するデータベースを指定します。このオプションは
sampleコマンドでは使用されません。
TLS/SSL オプション
--sslデフォルト: False
mongodrdlMongoDBインスタンスに接続するときに TLS/SSL を使用するように に指示します。
--sslCAFile <filename>MongoDB インスタンスの
.pemファイルのうち、認証局からのルート証明書チェーンを含むものを指定します。相対パスまたは絶対パスを使用して、.pemファイルのファイル名を指定します。
--sslPEMKeyFile <filename>MongoDB への接続時に
mongosqldが使用する TLS/SSL 証明書と鍵の両方を含む.pemファイルを指定します。 相対パスまたは絶対パスを使用して、.pemファイルのファイル名を指定できます。このオプションは、
--sslオプションを使用して、allowConnectionsWithoutCertificatesなしでmongodmongosCAFileが有効になっている または に接続する場合に必要です。
--sslAllowInvalidCertificatesMongoDB インスタンスが無効なサーバー SSL/TLS 証明書を提示することを許可します。
allowInvalidCertificates設定を使用すると、MongoDB は警告として無効な証明書の使用をログに記録します。
--sslAllowInvalidHostnamesTLS/SSL 証明書のホスト名の検証を無効にします。証明書のホスト名が指定されたホスト名と一致しない場合、
mongodrdlによるMongoDBインスタンスへの接続は許可されます。
--sslFIPSModemongodrdlインストールされた OpenSSL ライブラリの FIPSモードを使用するように に指示します。 オプションを使用するには、システムに FIPS 準拠の OpenSSL--sslFIPSModeライブラリが必要です。
認証オプション
--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(SHA1 ハッシュ関数を使用)。
バージョン 2.6 の新機能: RFC7677 標準の Salted Challenge Response Authentication Mechanism(SHA2 ハッシュ関数を使用)。
PLAIN(LDAP SASL)
LDAP を使用する外部認証。データベース内のユーザー認証には、
PLAINを使用することもできます。PLAINはパスワードをプレーン テキストで送信します。このメカニズムは MongoDB Enterprise でのみ使用できます。GSSAPI(Kerberos)
Kerberos を使用する外部認証。このメカニズムは MongoDB Enterprise でのみ使用できます。
カスタムフィルター
BI Connector は、 MongoDB集計パイプラインを使用して、MongoDB databaseに対してクエリを実行します。 スキーマに特別なフィールドを追加して、カスタムMongoDB $matchクエリstringをMongoDBインスタンスに渡すことができます。
--customFilterFieldmongodrdlカスタム フィルタフィールドに名前を付けるには、 と オプションを併用します。このフィールドは、ネイティブの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