Docs Menu
Docs Home
/
BI Connector
/

mongodrdl

項目一覧

  • 説明
  • 構文
  • 最小限必要な TLS バージョン(デフォルト)
  • コマンド
  • オプション
  • 使用例
  • MongoDB Atlas の例

注意

MongoDB Connector for BI と関連するユーティリティは、現在サポートされているすべての MongoDB サーバー バージョンと互換性があります。

mongodrdl は、MongoDB Connector for BI のリレーショナル スキーマ管理ツールです。 mongodrdlバイナリは次のことが可能です。

  • Produce a schema1 つ以上の MongoDB コレクション の内容に基づいて を作成し、.drdl で使用されるmongosqld ファイルに書き込みます。

  • Upload BI Connector が読み込んでいる MongoDB 配置への.drdlファイルのスキーマ。

  • Download MongoDB 配置から保存されたスキーマ。

  • Delete MongoDB 配置から保存されたスキーマ。

  • Name を使用して MongoDB 配置にスキーマを保存し、管理を容易にします。

.drdlファイルを手動で編集して、BI Connector のスキーマをカスタマイズできます。 .drdl形式と.drdlファイルの手動編集の詳細については、「 CRDL ファイルからスキーマを読み込む 」を参照してください。

BI Connector のすべてのスキーマ管理オプションの詳細については、「 MongoDB へのリレーショナル スキーマのマッピング 」を参照してください。

重要

DDL ファイルに加えた変更を適用するには、 mongosqldを再起動する必要があります。

mongodrdl は、次の構文を使用します。

mongodrdl [<command>] [<options...>]

バージョン 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を再起動します。--schemaName

mongosqld --schemaSource <schema-db> --schemaName movies

重要

カスタム スキーマをアップロードする場合、 を使用して、指定された名前でスキーマを保存してから、name-schema を使用してこの名前をmongosqld --schemaNameに指定する必要があります。アップロード時にスキーマの名前を保存しない場合、デフォルトのスキーマ名であるdefaultSchemaが適用されます。 スキーマ名が存在しない場合は、 mongosqldから次のようなエラーが返されます。「MongoDB スキーマはまだ利用できません。 スキーマの初期化エラー: 名前に対応するスキーマが見つかりません。

download

ObjectIdの名前または 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データベース内の ID 5d7941dc6a26a3d0fc397284のスキーマを削除します。

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
--help

mongodrdl のオプションと使用に関する情報を返します。

--version

mongodrdl のリリース番号を返します。

--verbose <level>, -v <level>

mongodrdlがより詳細なログ出力を提供するように指定します。 冗長性を高めるには複数回含めます(例: -vvvvv )、または数値を指定します(例: --verbose=5 )。

--quiet

すべてのログ出力を非表示にします。

--uri <mongodb-uri>

バージョン 2.12 の新機能

MongoDB URI 接続文字列 。

重要

次のコマンドライン オプションは、 --uriオプションと組み合わせて使用することはできません。

代わりに、 --uri接続文字列の一部としてこれらのオプションを指定します。

--host <hostname><:port>, -h <hostname><:port>

デフォルト: localhost:27017

接続先のmongodの解決可能なホスト名を指定します。 デフォルトでは、 mongodrdlはポート番号27017のローカルホストで実行されている MongoDB インスタンスに接続しようとします。

レプリカセットに接続するには、replSetName とセットノードのシードリストを次のように指定します。

<replSetName>/<hostname1><:port>,<hostname2><:port>,<...>

ホストとポート番号を直接指定することで、いつでも単一の MongoDB インスタンスに直接接続できます。

--port <port>

デフォルト: 27017

MongoDB インスタンスがクライアント接続のためにリッスンする TCP ポートを指定します。

--db <database>, -d <database>

.drdlスキーマ ファイルを生成するデータベースを指定します。

--collection <collection>, -c <collection>

.drdlスキーマ ファイルを生成するコレクションを指定します。 コレクションを指定せずにこのオプションは、指定されたデータベースまたはインスタンス内のすべてのコレクションを使用します。

--customFilterField <name>, -f <name>

カスタム MongoDB フィルターに追加するフィールド名を指定します。 詳細については、「カスタム フィルター」を参照してください。

--out <path>, -o <path>

デフォルト: 標準出力。

mongodrdlがスキーマ ファイルを書き込むパスを指定します。 スキーマを標準出力に送信するには、パスの代わりに「 - 」を指定します。

--sampleSize <size>, -s <size>

デフォルト: 1000

コレクションのスキーマを生成するときにサンプリングするドキュメントの数を指定します。

--uuidSubtype3Encoding <old|csharp|java>, -b <old|csharp|java>

UUID バイナリ サブタイプ 3 の生成に使用するエンコーディングを指定します。次のいずれかの値を選択してください。

  • old: 古い BSON バイナリ サブタイプ形式

  • csharp: C#/.NET レガシー UUID 形式

  • java: Java レガシー UUID 形式

--preJoined

親列を含む展開テーブルを生成し、「事前結合」テーブルを作成します。

--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コマンドでは使用されません。

--ssl

デフォルト: False

MongoDB インスタンスに接続するときに TLS/SSL を使用するようにmongodrdlに指示します。

--sslCAFile <filename>

MongoDB インスタンスの .pem ファイルのうち、認証局からのルート証明書チェーンを含むものを指定します。相対パスまたは絶対パスを使用して、.pem ファイルのファイル名を指定します。

警告

mongodおよびmongosへの SSL 接続( --ssl )の場合、 mongodrdl--sslCAFileなしで実行される場合、 mongodrdlはサーバー証明書の検証を試行しません。 これにより、期限切れのmongodおよびmongos証明書、および有効なmongodまたはmongosインスタンスを引き受ける外部プロセスに対する脆弱性が生じます。 違反が発生する可能性がある場合に備えて、サーバー証明書を検証するために、常にCA ファイルを指定するようにしてください。

--sslPEMKeyFile <filename>

MongoDB への接続時にmongosqldが使用する TLS/SSL 証明書と鍵の両方を含む.pemファイルを指定します。 相対パスまたは絶対パスを使用して、 .pemファイルのファイル名を指定できます。

このオプションは、--ssl オプションを使用して、net.ssl.allowConnectionsWithoutCertificates なしでmongodmongos CAFileが有効になっている または に接続する場合に必要です。

--sslPEMKeyPassword <password>

MongoDB への接続用証明書と秘密キーを含むファイルへのパスを指定します。

--sslCRLFile <filename>

証明書失効リストを含む .pem ファイルを指定します。相対パスまたは絶対パスを使用して .pem ファイルのファイル名を指定します。

--sslAllowInvalidCertificates

MongoDB インスタンスが無効なサーバー SSL/TLS 証明書を提示することを許可します。 allowInvalidCertificates設定を使用すると、MongoDB は警告として無効な証明書の使用をログに記録します。

--sslAllowInvalidHostnames

TLS/SSL 証明書のホスト名の検証を無効にします。 証明書のホスト名が指定されたホスト名と一致しない場合、 mongodrdlによる MongoDB インスタンスへの接続を許可します。

--sslFIPSMode

インストールされた OpenSSL ライブラリの FIPS モードを使用するようにmongodrdlに指示します。 --sslFIPSModeオプションを使用するには、システムに FIPS 準拠の OpenSSL ライブラリが必要です。

--minimumTLSVersion <TLS1_0|TLS1_1|TLS1_2>

デフォルト: TLS1_1

mongodrdlmongodまたはmongosインスタンスに接続するために最小限必要な TLS バージョンを指定します。 デフォルト値TLS1_1は TLS バージョン1に対応します。 1 。

--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 SHA1 ハッシュ関数を使用する標準の Salted Challenge Response Authentication Mechanism。
バージョン 2.6 の新機能: RFC7677 SHA ハッシュ関数を使用する標準の Salted Challenge Response Authentication Mechanismです。2
PLAIN(LDAP SASL)
LDAP を使用する外部認証。データベース内のユーザー認証には、PLAIN を使用することもできます。PLAIN はパスワードをプレーン テキストで送信します。このメカニズムは MongoDB Enterprise でのみ使用できます。
GSSAPI(Kerberos)
Kerberos を使用する外部認証。このメカニズムは MongoDB Enterprise でのみ使用できます。
--gssapiServiceName <service-name>

デフォルト: mongodb

GSSAPI/Kerberos を使用して認証するときに使用するサービス名。

--gssapiHostName <hostname>

デフォルト: リモート サーバーのアドレス

GSSAPI/Kerberos を使用して認証するときに使用するホスト名。

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 配置の実行、モニター、メンテナンス用クラウド サービスです。MongoDB インスタンス専用サーバーのプロビジョニングもサービスの一環です。

注意

MongoDB Atlas はホストされた BI Connector を提供します。 Atlas がホストする BI Connector では、 mongodrdlコマンドの.drdlファイル出力は使用できません。 Atlas BI Connector では、サンプル更新間隔とサンプル サイズが調整可能なサンプリングが必要です。

Atlas がホストする BI Connector の詳細については、「 BI Connector for Atlas 経由で接続 」を参照してください。

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

戻る

mongosqld