mongodrdl
説明
注意
MongoDB Connector for BI と関連するユーティリティは、現在サポートされているすべての MongoDB サーバー バージョンと互換性があります。
mongodrdl
は、MongoDB Connector for BI のリレーショナル スキーマ管理ツールです。 mongodrdl
バイナリは次のことが可能です。
Produce a schema
1 つ以上の 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...>]
最小限必要な 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
を再起動します。--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
データベース内の 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
オプション
中心的オプション
--help
mongodrdl
のオプションと使用に関する情報を返します。
--version
mongodrdl
のリリース番号を返します。
--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
なしでmongod
mongos
CAFile
が有効になっている または に接続する場合に必要です。
--sslAllowInvalidCertificates
MongoDB インスタンスが無効なサーバー SSL/TLS 証明書を提示することを許可します。
allowInvalidCertificates
設定を使用すると、MongoDB は警告として無効な証明書の使用をログに記録します。
--sslAllowInvalidHostnames
TLS/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 SHA1 ハッシュ関数を使用する標準の Salted Challenge Response Authentication Mechanism。バージョン 2.6 の新機能: RFC7677 SHA ハッシュ関数を使用する標準の Salted Challenge Response Authentication Mechanismです。2PLAIN(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 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