CData Cloud は、クラウドホスト型のソリューションで、複数の標準サービスやプロトコルにまたがるCouchbase へのアクセスを実現します。MySQL またはSQL Server データベースに接続できるアプリケーションであれば、CData Cloud を介してCouchbase に接続できます。
CData Cloud により、他のOData エンドポイントや標準SQL Server / MySQL データベースと同じように、Couchbase への接続を標準化し、構成することができます。
このページでは、CData Cloud でのCouchbase への接続の確立 のガイド、利用可能なリソースに関する情報、および使用可能な接続プロパティのリファレンスについて説明します。
接続の確立 は、CData Cloud にデータベースを作成するためのCouchbase への認証方法と必要な接続プロパティの設定方法について示します。
利用可能な標準サービスを経由してCouchbase からデータにアクセスする方法と、CData Cloud の管理については、CData Cloud ドキュメント で詳しく説明します。
Database タブで対応するアイコンを選択して、Couchbase に接続します。必須プロパティはSettings にリストされています。Advanced タブには、通常は必要ない接続プロパティが表示されます。
To connect to data, set the Server property to the hostname or IP address of the Couchbase server(s) you are authenticating to.
If your Couchbase server is configured to use SSL, you can enable it either by using an https URL for Server (like https://couchbase.server), or by setting the UseSSL property to True.
By default, the Cloud connects to the N1QL Query service. In order to connect to the Couchbase Analytics service, you will also need to set the CouchbaseService property to Analytics.
Set the following to connect to Couchbase Cloud:
The Cloud supports several forms of authentication. Couchbase Cloud only accepts Standard authentication, while Couchbase Server accepts Standard authentication, client certificates, and credentials files.
To authenticate with standard authentication, set the following:
The Cloud supports authenticating with client certificates when SSL is enabled. To use client certificate authentication, set the following properties:
You can also authenticate using using a credentials file containing multiple logins. This is included for legacy use and is not recommended when connecting to a Couchbase Server that supports role-based authentication.
Couchbase はスキーマフリーなドキュメントデータベースで、高いパフォーマンス、使用性、およびスケーラビリティを提供します。これらの機能は、必ずしもSQL-92 のような標準準拠のクエリ言語と互換しないわけではありません。
Cloudでは、スキーマフリーなCouchbase オブジェクトをリレーショナルテーブルにモデル化し、SQL クエリをN1QL またはSQL++ (Analytics) クエリに読み替えることで、要求されたデータを取得します。このセクションでは、Cloud が複数のやり方によって、リレーショナルSQL とドキュメントデータベースのギャップの橋渡しをいかに行うかを説明します。
Cloud が最初にCouchbase に接続すると、各バケットを開きそのバケットから設定可能な数の行をスキャンします。それらの行を使用して、そのバケット内のカラムとデータ型、およびそれらのドキュメント内の任意の配列に対するフレーバーテーブルと子テーブルの作成方法を決定します。Couchbase Enterprise バージョン4.5.1以降では、TypeDetectionScheme がINFER に設定されている場合は、Cloud はINFER コマンドを使用するように設定することもできます。これにより、Cloud はバケットのより正確なカラムリストを取得し、より複雑なフレーバーを検出することができます。
Analytics サービスを使用する場合、Cloud はカラムと子テーブルの検出のみを行います。フレーバーテーブルは、シャドウデータセットを使用してCouchbase 自体によって提供されます。また、Analytics モードは現在INFER をサポートしていないため、行スキャンのみがサポートされています。
詳しくは、自動スキーマ検出 を参照して、フレーバーテーブルと子テーブルがCouchbase データからどのようにモデル化されるかをご確認ください。 Setting NumericStrings is also recommended as it can avoid type detection issues with certain kinds of text data.
オプションとして、カスタムスキーマ定義 を使って、Couchbase オブジェクトの上に選択されたリレーショナル構造を投射することもできます。これにより、自分で選択したカラム名、データ型、Couchbase ドキュメント内の値の位置を定義することができます。
さまざまなN1QL およびSQL++ 処理がどのようにSQL として表されているかについての詳細はクエリマッピング を参照してください。
配列とオブジェクトがどのようにフィールドにマップされるかについての詳細は、垂直フラット化 を参照してください。
生のJSON 文字列からデータを抽出する方法についての詳細は、JSON 関数 を参照してください。
バケット内のドキュメントに配列を含むフィールドが含まれる場合、Cloud はそれらのフィールドをメインテーブルのJSON 集計として公開するだけでなく、独自のテーブルとして公開します。これらの子テーブルの構造は、配列にオブジェクトまたはプリミティブ値が含まれるかどうかによって異なります。
配列に数値や文字列などのプリミティブな値が含まれる場合、子テーブルには2つのカラムしかありません。配列を含むドキュメントの主キーである"Document.Id" と、配列内の値を含む"value" です。例えば、"Games" というバケットにこれらのドキュメントが含まれる場合:
/* Primary key "1" */ { "scores": [1,2,3] } /* Primary key "2" */ { "scores": [4,5,6] }
Cloud は、これらの行を含む"Games_scores" という名前のテーブルをビルドします:
Document.Id | value |
1 | 1 |
1 | 2 |
1 | 3 |
2 | 4 |
2 | 5 |
2 | 6 |
配列にオブジェクトが含まれる場合、子テーブルには、そのオブジェクト内にある各フィールドのカラムと、その配列を含むドキュメントの主キーを含む"Document.Id" カラムがあります。例えば、"Games" というバケットにこれらのドキュメントが含まれる場合:
/* Primary key "1" */ { "moves": [ {"piece": "pawn", "square": "c3"}, {"piece": "rook", "square": "d5"} ] } /* Primary key "2" */ { "moves": [ {"piece": "knight", "square": "f1"}, {"piece": "bishop", "square": "e4"} ] }
Cloud は、これらの行を含む"Games_moves" という名前のテーブルをビルドします:
Document.Id | piece | square |
1 | pawn | c3 |
1 | rook | d5 |
2 | knight | f1 |
2 | biship | e4 |
Note that the above data model is not fully relational, which has important limitations for use-cases that involve complex JOINs or DML operations on child tables. The NewChildJoinsMode connection property exposes an alternative data model which avoids these limitations. Please refer to its page in the connection property section of the documentation for more details.
Cloud は、TypeDetectionScheme がInfer またはDocType に設定され、CouchbaseService がN1QL に設定されている限り、同じバケット内に複数の種類のドキュメントが存在する場合も検出できます。これらの異なる種類のドキュメントは、適切な行のみを含む独自のテーブルとして公開されています。
例えば、"Games" というバケットには、"type" の値が "chess" または"football" のいずれかであるドキュメントが含まれています:
/* Primary key "1" */ { "type": "chess", "result": "stalemate" } /* Primary key "2" */ { "type": "chess", "result": "black win" } /* Primary key "3" */ { "type": "football", "score": 23 } /* Primary key "4" */ { "type": "football", "score": 18 }
Cloud はこのバケット用に3テーブル作成します。1つは、すべてのドキュメントを含む"Games" と呼ばれるバケットです:
Document.Id | result | score | type |
1 | stalemate | NULL | chess |
2 | black win | NULL | chess |
3 | NULL | 23 | football |
4 | NULL | 18 | football |
1つは、type が"chess" であるドキュメントのみを含む"Games.chess" と呼ばれるものです。
Document.Id | result | type |
1 | stalemate | chess |
2 | black win | chess |
1つは、type が"football" であるドキュメントのみを含む"Games.football" と呼ばれるものです。
Document.Id | score | type |
3 | 23 | football |
4 | 18 | football |
Cloud は、そのフレーバーのドキュメントで定義されていないフレーバーテーブルのカラムを含みません。例えば、"result" と"score" の両カラムが基本テーブルに含まれていても、"Games.chess" には"result" だけ、"Games.football" には"score" だけが含まれます。
/* Primary key "1" */ { "type": "chess", "results": ["stalemate", "white win"] } /* Primary key "2" */ { "type": "chess", "results": ["black win", "stalemate"] } /* Primary key "3" */ { "type": "football", "scores": [23, 12] } /* Primary key "4" */ { "type": "football", "scores": [18, 36] }Cloud はこれらのテーブルを生成します。
テーブル名 | 子フィールド | フレーバーコンディション |
Games | ||
Games_results | results | |
Games_scores | scores | |
Games.chess | "type" = "chess" | |
Games.chess_results | results | "type" = "chess" |
Games.football | "type" = "football" | |
Games.football_scores | scores | "type" = "football" |
Cloud では、SQL-92 準拠クエリを対応するN1QL またはSQL++ クエリにマッピングします。以下のマッピングは完全ではありませんが、この変換中にCloud が使用する一般的なパターンを理解するのに役立つはずです。
SELECT ステートメントは、以下のように、適切なN1QL SELECT クエリに変換されます:SQL-92 とN1QL の類似により、多くのクエリは直接変換されます。
Cloud にCouchbase バケットのスキーマが存在する場合の一つの大きな相違は、SELECT * クエリはバケット内の一つのフィールドを直接SELECT するものに変換されることです。Cloud はまた、自動的にバケット内のそれぞれのドキュメントのプライマリーキーをベースにDocument.Id カラムを自動的に作成します。
SQL Query | N1QL Query |
SELECT * FROM users | SELECT META(`users`).id AS `id`, ... FROM `users` |
SELECT [Document.Id], status FROM users | SELECT META(`users`).id AS `Document.Id`, `users`.`status` FROM `users` |
SELECT * FROM users WHERE status = 'A' OR age = 50 | SELECT META(`users`).id AS `id`, ... FROM `users` WHERE TOSTRING(`users`.`status`) = "A" OR TONUMBER(`users`.`age`) = 50 |
SELECT * FROM users WHERE name LIKE 'A%' | SELECT META(`users`).id AS `id`, ... FROM `users` WHERE TOSTRING(`users`.`name`) LIKE "A%" |
SELECT * FROM users WHERE status = 'A' ORDER BY [Document.Id] DESC | SELECT META(`users`).id AS `id`, ... FROM `users` WHERE TOSTRING(`users`.`status`) = "A" ORDER BY META(`users`).id DESC |
SELECT * FROM users WHERE status IN ('A', 'B') | SELECT META(`users`).id, ... FROM `users` WHERE TOSTRING(`users`.`status`) IN ["A", "B"] |
Cloud が型変換が必要であることを検出した場合、条件に追加の型関数が含まれることがあることに注意してください。 StrictComparison プロパティを使用して、これらの型変換を無効にできます。明確にするために、残りのN1QL サンプルはこれらの追加の変換関数なしで示されています。
When a query has either equals or IN clause that targets the Document.Id column, and there is no OR clause to override it, the Cloud will convert the Document.Id filter into a USE KEYS clause. This avoids the overhead of scanning an index because the document keys are already known to the N1QL engine (this optimization does not apply to the Analytics CouchbaseService).
SQL Query | N1QL Query |
SELECT * FROM users WHERE [Document.Id] = '1' | SELECT ... FROM `users` USE KEYS ["1"] |
SELECT * FROM users WHERE [Document.Id] IN ('2', '3') | SELECT ... FROM `users` USE KEYS ["2", "3"] |
SELECT * FROM users WHERE [Document.Id] = '4' OR [Document.Id] = '5' | SELECT ... FROM `users` USE KEYS ["4", "5"] |
SELECT * FROM users WHERE [Document.Id] = '6' AND status = 'A' | SELECT ... FROM `users` USE KEYS ["6"] WHERE `status` = "A" |
In addition to being used for SELECT queries, the same optimization is performed for DML operations as shown below.
クエリ内のすべての子テーブルが同じ親を共有し、それらの"Document.Id" カラムでINNER JOIN を使用して結合されている限り、Cloud はJOIN を単一のUNNEST 式に結合します。N1QL のUNNEST クエリとは異なり、フィールドにアクセスする場合は、基本テーブルに明示的にJOIN する必要があります。
SQL クエリ | N1QL クエリ |
SELECT * FROM users_posts | SELECT META(`users`).id, `users_posts`.`text`, ... FROM `users` UNNEST `users`.`posts` AS `users_posts` |
SELECT * FROM users INNER JOIN users_posts ON users.[Document.Id] = users_posts.[Document.Id] | SELECT META(`users`).id, `users`.`name`, ..., `users_posts`.`text`, ... FROM `users` UNNEST `users`.`posts` AS `users_posts` |
SELECT * FROM users INNER JOIN users_posts ... INNER JOIN users_comments ON ... | SELECT ... FROM `users` UNNEST `users`.`posts` AS `users_posts` UNNEST `users`.`comments` AS `users_comments` |
フレーバーテーブルには、クエリ時に常に適切な条件が含まれているため、フレーバーからのドキュメントのみが返されます。
SQL クエリ | N1QL クエリ |
SELECT * FROM [users.subscriber] | SELECT ... FROM `users` WHERE `docType` = "subscriber" |
SELECT * FROM [users.subscriber] WHERE age > 50 | SELECT ... FROM `users` WHERE `docType` = "subscriber" AND `age` > 50 |
N1QL はいくつかのビルトイン集計関数を持ちます。Cloud は、さまざまな集計クエリの拡張的利用を行います。以下にいくつか例を示します。
SQL クエリ | N1QL クエリ |
SELECT Count(*) As Count FROM Orders | SELECT Count(*) AS `count` FROM `Orders` |
SELECT Sum(price) As total FROM Orders | SELECT Sum(`price`) As `total` FROM `Orders` |
SELECT cust_id, Sum(price) As total FROM Orders GROUP BY cust_id ORDER BY total | SELECT `cust_id`, Sum(`price`) As `total` FROM `Orders` GROUP BY `cust_id` ORDER BY `total` |
SELECT cust_id, ord_date, Sum(price) As total FROM Orders GROUP BY cust_id, ord_date Having total > 250 | SELECT `cust_id`, `ord_date`, Sum(`price`) As `total` FROM `Orders` GROUP BY `cust_id`, `ord_date` Having `total` > 250 |
SQL のINSERT ステートメントは、次のようにN1QL INSERT ステートメントとしてマッピングされます。これは、トップレベルのフィールドと垂直フラット化 によって生成されたフィールドの両方で同じように機能します。
SQL クエリ | N1QL クエリ |
INSERT INTO users ([Document.Id], age, status) VALUES ('bcd001', 45, 'A') | INSERT INTO `users` (KEY, VALUE) VALUES ('bcd001', { "age" : 45, "status" : "A" }) |
INSERT INTO users ([Document.Id], [metrics.posts]) VALUES ('bcd002', 0) | INSERT INTO `users` (KEY, VALUE) VALUES ('bcd002', {"metrics': {"posts": 0}}) |
子テーブルへの挿入は、配列処理を使用して内部的にN1QL のUPDATE に変換されます。これはトップレベルドキュメントを作成しないので、提供されるDocument.Id は既存のドキュメントを参照する必要があります。
子テーブルINSERT のもう1つの制限は、multi-valued INSERT がすべて同じDocument.Id を使用しなければならないことです。プロバイダーはデータを変更する前にこれを確認し、この成約に違反しているとエラーを発生させます。
SQL クエリ | N1QL クエリ |
INSERT INTO users_ratings ([Document.Id], value) VALUES ('bcd001', 4.8), ('bcd001', 3.2) | UPDATE `users` USE KEYS "bcd001" SET `ratings` = ARRAY_PUT(`ratings`, 4.8, 3.2) |
INSERT INTO users_reviews ([Document.Id], score) VALUES ('bcd002', 'Great'), ('bcd002', 'Lacking') | UPDATE `users` USE KEYS "bcd001" SET `ratings` = ARRAY_PUT(`ratings`, {"score": "Great"}, {"score": "Lacking"}) |
一括INSERT もサポートされています。SQL Bulk INSERT は以下のように変換されます。
INSERT INTO users#TEMP ([Document.Id], KEY, VALUE) VALUES ('bcd001', 45, "A") INSERT INTO users#TEMP ([Document.Id], KEY, VALUE) VALUES ('bcd002', 24, "B") INSERT INTO users SELECT * FROM users#TEMP変換される文字列:
INSERT INTO `users` (KEY, VALUE) VALUES ('bcd001', {"age": 45, "status": "A"}), ('bcd002', {"age": 24, "status": "B"})
子テーブルのmulti-valued INSERT のように、一括INSERT のすべての行も同じDocument.Id を持つ必要があります。
SQL のUPDATE ステートメントは、次のようにN1QL UPDATE ステートメントとしてマッピングされます:
SQL クエリ | N1QL クエリ |
UPDATE users SET status = 'C' WHERE [Document.Id] = 'bcd001' | UPDATE `users` USE KEYS ["bcd001"] SET `status` = "C" |
UPDATE users SET status = 'C' WHERE age > 45 | UPDATE `users` SET `status` = "C" WHERE `age` > 45 |
子テーブルを更新するとき、SQL クエリは"FOR" 式または"ARRAY" 式のいずれかを使用してUPDATE クエリに変換されます。
SQL クエリ | N1QL クエリ |
UPDATE users_ratings SET value = 5.0 WHERE value > 5.0 | UPDATE `users` SET `ratings` = ARRAY CASE WHEN `value` > 5.0 THEN 5 ELSE `value` END FOR `value` IN `ratings` END |
UPDATE users_reviews SET score = 'Unknown' WHERE score = '' | UPDATE `users` SET `$child`.`score` = 'Unknown' FOR `$child` IN `reviews` WHEN `$child`.`score` = "" END |
SQL クエリ | N1QL クエリ |
UPDATE [users.subscriber] SET status = 'C' WHERE age > 45 | UPDATE `users` SET `status` = "C" WHERE `docType` = "subscriber" AND `age` > 45 |
SQL のDELETE ステートメントは、次のようにN1QL UPDATE ステートメントとしてマッピングされます:
SQL クエリ | N1QL クエリ |
DELETE FROM users WHERE [Document.Id] = 'bcd001' | DELETE FROM `users` USE KEYS ["bcd001"] |
DELETE FROM users WHERE status = 'inactive' | DELETE FROM `users` WHERE `status` = "inactive" |
子テーブルから削除するとき、SQL クエリは"ARRAY" 式を使用してUPDATE クエリに変換されます。
SQL クエリ | N1QL クエリ |
DELETE FROM users_ratings WHERE value < 0 | UPDATE `users` SET `ratings` = ARRAY `value` FOR `value` IN `ratings` WHEN NOT (`value` < 0) END |
DELETE FROM users_reviews WHERE score = '' | UPDATE `users` SET `reviews` = ARRAY `$child` FOR `$child` IN `reviews` WHEN NOT (`$child`.`score` = "") END |
SQL クエリ | N1QL クエリ |
DELETE FROM [users.subscriber] WHERE status = 'inactive' | DELETE FROM `users` WHERE `docType` = "subscriber" AND status = "inactive" |
/* Primary key "1" */ { "address" : { "building" : "1007", "coord" : [-73.856077, 40.848447], "street" : "Morris Park Ave", "zipcode" : "10462" }, "borough" : "Bronx", "cuisine" : "Bakery", "grades" : [{ "date" : "2014-03-03T00:00:00Z", "grade" : "A", "score" : 2 }, { "date" : "2013-09-11T00:00:00Z", "grade" : "A", "score" : 6 }, { "date" : "2013-01-24T00:00:00Z", "grade" : "A", "score" : 10 }, { "date" : "2011-11-23T00:00:00Z", "grade" : "A", "score" : 9 }, { "date" : "2011-03-10T00:00:00Z", "grade" : "B", "score" : 14 }], "name" : "Morris Park Bake Shop", "restaurant_id" : "30075445" }
SELECT [address.building], [address.street] FROM restaurantsこの結果セットを返します:
address.building | addres.street |
1007 | Morris Park Ave |
SELECT [address.coord.0], [address.coord.1] FROM restaurantsこの結果セットを返します:
address.coord.0 | address.coord.1 |
-73.856077 | 40.838447 |
配列のフラット化は、常に2つの項目を含む"address.coord" のように、配列項目の数が事前にわかっている場合にのみ使用してください。任意の数の項目を含むことができる"grades" のような配列の場合は、配列内のすべての値を読み取ることができるため代わりに自動スキーマ検出 に記載されている子テーブルの使用を検討してください。
User-defined functions are a new feature provided by Couchbase 7 and up. They can be used with the Cloud like normal functions but with a special naming convention for using scoped functions. Normally the Cloud requires that functions already exist before they are used, to define them refer to the Couchbase documentation on CREATE FUNCTION queries. These may be run at the Couchbase console or with the Cloud in QueryPassthrough mode.
Couchbase has support for both scalar functions as well as functions that return results from subqueries. The Cloud supports scalar functions within its SQL dialect but subquery functions can only be used when QueryPassthrough is enabled. The rest of this section covers the Cloud's SQL dialect and assums that QueryPassthrough is disabled.
In both N1QL and Analytics mode, global user-defined functions can be accessed using either their simple names or their qualified names.
The simple name is just the name of the function:
SELECT ageInYears(birthdate) FROM users
Global functions may also be invoked by qualifying them with the default namespace.
Qualified names are quoted names that contain internal separators, which by default is a period though this can be changed using the DataverseSeparator property.
In both N1QL and Analytics the global namespace is called Default:
SELECT [Default.ageInYears](birthdate) FROM users
Calling global functions using simple names is recommended. While the default qualfier is supported, its only intended use is for when a UDF clashes with a standard SQL function that the Cloud would otherwise translate.
Both N1QL and Analytics also allow functions to be defined outside of a global context.
In Analytics functions can be attached to both dataverses and scopes which are called using two-part and three-part names respectively.
In N1QL functions may only be attached to scopes so only three-part names may be used.
/* N1QL AND Analytics */ SELECT [socialNetwork.accounts.ageInYears](birthdate) FROM [socialNetwork.accounts.users] /* Analytics only */ SELECT [socailNetwork.ageInYears](birthdate) FROM [socialNetwork.accounts.users]
The Cloud can return JSON structures as column values. The Cloud enables you to use standard SQL functions to work with these JSON structures. The examples in this section use the following array:
[ { "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;
Column Name | Example Value |
Grade | A |
Score | 2 |
SELECT Name, JSON_COUNT(grades,'[x]') AS NumberOfGrades FROM Students;
Column Name | Example Value |
NumberOfGrades | 5 |
SELECT Name, JSON_SUM(score,'[x].score') AS TotalScore FROM Students;
Column Name | Example Value |
TotalScore | 41 |
SELECT Name, JSON_MIN(score,'[x].score') AS LowestScore FROM Students;
Column Name | Example Value |
LowestScore | 2 |
SELECT Name, JSON_MAX(score,'[x].score') AS HighestScore FROM Students;
Column Name | Example Value |
HighestScore | 14 |
SELECT [Document.Id], grade, score, DOCUMENT(*) FROM gradesFor example, that query would return:
Document.Id | grade | score | DOCUMENT |
1 | A | 6 | {"document.id":1,"grade":"A","score":6} |
2 | A | 10 | {"document.id":1,"grade":"A","score":10} |
3 | A | 9 | {"document.id":1,"grade":"A","score":9} |
4 | B | 14 | {"document.id":1,"grade":"B","score":14} |
SELECT DOCUMENT(*) FROM gradesThis query would return:
DOCUMENT | |
{"grades":{"grade":"A","score":6"}} | |
{"grades":{"grade":"A","score":10"}} | |
{"grades":{"grade":"A","score":9"}} | |
{"grades":{"grade":"B","score":14"}} |
自動スキーマ検出 に加え、Cloud ではCouchbase オブジェクトのスキーマを統計的に定義することができます。 スキーマは、容易に拡張できるテキストベースのコンフィギュレーションファイルで定義されます。CreateSchema ストアドプロシージャを呼び出してスキーマファイルを生成できます。詳しくは、自動スキーマ検出 を参照してください。
Location プロパティをスキーマファイルを格納するファイルディレクトリに設定します。次のセクションでは、結果のスキーマを拡張する方法や自分で記述する方法について説明します。
次のドキュメントを考え、ネストプロパティを独自のカラムとして取得してみましょう:
/* Primary key "1" */ { "id": 12, "name": "Lohia Manufacturers Inc.", "homeaddress": {"street": "Main "Street", "city": "Chapel Hill", "state": "NC"}, "workaddress": {"street": "10th "Street", "city": "Chapel Hill", "state": "NC"} "offices": ["Chapel Hill", "London", "New York"] "annual_revenue": 35600000 } /* Primary key "2" */ { "id": 15, "name": "Piago Industries", "homeaddress": {street": "Main Street", "city": "San Francisco", "state": "CA"}, "workaddress": {street": "10th Street", "city": "San Francisco", "state": "CA"} "offices": ["Durham", "San Francisco"] "annual_revenue": 42600000 }
<rsb:info title="Customers" description="Customers" other:dataverse="" other:bucket=customers"" other:flavorexpr="" other:flavorvalue="" other:isarray="false" other:pathspec="" other:childpath="">
<attr name="document.id" xs:type="string" key="true" other:iskey="true" other:pathspec="" />
<attr name="annual_revenue" xs:type="integer" other:iskey="false" other:pathspec="" other:field="annual_revenue" />
<attr name="homeaddress.city" xs:type="string" other:iskey="false" other:pathspec="{" other:field="homeaddress.city" />
<attr name="homeaddress.state" xs:type="string" other:iskey="false" other:pathspec="{" other:field="homeaddress.state" />
<attr name="homeaddress.street" xs:type="string" other:iskey="false" other:pathspec="{" other:field="homeaddress.street" />
<attr name="name" xs:type="string" other:iskey="false" other:pathspec="" other:field="name" />
<attr name="id" xs:type="integer" other:iskey="false" other:pathspec="" other:field="id" />
<attr name="offices" xs:type="string" other:iskey="false" other:pathspec="" other:field="offices" />
<attr name="offices.0" xs:type="string" other:iskey="false" other:pathspec="[" other:field="offices.0" />
<attr name="offices.1" xs:type="string" other:iskey="false" other:pathspec="[" other:field="offices.1" />
<attr name="workaddress.city" xs:type="string" other:iskey="false" other:pathspec="{" other:field="workaddress.city" />
<attr name="workaddress.state" xs:type="string" other:iskey="false" other:pathspec="{" other:field="workaddress.state" />
<attr name="workaddress.street" xs:type="string" other:iskey="false" other:pathspec="{" other:field="workaddress.street" />
</rsb:info>
カスタムスキーマ例 では、上の例を含む完全なスキーマを確認できます。
プロパティ | 説明 |
other:dataverse | データセットが属するDataverse の名前。Analytics ビューでない場合は空です。 |
other:bucket | Couchbase 内のバケットまたはデータセットの名前。 |
other:flavorexpr | フレーバーテーブル内のURL エンコード条件。例えば"%60docType%60%20%3D%20%22chess%22"。 |
other:flavorvalue | フレーバーテーブル内のフレーバーの名前。例えば"chess"。 |
other:isarray | テーブルが配列の子テーブルかどうか。 |
other:pathspec | これは、other:childpath 内の区切り文字を解釈するために使用されます。詳しくはColumn Properties を参照してください。 |
other:childpath | 子テーブルのUNNEST に使用される属性へのパス。子テーブルでない場合は空です。 |
プロパティ | 説明 |
name | 必須。カラムの名前。小文字。 |
key | 主キーをマークするために使用されます。Document.Id では必須。その他のカラムでは任意。 |
xs:type | 必須。Cloud 内のカラムのタイプ。 |
other:iskey | 必須。キーと同じ値、またはキーが含まれていない場合は"false" にする必要があります。 |
other:pathspec | 必須。これは、other:field 内の区切り文字を解釈するために使用されます。 |
other:field | 必須。Couchbase のフィールドへのパス。 |
{ "numeric_object": { "0": 0 }, "array": [ 0 ] }Cloud がフィールドアクセスと配列アクセスを区別できるようにするために、pathspec はフィールド内の各"." が配列かオブジェクトかを判断するために使用されます。各"{" はフィールドアクセスを表し、各"[" は配列アクセスを表します。
例えば、フィールドが"a.0.b.1" で"pathspec" が"[{[" の場合、N1QL 式"a[0].b[1]" が生成されます。代わりに"pathspec" が"{{{" だった場合は、N1QL 式"a.`0`.b.`1`" が生成されます。
このセクションには、完全なスキーマが含まれています。Location プロパティをスキーマファイルを格納するファイルディレクトリに設定します。インフォセクションではCouchbase オブジェクトのリレーショナルビューを可能にします。詳細はカスタムスキーマ定義 を参照してください。次のテーブルではSELECT、INSERT、UPDATE、およびDELETE コマンドが以下のスキーマのGET、POST、MERGE、およびDELETE セクションとして実行されます。couchbaseadoSysData のような処理は内部の実行です。
<rsb:script xmlns:rsb="http://www.rssbus.com/ns/rsbscript/2">
<rsb:info title="Customers" description="Customers" other:dataverse="" other:bucket=customers"" other:flavorexpr="" other:flavorvalue="" other:isarray="false" other:pathspec="" other:childpath="">
<attr name="document.id" xs:type="string" key="true" other:iskey="true" other:pathspec="" />
<attr name="annual_revenue" xs:type="integer" other:iskey="false" other:pathspec="" other:field="annual_revenue" />
<attr name="homeaddress.city" xs:type="string" other:iskey="false" other:pathspec="{" other:field="homeaddress.city" />
<attr name="homeaddress.state" xs:type="string" other:iskey="false" other:pathspec="{" other:field="homeaddress.state" />
<attr name="homeaddress.street" xs:type="string" other:iskey="false" other:pathspec="{" other:field="homeaddress.street" />
<attr name="name" xs:type="string" other:iskey="false" other:pathspec="" other:field="name" />
<attr name="id" xs:type="integer" other:iskey="false" other:pathspec="" other:field="id" />
<attr name="offices" xs:type="string" other:iskey="false" other:pathspec="" other:field="offices" />
<attr name="offices.0" xs:type="string" other:iskey="false" other:pathspec="[" other:field="offices.0" />
<attr name="offices.1" xs:type="string" other:iskey="false" other:pathspec="[" other:field="offices.1" />
<attr name="workaddress.city" xs:type="string" other:iskey="false" other:pathspec="{" other:field="workaddress.city" />
<attr name="workaddress.state" xs:type="string" other:iskey="false" other:pathspec="{" other:field="workaddress.state" />
<attr name="workaddress.street" xs:type="string" other:iskey="false" other:pathspec="{" other:field="workaddress.street" />
</rsb:info>
</rsb:script>
デフォルトでは、Cloud はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL / TLS のネゴシエーションを試みます。
別の証明書を指定するには、利用可能なフォーマットについてSSLServerCert プロパティを参照してください。
Couchbase Cloud はクライアント証明書の設定もサポートしています。次を設定すれば、クライアント証明書を使って接続できます。
Windows のシステムプロキシ経由の接続では、接続プロパティを追加で設定する必要はありません。他のプロキシに接続するには、ProxyAutoDetect をfalse に設定します。
さらにHTTP プロキシへの認証には、ProxyServer とProxyPort に加えてProxyAuthScheme、ProxyUser、およびProxyPassword を設定します。
次のプロパティを設定します。
使用されている接続設定に応じて、Cloud はCouchbase エンティティとリレーショナルテーブルおよびビューとの間に、いくつかの異なるマッピングを提示できます。これらの各機能の詳細については、このドキュメントのNoSQL の部分を参照してください。
Please see the 自動スキーマ検出 section for more details on how flavor and child tables are exposed. In addition, the NewChildJoinsMode connection property is recommended for workflows that make heavy use of child tables. The documentation for that connection property details the improvements it makes to the Cloud data model.
Couchbase has different ways of grouping buckets and datasets depending on the CouchbaseService and version of Couchbase you are connecting to:
All of the schemas provided by the Cloud are dynamically retrieved from Couchbase, so any changes in the buckets or fields within Couchbase will be reflected in the Cloud the next time you connect.
You may also issue a reset query to refresh schemas without having to close the connection:
RESET SCHEMA CACHE
ストアドプロシージャはファンクションライクなインターフェースで、Couchbase の単純なSELECT/INSERT/UPDATE/DELETE 処理にとどまらずCloud の機能を拡張します。
ストアドプロシージャは、パラメータのリストを受け取り、目的の機能を実行し、プロシージャが成功したか失敗したかを示すとともにCouchbase から関連するレスポンスデータを返します。
Name | Description |
AddDocument | Upsert entire JSON documents to Couchbase as-is. |
CreateBucket | Creates a new bucket in CouchBase. |
CreateCollection | Creates a collection under an existing scope |
CreateScope | Creates a scope under an existing bucket |
CreateUserTable | An internal operation used when GenerateSchemaFiles=OnCreate |
DeleteBucket | Deletes a bucket (and all its collections and scopes, where supported) |
DeleteCollection | Deletes a collection (Couchbase 7 and up) |
DeleteScope | Deletes a scope and all its collections (Couchbase 7 and up) |
FlushBucket | Removes all documents from a bucket in Couchbase. |
ListIndices | Lists all indices available in Couchbase |
ManageIndices | Creates/Drops an index in a target bucket in Couchbase. |
Upsert entire JSON documents to Couchbase as-is.
Name | Type | Required | Description |
BucketName | String | True | The bucket to insert the document into. |
SourceTable | String | False | The name of the temp table containing ID and Document columns. Required if no ID is specified. |
ID | String | False | The primary key to insert the document under. Required if no SourceTable is specified. |
Document | String | False | The JSON text of the document to insert. Required if not SourceTable is specified. |
Name | Type | Description |
RowsAffected | String | The number of rows successfully updated |
Creates a new bucket in CouchBase.
@AuthType が'none' のバケットは、@Name、@AuthType、@BucketType、および@RamQuotaMB のみ指定することで作成できます。接続しているCouchbase のバージョンによっては、@ProxyPort オプションも必要になる場合があります。
EXECUTE CreateBucket @Name = 'Players', @AuthType = 'NONE', @BucketType = 'COUCHBASE', @RamQuotaMB = 100, @ProxyPort = 1234
@AuthType が'sasl' のバケットを作成する場合は、@ProxyPort は指定しないでください。@SaslPassword は任意です。
EXECUTE CreateBucket @Name = 'Players', @AuthType = 'SASL', @BucketType = 'COUCHBASE', @RamQuotaMB = 100
他のすべてのパラメータは、@AuthType を何に指定するかにかかわらず使用できます。
Name | Type | Required | Description |
Name | String | True | The name of the bucket to create. |
AuthType | String | True | The type of authentication to use can be sasl or none. |
BucketType | String | True | The type of the bucket, can be memcached or couchbase. |
EvictionPolicy | String | False | What to evict from the cache if the bucket is full, can be fullEviction or valueOnly |
FlushEnabled | String | False | Enables or disables flush all support, can be 0 or 1. |
ParallelDBAndViewCompaction | String | False | Enables simultaneous compactions of the database and the views, can be true or false. |
ProxyPort | String | False | The proxy port, must be unused, required if authorization is not SASL. |
RamQuotaMB | String | True | The amount of RAM to allocate to the bucket, in megabytes. |
ReplicaIndex | String | False | Enables or disables replicate indexes, can be 1 or 0. |
ReplicaNumber | String | False | A number between 0 and 3, specifies number of replicas. |
SaslPassword | String | False | SASL password, may be provided if the authentication type is SASL. |
ThreadsNumber | String | False | A number between 2 and 8, specifies number of concurrent readers/writers. |
CompressionMode | String | False | Either Off (no compression), Passive (documents inserted compressed stay comressed) or Active (server can compress any document). On Couchbase Enterprise, Passive is the default. |
ConflictResolutionType | String | False | How the server will resolve conflicts between cluster nodes. Either lww (timestamp-based resolution) or seqno (revision ID-based resolution). Defaults to seqno on Couchbase Enterprise. |
Name | Type | Description |
Success | String | Whether or not the bucket was successfully created. |
Creates a collection under an existing scope
Name | Type | Required | Description |
Bucket | String | True | The name of the bucket containing the collection. |
Scope | String | True | The name of the scope containing the collection. |
Name | String | True | The name of the collection to create. |
Name | Type | Description |
Success | Bool | Whether or not the collection was successfully created. |
Creates a scope under an existing bucket
Name | Type | Required | Description |
Bucket | String | True | The name of the bucket containing the scope. |
Name | String | True | The name of the scope to create. |
Name | Type | Description |
Success | Bool | Whether or not the scope was successfully created. |
An internal operation used when GenerateSchemaFiles=OnCreate
Note:このプロシージャは、インデックス付きパラメータを使用します。 インデックス付きパラメータは、プロシージャの入力として単一のパラメータを複数のインスタンスに提供することを容易にします。
Param# という名前の入力パラメータがあるとします。このようなインデックス付きパラメータの複数のインスタンスを入力するには、次のように実行します。
EXEC ProcedureName Param#1 = "value1", Param#2 = "value2", Param#3 = "value3"
以下の表では、インデックス付きの入力パラメータは、名前の末尾に '#' 文字が付きます。
Name | Type | Required | Description |
CreateNotExist | String | False | Whether an existing table is an error or not |
TableName | String | False | The name of the table to create |
ColumnNames# | String | False | For each column, its name |
ColumnDataTypes# | String | False | For each column, its type |
ColumnSizes# | String | False | For each column, its size (ignored) |
ColumnScales# | String | False | For each column, its scale (ignored) |
ColumnIsNulls# | String | False | For each column, whether it allows NULLs (ignored) |
ColumnDefaults# | String | False | For each column, its default value (ignored) |
Location | String | False | Where the schema file is generated |
Name | Type | Description |
AffectedTables | String | The number of tables created, either 0 or 1 |
Deletes a bucket (and all its collections and scopes, where supported)
Name | Type | Required | Description |
Name | String | True | The name of the bucket to delete. |
Name | Type | Description |
Success | Bool | Whether or not the bucket was successfully deleted. |
Deletes a collection (Couchbase 7 and up)
Name | Type | Required | Description |
Bucket | String | True | The name of the bucket containing the collection. |
Scope | String | True | The name of the scope containing the collection. |
Name | String | True | The name of the collection to delete. |
Name | Type | Description |
Success | Bool | Whether or not the collection was successfully deleted. |
Deletes a scope and all its collections (Couchbase 7 and up)
Name | Type | Required | Description |
Bucket | String | True | The name of the bucket containing the scope. |
Name | String | True | The name of the scope to delete. |
Name | Type | Description |
Success | Bool | Whether or not the scope was successfully deleted. |
Removes all documents from a bucket in Couchbase.
Name | Type | Required | Description |
Name | String | True | The name of the bucket to delete. Flush must be enabled on this bucket. |
Name | Type | Description |
Success | Bool | Whether or not the bucket was successfully flushed. |
Lists all indices available in Couchbase
Name | Type | Description |
Id | String | The unique index ID |
Datastore_id | String | The server hosting the indexed bucket |
Namespace_id | String | The pool hosting the indexed bucket |
Bucket_id | String | The bucket the index applies to if the index applies to a collection (Couchbase 7 and up). NULL otherwise. |
Scope_id | String | The scope the index applies to if the index applies to a collection (Couchbase 7 and up). NULL otherwise. |
Keyspace_id | String | The collection the index applies to, if the index applis to a collection (Couchbase 7 and up). The bucket the index applies to otherwise. |
Index_key | String | A list of keys participating in the index |
Condition | String | The N1QL filter that the index applies to |
Is_primary | String | Whether the index is on the primary key |
Name | String | The name of the index |
State | String | Whether the index is available |
Using | String | Whether the index is backed by GSI or a view |
Creates/Drops an index in a target bucket in Couchbase.
匿名のプライマリインデックスはこれらのパラメータで作成できます。
EXECUTE ManageIndices @BucketName = 'Players' @Action = 'CREATE' @IsPrimary = 'true' @IndexType = 'VIEW'
これは、このN1QL を実行することと同じです。
CREATE PRIMARY INDEX ON `Players` USING VIEW
上記のパラメータに加えて、@Name を指定することで名前付きプライマリインデックスを作成できます。
EXECUTE ManageIndices @BucketName = 'Players' @Action = 'CREATE' @IsPrimary = 'true' @Name = 'Players_primary' @IndexType = 'VIEW'
セカンダリインデックスは、@IsPrimary をfalse に設定して、少なくとも1つの式を指定することで作成できます。
EXECUTE ManageIndices @BucketName = 'Players', @Action = 'CREATE', @IsPrimary = 'false', @Name = 'Players_playtime_score', @Expressions = '["score", "playtime"]'
これは、次のN1QL を実行することと同じです。
CREATE INDEX `Players_playtime_score` ON `Players`(score, playtime) USING GSI;
複数のノードとフィルタを指定して、より複雑なインデックスを生成することもできます。They must be provided as JSON lists:
EXECUTE ManageIndices @BucketName = 'Players', @Name = 'TopPlayers', @Expressions = '["score", "playtime"]', @Filter = '["topscore > 1000", "playtime > 600"]', @Nodes = '["127.0.0.1:8091", "192.168.0.100:8091"]'
これは、次のN1QL を実行することと同じです。
CREATE INDEX `TopPlayers` ON `Players`(score, playtime) WHERE topscore > 1000 AND playtime > 600 USING GSI WITH { "nodes": ["127.0.0.1:8091", "192.168.0.100:8091"]};
Name | Type | Required | Description |
BucketName | String | True | The target bucket to create or drop the the index from. |
ScopeName | String | False | The target scope to create or drop the index from (Couchbase 7 and up) |
CollectionName | String | False | The target collection to create or drop the index from (Couchbase 7 and up) |
Action | String | True | Specifies which action to perform on the index, can be Create or Drop. |
Expressions | String | False | A list of expressions or functions, encoded as JSON, that the index will be based off of. At least one is required if IsPrimary is set to false and the action is Create. |
Name | String | False | The name of the index to create or drop, required if IsPrimary is set to false. |
IsPrimary | String | False | Specifies wether the index should be a primary index.
デフォルト値はtrueです。 |
Filters | String | False | A list of filters, encoded as JSON, to apply on the index. |
IndexType | String | False | The type of index to create, can be GSI or View, only used if the action is Create.
デフォルト値はGSIです。 |
ViewName | String | False | Deprecated, included for compatibility only. Does nothing. |
Nodes | String | False | A list, encoded as JSON, of nodes to contain the index, must contain the port. Only used if the action is Create. |
NumReplica | String | False | How many replicas to create among the index nodes in the cluster. |
Name | Type | Description |
Success | String | Whether or not the index was successfully created or dropped. |
このセクションで説明されているシステムテーブルをクエリして、スキーマ情報、データソース機能に関する情報、およびバッチ操作の統計にアクセスできます。
以下のテーブルは、Couchbase のデータベースメタデータを返します。
以下のテーブルは、データソースへの接続方法およびクエリ方法についての情報を返します。
次のテーブルは、データ変更クエリのクエリ統計を返します。
利用可能なデータベースをリストします。
次のクエリは、接続文字列で決定されるすべてのデータベースを取得します。
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 | テーブルが更新可能かどうか。 |
利用可能なテーブルおよびビューのカラムについて説明します。
次のクエリは、Customer テーブルのカラムとデータ型を返します。
SELECT ColumnName, DataTypeName FROM sys_tablecolumns WHERE TableName='Customer'
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 などのプロシージャのタイプ。 |
ストアドプロシージャパラメータについて説明します。
次のクエリは、SelectEntries ストアドプロシージャのすべての入力パラメータについての情報を返します。
SELECT * FROM sys_procedureparameters WHERE ProcedureName='SelectEntries' 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 | パラメータのインデックス。 |
主キーおよび外部キーについて説明します。
次のクエリは、Customer テーブルの主キーを取得します。
SELECT * FROM sys_keycolumns WHERE IsKey='True' AND TableName='Customer'
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:couchbase: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 句では、個々のテーブルの制限や要件が異なる場合がありますので注意してください。詳しくは、データモデル セクションを参照してください。
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、またはバッチ内の更新が失敗した場合のエラーメッセージ。 |
プロパティ | 説明 |
AuthScheme | The type of authentication to use when connecting to Couchbase. |
User | 認証で使用されるCouchbase ユーザーアカウント。 |
Password | ユーザーの認証で使用されるパスワード。 |
Server | 接続するCouchbase サーバーのアドレス。 |
CouchbaseService | 接続するCouchbase サービスを決定します。デフォルトはN1QL です。利用可能なオプションはN1QL とAnalytics です。 |
ConnectionMode | Determines how to connect to the Couchbase server. Must be either Direct or Cloud. |
DNSServer | Determines what DNS server to use when retrieving Couchbase Capella information. |
N1QLPort | Couchbase N1QL Endpoint に接続するポートまたはURL。 |
AnalyticsPort | Couchbase Analytics Endpoint に接続するポートまたはURL。 |
WebConsolePort | Couchbase Web Console に接続するポートまたはURL。 |
プロパティ | 説明 |
SSLClientCert | SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストア。 |
SSLClientCertType | TLS/SSL クライアント証明書を格納するキーストアの種類。 |
SSLClientCertPassword | TLS/SSL クライアント証明書のパスワード。 |
SSLClientCertSubject | TLS/SSL クライアント証明書のサブジェクト。 |
UseSSL | Couchbase サーバーに接続するときにTLS/SSL をネゴシエートするかどうか。 |
SSLServerCert | TLS/SSL を使用して接続するときに、サーバーが受け入れ可能な証明書。 |
プロパティ | 説明 |
Verbosity | ログファイルの記述をどの程度の詳細さで記載するかを決定するverbosity レベル。 |
プロパティ | 説明 |
BrowsableSchemas | このプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。 |
Dataverse | テーブルを検出するときにどのAnalysis dataverse をスキャンするか。 |
TypeDetectionScheme | provider がCouchbase にあるバケットからテーブルとカラムをどのように作成するかを決定します。 |
InferNumSampleValues | データ型を決定する前にスキャンする各フィールドの値の最大数。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。 |
InferSampleSize | バケット内で利用可能なカラムを探すためにスキャンするドキュメント数の最大値。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。 |
InferSimilarityMetric | 異なるスキーマが同じフレーバーだと見なされる類似度を指定します。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。 |
FlexibleSchemas | Whether the provider allows queries to use columns that it has not discovered. |
ExposeTTL | Specifies whether document TTL information should be exposed. |
NumericStrings | Whether to allow string values to be treated as numbers. |
IgnoreChildAggregates | Whether the provider exposes aggregate columns that are also available as child tables. Ignored if TableSupport is not set to Full. |
TableSupport | provider がCouchbase サーバー上のテーブルを検出するためにどれだけの努力をするか。 |
NewChildJoinsMode | Determines the kind of child table model the provider exposes. |
プロパティ | 説明 |
ChildSeparator | 子テーブルを示すために使用する記号。 |
CreateTableRamQuota | The default RAM quota, in megabytes, to use when inserting buckets via the CREATE TABLE syntax. |
DataverseSeparator | Analytics dataverse およびscopes/collections を示すために使用する記号。 |
FlattenArrays | The number of elements to expose as columns from nested arrays. Ignored if IgnoreChildAggregates is enabled. |
FlattenObjects | フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。 |
FlavorSeparator | フレーバーを示すために使用する記号。 |
InsertNullValues | Determines whether an INSERT should include fields that have NULL values. |
MaxRows | クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。 |
Pagesize | Couchbase から返されるページあたりの結果の最大数。 |
PeriodsSeparator | 階層を示すために使用する記号。 |
PseudoColumns | このプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。 |
QueryExecutionTimeout | クエリのサーバーサイドのタイムアウトを設定します。タイムアウトエラーを返す前にCouchbase がクエリを実行する期間を決定します。 |
RowScanDepth | テーブルで利用可能なカラムを探すためにスキャンする行数の最大値。 |
StrictComparison | SQL 入力クエリのフィルタをCouchbase クエリに変換する精度を調整します。 これは、値のカンマ区切りリストに設定できます。各値はdate、number、boolean、またはstring のいずれかです。 |
Timeout | タイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。 |
TransactionDurability | Specifies how a document must be stored for a transaction to succeed. Specifies whether to use N1QL transactions when executing queries. |
TransactionTimeout | This sets the amount of time a transaction may execute before it is timed out by Couchbase. |
UpdateNullValues | Determines whether an UPDATE writes NULL values as NULL, or removes them. |
UseCollectionsForDDL | Whether to assume that CREATE TABLE statements use collections instead of flavors. Only takes effect when connecting to Couchbase v7+ and GenerateSchemaFiles is set to OnCreate. |
UseTransactions | Specifies whether to use N1QL transactions when executing queries. |
このセクションでは、本プロバイダーの接続文字列で設定可能なAuthentication プロパティの全リストを提供します。
プロパティ | 説明 |
AuthScheme | The type of authentication to use when connecting to Couchbase. |
User | 認証で使用されるCouchbase ユーザーアカウント。 |
Password | ユーザーの認証で使用されるパスワード。 |
Server | 接続するCouchbase サーバーのアドレス。 |
CouchbaseService | 接続するCouchbase サービスを決定します。デフォルトはN1QL です。利用可能なオプションはN1QL とAnalytics です。 |
ConnectionMode | Determines how to connect to the Couchbase server. Must be either Direct or Cloud. |
DNSServer | Determines what DNS server to use when retrieving Couchbase Capella information. |
N1QLPort | Couchbase N1QL Endpoint に接続するポートまたはURL。 |
AnalyticsPort | Couchbase Analytics Endpoint に接続するポートまたはURL。 |
WebConsolePort | Couchbase Web Console に接続するポートまたはURL。 |
The type of authentication to use when connecting to Couchbase.
string
"Auto"
Note that only Basic authentication is supported when using the "Cloud" ConnectionMode.
認証で使用されるCouchbase ユーザーアカウント。
string
""
このフィールドは、Password とともに、Couchbase サーバーに対して認証をするために使われます。
接続するCouchbase サーバーのアドレス。
string
""
この値は、"couchbase-server.com" や"1.2.3.4" のように、ホスト名またはIP アドレスに設定できます。また、 "https://couchbase-server.com" や"http://1.2.3.4" のように、HTTP またはHTTPS URL に設定することもできます。If ConnectionMode is set to Cloud then this should be the hostname of the Couchbase Cloud instance as reported in the control panel.
URL 形式が使用される場合、このオプションを設定するとUseSSL オプションも設定されます。URL スキームが "https://" の場合UseSSL はtrue に設定され、"http://" の場合はUseSSL はfalse に設定されます。
このオプションの一部としてポート値は許容されていないため、"http://couchbase-server.com:8093" のような値は使用できません。WebConsolePort、N1QLPort、およびAnalyticsPort を使用してください。
この値は、"1.2.3.4, couchbase-server.com" のように、カンマで区切られた上記の形式で複数のサーバーを受け入れることもできます。これにより、リストされているサーバーにアクセスできない場合に、Cloud が接続を回復できるようになります。
Cloud は接続全体を回復しようとしますが、個々の操作を失う可能性があります。例えば、クエリの実行中にサーバーにアクセスできなくなった場合、長期実行クエリは失敗しますが、そのクエリは同じ接続で再試行でき、Cloud は次のアクティブなサーバーでそのクエリを実行します。
接続するCouchbase サービスを決定します。デフォルトはN1QL です。利用可能なオプションはN1QL とAnalytics です。
string
"N1QL"
接続するCouchbase サービスを決定します。デフォルトはN1QL です。利用可能なオプションはN1QL とAnalytics です。
Determines how to connect to the Couchbase server. Must be either Direct or Cloud.
string
"Direct"
By default the Cloud connects to Couchbase directly using the address given in the Server option. The Server must be running the appropriate CouchbaseService to accept the connection. This will work in most on-premise or basic cloud deployments.
This should be set to Cloud when connecting to Couchbase Capella or a custom deployment that uses service records. These records will allow the Cloud to determine the exact Couchbase servers that provide the appropriate CouchbaseService. You must also set the DNSServer property so that the Cloud is able to fetch these service records.
Note that enabling Cloud mode will override these connection properties with the values discovered by contacting the cluster:
Determines what DNS server to use when retrieving Couchbase Capella information.
string
"8.8.8.8"
In most cases any public DNS server can be provided here such as the ones provided by OpenDNS, Cloudflare or Google.
If these are not accessible then you will need to use the DNS server configured by your network administrator.
Couchbase N1QL Endpoint に接続するポートまたはURL。
string
""
This port is used for submitting queries when CouchbaseService is set to N1QL. Any requests to manage indices will also go through this port. SSL を使用していない場合のデフォルトは8093 で、SSL を使用している場合のデフォルトは18093 になります。UseSSL を参照してください。
This option can be set one of two ways:
Couchbase Analytics Endpoint に接続するポートまたはURL。
string
""
This port is used for submitting queries when CouchbaseService is set to Analytics. SSL を使用していない場合のデフォルトは8095 で、SSL を使用している場合のデフォルトは18095 になります。UseSSL を参照してください。
This option can be set one of two ways:
Couchbase Web Console に接続するポートまたはURL。
string
""
This port is used for API operations like managing buckets. SSL を使用していない場合のデフォルトは8091 で、SSL を使用している場合のデフォルトは18091 になります。UseSSL を参照してください。
This option can be set one of two ways:
このセクションでは、本プロバイダーの接続文字列で設定可能なSSL プロパティの全リストを提供します。
プロパティ | 説明 |
SSLClientCert | SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストア。 |
SSLClientCertType | TLS/SSL クライアント証明書を格納するキーストアの種類。 |
SSLClientCertPassword | TLS/SSL クライアント証明書のパスワード。 |
SSLClientCertSubject | TLS/SSL クライアント証明書のサブジェクト。 |
UseSSL | Couchbase サーバーに接続するときにTLS/SSL をネゴシエートするかどうか。 |
SSLServerCert | TLS/SSL を使用して接続するときに、サーバーが受け入れ可能な証明書。 |
SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストア。
string
""
クライアント証明書のための証明書ストア名。
SSLClientCertType フィールドは、SSLClientCert により指定された証明書ストアの種類を指定します。ストアがパスワードで保護されている場合は、SSLClientCertPassword でパスワードを指定します。
SSLClientCert は、SSLClientCertSubject フィールドとともにクライアント証明書を指定するために使われます。SSLClientCert に値がある場合で、SSLClientCertSubject が設定されている場合は、証明書の検索が始まります。詳しくは、SSLClientCertSubject を参照してください。
証明書ストアの指定はプラットフォームに依存します。
Windows の共通のユーザとシステム証明書ストアの指定は以下のとおりです。
MY | 個人証明書と関連付けられた秘密キーを格納している証明書ストア。 |
CA | 証明機関の証明書。 |
ROOT | ルート証明書。 |
SPC | ソフトウェア発行元証明書。 |
Javaでは、証明書ストアは通常、証明書および任意の秘密キーを含むファイルです。
証明書ストアの種類がPFXFile の場合は、このプロパティにファイル名を設定します。PFXBlob の場合は、このプロパティをPFX ファイルのバイナリコンテンツ(例えば、PKCS12証明書ストア)に設定する必要があります。
TLS/SSL クライアント証明書を格納するキーストアの種類。
string
"USER"
このプロパティには次の値の一つを設定できます。
USER - デフォルト | Windows の場合、現在のユーザーにより所有された証明書ストアであることを指定します。この種類はJava では利用できませんので注意してください。 |
MACHINE | Windows の場合、この証明書ストアがシステムストアであることを指定します。この種類はJava では利用できませんので注意してください。 |
PFXFILE | この証明書ストアは、証明書を含むPFX(PKCS12)ファイルの名前です。 |
PFXBLOB | この証明書ストアは、PFX(PKCS12)形式の証明書ストアを表すBase-64でエンコードされた文字列です。 |
JKSFILE | この証明書ストアは、証明書を含むJava key store(JKS)ファイルの名前です。この種類はJava でのみ利用できますので注意してください。 |
JKSBLOB | この証明書ストアは、Java key store(JKS)形式の証明書ストアを表すBase-64でエンコードされた文字列です。この種類はJava でのみ利用できますので注意してください。 |
PEMKEY_FILE | この証明書ストアは、秘密キーと任意の証明書を含むPEM でエンコードされたファイルの名前です。 |
PEMKEY_BLOB | この証明書ストアは、秘密キーと任意の証明書を含むBase-64でエンコードされた文字列です。 |
PUBLIC_KEY_FILE | この証明書ストアは、PEM またはDER でエンコードされた公開キーの証明書を含むファイルの名前です。 |
PUBLIC_KEY_BLOB | この証明書ストアは、PEM またはDER でエンコードされた公開キーの証明書を含むBase-64でエンコードされた文字列です。 |
SSHPUBLIC_KEY_FILE | この証明書ストアは、SSH 公開キーを含むファイルの名前です。 |
SSHPUBLIC_KEY_BLOB | この証明書ストアは、SSH 公開キーを含むBase-64でエンコードされた文字列です。 |
P7BFILE | この証明書ストアは、証明書を含むPKCS7 ファイルの名前です。 |
PPKFILE | この証明書ストアは、PuTTY 秘密キー(PPK)を含むファイルの名前です。 |
XMLFILE | この証明書ストアは、XML 形式の証明書を含むファイルの名前です。 |
XMLBLOB | この証明書ストアは、XML 形式の証明書を含む文字列の名前です。 |
TLS/SSL クライアント証明書のパスワード。
string
""
証明書ストアでパスワードが必要である場合、このプロパティを使用してパスワードを指定し、証明書ストアにアクセスできます。
TLS/SSL クライアント証明書のサブジェクト。
string
"*"
証明書のサブジェクトは、証明書をロードするときにストア内の証明書を検索するために使用されます。
完全に一致するものが見つからない場合、ストアはプロパティの値を含むサブジェクトを検索します。それでも一致するものが見つからない場合、プロパティは空白で設定され、証明書は選択されません。
"*" に設定すると、証明書ストアの1番目の証明書が選択されます。
証明書のサブジェクトは識別の名前フィールドおよび値のカンマ区切りのリストです。例えば、"CN=www.server.com, OU=test, C=US, [email protected]" です。共通のフィールドとその説明は以下のとおりです。
フィールド | 説明 |
CN | 共通名。一般的には、www.server.com のようなホスト名です。 |
O | 法人名 |
OU | 法人の部署名 |
L | 法人の住所(市町村名) |
S | 法人の住所(都道府県) |
C | 国名 |
E | Eメールアドレス |
フィールド値にカンマが含まれている場合は、それを引用符で囲む必要があります。
Couchbase サーバーに接続するときにTLS/SSL をネゴシエートするかどうか。
bool
true
これがtrue に設定されている場合、以下のオプションのデフォルトが変更されます。
プロパティ | Plaintext デフォルト | SSL デフォルト |
AnalyticsPort | 8095 | 18095 |
N1QLPort | 8093 | 18093 |
WebConsolePort | 8091 | 18091 |
This option should be enabled when connecting to Couchbase Capella because all Capella deployments use SSL by default.
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 |
これを指定しない場合は、マシンが信用するすべての証明書が受け入れられます。
すべての証明書の受け入れを示すには、'*'を使用します。セキュリティ上の理由から、これはお勧めできません。
このセクションでは、本プロバイダーの接続文字列で設定可能なLogging プロパティの全リストを提供します。
プロパティ | 説明 |
Verbosity | ログファイルの記述をどの程度の詳細さで記載するかを決定するverbosity レベル。 |
このセクションでは、本プロバイダーの接続文字列で設定可能なSchema プロパティの全リストを提供します。
プロパティ | 説明 |
BrowsableSchemas | このプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。 |
Dataverse | テーブルを検出するときにどのAnalysis dataverse をスキャンするか。 |
TypeDetectionScheme | provider がCouchbase にあるバケットからテーブルとカラムをどのように作成するかを決定します。 |
InferNumSampleValues | データ型を決定する前にスキャンする各フィールドの値の最大数。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。 |
InferSampleSize | バケット内で利用可能なカラムを探すためにスキャンするドキュメント数の最大値。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。 |
InferSimilarityMetric | 異なるスキーマが同じフレーバーだと見なされる類似度を指定します。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。 |
FlexibleSchemas | Whether the provider allows queries to use columns that it has not discovered. |
ExposeTTL | Specifies whether document TTL information should be exposed. |
NumericStrings | Whether to allow string values to be treated as numbers. |
IgnoreChildAggregates | Whether the provider exposes aggregate columns that are also available as child tables. Ignored if TableSupport is not set to Full. |
TableSupport | provider がCouchbase サーバー上のテーブルを検出するためにどれだけの努力をするか。 |
NewChildJoinsMode | Determines the kind of child table model the provider exposes. |
このプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。
string
""
スキーマをデータベースからリストすると、負荷がかかる可能性があります。接続文字列でスキーマのリストを提供すると、 パフォーマンスが向上します。
テーブルを検出するときにどのAnalysis dataverse をスキャンするか。
string
""
このプロパティはデフォルトでは空です。つまり、すべてのdataverse がスキャンされ、DataverseSeparator に記載されているようにテーブル名が生成されます。
このプロパティを空白以外の値に割り当てると、Cloud は対応するdataverse のみをスキャンします(例えば、"Default" に設定するとDefault dataverse がスキャンされます)。1つのdataverse しかスキャンされていないため、テーブル名の先頭にdataverse 名は付きません。 以前のバージョンのCloud から使用していて、後方互換性が必要な場合は、このプロパティを"Default" に設定することをお勧めします。
If you are connecting to Couchbase 7.0 or later, this option will be treated as a compound name containing both a dataset and a scope.
For example, if you have previously created collections like these:
CREATE ANALYTICS SCOPE websites.exampledotcom CREATE ANALYTICS COLLECTION websites.exampledotcom.traffic ON examplecom_traffic_bucket CREATE ANALYTICS COLLECTION websites.exampledotcom.ads ON examplecom_ads_bucketYou would set this option to "websites.exampledotcom".
provider がCouchbase にあるバケットからテーブルとカラムをどのように作成するかを決定します。
string
"DocType"
以下のオプションのカンマ区切りのリストです。
DocType | 各バケットをチェックして、ドキュメント内の"docType" フィールドのさまざまな値を探すことでテーブルを検出します。例えば、バケットbeer-sample に"docType" = 'brewery' および"docType" = 'beer' のドキュメントが含まれている場合、beer-sample(すべてのドキュメントを含む)、beer-sample.brewery(醸造のみを含む)、beer-sample.brewery(ビールのみを含む)の3つのテーブルが生成されます。
RowScan と同様に、各フレーバーのドキュメントのサンプルをスキャンし、各フィールドのデータ型を決定します。RowScanDepth は、各フレーバーからスキャンされるドキュメント数を決定します。 |
DocType=fieldName | DocType と似ていますが、"docType" ではなく"fieldName" というフィールドに基づいてスキャンします。"fieldName" は、大文字小文字の区別も含めて、Couchbase のフィールド名と完全に一致する必要があります。 |
Infer | N1QL INFER ステートメントを使用して存在するテーブルとカラムを判断します。これはDocType よりも柔軟なフレーバー検出を行いますが、Couchbase Enterprise でのみ利用可能です。 |
RowScan | バケットからドキュメントのサンプルを読み出し、ヒューリスティックにデータ型を決定します。RowScanDepth はスキャンするドキュメントの数を決定します。フレーバー検出は行いません。 |
None | RowScan に似ていますが、検出された型ではなく文字列型を持つカラムを常に返します。 |
データ型を決定する前にスキャンする各フィールドの値の最大数。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
string
"10"
フィールドのデータ型を決定する前に、サンプリングされたドキュメントのすべてのフィールドからスキャンする値の最大数。 このプロパティは、Couchbase Infer コマンドを使用しているときに自動スキーマ検出 の追加設定を有効にします。このプロパティを使用するにはTypeDetectionScheme もInfer に設定する必要があります。
バケット内で利用可能なカラムを探すためにスキャンするドキュメント数の最大値。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
string
"100"
バケット内で利用可能なカラムを探すためにスキャンするドキュメント数の最大値。Infer コマンドは、ここで指定されたサイズのドキュメントのランダムサンプルをスキャンすることにより、カラムのメタデータを返します。
大きい値を設定すると、パフォーマンスが低下する場合があります。小さな値を設定すると、特にnull データがある場合に、カラムとデータ型が正しく決定されないことがあります。
このプロパティは、Couchbase Infer コマンドを使用しているときに自動スキーマ検出 の追加設定を有効にします。このプロパティを使用するにはTypeDetectionScheme もInfer に設定する必要があります。
異なるスキーマが同じフレーバーだと見なされる類似度を指定します。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
string
"0.7"
このプロパティは、2つのスキーマが同じフレーバーとみなされるためにどの程度類似している必要があるかを指定します。例えば、次の行を考えてみましょう。
Row 1: ColA, ColB, ColC, ColD
Row 2: ColA, ColB, ColE, ColF
Row 3: ColB, ColF, ColX, ColY
次の例のように、各フレーバに返されるカラムに異なるInferSimilarityMetric 値を設定できます。
その後、次のステートメントのように、ドット表記を使用してドキュメントフレーバーをクエリできます。
SELECT * FROM [Items.Technology]
このプロパティは、Couchbase Infer コマンドを使用しているときに自動スキーマ検出 の追加設定を有効にします。このプロパティを使用するにはTypeDetectionScheme もInfer に設定する必要があります。
Whether the provider allows queries to use columns that it has not discovered.
bool
false
By default Cloud will only allow queries to use columns that it has found during the metadata discovery process (see TypeDetectionScheme for details). This means that the Cloud has the full information for each column it presents, but it also means that fields set on only a few documents may not be exposed. Disabling this option means that the Cloud will allow you to write a query with any columns you want. If you use columns in a query that have not been discovered the Cloud will assume that they are simple strings.
For example, the Cloud uses column type information to automatically convert dates for comparision since Couchbase cannot natively compare dates directly.
If the Cloud detects that datecol is a date field, it can apply the STR_TO_MILLIS conversion automatically:
/* SQL */ WHERE datecol < '2020-06-12'; /* N1QL */ WHERE STR_TO_MILLIS(datecol) < STR_TO_MILLIS('2020-06-12');
When using undiscovered columns the Cloud cannot make this type of conversion for you. You must apply any needed conversions manually to ensure that operations behave the way you want them to.
Specifies whether document TTL information should be exposed.
bool
false
By default the Cloud does not expose TTL values or consider document TTLs when performing DML operations. Enabling this option exposes TTL values in two ways:
Note that enabling this features requires that your server be version 6.5.1 or later and that your CouchbaseService is set to N1QL. If either of these is not the case the Cloud will not connect.
Whether to allow string values to be treated as numbers.
bool
true
By default this property is enabled and the Cloud will treat string values as numeric if they all the values it samples during schema detection are numeric. This can cause type errors later on if the field contains non-numeric values in other documents. If this property is disabled then numeric strings are left as strings although other string-based data types like timestamps will still be detected.
For example, the "code" field in the below bucket would be affected by this
setting. By default it would be considered an integer but if this property
were enabled it would be treated as a string.
{ "code": "123", "message": "Please restart your computer" } { "code": "456", "message": "Urgent update must be applied" }
Whether the provider exposes aggregate columns that are also available as child tables. Ignored if TableSupport is not set to Full.
bool
false
The Cloud will expose array fields within a bucket as a separate child table, such as in the Games_scores example described in 自動スキーマ検出.
By default the Cloud will also expose these array fields as JSON aggregates on the base table.
For example, either of these queries would return information on game scores:
/* Return each score as an individual row */ SELECT value FROM Games_scores; /* Return all scores for each Game as a JSON string */ SELECT scores FROM Games;
Since these aggregates are exposed on the base table, they will be generated even when the information they contain is redundant.
For example, when performing this join the scores aggregate on Games is populated as well as the value column on Games_scores.
Internally this causes two copies of the scores data to be transferred from Couchbase.
/* Retrieves score data twice, once for Games.scores and once for Games_scores.value */ SELECT * FROM Games INNER JOIN Games_scores ON Games.[Document.Id] = Games_scores.[Document.Id]
This option can be used to prevent the aggregate field from being exposed when the same information is also available from a child table.
In the games example, setting this option to true means that the Games table would only expose a primary key column.
The only way to retrieve information about scores would be the child table, so score data would only be read once from Couchbase.
/* Only exposes Document.Id, not scores */ SELECT * FROM Games; /* Only retrieves score data once for Games_scores.value */ SELECT * FROM Games INNER JOIN Games_scores ON Games.[Document.Id] = Games_scores.[Document.Id]
Note that this option overrides FlattenArrays, since all data from flattened arrays is also avaialable as child tables. If this option is set then no array flattening is performed, even if FlattenArrays is set to a value over 0.
provider がCouchbase サーバー上のテーブルを検出するためにどれだけの努力をするか。
string
"Full"
利用可能な値は以下のとおりです。
Full | Cloud は利用可能なバケットを検出し、それらの各バケットの内側を見て子テーブルを探します。これにより、ネストされたデータにアクセスする最も柔軟な方法が提供されますが、サーバー上の各バケットにプライマリインデックスがあることが必要です。 |
Basic | Cloud は利用可能なバケットを検出しますが、その中で子テーブルを探すことはしません。これは、スキーマ検出の時間を削減したい場合、またはバケットにプライマリインデックスがない場合にお勧めします。 |
None | Cloud はLocation ディレクトリにあるスキーマファイルのみを使用し、サーバー上のバケットを検出しません。このオプションは、スキーマファイルを作成済みの場合にのみ使用してください。スキーマファイルなしでこのオプションを使用すると、利用可能なテーブルがなくなります。 |
Determines the kind of child table model the provider exposes.
bool
false
By default the Cloud exposes a backwards-compatible data model that is not fully relational. In this mode non-child tables have a primary key called Document.Id, but child tables do not have a primary key. Instead they have a column called Document.Id which has the same value as the Document.Id of the parent row that contains the child row.
For example, a parent table invoices containing invoice records may look like this:
Document.Id | customer |
1 | Adam |
2 | Beatrice |
3 | Charlie |
And its child invoices_lineitems containing line items may look like this:
Document.Id | item |
1 | laptop |
1 | keyboard |
2 | stapler |
3 | whiteboard |
3 | markers |
This model has several limitations:
The NewChildJoins data model is fully relational. In this mode non-child tables have the same Document.Id as before, but child tables are extended to have both a foreign key and a primary key. The foreign key is called Document.Parent and it refers to the Document.Id of the row in the parent table that contains the child row. The primary key is called Document.Id and it contains a path which uniquely refers to that child row.
For example, the same tables as above would look like this in the NewChildJoins model. invoices would be the same:
Document.Id | customer |
1 | Adam |
2 | Beatrice |
3 | Charlie |
However, invoices_lineitems would have both a primary and foreign key. The primary key contains the ID of the parent row as well as the child row's position in the parent.
Document.Id | Document.Parent | item |
1$1 | 1 | laptop |
1$2 | 1 | keyboard |
2$1 | 2 | stapler |
3$1 | 3 | whiteboard |
3$2 | 3 | markers |
This fixes the limitations of the old data model:
このセクションでは、本プロバイダーの接続文字列で設定可能なMiscellaneous プロパティの全リストを提供します。
プロパティ | 説明 |
ChildSeparator | 子テーブルを示すために使用する記号。 |
CreateTableRamQuota | The default RAM quota, in megabytes, to use when inserting buckets via the CREATE TABLE syntax. |
DataverseSeparator | Analytics dataverse およびscopes/collections を示すために使用する記号。 |
FlattenArrays | The number of elements to expose as columns from nested arrays. Ignored if IgnoreChildAggregates is enabled. |
FlattenObjects | フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。 |
FlavorSeparator | フレーバーを示すために使用する記号。 |
InsertNullValues | Determines whether an INSERT should include fields that have NULL values. |
MaxRows | クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。 |
Pagesize | Couchbase から返されるページあたりの結果の最大数。 |
PeriodsSeparator | 階層を示すために使用する記号。 |
PseudoColumns | このプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。 |
QueryExecutionTimeout | クエリのサーバーサイドのタイムアウトを設定します。タイムアウトエラーを返す前にCouchbase がクエリを実行する期間を決定します。 |
RowScanDepth | テーブルで利用可能なカラムを探すためにスキャンする行数の最大値。 |
StrictComparison | SQL 入力クエリのフィルタをCouchbase クエリに変換する精度を調整します。 これは、値のカンマ区切りリストに設定できます。各値はdate、number、boolean、またはstring のいずれかです。 |
Timeout | タイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。 |
TransactionDurability | Specifies how a document must be stored for a transaction to succeed. Specifies whether to use N1QL transactions when executing queries. |
TransactionTimeout | This sets the amount of time a transaction may execute before it is timed out by Couchbase. |
UpdateNullValues | Determines whether an UPDATE writes NULL values as NULL, or removes them. |
UseCollectionsForDDL | Whether to assume that CREATE TABLE statements use collections instead of flavors. Only takes effect when connecting to Couchbase v7+ and GenerateSchemaFiles is set to OnCreate. |
UseTransactions | Specifies whether to use N1QL transactions when executing queries. |
子テーブルを示すために使用する記号。
string
"_"
バケット下にある配列の子テーブルを作成する際、Cloud は、この区切り文字と各パスエレメントを使用して、ベーステーブルの名前をコンカテネートすることによって子テーブルの名前を生成します。
例えば、このドキュメントがバケット"customers" にある場合、addresses フィールドの子テーブルは"customers_addresses" となります。
{ "addresses": [ {"street": "123 Main St"}, {"street": "424 Pleasant Ct"}, {"street": "719 Blue Way"} ] }
The default RAM quota, in megabytes, to use when inserting buckets via the CREATE TABLE syntax.
string
"250"
The default RAM quota, in megabytes, to use when inserting buckets via the CREATE TABLE syntax.
Analytics dataverse およびscopes/collections を示すために使用する記号。
string
"."
Analytics サービスを使用すると、Cloud はすべての利用可能なdataverse からすべてのデータセットをスキャンします。潜在的な名前の衝突を避けるため、生成されるテーブル名にはdataverse 名とデータセット名が含まれます。
デフォルトでは"." に設定されているため、"Default" dataverse に"users" というデータセットがある場合、生成されるテーブルは"Default.users" になります。
This property is also used when generating table names for collections (on both N1QL and Analytics) on Couchbase 7 and later. For example, a bucket called "users" that has two collections called "active" and "inactive" under the "status" scope would be detected as the tables "users.status.active" and "users.status.inactive".
The number of elements to expose as columns from nested arrays. Ignored if IgnoreChildAggregates is enabled.
string
"0"
デフォルトで、ネスト配列はJSON 文字列として返されます。FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。これは短い配列の場合にのみ推奨されます。
ネスト配列から返す要素の数にFlattenArrays を設定します。特定されたエレメントはカラムとして返されます。Zero-base のインデックスはカラム名にコンカテネートされます。他のエレメントは無視されます。
例えば、文字列の配列からエレメントのアービトラリー数を返すことができます。
["FLOW-MATIC","LISP","COBOL"]FlattenArrays が1に設定されている場合、配列は次のテーブルのようにフラット化されます。
カラム名 | カラム値 |
languages.0 | FLOW-MATIC |
フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。
bool
true
フラット化されたオブジェクトプロパティとしてカラムを表示するには、FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。プロパティ名は、カラム名を作り出すためにオブジェクト名にアンダースコアでコンカティネイトされます。
例えば、次のネストされたオブジェクトを接続時にフラット化できます。
address : { "street" : "123 Main St.", "city" : "Nowhere", "state" : "NY", "zip" : "12345" }FlattenObjects がtrue に設定されている場合、オブジェクトは次のテーブルのようにフラット化されます:
カラム名 | カラム値 |
address.street | 123 Main St. |
address.city | Nowhere |
address.state | NY |
address.zip | 12345 |
フレーバーを示すために使用する記号。
string
"."
Cloud がDocType かInfer TypeDetectionScheme のいずれかを使用してフレーバーテーブルを検出すると、基底のバケット名、この区切り文字、およびバケットのプライマリフレーバーの値をコンカテネートしてフレーバーテーブルに名前を付けます。
例えば、Cloud が"beer-sample" バケットで"docType = 'beer'" というフレーバーを検出すると、"beer" doctype を持つ"beer-sample" 内のドキュメントのみを含む"beer-sample.beer" テーブルが生成されます。
Determines whether an INSERT should include fields that have NULL values.
bool
true
By default the Cloud uses NULL values provided in an INSERT statement and inserts them as JSON null values.
If this option is disabled, SQL NULL values are ignored during an INSERT. In the case of array columns (FlattenArrays must be set to retrieve these), this means that array indices are shifted over to compensate for the values that have been removed.
クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。
int
-1
クエリで集計またはGROUP BY を使用しない場合に返される行数を制限します。これはLIMIT 句よりも優先されます。
Couchbase から返されるページあたりの結果の最大数。
int
1000
Pagesize プロパティは、Couchbase から返されるページあたりの結果の最大数に影響を与えます。より大きい値を設定すると、1ページあたりの消費メモリが増える代わりに、パフォーマンスが向上する場合があります。
階層を示すために使用する記号。
string
"."
オブジェクトと配列をフラット化するとき、Cloud はこの値を使って異なるレベルのオブジェクトと配列を分離します。例えば、Couchbase サーバーがこのようなドキュメントを返す(そしてFlattenObjects が有効になっている)とき、ピリオド区切り文字が"." に設定されている場合は、Cloud は"geo.latitude" と"geo.longitude" というカラムを返します。
{ "geo": { "latitude": 35.9132, "longitude": -79.0558 } }
このプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。
string
""
Entity Framework ではテーブルカラムでない疑似カラムに値を設定できないため、この設定はEntity Framework で特に便利です。この接続設定の値は、"Table1=Column1, Table1=Column2, Table2=Column3" の形式です。"*=*" のように"*" 文字を使用して、すべてのテーブルとすべてのカラムを含めることができます。
クエリのサーバーサイドのタイムアウトを設定します。タイムアウトエラーを返す前にCouchbase がクエリを実行する期間を決定します。
string
"-1"
デフォルトは-1で、タイムアウトは無効になっています。タイムアウトを有効にする場合、値には量と単位の両方を含める必要があります。単位は "ns" (nanoseconds)、"us" (microseconds)、"ms" (milliseconds)、"s" (seconds)、"m" (minutes)、または"h" (hours) のいずれかです。例えば、"5m" と"300s" はどちらもタイムアウトを5分に設定します。
"index scan timeout" というサーバー側のタイムアウトもあります。そちらがより小さい場合はこれを上書きします。デフォルトではインデックススキャンタイムアウトは2分ですが、Couchbase サーバーの"indexer.settings.scan_timeout" プロパティを設定することで変更できます。
テーブルで利用可能なカラムを探すためにスキャンする行数の最大値。
int
100
テーブルのカラムはテーブル行をスキャンすることで決定される必要があります。この値はスキャンされる行数の最大値を設定します。
大きい値を設定すると、パフォーマンスが低下する場合があります。小さい値を設定すると、特にnull データがある場合には、データ型を正しく判定できない場合があります。
SQL 入力クエリのフィルタをCouchbase クエリに変換する精度を調整します。 これは、値のカンマ区切りリストに設定できます。各値はdate、number、boolean、またはstring のいずれかです。
string
""
このオプションはデフォルトでは空です。つまり、 Couchbase に送られたWHERE 句は値を変換する追加の関数を含むのでより多くの比較が機能します。
例えば、"string" 設定をリストから除外すると、配列は変換され、文字列と比較えきるようになります。
SELECT * FROM Bucket WHERE MyArrayColumn = '[1,2,3]'
値を設定すると、関連するタイプの比較を含むクエリは文字どおりに変換されます。 これはCouchbase のインデックスをより有効に利用しますが、比較のタイプが Couchbase が直接比較できるフォーマットでなければならないことを意味します。
例えば、"date" がオプションの1つとして提供されている場合、日付は自動的には変換されないため、
Couchbase の場合と同じ形で格納されている必要があります。
SELECT * FROM Bucket WHERE MyDateColumn = '2018-10-31T10:00:00';
タイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。
int
60
Timeout が0に設定されている場合は、操作がタイムアウトしません。処理が正常に完了するか、エラー状態になるまで実行されます。
Timeout の有効期限が切れても処理が完了していない場合は、Cloud は例外をスローします。
Specifies how a document must be stored for a transaction to succeed. Specifies whether to use N1QL transactions when executing queries.
string
"Majority"
If UseTransactions is enabled, then this option can be set to determine when Couchbase will allow writes in transactions to commit. The Couchbase documentation on Durability and Transactions contains the full details, below is a high-level summary.
This option controls requirements on both quorum and persistence. The quorum may either require no bucket replicas to receive the document (None), or a majority of replicas to have the document (all others). The persistence level requires either that the document be stored in the replica memory (Majoriy) or on the replica disk (MajorityAndPersistActive, PersistToMajority).
None is only useful if the bucket you are using is not configured for replicas. The other options can be used depending on the required performance and durability tradeoffs. Persisting to more replicas is slower but provides greater resilience against a node crashing.
This sets the amount of time a transaction may execute before it is timed out by Couchbase.
string
""
If transactions are enabled, then the Cloud will default to the server's default transaction timeout setting.
When enabling the timeout, the value must include both an amount and a unit, which can be one of: "ns" (nanoseconds), "us" (microseconds), "ms" (milliseconds), "s" (seconds), "m" (minutes) or "h" (hours). For example, "5m" and "300s" both set timeouts of 5 minutes.
There are also cluster-level and node-level transaction timeouts which override this one if they are smaller. For example, if the node-level timeout is set to a minute then setting this option to "5m" will have no effect.
Determines whether an UPDATE writes NULL values as NULL, or removes them.
bool
true
By default the Cloud will use NULL values provided in an UPDATE statement and set the field in Couchbase to NULL.
If this option is disabled SQL NULL values in an UPDATE will cause the Cloud to mark the field as MISSING. This removes the field from the object containing it, or if the field is contained in an array (per FlattenArrays) then that element is set to NULL.
This option should be used with care as the Cloud may not detect that the field exists if it is removed from enough documents within a bucket.
Whether to assume that CREATE TABLE statements use collections instead of flavors. Only takes effect when connecting to Couchbase v7+ and GenerateSchemaFiles is set to OnCreate.
bool
false
Normally the Cloud will assume that compound table names referenced in a CREATE TABLE statement are flavors.
For compatibility, this is still the default with Couchbase v7+ even though flavors are not recommended there.
CREATE TABLE [myBucket.myFlavor]( [Document.Id] VARCHAR PRIMARY KEY, docType VARCHAR, sometext VARCHAR, somenum INT )
Enable this option to assume that CREATE TABLE statements refer to collection instead.
In that scenario this query willl create the bucket and scope if necessary, before creating the colleciton and setting a primary index:
CREATE TABLE [myBucket.myScope.myCollection]( [Document.Id] VARCHAR PRIMARY KEY, sometext VARCHAR, somenum INT )
Specifies whether to use N1QL transactions when executing queries.
string
"Never"
By default the Cloud does not use transactions for compatibility with older versions of Couchbase. All of the other options require a connection to Couchbase 7 or above. The N1QL service must also be enabled using CouchbaseService.
Setting this to Always means that all queries will use transactions. An explicit transaction may be created on the connection and queries will use that transaction while it is active. If there is no explicit transaction then queries will use implicit transactions instead.
Setting this to Explicit enables support for explicit transactions only. Explicit transactions may be created but if one is not currently active, then statements will not create an implicit transaction.