CData Sync App は、Couchbase データをデータベース、データレイク、またはデータウェアハウスに継続的にパイプライン化する簡単な方法を提供し、分析、レポート、AI、および機械学習で簡単に利用できるようにします。
Couchbase コネクタはCData Sync アプリケーションから使用可能で、Couchbase からデータを取得して、サポートされている任意の同期先に移動できます。
The CData Sync App models Couchbase documents in a bucket as tables in a relational database; connect to Couchbase Server versions 4.0 and up, Enterprise Edition or Community Edition.
必須プロパティについては、設定タブを参照してください。
通常必須ではない接続プロパティについては、高度な設定タブを参照してください。
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 Sync App 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 Sync App 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 Sync App 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.
Sync App は、スキーマおよびインデックスを決定するための異なるモードを提供します。以下に、いくつかの設定例を示します。
テーブルを検索してカラムを検出するすべてのクエリを無効にします。スキーマファイルで定義されたテーブルのみが報告されます。TypeDetectionScheme は無視されます。 ドライバーは、Location ディレクトリにあるスキーマファイルのみを使用します。スキーマファイルなしでこのオプションを使用すると、利用可能なテーブルがなくなります。
SELECT `bucket`, `scope`, name FROM system:keyspaces
ドライバーは利用可能なバケットを検出しますが、その中で子テーブルを探すことはしません。 これは、スキーマ検出の時間を削減したい場合、またはバケットにプライマリインデックスがない場合にお勧めします。
SELECT `travel-sample`.* FROM `travel-sample` LIMIT 100
ドライバーは利用可能なバケットを検出し、それらの各バケットの内側を見て子テーブルを探します。これにより、ネストされたデータにアクセスする最も柔軟な方法が提供されますが、サーバー上の各バケットにプライマリインデックスがあることが必要です。
ドライバーはフレーバー検出やカラムタイプの検出は行いません。カラムは常にVARCHAR として報告されます。子テーブルは、TableSupport の設定に応じてスキャンされます。
ドライバーは、バケットからドキュメントのサンプルを読み出し、データ型を決定します。フレーバー検出は行いません。
NQ1QL INFER ステートメントを使用して存在するテーブルとカラムを判断します。これはDocType よりも柔軟なフレーバー検出を行いますが、Couchbase Enterprise でのみ利用可能です。
SELECT META(`travel-sample`).id AS `Document.Id`, `travel-sample`.* FROM `travel-sample`
各バケットをチェックして、ドキュメント内の"docType" フィールドのさまざまな値を探すことでテーブルを検出します。 例えば、バケットbeer-sample に"docType" = 'brewery' および"docType" = 'beer' のドキュメントが含まれている場合、beer-sample、beer-sample.brewery、beer-sample.beer の3つのテーブルが生成されます。 RowScan と同様に、各フレーバーのドキュメントのサンプルをスキャンし、各フィールドのデータ型を決定します。
Couchbase はスキーマフリーなドキュメントデータベースで、高いパフォーマンス、使用性、およびスケーラビリティを提供します。これらの機能は、必ずしもSQL-92 のような標準準拠のクエリ言語と互換しないわけではありません。
Sync Appでは、スキーマフリーなCouchbase オブジェクトをリレーショナルテーブルにモデル化し、SQL クエリをN1QL またはSQL++ (Analytics) クエリに読み替えることで、要求されたデータを取得します。このセクションでは、Sync App が複数のやり方によって、リレーショナルSQL とドキュメントデータベースのギャップの橋渡しをいかに行うかを説明します。
Sync App が最初にCouchbase に接続すると、各バケットを開きそのバケットから設定可能な数の行をスキャンします。それらの行を使用して、そのバケット内のカラムとデータ型、およびそれらのドキュメント内の任意の配列に対するフレーバーテーブルと子テーブルの作成方法を決定します。Couchbase Enterprise バージョン4.5.1以降では、TypeDetectionScheme がINFER に設定されている場合は、Sync App はINFER コマンドを使用するように設定することもできます。これにより、Sync App はバケットのより正確なカラムリストを取得し、より複雑なフレーバーを検出することができます。
Analytics サービスを使用する場合、Sync App はカラムと子テーブルの検出のみを行います。フレーバーテーブルは、シャドウデータセットを使用して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 関数 を参照してください。
バケット内のドキュメントに配列を含むフィールドが含まれる場合、Sync App はそれらのフィールドをメインテーブルのJSON 集計として公開するだけでなく、独自のテーブルとして公開します。これらの子テーブルの構造は、配列にオブジェクトまたはプリミティブ値が含まれるかどうかによって異なります。
配列に数値や文字列などのプリミティブな値が含まれる場合、子テーブルには2つのカラムしかありません。配列を含むドキュメントの主キーである"Document.Id" と、配列内の値を含む"value" です。例えば、"Games" というバケットにこれらのドキュメントが含まれる場合:
/* Primary key "1" */
{
"scores": [1,2,3]
}
/* Primary key "2" */
{
"scores": [4,5,6]
}
Sync App は、これらの行を含む"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"}
]
}
Sync App は、これらの行を含む"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.
Sync App は、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
}
Sync App はこのバケット用に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 |
Sync App は、そのフレーバーのドキュメントで定義されていないフレーバーテーブルのカラムを含みません。例えば、"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]
}
Sync App はこれらのテーブルを生成します。
| テーブル名 | 子フィールド | フレーバーコンディション |
| 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" |
Sync App では、SQL-92 準拠クエリを対応するN1QL またはSQL++ クエリにマッピングします。以下のマッピングは完全ではありませんが、この変換中にSync App が使用する一般的なパターンを理解するのに役立つはずです。
SELECT ステートメントは、以下のように、適切なN1QL SELECT クエリに変換されます:SQL-92 とN1QL の類似により、多くのクエリは直接変換されます。
Sync App にCouchbase バケットのスキーマが存在する場合の一つの大きな相違は、SELECT * クエリはバケット内の一つのフィールドを直接SELECT するものに変換されることです。Sync App はまた、自動的にバケット内のそれぞれのドキュメントのプライマリーキーをベースに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"] |
Sync App が型変換が必要であることを検出した場合、条件に追加の型関数が含まれることがあることに注意してください。 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 Sync App 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 を使用して結合されている限り、Sync App は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 はいくつかのビルトイン集計関数を持ちます。Sync App は、さまざまな集計クエリの拡張的利用を行います。以下にいくつか例を示します。
| 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 Sync App like normal functions but with a special naming convention for using scoped functions. Normally the Sync App 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 Sync App in QueryPassthrough mode.
Couchbase has support for both scalar functions as well as functions that return results from subqueries. The Sync App 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 Sync App'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 Sync App 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 Sync App can return JSON structures as column values. The Sync App 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"}} |
自動スキーマ検出 に加え、Sync App では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 | 必須。Sync App 内のカラムのタイプ。 |
| other:iskey | 必須。キーと同じ値、またはキーが含まれていない場合は"false" にする必要があります。 |
| other:pathspec | 必須。これは、other:field 内の区切り文字を解釈するために使用されます。 |
| other:field | 必須。Couchbase のフィールドへのパス。 |
{
"numeric_object": {
"0": 0
},
"array": [
0
]
}
Sync App がフィールドアクセスと配列アクセスを区別できるようにするために、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>
このセクションでは、Couchbase Sync App の高度な機能を厳選して説明します。
Sync App はユーザー定義ビューの使用をサポートします。これは事前設定されたユーザー定義クエリによって内容が決定される仮想テーブルです。 このビューは、ドライバーに発行されるクエリを直接制御できない場合に有効です。 カスタムビューの作成と設定の概要については、ユーザー定義ビュー を参照してください。
SSL の設定 を使用して、Sync App が証明書のネゴシエーションをどのように扱うかを調整します。さまざまな証明書形式を選択できます。詳しくは、「接続文字列オプション」にあるSSLServerCert プロパティを参照してください。
Windows プロキシとHTTP プロキシを含むファイアウォールとプロキシ に合致するようSync App を設定します。トンネル接続を設定することもできます。
詳しくは、クエリ処理 を参照してください。
デフォルトでは、Sync App はサーバーとのTLS のネゴシエーションを試みます。サーバー証明書は、デフォルトのシステム信頼済み証明書ストアで検証されます。SSLServerCert 接続プロパティを使用して、証明書の検証方法をオーバーライドできます。
別の証明書を指定するには、SSLServerCert 接続プロパティを参照してください。
Couchbase Sync App はクライアント証明書の設定もサポートしています。次を設定すれば、クライアント証明書を使って接続できます。
HTTP プロキシへの認証には、以下のように設定します。
次のプロパティを設定します。
使用されている接続設定に応じて、Sync App は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 Sync App 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 Sync App are dynamically retrieved from Couchbase, so any changes in the buckets or fields within Couchbase will be reflected in the Sync App the next time you connect.
You may also issue a reset query to refresh schemas without having to close the connection:
RESET SCHEMA CACHE
| プロパティ | 説明 |
| AuthScheme | The type of authentication to use when connecting to Couchbase. |
| User | 認証するCouchbase ユーザーアカウントのユーザーID を指定します。 |
| Password | 認証するユーザーアカウントのパスワードを指定します。 |
| CredentialsFile | 複数のユーザーまたはバケットにクレデンシャルを提供する必要がある場合にこのプロパティを使用します。このファイルは他の形式の認証よりも優先されます。 |
| 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。 |
| SearchPort | The port or URL for connecting to the Couchbase Search Service Endpoint. |
| プロパティ | 説明 |
| SSLClientCert | SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストアを指定します。このプロパティは、他のSSL 関連プロパティと連動して、セキュアな接続を確立します。 |
| SSLClientCertType | SSL クライアント認証用のTLS/SSL クライアント証明書を格納するキーストアの種類を指定します。プラットフォームや証明書のソースに応じて、さまざまなキーストア形式から選択できます。 |
| SSLClientCertPassword | TLS/SSL クライアント証明書ストアにアクセスするために必要なパスワードを指定します。選択した証明書ストアの種類がアクセスにパスワードを必要とする場合、このプロパティを使用します。 |
| SSLClientCertSubject | TLS/SSL クライアント証明書のサブジェクトを指定し、証明書ストアで場所を検索します。 CN=www.server.com, C=US のように、識別名フィールドのカンマ区切りのリストを使用します。ワイルドカード * は、ストアの先頭の証明書を選択します。 |
| UseSSL | Couchbase サーバーに接続するときにTLS/SSL をネゴシエートするかどうか。 |
| SSLServerCert | TLS/SSL を使用して接続する際に、サーバーが受け入れ可能な証明書を指定します。 |
| プロパティ | 説明 |
| FirewallType | provider がプロキシベースのファイアウォールを介してトラフィックをトンネリングするために使用するプロトコルを指定します。 |
| FirewallServer | ファイアウォールを通過し、ユーザーのクエリをネットワークリソースに中継するために使用されるプロキシのIP アドレス、DNS 名、またはホスト名を識別します。 |
| FirewallPort | プロキシベースのファイアウォールで使用するTCP ポートを指定します。 |
| FirewallUser | プロキシベースのファイアウォールに認証するアカウントのユーザーID を識別します。 |
| FirewallPassword | プロキシベースのファイアウォールで認証するユーザーアカウントのパスワードを指定します。 |
| プロパティ | 説明 |
| ProxyAutoDetect | provider が、手動で指定されたプロキシサーバーを使用するのではなく、既存のプロキシサーバー構成についてシステムプロキシ設定をチェックするかどうかを指定します。 |
| ProxyServer | HTTP トラフィックをルートするプロキシサーバーのホストネームもしくはIP アドレス。 |
| ProxyPort | クライアントとの間でHTTP トラフィックをルーティングするために予約された、指定されたプロキシサーバー(ProxyServer 接続プロパティで設定)のTCP ポート。 |
| ProxyAuthScheme | ProxyServer 接続プロパティで指定されたプロキシサーバーに対して認証する際にprovider が使用する認証方法を指定します。 |
| ProxyUser | ProxyServer 接続プロパティで指定されたプロキシサーバーに登録されているユーザーアカウントのユーザー名。 |
| ProxyPassword | ProxyUser 接続プロパティで指定されたユーザーに紐付けられたパスワード。 |
| ProxySSLType | ProxyServer 接続プロパティで指定されたプロキシサーバーに接続する際に使用するSSL タイプ。 |
| ProxyExceptions | ProxyServer 接続プロパティで設定されたプロキシサーバー経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。 |
| プロパティ | 説明 |
| LogModules | ログファイルに含めるコアモジュールを指定します。セミコロンで区切られたモジュール名のリストを使用します。デフォルトでは、すべてのモジュールがログに記録されます。 |
| プロパティ | 説明 |
| Location | テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリの場所を指定します。サービスの要件に応じて、これは絶対パスまたは相対パスのいずれかで表されます。 |
| BrowsableSchemas | レポートされるスキーマを利用可能なすべてのスキーマのサブセットに制限するオプション設定。例えば、 BrowsableSchemas=SchemaA,SchemaB,SchemaC です。 |
| Tables | レポートされるテーブルを利用可能なすべてのテーブルのサブセットに制限するオプション設定。例えば、 Tables=TableA,TableB,TableC です。 |
| Views | レポートされたビューを使用可能なテーブルのサブセットに制限するオプション設定。例えば、 Views=ViewA,ViewB,ViewC です。 |
| 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. |
| プロパティ | 説明 |
| AllowJSONParameters | Allows raw JSON to be used in parameters when QueryPassthrough is enabled. |
| 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 | フレーバーを示すために使用する記号。 |
| GenerateSchemaFiles | スキーマを生成して保存するユーザーの好みのタイミングを示します。 |
| InsertNullValues | Determines whether an INSERT should include fields that have NULL values. |
| MaxRows | 集計やGROUP BY を使用しないクエリで返される最大行数を指定します。 |
| Other | 特定のユースケースに対して追加の隠しプロパティを指定します。これらは通常のprovider の機能では必要ありません。複数のプロパティを定義するには、セミコロンで区切られたリストを使用します。 |
| Pagesize | Couchbase から返される、1ページあたりの結果の最大数を指定します。この設定は、ほとんどのユースケースに最適化されている、データソースによって設定されたデフォルトのページサイズをオーバーライドします。 |
| PeriodsSeparator | 階層を示すために使用する記号。 |
| PseudoColumns | テーブルカラムとして公開する擬似カラムを指定します。'TableName=ColumnName;TableName=ColumnName' という形式を使用します。デフォルトは空の文字列で、このプロパティを無効にします。 |
| QueryExecutionTimeout | クエリのサーバーサイドのタイムアウトを設定します。タイムアウトエラーを返す前にCouchbase がクエリを実行する期間を決定します。 |
| QueryPassthrough | このオプションは、クエリをCouchbase サーバーにas-is で渡します。 |
| RowScanDepth | テーブルで利用可能なカラムを探すためにスキャンする行数の最大値。 |
| StrictComparison | SQL 入力クエリのフィルタをCouchbase クエリに変換する精度を調整します。 これは、値のカンマ区切りリストに設定できます。各値はdate、number、boolean、またはstring のいずれかです。 |
| Timeout | provider がタイムアウトエラーを返すまでにサーバーからの応答を待機する最大時間を秒単位で指定します。デフォルトは60秒です。タイムアウトを無効にするには0を設定します。 |
| 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. |
| UserDefinedViews | カスタムビューを定義するJSON 構成ファイルへのファイルパスを指定します。provider は、このファイルで指定されたビューを自動的に検出して使用します。 |
| UseTransactions | Specifies whether to use N1QL transactions when executing queries. |
| ValidateJSONParameters | Allows the provider to validate that string parameters are valid JSON before sending the query to Couchbase. |
このセクションでは、本プロバイダーの接続文字列で設定可能なAuthentication プロパティの全リストを提供します。
| プロパティ | 説明 |
| AuthScheme | The type of authentication to use when connecting to Couchbase. |
| User | 認証するCouchbase ユーザーアカウントのユーザーID を指定します。 |
| Password | 認証するユーザーアカウントのパスワードを指定します。 |
| CredentialsFile | 複数のユーザーまたはバケットにクレデンシャルを提供する必要がある場合にこのプロパティを使用します。このファイルは他の形式の認証よりも優先されます。 |
| 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。 |
| SearchPort | The port or URL for connecting to the Couchbase Search Service Endpoint. |
The type of authentication to use when connecting to Couchbase.
Note that only Basic authentication is supported when using the "Cloud" ConnectionMode.
複数のユーザーまたはバケットにクレデンシャルを提供する必要がある場合にこのプロパティを使用します。このファイルは他の形式の認証よりも優先されます。
複数のユーザーまたはバケットにクレデンシャルを提供する必要がある場合にこのプロパティを使用します。これは他の形式の認証よりも優先されます。
CredentialsFile を以下と同じマークアップを持つファイルへのパスに設定します。
[{"user": "YourUserName1", "pass":"YourPassword1"},
{"user": "YourUserName2", "pass":"YourPassword2"}]
接続するCouchbase サーバーのアドレス。
この値は、"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" のように、カンマで区切られた上記の形式で複数のサーバーを受け入れることもできます。これにより、リストされているサーバーにアクセスできない場合に、Sync App が接続を回復できるようになります。
Sync App は接続全体を回復しようとしますが、個々の操作を失う可能性があります。例えば、クエリの実行中にサーバーにアクセスできなくなった場合、長期実行クエリは失敗しますが、そのクエリは同じ接続で再試行でき、Sync App は次のアクティブなサーバーでそのクエリを実行します。
接続するCouchbase サービスを決定します。デフォルトはN1QL です。利用可能なオプションはN1QL とAnalytics です。
接続するCouchbase サービスを決定します。デフォルトはN1QL です。利用可能なオプションはN1QL とAnalytics です。
Determines how to connect to the Couchbase server. Must be either Direct or Cloud.
By default the Sync App 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 Sync App to determine the exact Couchbase servers that provide the appropriate CouchbaseService. You must also set the DNSServer property so that the Sync App 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.
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. You can also provide a port if needed: DNSServer=10.1.2.3:5300
Couchbase N1QL Endpoint に接続するポートまたはURL。
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。
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。
This port is used for API operations like managing buckets. SSL を使用していない場合のデフォルトは8091 で、SSL を使用している場合のデフォルトは18091 になります。UseSSL を参照してください。
This option can be set one of two ways:
The port or URL for connecting to the Couchbase Search Service Endpoint.
This port is used for submitting queries when CouchbaseService is set to Search Service. It defaults to 8094 when not using SSL, and 18094 when using SSL. See UseSSL.
This option can be set one of two ways:
このセクションでは、本プロバイダーの接続文字列で設定可能なSSL プロパティの全リストを提供します。
| プロパティ | 説明 |
| SSLClientCert | SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストアを指定します。このプロパティは、他のSSL 関連プロパティと連動して、セキュアな接続を確立します。 |
| SSLClientCertType | SSL クライアント認証用のTLS/SSL クライアント証明書を格納するキーストアの種類を指定します。プラットフォームや証明書のソースに応じて、さまざまなキーストア形式から選択できます。 |
| SSLClientCertPassword | TLS/SSL クライアント証明書ストアにアクセスするために必要なパスワードを指定します。選択した証明書ストアの種類がアクセスにパスワードを必要とする場合、このプロパティを使用します。 |
| SSLClientCertSubject | TLS/SSL クライアント証明書のサブジェクトを指定し、証明書ストアで場所を検索します。 CN=www.server.com, C=US のように、識別名フィールドのカンマ区切りのリストを使用します。ワイルドカード * は、ストアの先頭の証明書を選択します。 |
| UseSSL | Couchbase サーバーに接続するときにTLS/SSL をネゴシエートするかどうか。 |
| SSLServerCert | TLS/SSL を使用して接続する際に、サーバーが受け入れ可能な証明書を指定します。 |
SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストアを指定します。このプロパティは、他のSSL 関連プロパティと連動して、セキュアな接続を確立します。
このプロパティは、SSL クライアント認証のためのクライアント証明書ストアを指定します。 このプロパティは、証明書ストアの種類を定義するSSLClientCertType、およびパスワードで保護されたストア用のパスワードを指定するSSLClientCertPassword と一緒に使用します。 SSLClientCert が設定され、SSLClientCertSubject が設定されている場合、ドライバーは指定されたサブジェクトに一致する証明書を検索します。
証明書ストアの指定はプラットフォームによって異なります。 Windowsでは、証明書ストアはMY(個人証明書)などの名前で識別されますが、Java では、証明書ストアは通常、証明書とオプションの秘密キーを含むファイルです。
Windows の共通のユーザとシステム証明書ストアの指定は以下のとおりです。
| MY | 個人証明書と関連付けられた秘密キーを格納している証明書ストア。 |
| CA | 証明機関の証明書。 |
| ROOT | ルート証明書。 |
| SPC | ソフトウェア発行元証明書。 |
PFXFile タイプの場合、このプロパティをファイル名に設定します。PFXBlob タイプの場合は、このプロパティをPKCS12 形式のファイルのバイナリコンテンツに設定します。
SSL クライアント認証用のTLS/SSL クライアント証明書を格納するキーストアの種類を指定します。プラットフォームや証明書のソースに応じて、さまざまなキーストア形式から選択できます。
このプロパティは、クライアント証明書を指定するために使用されるキーストアの形式と場所を決定します。 サポートされている値には、プラットフォーム固有およびユニバーサルなキーストア形式があります。 有効な値と使用方法は以下のとおりです。
| 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 形式の証明書を含む文字列の名前です。 |
| BCFKSFILE | この証明書ストアは、Bouncy Castle キーストアを含むファイルの名前です。 |
| BCFKSBLOB | この証明書ストアは、Bouncy Castle キーストアを含む文字列(Base-64エンコード)です。 |
TLS/SSL クライアント証明書ストアにアクセスするために必要なパスワードを指定します。選択した証明書ストアの種類がアクセスにパスワードを必要とする場合、このプロパティを使用します。
このプロパティは、パスワードで保護された証明書ストアを開くために必要なパスワードを指定します。 このプロパティは、PFX やJKS タイプのストアによく推奨されるように、復号化のためにパスワードを必要とする証明書ストアを使用する場合に必要です。
証明書ストアの種類がパスワードを必要としない場合(Windows のUSER やMACHINE など)、このプロパティは空白のままにできます。 認証エラーを回避するため、パスワードが指定された証明書ストアに関連付けられたものと一致していることを確認してください。
TLS/SSL クライアント証明書のサブジェクトを指定し、証明書ストアで場所を検索します。 CN=www.server.com, C=US のように、識別名フィールドのカンマ区切りのリストを使用します。ワイルドカード * は、ストアの先頭の証明書を選択します。
このプロパティは、サブジェクトに基づいてロードするクライアント証明書を決定します。Sync App は、指定されたサブジェクトに完全に一致する証明書を検索します。 完全に一致するものが見つからない場合、Sync App はサブジェクトの値を含む証明書を検索します。 一致する証明書がない場合、証明書は選択されません。
サブジェクトは、識別名フィールドと値のカンマ区切りリストという標準の形式に従うべきです。 例えば、CN=www.server.com, OU=Test, C=US です。一般的なフィールドには以下のものが含まれます。
| フィールド | 説明 |
| CN | 共通名。一般的には、www.server.com のようなホスト名です。 |
| O | 法人名 |
| OU | 法人の部署名 |
| L | 法人の住所(市町村名) |
| S | 法人の住所(都道府県) |
| C | 国名 |
| E | E メールアドレス |
Note: フィールドにカンマなどの特殊文字が含まれている場合は、値を引用符で囲む必要があります。例:CN="Example, Inc.", C=US。
Couchbase サーバーに接続するときにTLS/SSL をネゴシエートするかどうか。
これが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 を使用して接続する際に、サーバーが受け入れ可能な証明書を指定します。
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 |
これを指定しない場合は、マシンが信用するすべての証明書が受け入れられます。
すべての証明書の受け入れを示すには、'*'を使用します。セキュリティ上の理由から、これはお勧めできません。
このセクションでは、本プロバイダーの接続文字列で設定可能なFirewall プロパティの全リストを提供します。
| プロパティ | 説明 |
| FirewallType | provider がプロキシベースのファイアウォールを介してトラフィックをトンネリングするために使用するプロトコルを指定します。 |
| FirewallServer | ファイアウォールを通過し、ユーザーのクエリをネットワークリソースに中継するために使用されるプロキシのIP アドレス、DNS 名、またはホスト名を識別します。 |
| FirewallPort | プロキシベースのファイアウォールで使用するTCP ポートを指定します。 |
| FirewallUser | プロキシベースのファイアウォールに認証するアカウントのユーザーID を識別します。 |
| FirewallPassword | プロキシベースのファイアウォールで認証するユーザーアカウントのパスワードを指定します。 |
provider がプロキシベースのファイアウォールを介してトラフィックをトンネリングするために使用するプロトコルを指定します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
Note:デフォルトでは、Sync App はシステムプロキシに接続します。この動作を無効化し、次のプロキシタイプのいずれかに接続するには、ProxyAutoDetect をfalse に設定します。
次の表は、サポートされている各プロトコルのポート番号情報です。
| プロトコル | デフォルトポート | 説明 |
| TUNNEL | 80 | Sync App がCouchbase への接続を開くポート。トラフィックはこの場所のプロキシを経由して行き来します。 |
| SOCKS4 | 1080 | Sync App がCouchbase への接続を開くポート。SOCKS 4 は次にFirewallUser 値をプロキシに渡し、接続リクエストが許容されるかどうかを決定します。 |
| SOCKS5 | 1080 | Sync App がCouchbase にデータを送信するポート。SOCKS 5 プロキシに認証が必要な場合には、FirewallUser およびFirewallPassword をプロキシが認識する認証情報に設定します。 |
HTTP プロキシへの接続には、ProxyServer およびProxyPort ポートを使ってください。HTTP プロキシへの認証には、ProxyAuthScheme、ProxyUser、およびProxyPassword を使ってください。
ファイアウォールを通過し、ユーザーのクエリをネットワークリソースに中継するために使用されるプロキシのIP アドレス、DNS 名、またはホスト名を識別します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
プロキシベースのファイアウォールで使用するTCP ポートを指定します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
プロキシベースのファイアウォールに認証するアカウントのユーザーID を識別します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
プロキシベースのファイアウォールで認証するユーザーアカウントのパスワードを指定します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
このセクションでは、本プロバイダーの接続文字列で設定可能なProxy プロパティの全リストを提供します。
| プロパティ | 説明 |
| ProxyAutoDetect | provider が、手動で指定されたプロキシサーバーを使用するのではなく、既存のプロキシサーバー構成についてシステムプロキシ設定をチェックするかどうかを指定します。 |
| ProxyServer | HTTP トラフィックをルートするプロキシサーバーのホストネームもしくはIP アドレス。 |
| ProxyPort | クライアントとの間でHTTP トラフィックをルーティングするために予約された、指定されたプロキシサーバー(ProxyServer 接続プロパティで設定)のTCP ポート。 |
| ProxyAuthScheme | ProxyServer 接続プロパティで指定されたプロキシサーバーに対して認証する際にprovider が使用する認証方法を指定します。 |
| ProxyUser | ProxyServer 接続プロパティで指定されたプロキシサーバーに登録されているユーザーアカウントのユーザー名。 |
| ProxyPassword | ProxyUser 接続プロパティで指定されたユーザーに紐付けられたパスワード。 |
| ProxySSLType | ProxyServer 接続プロパティで指定されたプロキシサーバーに接続する際に使用するSSL タイプ。 |
| ProxyExceptions | ProxyServer 接続プロパティで設定されたプロキシサーバー経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。 |
provider が、手動で指定されたプロキシサーバーを使用するのではなく、既存のプロキシサーバー構成についてシステムプロキシ設定をチェックするかどうかを指定します。
この接続プロパティをTrue に設定すると、Sync App は既存のプロキシサーバー構成についてシステムプロキシ設定をチェックします(プロキシサーバーの詳細を手動で入力する必要はありません)。
この接続プロパティは他のプロキシ設定より優先されます。特定のプロキシサーバーに接続するためにSync App を手動で構成する場合は、False に設定します。
HTTP プロキシへの接続には、ProxyServer を参照してください。SOCKS やトンネリングなどの他のプロキシには、FirewallType を参照してください。
HTTP トラフィックをルートするプロキシサーバーのホストネームもしくはIP アドレス。
ProxyAutoDetect がFalse に設定されている場合、Sync App はこの接続プロパティで指定されたプロキシサーバーを通じてのみHTTP トラフィックをルーティングします。ProxyAutoDetect がTrue に設定されている場合(デフォルト)、Sync App は代わりにシステムプロキシ設定で指定されたプロキシサーバーを介してHTTP トラフィックをルーティングします。
クライアントとの間でHTTP トラフィックをルーティングするために予約された、指定されたプロキシサーバー(ProxyServer 接続プロパティで設定)のTCP ポート。
ProxyAutoDetect がFalse に設定されている場合、Sync App はこの接続プロパティで指定されたプロキシサーバーポートを通じてのみHTTP トラフィックをルーティングします。ProxyAutoDetect がTrue に設定されている場合(デフォルト)、Sync App は代わりにシステムプロキシ設定で指定されたプロキシサーバーポートを介してHTTP トラフィックをルーティングします。
その他のプロキシタイプについては、FirewallType を参照してください。
ProxyServer 接続プロパティで指定されたプロキシサーバーに対して認証する際にprovider が使用する認証方法を指定します。
認証タイプは次のいずれかです。
"NONE" 以外のすべての値については、ProxyUser およびProxyPassword 接続プロパティも設定する必要があります。
SOCKS 5 認証のような他の認証タイプを使用するには、FirewallType を参照してください。
ProxyServer 接続プロパティで指定されたプロキシサーバーに登録されているユーザーアカウントのユーザー名。
ProxyUser および ProxyPassword 接続プロパティは、ProxyServer で指定されたHTTP プロキシに対して接続よび認証するために使用されます。
ProxyAuthScheme で利用可能な認証タイプを1つ選択した後、このプロパティを以下のように設定します。
| ProxyAuthScheme の値 | ProxyUser に設定する値 |
| BASIC | プロキシサーバーに登録されているユーザーのユーザー名。 |
| DIGEST | プロキシサーバーに登録されているユーザーのユーザー名。 |
| NEGOTIATE | プロキシサーバーが属するドメインまたは信頼されたドメイン内の有効なユーザーであるWindows ユーザーのユーザー名。user@domain またはdomain\user の形式で指定。 |
| NTLM | プロキシサーバーが属するドメインまたは信頼されたドメイン内の有効なユーザーであるWindows ユーザーのユーザー名。user@domain またはdomain\user の形式で指定。 |
| NONE | ProxyPassword 接続プロパティは設定しないでください。 |
Sync App は、ProxyAutoDetect がFalse に設定されている場合にのみ、このユーザー名を使用します。ProxyAutoDetect がTrue に設定されている場合(デフォルト)、Sync App は代わりにシステムのプロキシ設定で指定されているユーザー名を使用します。
ProxyUser 接続プロパティで指定されたユーザーに紐付けられたパスワード。
ProxyUser および ProxyPassword 接続プロパティは、ProxyServer で指定されたHTTP プロキシに対して接続よび認証するために使用されます。
ProxyAuthScheme で利用可能な認証タイプを1つ選択した後、このプロパティを以下のように設定します。
| ProxyAuthScheme の値 | ProxyPassword に設定する値 |
| BASIC | ProxyUser で指定したプロキシサーバーユーザーに紐付けられたパスワード。 |
| DIGEST | ProxyUser で指定したプロキシサーバーユーザーに紐付けられたパスワード。 |
| NEGOTIATE | ProxyUser で指定したWindows ユーザーアカウントに紐付けられたパスワード。 |
| NTLM | ProxyUser で指定したWindows ユーザーアカウントに紐付けられたパスワード。 |
| NONE | ProxyPassword 接続プロパティは設定しないでください。 |
SOCKS 5 認証もしくは、トンネリングは、FirewallType を参照してください。
Sync App は、ProxyAutoDetect がFalse に設定されている場合にのみ、このパスワードを使用します。ProxyAutoDetect がTrue に設定されている場合(デフォルト)、Sync App は代わりにシステムのプロキシ設定で指定されているパスワードを使用します。
ProxyServer 接続プロパティで指定されたプロキシサーバーに接続する際に使用するSSL タイプ。
このプロパティは、ProxyServer で指定されたHTTP プロキシへの接続にSSL を使用するかどうかを決定します。この接続プロパティには、以下の値を設定できます。
| AUTO | デフォルト設定。ProxyServer がHTTPS URL に設定されている場合、Sync App は、TUNNEL オプションを使用します。ProxyServer がHTTP URL に設定されている場合、コンポーネントはNEVER オプションを使用します。 |
| ALWAYS | 接続は、常にSSL 有効となります。 |
| NEVER | 接続は、SSL 有効になりません。 |
| TUNNEL | 接続はトンネリングプロキシ経由で行われます。プロキシサーバーがリモートホストへの接続を開き、プロキシを経由して通信が行われます。 |
ProxyServer 接続プロパティで設定されたプロキシサーバー経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。
ProxyServer は、このプロパティで定義されたアドレスを除くすべてのアドレスに使用されます。セミコロンを使用してエントリを区切ります。
Sync App はデフォルトでシステムプロキシ設定を使用するため、それ以上の設定は必要ありません。この接続にプロキシ例外を明示的に設定する場合は、ProxyAutoDetect をFalse に設定します。
このセクションでは、本プロバイダーの接続文字列で設定可能なLogging プロパティの全リストを提供します。
| プロパティ | 説明 |
| LogModules | ログファイルに含めるコアモジュールを指定します。セミコロンで区切られたモジュール名のリストを使用します。デフォルトでは、すべてのモジュールがログに記録されます。 |
ログファイルに含めるコアモジュールを指定します。セミコロンで区切られたモジュール名のリストを使用します。デフォルトでは、すべてのモジュールがログに記録されます。
このプロパティは、含めるログモジュールを指定することでログファイルの内容をカスタマイズすることができます。 ログモジュールは、クエリ実行、メタデータ、SSL 通信などの異なる領域にログ情報を分類します。 各モジュールは4文字のコードで表され、文字の名前の場合は末尾にスペースが必要なものもあります。
例えば、EXEC はクエリ実行をログに記録し、INFO は一般的なプロバイダーメッセージをログに記録します。 複数のモジュールを含めるには、次のように名前をセミコロンで区切ります:INFO;EXEC;SSL。
Verbosity 接続プロパティは、このプロパティで指定されたモジュールベースのフィルタリングよりも優先されます。 Verbosity レベルを満たし、指定されたモジュールに属するログエントリのみが記録されます。 利用可能なすべてのモジュールをログファイルに含めるには、このプロパティを空白のままにします。
利用可能なモジュールの完全なリストとログの設定に関する詳細な手引きについては、ログ の「高度なログの記録」セクションを参照してください。
このセクションでは、本プロバイダーの接続文字列で設定可能なSchema プロパティの全リストを提供します。
| プロパティ | 説明 |
| Location | テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリの場所を指定します。サービスの要件に応じて、これは絶対パスまたは相対パスのいずれかで表されます。 |
| BrowsableSchemas | レポートされるスキーマを利用可能なすべてのスキーマのサブセットに制限するオプション設定。例えば、 BrowsableSchemas=SchemaA,SchemaB,SchemaC です。 |
| Tables | レポートされるテーブルを利用可能なすべてのテーブルのサブセットに制限するオプション設定。例えば、 Tables=TableA,TableB,TableC です。 |
| Views | レポートされたビューを使用可能なテーブルのサブセットに制限するオプション設定。例えば、 Views=ViewA,ViewB,ViewC です。 |
| 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. |
テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリの場所を指定します。サービスの要件に応じて、これは絶対パスまたは相対パスのいずれかで表されます。
Location プロパティは、定義をカスタマイズしたり(例えば、カラム名を変更する、カラムを無視するなど)、新しいテーブル、ビュー、またはストアドプロシージャでデータモデルを拡張する場合にのみ必要です。
指定しない場合、デフォルトの場所は%APPDATA%\\CData\\Couchbase Data Provider\\Schema となり、%APPDATA%はユーザーのコンフィギュレーションディレクトリに設定されます:
| プラットフォーム | %APPDATA% |
| Windows | APPDATA 環境変数の値 |
| Linux | ~/.config |
レポートされるスキーマを利用可能なすべてのスキーマのサブセットに制限するオプション設定。例えば、 BrowsableSchemas=SchemaA,SchemaB,SchemaC です。
利用可能なデータベーススキーマをすべてリストすると余分な時間がかかり、パフォーマンスが低下します。 接続文字列にスキーマのリストを指定することで、時間を節約しパフォーマンスを向上させることができます。
レポートされるテーブルを利用可能なすべてのテーブルのサブセットに制限するオプション設定。例えば、 Tables=TableA,TableB,TableC です。
データベースによっては、利用可能なすべてのテーブルをリストするのに時間がかかり、パフォーマンスが低下する場合があります。 接続文字列にテーブルのリストを指定することで、時間を節約しパフォーマンスを向上させることができます。
利用可能なテーブルがたくさんあり、すでに作業したいテーブルが決まっている場合、このプロパティを使用して対象のテーブルのみに表示を制限することができます。これを行うには、カンマ区切りのリストで使用したいテーブルを指定します。各テーブルは、角かっこ、二重引用符、またはバッククオートを使用してエスケープされた特殊文字列を含む有効なSQL 識別子である必要があります。 例えば、Tables=TableA,[TableB/WithSlash],WithCatalog.WithSchema.`TableC With Space` です。
Note:複数のスキーマまたはカタログを持つデータソースに接続する場合は、表示する各テーブルを完全修飾名で指定する必要があります。これにより、複数のカタログやスキーマに存在するテーブルが混同されることを防ぎます。
レポートされたビューを使用可能なテーブルのサブセットに制限するオプション設定。例えば、 Views=ViewA,ViewB,ViewC です。
データベースによっては、利用可能なすべてのビューをリストするのに時間がかかり、パフォーマンスが低下する場合があります。 接続文字列にビューのリストを指定することで、時間を節約しパフォーマンスを向上させることができます。
利用可能なビューがたくさんあり、すでに作業したいビューが決まっている場合、このプロパティを使用して対象のビューのみに表示を制限することができます。これを行うには、カンマ区切りのリストで使用したいビューを指定します。各ビューは、角かっこ、二重引用符、またはバッククオートを使用してエスケープされた特殊文字列を含む有効なSQL 識別子である必要があります。 例えば、Views=ViewA,[ViewB/WithSlash],WithCatalog.WithSchema.`ViewC With Space` です。
Note:複数のスキーマまたはカタログを持つデータソースに接続する場合は、確認する各ビューを完全修飾名で指定する必要があります。これにより、複数のカタログやスキーマに存在するビューが混同されることを防ぎます。
テーブルを検出するときにどのAnalysis dataverse をスキャンするか。
このプロパティはデフォルトでは空です。つまり、すべてのdataverse がスキャンされ、DataverseSeparator に記載されているようにテーブル名が生成されます。
このプロパティを空白以外の値に割り当てると、Sync App は対応するdataverse のみをスキャンします(例えば、"Default" に設定するとDefault dataverse がスキャンされます)。1つのdataverse しかスキャンされていないため、テーブル名の先頭にdataverse 名は付きません。 以前のバージョンのSync App から使用していて、後方互換性が必要な場合は、このプロパティを"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 にあるバケットからテーブルとカラムをどのように作成するかを決定します。
以下のオプションのカンマ区切りのリストです。
| 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 よりも柔軟なフレーバー検出を行います。 |
| RowScan | バケットからドキュメントのサンプルを読み出し、ヒューリスティックにデータ型を決定します。RowScanDepth はスキャンするドキュメントの数を決定します。フレーバー検出は行いません。 |
| None | RowScan に似ていますが、検出された型ではなく文字列型を持つカラムを常に返します。 |
データ型を決定する前にスキャンする各フィールドの値の最大数。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
フィールドのデータ型を決定する前に、サンプリングされたドキュメントのすべてのフィールドからスキャンする値の最大数。 このプロパティは、Couchbase Infer コマンドを使用しているときに自動スキーマ検出 の追加設定を有効にします。このプロパティを使用するにはTypeDetectionScheme もInfer に設定する必要があります。
バケット内で利用可能なカラムを探すためにスキャンするドキュメント数の最大値。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
バケット内で利用可能なカラムを探すためにスキャンするドキュメント数の最大値。Infer コマンドは、ここで指定されたサイズのドキュメントのランダムサンプルをスキャンすることにより、カラムのメタデータを返します。
大きい値を設定すると、パフォーマンスが低下する場合があります。小さな値を設定すると、特にnull データがある場合に、カラムとデータ型が正しく決定されないことがあります。
このプロパティは、Couchbase Infer コマンドを使用しているときに自動スキーマ検出 の追加設定を有効にします。このプロパティを使用するにはTypeDetectionScheme もInfer に設定する必要があります。
異なるスキーマが同じフレーバーだと見なされる類似度を指定します。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
このプロパティは、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.
By default Sync App will only allow queries to use columns that it has found during the metadata discovery process (see TypeDetectionScheme for details). This means that the Sync App 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 Sync App 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 Sync App will assume that they are simple strings.
For example, the Sync App uses column type information to automatically convert dates for comparision since Couchbase cannot natively compare dates directly.
If the Sync App 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 Sync App 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.
By default the Sync App 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 Sync App will not connect.
Whether to allow string values to be treated as numbers.
By default this property is enabled and the Sync App 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.
The Sync App will expose array fields within a bucket as a separate child table, such as in the Games_scores example described in 自動スキーマ検出.
By default the Sync App 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 サーバー上のテーブルを検出するためにどれだけの努力をするか。
利用可能な値は以下のとおりです。
| Full | Sync App は利用可能なバケットを検出し、それらの各バケットの内側を見て子テーブルを探します。これにより、ネストされたデータにアクセスする最も柔軟な方法が提供されますが、サーバー上の各バケットにプライマリインデックスがあることが必要です。 |
| Basic | Sync App は利用可能なバケットを検出しますが、その中で子テーブルを探すことはしません。これは、スキーマ検出の時間を削減したい場合、またはバケットにプライマリインデックスがない場合にお勧めします。 |
| None | Sync App はLocation ディレクトリにあるスキーマファイルのみを使用し、サーバー上のバケットを検出しません。このオプションは、スキーマファイルを作成済みの場合にのみ使用してください。スキーマファイルなしでこのオプションを使用すると、利用可能なテーブルがなくなります。 |
Determines the kind of child table model the provider exposes.
By default the Sync App 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 プロパティの全リストを提供します。
| プロパティ | 説明 |
| AllowJSONParameters | Allows raw JSON to be used in parameters when QueryPassthrough is enabled. |
| 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 | フレーバーを示すために使用する記号。 |
| GenerateSchemaFiles | スキーマを生成して保存するユーザーの好みのタイミングを示します。 |
| InsertNullValues | Determines whether an INSERT should include fields that have NULL values. |
| MaxRows | 集計やGROUP BY を使用しないクエリで返される最大行数を指定します。 |
| Other | 特定のユースケースに対して追加の隠しプロパティを指定します。これらは通常のprovider の機能では必要ありません。複数のプロパティを定義するには、セミコロンで区切られたリストを使用します。 |
| Pagesize | Couchbase から返される、1ページあたりの結果の最大数を指定します。この設定は、ほとんどのユースケースに最適化されている、データソースによって設定されたデフォルトのページサイズをオーバーライドします。 |
| PeriodsSeparator | 階層を示すために使用する記号。 |
| PseudoColumns | テーブルカラムとして公開する擬似カラムを指定します。'TableName=ColumnName;TableName=ColumnName' という形式を使用します。デフォルトは空の文字列で、このプロパティを無効にします。 |
| QueryExecutionTimeout | クエリのサーバーサイドのタイムアウトを設定します。タイムアウトエラーを返す前にCouchbase がクエリを実行する期間を決定します。 |
| QueryPassthrough | このオプションは、クエリをCouchbase サーバーにas-is で渡します。 |
| RowScanDepth | テーブルで利用可能なカラムを探すためにスキャンする行数の最大値。 |
| StrictComparison | SQL 入力クエリのフィルタをCouchbase クエリに変換する精度を調整します。 これは、値のカンマ区切りリストに設定できます。各値はdate、number、boolean、またはstring のいずれかです。 |
| Timeout | provider がタイムアウトエラーを返すまでにサーバーからの応答を待機する最大時間を秒単位で指定します。デフォルトは60秒です。タイムアウトを無効にするには0を設定します。 |
| 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. |
| UserDefinedViews | カスタムビューを定義するJSON 構成ファイルへのファイルパスを指定します。provider は、このファイルで指定されたビューを自動的に検出して使用します。 |
| UseTransactions | Specifies whether to use N1QL transactions when executing queries. |
| ValidateJSONParameters | Allows the provider to validate that string parameters are valid JSON before sending the query to Couchbase. |
Allows raw JSON to be used in parameters when QueryPassthrough is enabled.
This option affects how string parameters are handled when using direct N1QL and SQL++ queries through QueryPassthrough. For example, consider this query:
INSERT INTO `bucket` (KEY, VALUE) VALUES ("1", @x)
By default, this option is disabled and string parameters are quoted and escaped into JSON strings. That means that any value can be safely used as a string parameter, but it also means that parameters cannot be used as raw JSON documents:
/*
* If @x is set to: test value " contains quote
*
* Result is a valid query
*/
INSERT INTO `bucket` (KEY, VALUE) VALUES ("1", "test value \" contains quote")
/*
* If @x is set to: {"a": ["valid", "JSON", "value"]}
*
* Result contains string instead of JSON document
*/
INSERT INTO `bucket` (KEY, VALUE) VALUES ("1", "{\"a\": [\"valid\", \"JSON\", \"value\"]})
When this option is enabled, string parameters are assumed to be valid JSON. This means that raw JSON documents can be used as parameters, but it also means that all simple strings must be escaped:
/*
* If @x is set to: test value " contains quote
*
* Result is an invalid query
*/
INSERT INTO `bucket` (KEY, VALUE) VALUES ("1", test value " contains quote)
/*
* If @x is set to: {"a": ["valid", "JSON", "value"]}
*
* Result is a JSON document
*/
INSERT INTO `bucket` (KEY, VALUE) VALUES ("1", {"a": ["valid", "JSON", "value"]})
Please refer to ValidateJSONParameters for more details on how parameters are validated when this option is enabled.
子テーブルを示すために使用する記号。
バケット下にある配列の子テーブルを作成する際、Sync App は、この区切り文字と各パスエレメントを使用して、ベーステーブルの名前をコンカテネートすることによって子テーブルの名前を生成します。
例えば、このドキュメントがバケット"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.
The default RAM quota, in megabytes, to use when inserting buckets via the CREATE TABLE syntax.
Analytics dataverse およびscopes/collections を示すために使用する記号。
Analytics サービスを使用すると、Sync App はすべての利用可能な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.
デフォルトで、ネスト配列はJSON 文字列として返されます。FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。これは短い配列の場合にのみ推奨されます。
ネスト配列から返す要素の数にFlattenArrays を設定します。特定されたエレメントはカラムとして返されます。Zero-base のインデックスはカラム名にコンカテネートされます。他のエレメントは無視されます。
例えば、文字列の配列からエレメントのアービトラリー数を返すことができます。
["FLOW-MATIC","LISP","COBOL"]FlattenArrays が1に設定されている場合、配列は次のテーブルのようにフラット化されます。
| カラム名 | カラム値 |
| languages.0 | FLOW-MATIC |
フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。
フラット化されたオブジェクトプロパティとしてカラムを表示するには、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 |
フレーバーを示すために使用する記号。
Sync App がDocType かInfer TypeDetectionScheme のいずれかを使用してフレーバーテーブルを検出すると、基底のバケット名、この区切り文字、およびバケットのプライマリフレーバーの値をコンカテネートしてフレーバーテーブルに名前を付けます。
例えば、Sync App が"beer-sample" バケットで"docType = 'beer'" というフレーバーを検出すると、"beer" doctype を持つ"beer-sample" 内のドキュメントのみを含む"beer-sample.beer" テーブルが生成されます。
スキーマを生成して保存するユーザーの好みのタイミングを示します。
GenerateSchemaFiles を使用すると、自動スキーマ検出 によって識別されたテーブル定義を保存できます。 このプロパティは、Location で指定されたパスの.rsd ファイルにスキーマをアウトプットします。
有効な設定は次のとおりです。
GenerateSchemaFiles をOnUse に設定すると、Sync App はSELECT クエリを実行したときにスキーマを生成します。スキーマはクエリのそれぞれの参照されたテーブルに対して生成されます。
GenerateSchemaFiles をOnCreate に設定すると、CREATE TABLE クエリが実行されたときにのみスキーマが生成されます。
このプロパティのもう一つの使い方は、接続するときにデータベース内のすべてのテーブルのスキーマを取得することです。これには、GenerateSchemaFiles をOnStart に設定して接続します。
データ構造が変化する場合には、GenerateSchemaFiles をNever に設定して動的なスキーマを使うことを検討してください。動的なスキーマの詳細については、自動スキーマ検出 を参照してください。
スキーマファイルはシンプルな形式となっており、変更は簡単です。詳しくは、カスタムスキーマ定義 を参照してください。
Determines whether an INSERT should include fields that have NULL values.
By default the Sync App 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 を使用しないクエリで返される最大行数を指定します。
このプロパティは、集計やGROUP BY 句を含まないクエリに対してSync App が返す行数の上限を設定します。 この制限により、クエリがデフォルトで過度に大きな結果セットを返さないようにします。
クエリにLIMIT 句が含まれている場合、クエリで指定された値がMaxRows 設定よりも優先されます。 MaxRows が"-1" に設定されている場合、LIMIT 句が明示的にクエリに含まれていない限り、行の制限は行われません。
このプロパティは、非常に大きなデータセットを返す可能性のあるクエリを実行する際に、パフォーマンスを最適化し過剰なリソース消費を防ぐのに役立ちます。
特定のユースケースに対して追加の隠しプロパティを指定します。これらは通常のprovider の機能では必要ありません。複数のプロパティを定義するには、セミコロンで区切られたリストを使用します。
このプロパティは、シニアユーザーが特定のシナリオに対して隠しプロパティを設定できるようにします。 これらの設定は通常のユースケースには必要ありませんが、特定の要件に対応したり、追加の機能を提供したりすることができます。 複数のプロパティをセミコロン区切りのリストで定義できます。
Note: 特定のシナリオや問題に対処するためにサポートチームから助言があった場合にのみ、これらのプロパティを設定することを強く推奨します。
複数のプロパティをセミコロン区切りリストで指定します。
| DefaultColumnSize | データソースがメタデータにカラムの長さを提供しない場合に、文字列フィールドのデフォルトの長さを設定します。デフォルト値は2000です。 |
| ConvertDateTimeToGMT | 日時の値を、マシンのローカルタイムではなくGMT グリニッジ標準時に変換するかどうかを決定します。 |
| RecordToFile=filename | 基底のソケットデータ転送を指定のファイルに記録します。 |
Couchbase から返される、1ページあたりの結果の最大数を指定します。この設定は、ほとんどのユースケースに最適化されている、データソースによって設定されたデフォルトのページサイズをオーバーライドします。
クエリする特定のオブジェクトやサービスエンドポイントの結果を最適化するために、デフォルトのページサイズを調整したい場合があります。 ページサイズを大きくするとパフォーマンスが向上するかもしれませんが、ページあたりのメモリ消費量が増える可能性もあることに注意してください。
階層を示すために使用する記号。
オブジェクトと配列をフラット化するとき、Sync App はこの値を使って異なるレベルのオブジェクトと配列を分離します。例えば、Couchbase サーバーがこのようなドキュメントを返す(そしてFlattenObjects が有効になっている)とき、ピリオド区切り文字が"." に設定されている場合は、Sync App は"geo.latitude" と"geo.longitude" というカラムを返します。
{
"geo": {
"latitude": 35.9132,
"longitude": -79.0558
}
}
テーブルカラムとして公開する擬似カラムを指定します。'TableName=ColumnName;TableName=ColumnName' という形式を使用します。デフォルトは空の文字列で、このプロパティを無効にします。
このプロパティを使用すると、Sync App がテーブルカラムとして公開する擬似カラムを定義できます。
個々の擬似カラムを指定するには、以下の形式を使用します。"Table1=Column1;Table1=Column2;Table2=Column3"
すべてのテーブルのすべての擬似カラムを含めるには、次のようにします:"*=*"
クエリのサーバーサイドのタイムアウトを設定します。タイムアウトエラーを返す前にCouchbase がクエリを実行する期間を決定します。
デフォルトは-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" プロパティを設定することで変更できます。
このオプションは、クエリをCouchbase サーバーにas-is で渡します。
これが設定されていると、クエリはCouchbase に直接渡されます。
テーブルで利用可能なカラムを探すためにスキャンする行数の最大値。
テーブルのカラムはテーブル行をスキャンすることで決定される必要があります。この値はスキャンされる行数の最大値を設定します。
大きい値を設定すると、パフォーマンスが低下する場合があります。小さい値を設定すると、特にnull データがある場合には、データ型を正しく判定できない場合があります。
SQL 入力クエリのフィルタをCouchbase クエリに変換する精度を調整します。 これは、値のカンマ区切りリストに設定できます。各値はdate、number、boolean、または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';
provider がタイムアウトエラーを返すまでにサーバーからの応答を待機する最大時間を秒単位で指定します。デフォルトは60秒です。タイムアウトを無効にするには0を設定します。
このプロパティは、Sync App が操作をキャンセルする前に操作の完了を待機する最大時間を秒単位で制御します。 操作の完了前にタイムアウト時間が経過すると、Sync App は操作をキャンセルして例外をスローします。
タイムアウトは、クエリや操作全体ではなくサーバーとの個々の通信に適用されます。 例えば、各ページング呼び出しがタイムアウト制限内に完了する場合、クエリは60秒を超えて実行を続けることができます。
このプロパティを0に設定するとタイムアウトが無効になり、操作が成功するか、サーバー側のタイムアウト、ネットワークの中断、またはサーバーのリソース制限などの他の条件で失敗するまで無期限に実行されます。 このプロパティは慎重に使用してください。長時間実行される操作がパフォーマンスを低下させたり、応答しなくなる可能性があるためです。
Specifies how a document must be stored for a transaction to succeed. Specifies whether to use N1QL transactions when executing queries.
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.
If transactions are enabled, then the Sync App 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.
By default the Sync App 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 Sync App 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 Sync App 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.
Normally the Sync App 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 )
カスタムビューを定義するJSON 構成ファイルへのファイルパスを指定します。provider は、このファイルで指定されたビューを自動的に検出して使用します。
このプロパティを使用すると、UserDefinedViews.json というJSON 形式の構成ファイルを通じてカスタムビューを定義および管理できます。 これらのビューはSync App によって自動的に認識され、標準のデータベースビューのようにカスタムSQL クエリを実行できるようになります。 JSON ファイルは、各ビューをルート要素として定義し、その子要素として"query" を持ちます。この"query" にはビューのSQL クエリが含まれています。次に例を示します。
{
"MyView": {
"query": "SELECT * FROM Customer WHERE MyColumn = 'value'"
},
"MyView2": {
"query": "SELECT * FROM MyTable WHERE Id IN (1,2,3)"
}
}
このプロパティを使用して、1つのファイルに複数のビューを定義し、ファイルパスを指定できます。 例:UserDefinedViews=C:\Path\To\UserDefinedViews.json。 このプロパティを使用すると、指定されたビューのみがSync App によって検知されます。
詳しくは、ユーザー定義ビュー を参照してください。
Specifies whether to use N1QL transactions when executing queries.
By default the Sync App 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.
Allows the provider to validate that string parameters are valid JSON before sending the query to Couchbase.
When AllowJSONParameters and QueryPassthrough are enabled, the query parameters given to the Sync App will be treated as raw JSON documents instead of arbitrary string values. This option controls what happens when invalid JSON is given to the Sync App in this mode.
When this option is enabled, the Sync App will check that all string parameters can be parsed as valid JSON. If any cannot be, an error will be raised and the query will not be run.
When this option is disabled, no check is performed and all string parameter values are substituted into the query directly. This makes executing prepared statements faster, but less safe since invalid N1QL or SQL++ may be sent to the Couchbase.