CData Cloud は、クラウドホスト型のソリューションで、複数の標準サービスやプロトコルにまたがるMongoDB へのアクセスを実現します。MySQL またはSQL Server データベースに接続できるアプリケーションであれば、CData Cloud を介してMongoDB に接続できます。
CData Cloud により、他のOData エンドポイントや標準SQL Server / MySQL データベースと同じように、MongoDB への接続を標準化し、構成することができます。
このページでは、CData Cloud でのMongoDB への接続の確立 のガイド、利用可能なリソースに関する情報、および使用可能な接続プロパティのリファレンスについて説明します。
接続の確立 は、CData Cloud にデータベースを作成するためのMongoDB への認証方法と必要な接続プロパティの設定方法について示します。
利用可能な標準サービスを経由してMongoDB からデータにアクセスする方法と、CData Cloud の管理については、CData Cloud ドキュメント で詳しく説明します。
Database タブで対応するアイコンを選択して、MongoDB に接続します。必須プロパティはSettings にリストされています。Advanced タブには、通常は必要ない接続プロパティが表示されます。
次の接続プロパティを設定し、単一のMongoDB インスタンスに接続します。
レプリカセットに接続するには、前述の接続プロパティに加えて、 次の設定を行います。
UseSSL を設定すると、接続時にSSL/TLS 暗号化をネゴシエートできます。
サポートされているAuthScheme 認証タイプ(MONGODB-CR、SCRAM-SHA-1、SCRAM-SHA-256、PLAIN、GSSAPI)は、チャレンジレスポンス認証とLDAP です。
チャレンジレスポンス認証では、User とPassword プロパティは、MongoDB データベースに格納されているユーザー名とパスワードに対応しています。1つのデータベースのデータに接続し、別のデータベースを認証する必要がある場合は、Database とAuthDatabase の両方を設定します。
LDAP 認証を使用するには、AuthDatabase を"$external" に設定し、AuthScheme をPLAIN に設定します。この値はSASL PLAIN メカニズムを指定します。このメカニズムは視覚情報をプレーンテキストで送信するため、信頼できないネットワークではTLS/SSL なしでは使用できません。
X.509 証明書認証を使用するには、AuthScheme をX509 に設定します。
Amazon DocumentDB に接続する前に、まずAmazon DocumentDB クラスターと、mongo シェルを含むEC2 インスタンスが実行されていることを確認する必要があります。
次に、EC2 インスタンスへのSSH トンネルを以下のように設定します。
DocumentDB クラスターに接続するには、以下を指定します。
MongoDB API を使ってCosmos DB アカウントに接続するために必要な接続文字列を取得するには、Azure Portal にログインして[Azure Cosmos DB]を選択し、自分のアカウントを選択します。[Settings]セクションで、[Connection String]をクリックして次の値を設定します。
Atlas、ObjectRocket、または別のDBaaS プロバイダーに接続する場合は、通常、[接続の確立]に記載されている手順にいくつかのバリエーションがあります。次のセクションでは、いくつかの一般的なサービスに必要な接続プロパティを取得する方法について説明します。
MongoDB Atlas には、MongoDB ユーザーまたはLDAP ユーザーで認証できます。次のセクションでは、Atlas 接続文字列をCloud 接続プロパティにマッピングする方法を説明します。Atlas 接続文字列を取得する方法は次のとおりです。
MongoDB ユーザーの作成および/またはLDAP の設定に加えて、Atlas プロジェクトのホワイトリストに、Cloud が接続しているマシンのIP アドレスが含まれている必要があります。ホワイトリストにIP アドレスを追加するには、[Clusters]ビューで[Security]タブを選択し、[IP Whitelist]->[Add IP Address]をクリックします。
次は、MongoDB ユーザー資格情報を提供する接続文字列の例です。
mongodb://USERNAME:PASSWORD@cluster0-shard-00-00.mongodb.net:27017,cluster0-shard-00-01.mongodb.net:27017,cluster0-shard-00-02.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin
以下は、対応するCloud 接続プロパティです。
cluster0-shard-00-00.mongodb.net
mycluster0-shard-00-01.mongodb.net:27017,mycluster0-shard-00-02.mongodb.net:27017
User:MongoDB プロジェクトに追加したMongoDB ユーザーのユーザー名。
Password:MongoDB ユーザーのパスワード。
次のリストは、LDAP ユーザーで認証するためのMongoDB Atlas の要件を示しています。
以下はMongo クライアントに接続するためのコマンド例です。
mongo "mongodb://cluster0-shard-00-00.mongodb.net:27017,cluster0-shard-00-01.mongodb.net:27017,cluster0-shard-00-02.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=$external" --authenticationMechanism PLAIN --username cn=rob,cn=Users,dc=atlas-ldaps-01,dc=myteam,dc=com
Server:レプリカセットの最初のサーバー。または、別のプライマリまたはセカンダリサーバーを指定できます(Cloud はServer とReplicaSet 内のサーバーをクエリしてプライマリを検索します)。
次に例を示します。
cluster0-shard-00-00.mongodb.net
mycluster0-shard-00-01.mongodb.net:27017,mycluster0-shard-00-02.mongodb.net:27017
AuthScheme:LDAP 認証のPLAIN。
Database:読み書きするデータベース。
AuthDatabase:LDAP ユーザーで認証する場合は、"$external"。
User:Atlas ユーザー名としてLDAP サーバーにあるユーザーの完全な識別名(DN)。次に例を示します。
cn=rob,cn=Users,dc=atlas-ldaps-01,dc=myteam,dc=com
Password:LDAP ユーザーのパスワード。
UseSSL:true。Atlas はTLS / SSLを必要とします。
ObjectRocket に接続するには、データベースユーザーの資格情報を使用して認証します。コントロールパネルから必要な接続プロパティを取得できます。[インスタンス]ページでインスタンスを選択し、[接続]メニューを選択してMongoDB 接続文字列を表示します。
データベースにユーザーを追加することに加えて、Cloud が接続しているマシンのIP アドレスへのアクセスも許可する必要があります。これを設定するには、[インスタンス]ページでインスタンスを選択し、[Add ACL]をクリックします。
mongodb://YOUR_USERNAME:YOUR_PASSWORD@abc123-d4-0.mongo.objectrocket.com:52826,abc123-d4-2.mongo.objectrocket.com:52826,abc123-d4-1.mongo.objectrocket.com:52826/YOUR_DATABASE_NAME?replicaSet=89c04c5db2cf403097d8f2e8ca871a1c
以下は、対応するCloud 接続プロパティです。
abc123-d4-0.mongo.objectrocket.com
abc123-d4-2.mongo.objectrocket.com:52826,abc123-d4-1.mongo.objectrocket.com:52826
MongoDB はスキーマレスなドキュメントデータベースで、高いパフォーマンス、使用性、およびスケーラビリティを提供します。これらの機能は、必ずしもSQL-92 のような標準準拠のクエリ言語と互換しないわけではありません。このセクションでは、Cloud が複数のやり方によって、リレーショナルSQL とドキュメントデータベースのギャップの橋渡しをいかに行うかを説明します。
Cloud では、スキーマレスなMongoDB オブジェクトをリレーショナルテーブルにモデル化し、SQL クエリをMongoDB クエリに読み替えることで、要求されたデータを取得します。 さまざまなMongoDB 操作がSQL としてどのように表されるかの詳細については、クエリマッピング を参照してください。
自動スキーマ検出 スキームでは、設定された行数のオブジェクトをスキャンすることで、自動的にMongoDB 内のデータ型を見つけます。MongoDB コレクションのリレーショナル表現をコントロールするためにRowScanDepth、FlattenArrays、およびFlattenObjects を使うことができます。スキーマに結びついていない自由形式クエリ を記述することもできます。
Cloud は、コレクション内のMongoDB ドキュメントをサンプルとして調べ、リレーショナルスキーマを提案します。RowScanDepth プロパティを使って、Cloud がスキャンするドキュメント数を設定することができます。検出プロセスで特定されるカラムはFlattenArrays およびFlattenObjects プロパティに依存します。
FlattenObjects が設定されている場合、すべてのネストされたオブジェクトは連続したカラムにフラット化されます。例えば、次のドキュメントを考えましょう。
{ id: 12, name: "Lohia Manufacturers Inc.", address: {street: "Main Street", city: "Chapel Hill", state: "NC"}, offices: ["Chapel Hill", "London", "New York"], annual_revenue: 35,600,000 }このドキュメントは次のカラムにより表されます:
カラム名 | データ型 | サンプル値 |
id | Integer | 12 |
name | String | Lohia Manufacturers Inc. |
address.street | String | Main Street |
address.city | String | Chapel Hill |
address.state | String | NC |
offices | String | ["Chapel Hill", "London", "New York"] |
annual_revenue | Double | 35,600,000 |
FlattenObjects が設定されていない場合、address.street、address.city、およびaddress.state カラムは別々にはなりません。文字列型の住所カラムは一つのオブジェクトとして表されます。値は次のようになります {street:"Main Street", city:"Chapel Hill", state:"NC"}。JSON アグリゲートの詳細についてはJSON 関数 を参照してください。
FlattenArrays プロパティは配列の値をフラット化してそれぞれのカラムとするために使われます。これは次の例のように短い配列の場合にのみ推奨されます。
"coord": [ -73.856077, 40.848447 ]FlattenArrays プロパティは2に設定して上の配列を次のように表すことができます:
カラム名 | データ型 | サンプル値 |
coord.0 | Float | -73.856077 |
coord.1 | Float | 40.848447 |
アンバウンドの配列をそのままにしておき、必要な際にJSON 関数 を使ってデータを取り出すことをお勧めします。
自動スキーマ検出 の説明にあるとおり、直感的なテーブルスキーマは非構造化MongoDB データへのSQL アクセスを可能にします。JSON 関数 は標準のJSON 関数を使ってMongoDB データをサマライズし、あらゆるネスト構造から値を抽出できます。 カスタムスキーマ定義 では静的なテーブルを定義でき、データのリレーショナルビューでの緻密な制御を可能にします。例えば、parent/child テーブルやfact/dimension テーブルを定義するスキーマを記述することができます。 しかし、これらのスキーマに限定されません。
接続後は、どんなネストされた構造でもデータをフラット化せずにクエリできますFlattenArrays やFlattenObjects でアクセスできるあらゆるリレーションへは、アドホックなSQL クエリを使ってもアクセスが可能です。
次のRestaurant データセットからのサンプルドキュメントを考えてみましょう。
{ "address": { "building": "1007", "coord": [ -73.856077, 40.848447 ], "street": "Morris Park Ave", "zipcode": "10462" }, "borough": "Bronx", "cuisine": "Bakery", "grades": [ { "grade": "A", "score": 2, "date": { "$date": "1393804800000" } }, { "date": { "$date": "1378857600000" }, "grade": "B", "score": 6 }, { "score": 10, "date": { "$date": "1358985600000" }, "grade": "C" } ], "name": "Morris Park Bake Shop", "restaurant_id": "30075445" }このドキュメントのあらゆるネスト構造にカラムとしてアクセスできます。以下のクエリで示すように、ドット表記法を使ってアクセスしたい値にドリルダウンします。配列のインデックスはゼロオリジンです。例えば、次のクエリではサンプル内のrestaurant のsecond grade を取得します。
SELECT [address.building], [grades.1.grade] FROM restaurants WHERE restaurant_id = '30075445'先のクエリは、次の結果を返します。
カラム名 | データ型 | サンプル値 |
address.building | String | 1007 |
grades.1.grade | String | A |
ドキュメントの配列を、個別のテーブルのように取得することが可能です。例えば、restaurants コレクションから次のJSON 構造を取得します。
{ "_id" : ObjectId("568c37b748ddf53c5ed98932"), "address" : { "building" : "1007", "coord" : [-73.856077, 40.848447], "street" : "Morris Park Ave", "zipcode" : "10462" }, "borough" : "Bronx", "cuisine" : "Bakery", "grades" : [{ "date" : ISODate("2014-03-03T00:00:00Z"), "grade" : "A", "score" : 2 }, { "date" : ISODate("2013-09-11T00:00:00Z"), "grade" : "A", "score" : 6 }, { "date" : ISODate("2013-01-24T00:00:00Z"), "grade" : "A", "score" : 10 }, { "date" : ISODate("2011-11-23T00:00:00Z"), "grade" : "A", "score" : 9 }, { "date" : ISODate("2011-03-10T00:00:00Z"), "grade" : "B", "score" : 14 }], "name" : "Morris Park Bake Shop", "restaurant_id" : "30075445" }垂直フラット化ではgrades 配列を別々のテーブルとして取得することを許可します。
SELECT * FROM [restaurants.grades]このクエリは、次のデータセットを返します。
date | grade | score | P_id | _index |
2014-03-03T00:00:00.000Z | A | 2 | 568c37b748ddf53c5ed98932 | 1 |
2013-09-11T00:00:00.000Z | A | 6 | 568c37b748ddf53c5ed98932 | 2 |
2013-01-24T00:00:00.000Z | A | 10 | 568c37b748ddf53c5ed98932 | 3 |
SELECT [restaurants].[restaurant_id], [restaurants.grades].* FROM [restaurants.grades] JOIN [restaurants] WHERE [restaurants].name = 'Morris Park Bake Shop'このクエリは、次のデータセットを返します。
restaurant_id | date | grade | score | P_id | _index |
30075445 | 2014-03-03T00:00:00.000Z | A | 2 | 568c37b748ddf53c5ed98932 | 1 |
30075445 | 2013-09-11T00:00:00.000Z | A | 6 | 568c37b748ddf53c5ed98932 | 2 |
30075445 | 2013-01-24T00:00:00.000Z | A | 10 | 568c37b748ddf53c5ed98932 | 3 |
30075445 | 2011-11-23T00:00:00.000Z | A | 9 | 568c37b748ddf53c5ed98932 | 4 |
30075445 | 2011-03-10T00:00:00.000Z | B | 14 | 568c37b748ddf53c5ed98932 | 5 |
他の配列の中にある配列を対象としたクエリを作成することも可能です。
以下がInventory コレクションの例です。
{ "_id": { "$oid": "xxxxxxxxxxxxxxxxxxxxxx" }, "Company Branch": "Main Branch", "ItemList": [ { "item": "journal", "instock": [ { "warehouse": "A", "qty": 15 }, { "warehouse": "B", "qty": 45 } ] }, { "item": "paper", "instock": [ { "warehouse": "A", "qty": 50 }, { "warehouse": "B", "qty": 5 } ] } ] }
Insert data into the nested arrays using the syntax of <parent array>.<index>.<child array>, as follows:
INSERT INTO [Inventory.ItemList] (p_id, item, [instock.0.warehouse], [instock.0.qty], [instock.0.price]) VALUES ('xxxxxxxxxxxxxxxxxxxxxx', 'NoteBook', 'B', 20, '5$')
The Inventory collection after executing the INSERT statement:
{ "_id": { "$oid": "xxxxxxxxxxxxxxxxxxxxxx" }, "Company Branch": "Main Branch", "ItemList": [ { "item": "journal", "instock": [ { "warehouse": "A", "qty": 15 }, { "warehouse": "B", "qty": 45 } ] }, { "item": "paper", "instock": [ { "warehouse": "A", "qty": 50 }, { "warehouse": "B", "qty": 5 } ] }, { "item": "NoteBook", "instock": [ { "warehouse": "B", "qty": 20, "price": "5$" } ] } ] }
Cloud では、JSON ストラクチャーをカラム値として返すことができます。Cloud を使って、これらのJSON ストラクチャーにおいて標準SQL 関数を使用できます。このセクションの例では、次の配列を使用します。
[ { "grade": "A", "score": 2 }, { "grade": "A", "score": 6 }, { "grade": "A", "score": 10 }, { "grade": "A", "score": 9 }, { "grade": "B", "score": 14 } ]
SELECT Name, JSON_EXTRACT(grades,'[0].grade') AS Grade, JSON_EXTRACT(grades,'[0].score') AS Score FROM Students;
カラム名 | サンプル値 |
Grade | A |
Score | 2 |
SELECT Name, JSON_COUNT(grades,'[x]') AS NumberOfGrades FROM Students;
カラム名 | サンプル値 |
NumberOfGrades | 5 |
SELECT Name, JSON_SUM(score,'[x].score') AS TotalScore FROM Students;
カラム名 | サンプル値 |
TotalScore | 41 |
SELECT Name, JSON_MIN(score,'[x].score') AS LowestScore FROM Students;
カラム名 | サンプル値 |
LowestScore | 2 |
SELECT Name, JSON_MAX(score,'[x].score') AS HighestScore FROM Students;
カラム名 | サンプル値 |
HighestScore | 14 |
DOCUMENT 関数はすべてのドキュメントをJSON 文字列として取得する場合に用いられます。例として、次のクエリとその結果をご覧ください。
SELECT DOCUMENT(*) FROM Customers;上のクエリはすべてのドキュメントを返します。
{ "id": 12, "name": "Lohia Manufacturers Inc.", "address": { "street": "Main Street", "city": "Chapel Hill", "state": "NC"}, "offices": [ "Chapel Hill", "London", "New York" ], "annual_revenue": 35,600,000 }
Cloud は、SQL クエリを対応するMongoDB クエリにマッピングします。ここではトランスフォーメーションの詳細は説明しませんが、いくつか代表的なものを説明します。Cloud は、Aggregation Framework などのMongoDB の機能の良いところを使って望まれる結果を出します。
SQL クエリ | MongoDB クエリ |
SELECT * FROM Users | db.users.find() |
SELECT user_id, status FROM Users | db.users.find( {}, { user_id: 1, status: 1, _id: 0 } ) |
SELECT * FROM Users WHERE status = 'A' | db.users.find( { status: "A" } ) |
SELECT * FROM Users WHERE status = 'A' OR age=50 | db.users.find( { $or: [ { status: "A" }, { age: 50 } ] } ) |
SELECT * FROM Users WHERE name LIKE 'A%' | db.users.find( {name: /^a/} ) |
SELECT * FROM Users WHERE status = 'A' ORDER BY user_id ASC | db.users.find( { status: "A" }.sort( { user_id: 1 } ) |
SELECT * FROM Users WHERE status = 'A' ORDER BY user_id DESC | db.users.find( {status: "A" }.sort( {user_id: -1} ) |
SQL クエリ | MongoDB クエリ |
SELECT Count(*) As Count FROM Orders | db.orders.aggregate( [ { $group: { _id: null, count: { $sum: 1 } } } ] ) |
SELECT Sum(price) As Total FROM Orders | db.orders.aggregate( [ { $group: { _id: null, total: { $sum: "$price" } } } ] ) |
SELECT cust_id, Sum(price) As total FROM Orders GROUP BY cust_id ORDER BY total | db.orders.aggregate( [ { $group: { _id: "$cust_id", total: { $sum: "$price" } } } , { $sort: {total: 1 } } ] ) |
SELECT cust_id, ord_date, Sum(price) As total FROM Orders GROUP BY cust_id, ord_date HAVING total > 250 |
db.orders.aggregate( [ { $group: { _id: { cust_id: "$cust_id", ord_date: { month: { $month: "$ord_date" }, day: { $dayOfMonth: "$ord_date" }, year: { $year: "$ord_date"} } }, total: { $sum: "$price" } } }, { $match: { total: { $gt: 250 } } } ] ) |
SQL クエリ | MongoDB クエリ |
INSERT INTO users (user_id, age, status, [address.city], [address.postalcode]) VALUES ('bcd001', 45, 'A', 'Chapel Hill', 27517) | db.users.insert( { user_id: "bcd001", age: 45, status: "A", address:{ city:"Chapel Hill", postalCode:27514} } ) |
INSERT INTO t1 ("c1") VALUES (('a1', 'a2', 'a3')) | db.users.insert({"c1": ['a1', 'a2', 'a3']}) |
INSERT INTO t1 ("c1") VALUES (()) | db.users.insert({"c1": []}) |
INSERT INTO t1 ("a.b.c.c1") VALUES (('a1', 'a2', 'a3')) | db.users.insert("a":{"b":{"c":{"c1":['a1','a2', 'a3']}}}) |
SQL クエリ | MongoDB クエリ |
UPDATE users SET status = 'C', [address.postalcode] = 90210 WHERE age > 25 | db.users.update( { age: { $gt: 25 } }, { $set: { status: "C", address.postalCode: 90210 }, { multi: true } ) |
SQL クエリ | MongoDB クエリ |
DELETE FROM users WHERE status = 'D' | db.users.remove( { status: "D" } ) |
このセクションで説明されているシステムテーブルをクエリして、スキーマ情報、データソース機能に関する情報、およびバッチ操作の統計にアクセスできます。
以下のテーブルは、MongoDB のデータベースメタデータを返します。
以下のテーブルは、データソースへの接続方法およびクエリ方法についての情報を返します。
次のテーブルは、データ変更クエリ(バッチ処理を含む)のクエリ統計を返します。
利用可能なデータベースをリストします。
次のクエリは、接続文字列で決定されるすべてのデータベースを取得します。
SELECT * FROM sys_catalogs
Name | Type | Description |
CatalogName | String | データベース名。 |
利用可能なスキーマをリストします。
次のクエリは、すべての利用可能なスキーマを取得します。
SELECT * FROM sys_schemas
Name | Type | Description |
CatalogName | String | データベース名。 |
SchemaName | String | スキーマ名。 |
利用可能なテーブルをリストします。
次のクエリは、利用可能なテーブルおよびビューを取得します。
SELECT * FROM sys_tables
Name | Type | Description |
CatalogName | String | テーブルまたはビューを含むデータベース。 |
SchemaName | String | テーブルまたはビューを含むスキーマ。 |
TableName | String | テーブル名またはビュー名。 |
TableType | String | テーブルの種類(テーブルまたはビュー)。 |
Description | String | テーブルまたはビューの説明。 |
IsUpdateable | Boolean | テーブルが更新可能かどうか。 |
利用可能なテーブルおよびビューのカラムについて説明します。
次のクエリは、[CData].[Sample].Customers テーブルのカラムとデータ型を返します。
SELECT ColumnName, DataTypeName FROM sys_tablecolumns WHERE TableName='Customers' AND CatalogName='CData' AND SchemaName='Sample'
Name | Type | Description |
CatalogName | String | テーブルまたはビューを含むデータベースの名前。 |
SchemaName | String | テーブルまたはビューを含むスキーマ。 |
TableName | String | カラムを含むテーブルまたはビューの名前。 |
ColumnName | String | カラム名。 |
DataTypeName | String | データ型の名前。 |
DataType | Int32 | データ型を示す整数値。この値は、実行時に環境に基づいて決定されます。 |
Length | Int32 | カラムのストレージサイズ。 |
DisplaySize | Int32 | 指定されたカラムの通常の最大幅(文字数)。 |
NumericPrecision | Int32 | 数値データの最大桁数。文字データおよび日時データの場合は、カラムの長さ(文字数)。 |
NumericScale | Int32 | カラムのスケール(小数点以下の桁数)。 |
IsNullable | Boolean | カラムがNull を含められるかどうか。 |
Description | String | カラムの簡単な説明。 |
Ordinal | Int32 | カラムのシーケンスナンバー。 |
IsAutoIncrement | String | カラムに固定増分値が割り当てられるかどうか。 |
IsGeneratedColumn | String | 生成されたカラムであるかどうか。 |
IsHidden | Boolean | カラムが非表示かどうか。 |
IsArray | Boolean | カラムが配列かどうか。 |
IsReadOnly | Boolean | カラムが読み取り専用かどうか。 |
IsKey | Boolean | sys_tablecolumns から返されたフィールドがテーブルの主キーであるかどうか。 |
利用可能なストアドプロシージャをリストします。
次のクエリは、利用可能なストアドプロシージャを取得します。
SELECT * FROM sys_procedures
Name | Type | Description |
CatalogName | String | ストアドプロシージャを含むデータベース。 |
SchemaName | String | ストアドプロシージャを含むスキーマ。 |
ProcedureName | String | ストアドプロシージャの名前。 |
Description | String | ストアドプロシージャの説明。 |
ProcedureType | String | PROCEDURE やFUNCTION などのプロシージャのタイプ。 |
ストアドプロシージャパラメータについて説明します。
次のクエリは、AddDocument ストアドプロシージャのすべての入力パラメータについての情報を返します。
SELECT * FROM sys_procedureparameters WHERE ProcedureName='AddDocument' AND Direction=1 OR Direction=2
Name | Type | Description |
CatalogName | String | ストアドプロシージャを含むデータベースの名前。 |
SchemaName | String | ストアドプロシージャを含むスキーマの名前。 |
ProcedureName | String | パラメータを含むストアドプロシージャの名前。 |
ColumnName | String | ストアドプロシージャパラメータの名前。 |
Direction | Int32 | パラメータのタイプに対応する整数値:input (1)。input/output (2)、またはoutput(4)。input/output タイプパラメータは、入力パラメータと出力パラメータの両方になれます。 |
DataTypeName | String | データ型の名前。 |
DataType | Int32 | データ型を示す整数値。この値は、実行時に環境に基づいて決定されます。 |
Length | Int32 | 文字データの場合は、許可される文字数。数値データの場合は、許可される桁数。 |
NumericPrecision | Int32 | 数値データの場合は最大精度。文字データおよび日時データの場合は、カラムの長さ(文字数)。 |
NumericScale | Int32 | 数値データの小数点以下の桁数。 |
IsNullable | Boolean | パラメータがNull を含められるかどうか。 |
IsRequired | Boolean | プロシージャの実行にパラメータが必要かどうか。 |
IsArray | Boolean | パラメータが配列かどうか。 |
Description | String | パラメータの説明。 |
Ordinal | Int32 | パラメータのインデックス。 |
主キーおよび外部キーについて説明します。
次のクエリは、[CData].[Sample].Customers テーブルの主キーを取得します。
SELECT * FROM sys_keycolumns WHERE IsKey='True' AND TableName='Customers' AND CatalogName='CData' AND SchemaName='Sample'
Name | Type | Description |
CatalogName | String | キーを含むデータベースの名前。 |
SchemaName | String | キーを含むスキーマの名前。 |
TableName | String | キーを含むテーブルの名前。 |
ColumnName | String | キーカラムの名前 |
IsKey | Boolean | カラムがTableName フィールドで参照されるテーブル内の主キーかどうか。 |
IsForeignKey | Boolean | カラムがTableName フィールドで参照される外部キーかどうか。 |
PrimaryKeyName | String | 主キーの名前。 |
ForeignKeyName | String | 外部キーの名前。 |
ReferencedCatalogName | String | 主キーを含むデータベース。 |
ReferencedSchemaName | String | 主キーを含むスキーマ。 |
ReferencedTableName | String | 主キーを含むテーブル。 |
ReferencedColumnName | String | 主キーのカラム名。 |
外部キーについて説明します。
次のクエリは、他のテーブルを参照するすべての外部キーを取得します。
SELECT * FROM sys_foreignkeys WHERE ForeignKeyType = 'FOREIGNKEY_TYPE_IMPORT'
名前 | タイプ | 説明 |
CatalogName | String | キーを含むデータベースの名前。 |
SchemaName | String | キーを含むスキーマの名前。 |
TableName | String | キーを含むテーブルの名前。 |
ColumnName | String | キーカラムの名前 |
PrimaryKeyName | String | 主キーの名前。 |
ForeignKeyName | String | 外部キーの名前。 |
ReferencedCatalogName | String | 主キーを含むデータベース。 |
ReferencedSchemaName | String | 主キーを含むスキーマ。 |
ReferencedTableName | String | 主キーを含むテーブル。 |
ReferencedColumnName | String | 主キーのカラム名。 |
ForeignKeyType | String | 外部キーがインポート(他のテーブルを指す)キーかエクスポート(他のテーブルから参照される)キーかを指定します。 |
主キーについて説明します。
次のクエリは、すべてのテーブルとビューから主キーを取得します。
SELECT * FROM sys_primarykeys
Name | Type | Description |
CatalogName | String | キーを含むデータベースの名前。 |
SchemaName | String | キーを含むスキーマの名前。 |
TableName | String | キーを含むテーブルの名前。 |
ColumnName | String | キーカラムの名前。 |
KeySeq | String | 主キーのシーケンス番号。 |
KeyName | String | 主キーの名前。 |
利用可能なインデックスについて説明します。インデックスをフィルタリングすることで、より高速なクエリ応答時間でセレクティブクエリを記述できます。
次のクエリは、主キーでないすべてのインデックスを取得します。
SELECT * FROM sys_indexes WHERE IsPrimary='false'
Name | Type | Description |
CatalogName | String | インデックスを含むデータベースの名前。 |
SchemaName | String | インデックスを含むスキーマの名前。 |
TableName | String | インデックスを含むテーブルの名前。 |
IndexName | String | インデックス名。 |
ColumnName | String | インデックスに関連付けられたカラムの名前。 |
IsUnique | Boolean | インデックスが固有の場合はTrue。そうでない場合はFalse。 |
IsPrimary | Boolean | インデックスが主キーの場合はTrue。そうでない場合はFalse。 |
Type | Int16 | インデックスタイプに対応する整数値:statistic (0)、clustered (1)、hashed (2)、またはother (3)。 |
SortOrder | String | 並べ替え順序:A が昇順、D が降順。 |
OrdinalPosition | Int16 | インデックスのカラムのシーケンスナンバー。 |
利用可能な接続プロパティと、接続文字列に設定されている接続プロパティに関する情報を返します。
このテーブルをクエリする際は、config 接続文字列を使用する必要があります。
jdbc:cdata:mongodb:config:
この接続文字列を使用すると、有効な接続がなくてもこのテーブルをクエリできます。
次のクエリは、接続文字列に設定されている、あるいはデフォルト値で設定されているすべての接続プロパティを取得します。
SELECT * FROM sys_connection_props WHERE Value <> ''
Name | Type | Description |
Name | String | 接続プロパティ名。 |
ShortDescription | String | 簡単な説明。 |
Type | String | 接続プロパティのデータ型。 |
Default | String | 明示的に設定されていない場合のデフォルト値。 |
Values | String | 可能な値のカンマ区切りリスト。別な値が指定されていると、検証エラーがスローされます。 |
Value | String | 設定した値またはあらかじめ設定されたデフォルト。 |
Required | Boolean | プロパティが接続に必要かどうか。 |
Category | String | 接続プロパティのカテゴリ。 |
IsSessionProperty | String | プロパティが、現在の接続に関する情報を保存するために使用されるセッションプロパティかどうか。 |
Sensitivity | String | プロパティの機密度。これは、プロパティがロギングおよび認証フォームで難読化されているかどうかを通知します。 |
PropertyName | String | キャメルケースの短縮形の接続プロパティ名。 |
Ordinal | Int32 | パラメータのインデックス。 |
CatOrdinal | Int32 | パラメータカテゴリのインデックス。 |
Hierarchy | String | このプロパティと一緒に設定する必要がある、関連のある依存プロパティを表示します。 |
Visible | Boolean | プロパティが接続UI に表示されるかどうかを通知します。 |
ETC | String | プロパティに関するその他のさまざまな情報。 |
Cloud がデータソースにオフロードできるSELECT クエリ処理について説明します。
SQL 構文の詳細については、SQL 準拠 を参照してください。
以下はSQL 機能のサンプルデータセットです。 SELECT 機能のいくつかの側面がサポートされている場合には、カンマ区切りのリストで返されます。サポートされていない場合、カラムにはNO が入ります。
名前 | 説明 | 有効な値 |
AGGREGATE_FUNCTIONS | サポートされている集計関数。 | AVG, COUNT, MAX, MIN, SUM, DISTINCT |
COUNT | COUNT 関数がサポートされているかどうか。 | YES, NO |
IDENTIFIER_QUOTE_OPEN_CHAR | 識別子をエスケープするための開始文字。 | [ |
IDENTIFIER_QUOTE_CLOSE_CHAR | 識別子をエスケープするための終了文字。 | ] |
SUPPORTED_OPERATORS | サポートされているSQL 演算子。 | =, >, <, >=, <=, <>, !=, LIKE, NOT LIKE, IN, NOT IN, IS NULL, IS NOT NULL, AND, OR |
GROUP_BY | GROUP BY がサポートされているかどうか。サポートされている場合、どのレベルでサポートされているか。 | NO, NO_RELATION, EQUALS_SELECT, SQL_GB_COLLATE |
OJ_CAPABILITIES | サポートされている外部結合の種類。 | NO, LEFT, RIGHT, FULL, INNER, NOT_ORDERED, ALL_COMPARISON_OPS |
OUTER_JOINS | 外部結合がサポートされているかどうか。 | YES, NO |
SUBQUERIES | サブクエリがサポートされているかどうか。サポートされていれば、どのレベルでサポートされているか。 | NO, COMPARISON, EXISTS, IN, CORRELATED_SUBQUERIES, QUANTIFIED |
STRING_FUNCTIONS | サポートされている文字列関数。 | LENGTH, CHAR, LOCATE, REPLACE, SUBSTRING, RTRIM, LTRIM, RIGHT, LEFT, UCASE, SPACE, SOUNDEX, LCASE, CONCAT, ASCII, REPEAT, OCTET, BIT, POSITION, INSERT, TRIM, UPPER, REGEXP, LOWER, DIFFERENCE, CHARACTER, SUBSTR, STR, REVERSE, PLAN, UUIDTOSTR, TRANSLATE, TRAILING, TO, STUFF, STRTOUUID, STRING, SPLIT, SORTKEY, SIMILAR, REPLICATE, PATINDEX, LPAD, LEN, LEADING, KEY, INSTR, INSERTSTR, HTML, GRAPHICAL, CONVERT, COLLATION, CHARINDEX, BYTE |
NUMERIC_FUNCTIONS | サポートされている数値関数。 | ABS, ACOS, ASIN, ATAN, ATAN2, CEILING, COS, COT, EXP, FLOOR, LOG, MOD, SIGN, SIN, SQRT, TAN, PI, RAND, DEGREES, LOG10, POWER, RADIANS, ROUND, TRUNCATE |
TIMEDATE_FUNCTIONS | サポートされている日付および時刻関数。 | NOW, CURDATE, DAYOFMONTH, DAYOFWEEK, DAYOFYEAR, MONTH, QUARTER, WEEK, YEAR, CURTIME, HOUR, MINUTE, SECOND, TIMESTAMPADD, TIMESTAMPDIFF, DAYNAME, MONTHNAME, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, EXTRACT |
REPLICATION_SKIP_TABLES | レプリケーション中にスキップされたテーブルを示します。 | |
REPLICATION_TIMECHECK_COLUMNS | レプリケーション中に更新判断のカラムとして使用するかどうかを、(指定された順に)チェックするカラムのリストを含む文字列の配列。 | |
IDENTIFIER_PATTERN | 識別子としてどの文字列が有効かを示す文字列値。 | |
SUPPORT_TRANSACTION | プロバイダーが、コミットやロールバックなどのトランザクションをサポートしているかどうかを示します。 | YES, NO |
DIALECT | 使用するSQL ダイアレクトを示します。 | |
KEY_PROPERTIES | Uniform データベースを特定するプロパティを示します。 | |
SUPPORTS_MULTIPLE_SCHEMAS | プロバイダー用に複数のスキームが存在するかどうかを示します。 | YES, NO |
SUPPORTS_MULTIPLE_CATALOGS | プロバイダー用に複数のカタログが存在するかどうかを示します。 | YES, NO |
DATASYNCVERSION | このドライバーにアクセスするために必要な、CData Sync のバージョン。 | Standard, Starter, Professional, Enterprise |
DATASYNCCATEGORY | このドライバーのCData Sync カテゴリ。 | Source, Destination, Cloud Destination |
SUPPORTSENHANCEDSQL | API で提供されている以上の、追加SQL 機能がサポートされているかどうか。 | TRUE, FALSE |
SUPPORTS_BATCH_OPERATIONS | バッチ操作がサポートされているかどうか。 | YES, NO |
SQL_CAP | このドライバーでサポートされているすべてのSQL 機能。 | SELECT, INSERT, DELETE, UPDATE, TRANSACTIONS, ORDERBY, OAUTH, ASSIGNEDID, LIMIT, LIKE, BULKINSERT, COUNT, BULKDELETE, BULKUPDATE, GROUPBY, HAVING, AGGS, OFFSET, REPLICATE, COUNTDISTINCT, JOINS, DROP, CREATE, DISTINCT, INNERJOINS, SUBQUERIES, ALTER, MULTIPLESCHEMAS, GROUPBYNORELATION, OUTERJOINS, UNIONALL, UNION, UPSERT, GETDELETED, CROSSJOINS, GROUPBYCOLLATE, MULTIPLECATS, FULLOUTERJOIN, MERGE, JSONEXTRACT, BULKUPSERT, SUM, SUBQUERIESFULL, MIN, MAX, JOINSFULL, XMLEXTRACT, AVG, MULTISTATEMENTS, FOREIGNKEYS, CASE, LEFTJOINS, COMMAJOINS, WITH, LITERALS, RENAME, NESTEDTABLES, EXECUTE, BATCH, BASIC, INDEX |
PREFERRED_CACHE_OPTIONS | 使用したいcacheOptions を指定する文字列値。 | |
ENABLE_EF_ADVANCED_QUERY | ドライバーがEntity Framework の高度なクエリをサポートしているかどうかを示します。サポートしていなければ、クエリはクライアントサイドで処理されます。 | YES, NO |
PSEUDO_COLUMNS | 利用可能な疑似カラムを示す文字列の配列。 | |
MERGE_ALWAYS | 値がtrue であれば、CData Sync 内でMerge Model が強制的に実行されます。 | TRUE, FALSE |
REPLICATION_MIN_DATE_QUERY | レプリケート開始日時を返すSELECT クエリ。 | |
REPLICATION_MIN_FUNCTION | サーバーサイドでmin を実行するために使用する式名を、プロバイダーが指定できるようになります。 | |
REPLICATION_START_DATE | レプリケート開始日を、プロバイダーが指定できるようになります。 | |
REPLICATION_MAX_DATE_QUERY | レプリケート終了日時を返すSELECT クエリ。 | |
REPLICATION_MAX_FUNCTION | サーバーサイドでmax を実行するために使用する式名を、プロバイダーが指定できるようになります。 | |
IGNORE_INTERVALS_ON_INITIAL_REPLICATE | 初回のレプリケートで、レプリケートをチャンクに分割しないテーブルのリスト。 | |
CHECKCACHE_USE_PARENTID | CheckCache 構文を親キーカラムに対して実行するかどうかを示します。 | TRUE, FALSE |
CREATE_SCHEMA_PROCEDURES | スキーマファイルの生成に使用できる、ストアドプロシージャを示します。 |
次のクエリは、WHERE 句で使用できる演算子を取得します。
SELECT * FROM sys_sqlinfo WHERE Name = 'SUPPORTED_OPERATORS'
WHERE 句では、個々のテーブルの制限や要件が異なる場合がありますので注意してください。詳しくは、NoSQL データベース セクションを参照してください。
Name | Type | Description |
NAME | String | SQL 構文のコンポーネント、またはサーバー上で処理できる機能。 |
VALUE | String | サポートされるSQL またはSQL 構文の詳細。 |
試行された変更に関する情報を返します。
次のクエリは、バッチ処理で変更された行のId を取得します。
SELECT * FROM sys_identity
Name | Type | Description |
Id | String | データ変更処理から返された、データベース生成Id。 |
Batch | String | バッチの識別子。1 は単一処理。 |
Operation | String | バッチ内の処理の結果:INSERTED、UPDATED、またはDELETED。 |
Message | String | SUCCESS、またはバッチ内の更新が失敗した場合のエラーメッセージ。 |
ストアドプロシージャはファンクションライクなインターフェースで、MongoDB の単純なSELECT/INSERT/UPDATE/DELETE 処理にとどまらずCloud の機能を拡張します。
ストアドプロシージャは、パラメータのリストを受け取り、目的の機能を実行し、プロシージャが成功したか失敗したかを示すとともにMongoDB から関連するレスポンスデータを返します。
Name | Description |
AddDocument | 全JSON ドキュメントをMongoDB にそのまま挿入します。 |
CreateUserTable | Creates a schema file for the collection. |
GetDocument | パススルークエリでドキュメントを取得します。 |
SearchDocument | ドキュメント全体を文字列として取得します。 |
全JSON ドキュメントをMongoDB にそのまま挿入します。
Name | Type | Description |
Collection | String | 挿入するコレクション名。 |
Name | Type | Description |
Success | String | 処理が成功した場合はtrue を返し、それ以外の場合は例外を返します。 |
Creates a schema file for the collection.
Name | Type | Description |
CatalogName | String | The catalog of the collection. |
SchemaName | String | The schema of the collection. |
TableName | String | The name of the collection. |
Location | String | The location where the file is saved. |
ColumnNames# | String | The name of column. |
ColumnDataTypes# | String | The datatype of column. |
ColumnSizes# | String | The size of column. |
ColumnScales# | String | The scale of column. |
ColumnIsKeys# | String | The isKey of column. |
ColumnIsNulls# | String | The isNull of column. |
ColumnDefaults# | String | The default value of column. |
ColumnAutoIncrements# | String | The AutoIncrement of column. |
Name | Type | Description |
AffectedTables | String | The number of tables created, either 0 or 1 |
パススルークエリでドキュメントを取得します。
Name | Type | Description |
Collection | String | 挿入するコレクション名。 |
Query | String | JSON 形式のMongo パススルークエリ。 |
Projection | String | JSON 形式のMongo パススループロジェクション。 |
Name | Type | Description |
* | String | 出力は各コレクションによって異なります。 |
ドキュメント全体を文字列として取得します。
Name | Type | Description |
Collection | String | 検索するコレクション名。 |
_id | String | コレクションの主キー値。 |
Name | Type | Description |
Document | String | ドキュメント全体を文字列として返します。 |
デフォルトでは、Cloud はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL / TLS のネゴシエーションを試みます。
別の証明書を指定するには、利用可能なフォーマットについてSSLServerCert プロパティを参照してください。
MongoDB Cloud はクライアント証明書の設定もサポートしています。次を設定すれば、クライアント証明書を使って接続できます。
次のプロパティを設定します。
プロパティ | 説明 |
AuthScheme | The authentication mechanism that MongoDB will use to authenticate the connection. |
Server | MongoDB データベースをホストしているサーバーのホスト名、またはIP アドレス。 |
Port | MongoDB データベースのポート。 |
User | 認証で使用されるMongoDB ユーザーアカウント。 |
Password | ユーザーの認証で使用されるパスワード。 |
Database | MongoDB データベース名。 |
UseSSL | このフィールドはSSL が有効化されているかどうかを設定します。 |
AuthDatabase | 認証のためのMongoDB データベース名。 |
ReplicaSet | このプロパティを使うと、 Server および Port で設定されたサーバーに加え、複数のサーバーを指定できます。サーバー名およびポートの両方を、サーバーをカンマで区切って指定します。 |
DNSServer | Specify the DNS server when resolving MongoDB seed list. |
プロパティ | 説明 |
SSLServerCert | TLS/SSL を使用して接続するときに、サーバーが受け入れ可能な証明書。 |
プロパティ | 説明 |
SSHAuthMode | サービスへのSSH トンネルを確立する際に使用される認証方法。 |
SSHClientCert | SSHUser の認証に使用する証明書。 |
SSHClientCertPassword | SSHClientCert キーのパスワード(ある場合)。 |
SSHClientCertSubject | SSH クライアント証明書のサブジェクト。 |
SSHClientCertType | SSHClientCert 秘密鍵の種類。 |
SSHServer | SSH サーバー。 |
SSHPort | SSH ポート。 |
SSHUser | SSH ユーザー。 |
SSHPassword | SSH パスワード。 |
SSHServerFingerprint | SSH サーバーのフィンガープリント。 |
UseSSH | MongoDB 接続をSSH 経由でトンネリングするかどうか。 SSH を使用します。 |
プロパティ | 説明 |
Verbosity | ログファイルの記述をどの程度の詳細さで記載するかを決定するverbosity レベル。 |
プロパティ | 説明 |
BrowsableSchemas | このプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。 |
プロパティ | 説明 |
BuiltInColumnMapping | A list of column name mappings for MongoDB's built-in columns. |
DataModel | By default, the provider will not automatically discover the metadata for a child table as its own distinct table. To enable this functionality, set DataModel to Relational . |
FlattenArrays | デフォルトで、ネスト配列はJSON 文字列として返されます。 FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。ネスト配列から返すエレメントの数に FlattenArrays を設定します。 |
FlattenObjects | フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。 |
MaxRows | クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。 |
NoCursorTimeout | サーバーは通常、余分なメモリの使用を防ぐために、インアクティブ期間(10分間)後に、アイドル状態のカーソルをタイムアウトします。これを防ぐために、このオプションを設定します。 |
Pagesize | MongoDB から返されるページあたりの結果の最大数。 |
PseudoColumns | このプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。 |
ReadPreference | レプリカセットから読み取るためのストラテジーに設定します。受容される値は、primary、primaryPreferred、secondary、secondaryPreferred、およびnearest です。 |
ReadPreferenceTags | Use this property to target a replica set member or members that are associated with tags. |
RowScanDepth | The maximum number of rows to scan to look for the columns available in a table. |
SlaveOK | このプロパティは、provider がセカンダリ(スレーブ)サーバーからの読み込みを認めるかどうかを設定します。 |
Timeout | タイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。 |
TypeDetectionScheme | 各ドキュメントコレクションのフィールドおよびデータタイプを決定するために、provider がデータをどのようにスキャンするかを示すカンマ区切りのオプション。 |
UpdateScheme | Sets replacing or merging target document with updating fields is performed by executing update statement. |
UseFindAPI | Execute MongoDB queries using db.collection.find(). |
WriteConcern | Requests acknowledgment that the write operation has propagated to the specified number of mongod instances. |
WriteConcernJournaled | Requires acknowledgment that the mongod instances, as specified in the WriteConcern property, have written to the on-disk journal. |
WriteConcernTimeout | This option specifies a time limit, in milliseconds, for the write concern. |
WriteScheme | Sets whether the object type for inserted or updated objects is determined from the existing column metadata or the input value type. |
このセクションでは、本プロバイダーの接続文字列で設定可能なAuthentication プロパティの全リストを提供します。
プロパティ | 説明 |
AuthScheme | The authentication mechanism that MongoDB will use to authenticate the connection. |
Server | MongoDB データベースをホストしているサーバーのホスト名、またはIP アドレス。 |
Port | MongoDB データベースのポート。 |
User | 認証で使用されるMongoDB ユーザーアカウント。 |
Password | ユーザーの認証で使用されるパスワード。 |
Database | MongoDB データベース名。 |
UseSSL | このフィールドはSSL が有効化されているかどうかを設定します。 |
AuthDatabase | 認証のためのMongoDB データベース名。 |
ReplicaSet | このプロパティを使うと、 Server および Port で設定されたサーバーに加え、複数のサーバーを指定できます。サーバー名およびポートの両方を、サーバーをカンマで区切って指定します。 |
DNSServer | Specify the DNS server when resolving MongoDB seed list. |
The authentication mechanism that MongoDB will use to authenticate the connection.
string
"SCRAM-SHA-1"
Accepted values are MONGODB-CR, SCRAM-SHA-1, SCRAM-SHA-256, GSSAPI, PLAIN, and NONE. The following authentication types correspond to the authentication values.
Generally, this property does not need to be set for this authentication type, as the Cloud uses different challenge-response mechanisms by default to authenticate a user to different versions of MongoDB.
Set AuthScheme to PLAIN to use LDAP authentication. This value specifies the SASL PLAIN mechanism; note that this mechanism transmits credentials over plain-text, so it is not suitable for use without TLS/SSL on untrusted networks.
Set AuthScheme to GSSAPI to use Kerberos authentication. Additionally configure the following properties as configured for the MongoDB environment:
KerberosKDC | The FQDN of the domain controller. |
KerberosRealm | The Kerberos Realm (for Windows this will be the AD domain). |
KerberosSPN | The assigned service principle name for the user. |
AuthDatabase | This value should be set to '$external'. |
User | The user created in the $external database. |
Password | The corresponding User's password. |
Set AuthScheme to X509 to use X.509 certificate authentication.
MongoDB データベースをホストしているサーバーのホスト名、またはIP アドレス。
string
"localhost"
MongoDB データベースをホストしているサーバーのホスト名、またはIP アドレス。If you choose to connect using DNS seed lists, set this option to "mongodb+srv://" + the name of the server your MongoDB instance is running on.
MongoDB データベースのポート。
string
"27017"
MongoDB データベースのポート。
認証で使用されるMongoDB ユーザーアカウント。
string
""
このフィールドは、Password とともに、MongoDB サーバーに対して認証をするために使われます。
MongoDB データベース名。
string
""
MongoDB データベース名。
このフィールドはSSL が有効化されているかどうかを設定します。
bool
true
このフィールドは、Cloud がサーバーとのTLS/SSL 接続をネゴシエートするかどうかを設定します。デフォルトでは、Cloud はサーバーの証明書をシステムの信頼できる証明書ストアと照合します。別の証明書を指定するには、SSLServerCert を設定します。
認証のためのMongoDB データベース名。
string
""
認証のためのMongoDB データベース名。データを取得するデータベースと認証データベースが異なる場合のみ必要となります。
このプロパティを使うと、 Server および Port で設定されたサーバーに加え、複数のサーバーを指定できます。サーバー名およびポートの両方を、サーバーをカンマで区切って指定します。
string
""
このプロパティを使うと、Server およびPort で設定されたサーバーに加え、レプリカセット内の他のサーバーを指定できます。ReplicaSet、Server、およびPort を使用して、レプリカセット内のすべてのサーバーを指定する必要があります。
サーバー名およびポートの両方をReplicaSet に指定します。サーバーはカンマで区切ります。次に例を示します。
Server=localhost;Port=27017;ReplicaSet=localhost:27018,localhost:27019;
プライマリサーバーを見つけるために、Cloud は、ReplicaSet 内のサーバーとServer およびPort で指定されたサーバーをクエリします。
レプリカセット内のプライマリサーバーだけが書き込み可能です。 セカンダリは、SlaveOK の設定が読み取りを許容している場合に読み取りが可能です。セカンダリにSELECT クエリを実行するストラテジーを設定するには、ReadPreference を参照してください。
Specify the DNS server when resolving MongoDB seed list.
string
""
Specify the DNS server when resolving MongoDB seed list.
このセクションでは、本プロバイダーの接続文字列で設定可能なSSL プロパティの全リストを提供します。
プロパティ | 説明 |
SSLServerCert | TLS/SSL を使用して接続するときに、サーバーが受け入れ可能な証明書。 |
TLS/SSL を使用して接続するときに、サーバーが受け入れ可能な証明書。
string
""
TLS/SSL 接続を使用する場合は、このプロパティを使用して、サーバーが受け入れるTLS/SSL 証明書を指定できます。コンピュータによって信頼されていない他の証明書はすべて拒否されます。
このプロパティは、次のフォームを取ります:
説明 | 例 |
フルPEM 証明書(例では省略されています) | -----BEGIN CERTIFICATE----- MIIChTCCAe4CAQAwDQYJKoZIhv......Qw== -----END CERTIFICATE----- |
証明書を保有するローカルファイルへのパス。 | C:\cert.cer |
公開鍵(例では省略されています) | -----BEGIN RSA PUBLIC KEY----- MIGfMA0GCSq......AQAB -----END RSA PUBLIC KEY----- |
MD5 Thumbprint (hex 値はスペースおよびコロン区切り) | ecadbdda5a1529c58a1e9e09828d70e4 |
SHA1 Thumbprint (hex 値はスペースおよびコロン区切り) | 34a929226ae0819f2ec14b4a3d904f801cbb150d |
これを指定しない場合は、マシンが信用するすべての証明書が受け入れられます。
すべての証明書の受け入れを示すには、'*'を使用します。セキュリティ上の理由から、これはお勧めできません。
このセクションでは、本プロバイダーの接続文字列で設定可能なSSH プロパティの全リストを提供します。
プロパティ | 説明 |
SSHAuthMode | サービスへのSSH トンネルを確立する際に使用される認証方法。 |
SSHClientCert | SSHUser の認証に使用する証明書。 |
SSHClientCertPassword | SSHClientCert キーのパスワード(ある場合)。 |
SSHClientCertSubject | SSH クライアント証明書のサブジェクト。 |
SSHClientCertType | SSHClientCert 秘密鍵の種類。 |
SSHServer | SSH サーバー。 |
SSHPort | SSH ポート。 |
SSHUser | SSH ユーザー。 |
SSHPassword | SSH パスワード。 |
SSHServerFingerprint | SSH サーバーのフィンガープリント。 |
UseSSH | MongoDB 接続をSSH 経由でトンネリングするかどうか。 SSH を使用します。 |
サービスへのSSH トンネルを確立する際に使用される認証方法。
string
"Password"
SSHUser の認証に使用する証明書。
string
""
公開鍵認証を使用するには、SSHClientCert に有効な秘密鍵が含まれている必要があります。 公開鍵はオプションで、含まれていない場合はCloud が秘密鍵から生成します。 Cloud は公開鍵をサーバーに送信し、ユーザーが公開鍵を認証した場合に接続が許可されます。
SSHClientCertType フィールドは、SSHClientCert により指定されたキーストアの種類を指定します。 ストアがパスワードで保護されている場合は、SSHClientCertPassword でパスワードを指定します。
一部の種類のキーストアは、複数のキーを含むことができるコンテナです。 デフォルトでは、Cloud はストアの最初のキーを選択しますが、SSHClientCertSubject を使用して特定のキーを指定することも可能です。
SSHClientCert キーのパスワード(ある場合)。
string
""
このプロパティは、SSHAuthMode がPublicKey に設定され、SSHClientCert が秘密鍵に設定されているSFTP サーバーに認証する場合にのみ使用されます。
SSH クライアント証明書のサブジェクト。
string
"*"
証明書のサブジェクトは、証明書をロードするときにストア内の証明書を検索するために使用されます。
完全に一致するものが見つからない場合、ストアはプロパティの値を含むサブジェクトを検索します。
それでも一致するものが見つからない場合、プロパティは空白で設定され、証明書は選択されません。
"*" に設定すると、証明書ストアの1番目の証明書が選択されます。
証明書のサブジェクトは識別の名前フィールドおよび値のカンマ区切りのリストです。 例えば、"CN=www.server.com, OU=test, C=US, E=support@cdata.com"。共通のフィールドとその説明は以下のとおりです。
フィールド | 説明 |
CN | 共通名。一般的には、www.server.com のようなホスト名です。 |
O | 法人名 |
OU | 法人の部署名 |
L | 法人の住所(市町村名) |
S | 法人の住所(都道府県) |
C | 国名 |
E | Eメールアドレス |
フィールド値にカンマが含まれている場合は、それを引用符で囲む必要があります。
SSHClientCert 秘密鍵の種類。
string
"PEMKEY_FILE"
このプロパティには次の値の1つを設定できます。
種類 | 説明 | 許容されるBlob 値 |
MACHINE/USER | Blob 値はサポートされていません。 | |
JKSFILE/JKSBLOB | base64のみ | |
PFXFILE/PFXBLOB | PKCS12形式(.pfx)のファイル。証明書と秘密鍵の両方を含む必要があります。 | base64のみ |
PEMKEY_FILE/PEMKEY_BLOB | PEM 形式のファイル。RSA、DSA、またはOPENSSH の秘密鍵を含む必要があります。オプションで、秘密鍵と一致する証明書を含むことができます。 | base64またはプレーンテキスト。blob をテキストとして入力する場合、改行をスペースに置き換えることができます。 |
PPKFILE/PPKBLOB | puttygen ツールで作成されたPuTTY 形式の秘密鍵。 | base64のみ |
XMLFILE/XMLBLOB | .NET のRSA クラスによって生成される形式のXML キー:RSA.ToXmlString(true)。 | base64またはプレーンテキスト。 |
SSH サーバー。
string
""
SSH サーバー。
SSH ポート。
string
"22"
SSH ポート。
SSH ユーザー。
string
""
SSH ユーザー。
SSH パスワード。
string
""
SSH パスワード。
SSH サーバーのフィンガープリント。
string
""
SSH サーバーのフィンガープリント。
MongoDB 接続をSSH 経由でトンネリングするかどうか。 SSH を使用します。
bool
false
デフォルトでは、Cloud はMongoDB に直接接続しようとします。 このオプションを有効にすると、Cloud は代わりにSSHServer とのSSH 接続を確立し、その接続を経由してMongoDB への接続をトンネリングします。
このセクションでは、本プロバイダーの接続文字列で設定可能なLogging プロパティの全リストを提供します。
プロパティ | 説明 |
Verbosity | ログファイルの記述をどの程度の詳細さで記載するかを決定するverbosity レベル。 |
このセクションでは、本プロバイダーの接続文字列で設定可能なSchema プロパティの全リストを提供します。
プロパティ | 説明 |
BrowsableSchemas | このプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。 |
このプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。
string
""
スキーマをデータベースからリストすると、負荷がかかる可能性があります。接続文字列でスキーマのリストを提供すると、 パフォーマンスが向上します。
このセクションでは、本プロバイダーの接続文字列で設定可能なMiscellaneous プロパティの全リストを提供します。
プロパティ | 説明 |
BuiltInColumnMapping | A list of column name mappings for MongoDB's built-in columns. |
DataModel | By default, the provider will not automatically discover the metadata for a child table as its own distinct table. To enable this functionality, set DataModel to Relational . |
FlattenArrays | デフォルトで、ネスト配列はJSON 文字列として返されます。 FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。ネスト配列から返すエレメントの数に FlattenArrays を設定します。 |
FlattenObjects | フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。 |
MaxRows | クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。 |
NoCursorTimeout | サーバーは通常、余分なメモリの使用を防ぐために、インアクティブ期間(10分間)後に、アイドル状態のカーソルをタイムアウトします。これを防ぐために、このオプションを設定します。 |
Pagesize | MongoDB から返されるページあたりの結果の最大数。 |
PseudoColumns | このプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。 |
ReadPreference | レプリカセットから読み取るためのストラテジーに設定します。受容される値は、primary、primaryPreferred、secondary、secondaryPreferred、およびnearest です。 |
ReadPreferenceTags | Use this property to target a replica set member or members that are associated with tags. |
RowScanDepth | The maximum number of rows to scan to look for the columns available in a table. |
SlaveOK | このプロパティは、provider がセカンダリ(スレーブ)サーバーからの読み込みを認めるかどうかを設定します。 |
Timeout | タイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。 |
TypeDetectionScheme | 各ドキュメントコレクションのフィールドおよびデータタイプを決定するために、provider がデータをどのようにスキャンするかを示すカンマ区切りのオプション。 |
UpdateScheme | Sets replacing or merging target document with updating fields is performed by executing update statement. |
UseFindAPI | Execute MongoDB queries using db.collection.find(). |
WriteConcern | Requests acknowledgment that the write operation has propagated to the specified number of mongod instances. |
WriteConcernJournaled | Requires acknowledgment that the mongod instances, as specified in the WriteConcern property, have written to the on-disk journal. |
WriteConcernTimeout | This option specifies a time limit, in milliseconds, for the write concern. |
WriteScheme | Sets whether the object type for inserted or updated objects is determined from the existing column metadata or the input value type. |
A list of column name mappings for MongoDB's built-in columns.
string
""
This property takes a comma-separated list of MongoDB column names for built-in columns and maps them to new names.
The remappable built-in columns are "_index" and "P_id".
For example:
_index=BuiltInIndex,P_id=Parent_Id
Remapping these columns is particularly useful for resolving "column names must be unique" errors that can arise when the Cloud finds additional columns named "_index" or "P_id" other than the built-in columns.
By default, the provider will not automatically discover the metadata for a child table as its own distinct table. To enable this functionality, set DataModel to Relational .
string
"DOCUMENT"
When setting DataModel to Relational, the discovery of child tables extends to root level elements and those found within top-level array elements.
デフォルトで、ネスト配列はJSON 文字列として返されます。 FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。ネスト配列から返すエレメントの数に FlattenArrays を設定します。
string
""
デフォルトで、ネスト配列はJSON 文字列として返されます。FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。これは短い配列の場合にのみ推奨されます。
ネスト配列から返すエレメントの数にFlattenArrays を設定します。特定されたエレメントはカラムとして返されます。Zero-base のインデックスはカラム名にコンカテネートされます。他のエレメントは無視されます。
例えば、文字列の配列からエレメントのアービトラリー数を返すことができます。
["FLOW-MATIC","LISP","COBOL"]FlattenArrays が1に設定されている場合、配列は次のテーブルのようにフラット化されます。
カラム名 | カラム値 |
languages.0 | FLOW-MATIC |
FlattenArrays を-1 に設定すると、ネストされた配列のすべてのエレメントをフラット化します。
フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。
bool
true
フラット化されたオブジェクトプロパティとしてカラムを表示するには、FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。カラム名を生成するために、Cloud はプロパティ名をオブジェクト名にドットでコンカティネイトします。
例えば、次のネストされたオブジェクトを接続時にフラット化できます。
[ { "grade": "A", "score": 2 }, { "grade": "A", "score": 6 }, { "grade": "A", "score": 10 }, { "grade": "A", "score": 9 }, { "grade": "B", "score": 14 } ]FlattenObjects がtrue に設定されていて、FlattenArrays が1に設定されている場合、配列は次のテーブルのようにフラット化されます。
カラム名 | カラム値 |
grades.0.grade | A |
grades.0.score | 2 |
クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。
int
-1
クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。
サーバーは通常、余分なメモリの使用を防ぐために、インアクティブ期間(10分間)後に、アイドル状態のカーソルをタイムアウトします。これを防ぐために、このオプションを設定します。
bool
false
サーバーは通常、余分なメモリの使用を防ぐために、インアクティブ期間(10分間)後に、アイドル状態のカーソルをタイムアウトします。これを防ぐために、このオプションを設定します。
MongoDB から返されるページあたりの結果の最大数。
int
4096
Pagesize プロパティは、MongoDB から返されるページあたりの結果の最大数に影響を与えます。より大きい値を設定すると、1ページあたりの消費メモリが増える代わりに、パフォーマンスが向上する場合があります。
このプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。
string
""
Entity Framework ではテーブルカラムでない疑似カラムに値を設定できないため、この設定はEntity Framework で特に便利です。この接続設定の値は、"Table1=Column1, Table1=Column2, Table2=Column3" の形式です。"*=*" のように"*" 文字を使用して、すべてのテーブルとすべてのカラムを含めることができます。
レプリカセットから読み取るためのストラテジーに設定します。受容される値は、primary、primaryPreferred、secondary、secondaryPreferred、およびnearest です。
string
"primary"
このプロパティを使用すると、プライマリメンバー以外のレプリカセット内のメンバにクエリを実行できるようになります。受容される値は次のとおりです。
このプロパティを設定すると、書き込み操作がセカンダリマシンにまだレプリケートされていない場合、最新の変更がクエリ結果に反映されないことがあります。 ReadPreference を使用すると、Cloud が古いデータを返すリスクはありますが、次のことを達成できます。
Cloud にSELECT ステートメントをセカンダリサーバーに実行させる場合は、SlaveOK も設定する必要があります。そうしないと、Cloud はエラー応答を返します。
Use this property to target a replica set member or members that are associated with tags.
string
""
To make use of ReadPreferenceTags you must configure ReadPreference to a value other than the primary value (the default value). The required format is a list of semicolon seperated tag sets where each tag set is a list of key value pairs separated by commas. For example:
The maximum number of rows to scan to look for the columns available in a table.
int
100
The columns in a table must be determined by scanning table rows. This value determines the maximum number of rows that will be scanned.
Setting a high value may decrease performance. Setting a low value may prevent the data type from being determined properly, especially when there is null data.
Setting to a value of -1 causes the Cloud to scan an arbitrary number of rows until it reaches the final row.
このプロパティは、provider がセカンダリ(スレーブ)サーバーからの読み込みを認めるかどうかを設定します。
bool
false
このプロパティは、Cloud がレプリカセットのセカンダリ(スレーブ)サーバーからの読み込みを認めるかどうかを設定します。 Cloud がReadPreference でセカンダリサーバーをどのようにクエリするかを微調整できます。
タイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。
int
60
Timeout が0に設定されている場合は、操作がタイムアウトしません。処理が正常に完了するか、エラー状態になるまで実行されます。
Timeout の有効期限が切れても処理が完了していない場合は、Cloud は例外をスローします。
各ドキュメントコレクションのフィールドおよびデータタイプを決定するために、provider がデータをどのようにスキャンするかを示すカンマ区切りのオプション。
string
"RowScan"
None | TypeDetectionScheme をNone に設定した場合は、すべてのカラムは文字列型で返されます。他のオプションとの併用はできません。 |
RowScan | TypeDetectionScheme をRowScan に設定した場合は、ヒューリスティックにデータ型を決定します。RowScanDepth ではスキャンする行数を決定します。Recent と一緒に使用できます。 |
Recent | TypeDetectionScheme を'Recent' に設定した場合は、代わりにコレクションに挿入された最新のドキュメントに対して行スキャンを実行します。これは、大規模なデータセットではかなり遅くなる可能性がある、より高負荷な操作です。 |
Sets replacing or merging target document with updating fields is performed by executing update statement.
string
"Default"
Sets replacing or merging target document with updating fields is performed by executing update statement. When the default value Default is used, the Cloud updates the target document by replacing the whole original document with new one. When the value is set to Merge, only the specific field in the target document will be updated.
For example, if you have a collection 'classySample' as below.
{ "_id": "1", "message": { "component_items": [{"locked": true}], "id":1 } }
UPDATE [classySample] SET [message.component_items.0.locked] = false WHERE [message.id] = 1
In the query above, the 'message' document will be replaced with new document constructed with SET clause, the collection after updating looks like
{ "_id": "1", "message": { "component_items": [ { "locked": false } ] } }
But when using Merge, only the 'locked' field in 'component_items' will be updated, the collection becomes
{ "_id": "1", "message": { "component_items": [ { "locked": false } ], "id": 1 } }
Execute MongoDB queries using db.collection.find().
bool
true
Amazon DocumentDB doesn't support the legacy OP_QUERY interface, so this must be set to True to query DocumentDB clusters with db.collection.find() instead.
Requests acknowledgment that the write operation has propagated to the specified number of mongod instances.
string
"0"
Requests acknowledgment that the write operation has propagated to the specified number of mongod instances.
Requires acknowledgment that the mongod instances, as specified in the WriteConcern property, have written to the on-disk journal.
bool
true
It requests acknowledgment that the mongod instances, as specified in the WriteConcern property, have written to the on-disk journal.
This option specifies a time limit, in milliseconds, for the write concern.
string
"0"
This option specifies a time limit, in milliseconds, for the write concern.
Sets whether the object type for inserted or updated objects is determined from the existing column metadata or the input value type.
string
"Metadata"
Sets whether the object type for inserted or updated objects is determined from the existing column metadata or the input value type. When the default value Metadata is used, the Cloud uses the data type as determined by the TypeDetectionScheme for objects pushed to MongoDB. When the value is set to RawValue, the type of the object in the INSERT determines what type is used for MongoDB.
For example, if you have a field 'c1' in MongoDB defined as String type, the metadata returns the column as String as well. In the following query, the resulting field in MongoDB is therefore defined as String when using WriteScheme=Metadata. But when using RawValue, the inserting field type is Date instead since the FROM_UNIXTIME() function returns an actual Date object:
INSERT INTO Table1 (c1) VALUES (FROM_UNIXTIME(1636910867039, 0))
INSERT INTO t1 ("c1") VALUES (())
This returns an empty array:
"c1":[]