Couchbase Connector for CData Sync

Build 22.0.8479
  • Couchbase
    • 接続の確立
    • NoSQL データベース
      • 自動スキーマ検出
      • クエリマッピング
      • 垂直フラット化
      • ユーザー定義関数
      • JSON 関数
      • カスタムスキーマ定義
      • カスタムスキーマ例
    • 高度な機能
      • SSL の設定
      • ファイアウォールとプロキシ
    • データモデル
    • 接続文字列オプション
      • Authentication
        • AuthScheme
        • User
        • Password
        • CredentialsFile
        • Server
        • CouchbaseService
        • ConnectionMode
        • DNSServer
        • N1QLPort
        • AnalyticsPort
        • WebConsolePort
      • SSL
        • SSLClientCert
        • SSLClientCertType
        • SSLClientCertPassword
        • SSLClientCertSubject
        • UseSSL
        • SSLServerCert
      • Firewall
        • FirewallType
        • FirewallServer
        • FirewallPort
        • FirewallUser
        • FirewallPassword
      • Proxy
        • ProxyAutoDetect
        • ProxyServer
        • ProxyPort
        • ProxyAuthScheme
        • ProxyUser
        • ProxyPassword
        • ProxySSLType
        • ProxyExceptions
      • Logging
        • LogModules
      • Schema
        • Location
        • BrowsableSchemas
        • Tables
        • Views
        • Dataverse
        • TypeDetectionScheme
        • InferNumSampleValues
        • InferSampleSize
        • InferSimilarityMetric
        • FlexibleSchemas
        • ExposeTTL
        • NumericStrings
        • IgnoreChildAggregates
        • TableSupport
        • NewChildJoinsMode
      • Miscellaneous
        • AllowJSONParameters
        • ChildSeparator
        • CreateTableRamQuota
        • DataverseSeparator
        • FlattenArrays
        • FlattenObjects
        • FlavorSeparator
        • GenerateSchemaFiles
        • InsertNullValues
        • MaxRows
        • Other
        • Pagesize
        • PeriodsSeparator
        • PseudoColumns
        • QueryExecutionTimeout
        • QueryPassthrough
        • RowScanDepth
        • StrictComparison
        • Timeout
        • TransactionDurability
        • TransactionTimeout
        • UpdateNullValues
        • UseCollectionsForDDL
        • UserDefinedViews
        • UseTransactions
        • ValidateJSONParameters

Couchbase Connector for CData Sync

概要

CData Sync App は、Couchbase データをデータベース、データレイク、またはデータウェアハウスに継続的にパイプライン化する簡単な方法を提供し、分析、レポート、AI、および機械学習で簡単に利用できるようにします。

Couchbase コネクタはCData Sync アプリケーションから使用可能で、Couchbase からデータを取得して、サポートされている任意の同期先に移動できます。

Couchbase Connector for CData Sync

接続の確立

Sync App アプリケーションの接続 ページに移動し、接続の追加 パネルで対応するアイコンを選択して、Couchbase への接続を作成します。Couchbase アイコンが利用できない場合は、Add More アイコンをクリックしてCData サイトからCouchbase コネクタをダウンロードおよびインストールします。

必須プロパティは[設定]タブにリストされています。[Advanced]タブには、通常は必要ない接続プロパティが表示されます。

Connecting to Couchbase

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.

Couchbase Analytics

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.

Couchbase Cloud

Set the following to connect to Couchbase Cloud:

  • AuthScheme: Set this to Basic.
  • ConnectionMode: Set this to Cloud.
  • DNSServer: Set this to a DNS server. In most cases, this should be a public DNS service like 1.1.1.1 or 8.8.8.8.
  • SSLServerCert: Set this to the TLS/SSL certificate to be accepted from the server. Any other certificate that is not trusted by the machine is rejected. Alternatively, set "*" to accept all certificates.

Authenticating to Couchbase

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.

Standard Authentication

To authenticate with standard authentication, set the following:

  • AuthScheme: Set this to Basic.
  • User: The user authenticating to Couchbase.
  • Password: The password of the user authenticating to Couchbase.

Client Certificates

The Sync App supports authenticating with client certificates when SSL is enabled. To use client certificate authentication, set the following properties:

  • AuthScheme: Set this to SSLCertificate.
  • SSLClientCertType: The type of client certificate set within SSLClientCert.
  • SSLClientCert: The client certificate in the format given by SSLClientCertType.
  • SSLClientCertPassword (optional): The password of the client certificate, if it is encrypted.
  • SSLClientCertSubject (optional): The subject of the client certificate, which, by default, is the first certificate found in the store. This is required if more than one certificate is available in the certificate store.

Credentials File

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.

  • AuthScheme: Set this to CredentialsFile.
  • CredentialsFile: The path to the credentials file. Refer to Couchbase's documentation for more information on the format of this file.

Couchbase Connector for CData Sync

NoSQL データベース

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 文字列からデータを抽出する方法についての詳細は、JSON 関数 を参照してください。

Couchbase Connector for CData Sync

自動スキーマ検出

子テーブル

バケット内のドキュメントに配列を含むフィールドが含まれる場合、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

NewChildJoinsMode

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" だけが含まれます。

フレーバーの子テーブル

フレーバーテーブルに配列を含めることもできます。これは独自の子テーブルになります。例えば、"Games" というバケットにこれらのドキュメントが含まれる場合:
/* 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"

Couchbase Connector for CData Sync

クエリマッピング

Sync App では、SQL-92 準拠クエリを対応するN1QL またはSQL++ クエリにマッピングします。以下のマッピングは完全ではありませんが、この変換中にSync App が使用する一般的なパターンを理解するのに役立つはずです。

SELECT クエリ

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 サンプルはこれらの追加の変換関数なしで示されています。

USE KEYS Optimizations

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

Aggregate クエリ

N1QL はいくつかのビルトイン集計関数を持ちます。Sync App は、さまざまな集計クエリの拡張的利用を行います。以下にいくつか例を示します。

SQL クエリN1QL クエリ
SELECT Count(*) As Count FROM OrdersSELECT Count(*) AS `count` FROM `Orders`
SELECT Sum(price) As total FROM OrdersSELECT Sum(`price`) As `total` FROM `Orders`
SELECT cust_id, Sum(price) As total FROM Orders GROUP BY cust_id ORDER BY totalSELECT `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 > 250SELECT `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 は既存のドキュメントを参照する必要があります。

子テーブル挿入のもう1つの制限は、multi-valued がすべて同じ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"})

一括挿入ステートメント

一括挿入もサポートされています。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 挿入のように、一括挿入のすべての行も同じ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

フレーバーテーブルの更新

フレーバーテーブルのSELECT と同様に、フレーバーテーブルのUPDATE は常に適切な条件が含まれているため、フレーバーに属するドキュメントのみが影響を受けます。

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

フレーバーテーブルの削除

フレーバーテーブルのSELECT と同様に、フレーバーテーブルのDELETE は常に適切な条件が含まれているため、フレーバーに属するドキュメントのみが影響を受けます。

SQL クエリ N1QL クエリ
DELETE FROM [users.subscriber] WHERE status = 'inactive' DELETE FROM `users` WHERE `docType` = "subscriber" AND status = "inactive"

Couchbase Connector for CData Sync

垂直フラット化

サンプルドキュメント


/* 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"
}

オブジェクト内の値を選択

FlattenObjects プロパティがオブジェクトのフラット化を許容するように設定されている場合、Sync App はオブジェクトをトラバースしてそれらの中のフィールドをカラムとしてマップします。例えば、このクエリは:
SELECT [address.building], [address.street] FROM restaurants
この結果セットを返します:

address.building addres.street
1007 Morris Park Ave

配列内の値を選択

FlattenArrays プロパティが配列のフラット化を許容するように設定されている場合、Sync App は配列をトラバースして個々の値をカラムとしてマップします。例えば、Flatten Arrays が"2" に設定されている場合、このクエリは:
SELECT [address.coord.0], [address.coord.1] FROM restaurants
この結果セットを返します:

address.coord.0 address.coord.1
-73.856077 40.838447

配列のフラット化は、常に2つの項目を含む"address.coord" のように、配列項目の数が事前にわかっている場合にのみ使用してください。任意の数の項目を含むことができる"grades" のような配列の場合は、配列内のすべての値を読み取ることができるため代わりに自動スキーマ検出 に記載されている子テーブルの使用を検討してください。

Couchbase Connector for CData Sync

ユーザー定義関数

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.

Global Functions

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.

Scoped Functions

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]

Couchbase Connector for CData Sync

JSON 関数

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 }
]

JSON_EXTRACT

The JSON_EXTRACT function can extract individual values from a JSON object. The following query returns the values shown below based on the JSON path passed as the second argument to the function:
SELECT Name, JSON_EXTRACT(grades,'[0].grade') AS Grade, JSON_EXTRACT(grades,'[0].score') AS Score FROM Students;

Column NameExample Value
GradeA
Score2

JSON_COUNT

The JSON_COUNT function returns the number of elements in a JSON array within a JSON object. The following query returns the number of elements specified by the JSON path passed as the second argument to the function:
SELECT Name, JSON_COUNT(grades,'[x]') AS NumberOfGrades FROM Students;

Column NameExample Value
NumberOfGrades5

JSON_SUM

The JSON_SUM function returns the sum of the numeric values of a JSON array within a JSON object. The following query returns the total of the values specified by the JSON path passed as the second argument to the function:
SELECT Name, JSON_SUM(score,'[x].score') AS TotalScore FROM Students;

Column NameExample Value
TotalScore 41

JSON_MIN

The JSON_MIN function returns the lowest numeric value of a JSON array within a JSON object. The following query returns the minimum value specified by the JSON path passed as the second argument to the function:
SELECT Name, JSON_MIN(score,'[x].score') AS LowestScore FROM Students;

Column NameExample Value
LowestScore2

JSON_MAX

The JSON_MAX function returns the highest numeric value of a JSON array within a JSON object. The following query returns the maximum value specified by the JSON path passed as the second argument to the function:
SELECT Name, JSON_MAX(score,'[x].score') AS HighestScore FROM Students;

Column NameExample Value
HighestScore14

DOCUMENT

The DOCUMENT function can be used to return an document as a JSON string. DOCUMENT(*) can be used with any type of SELECT query, including queries including other columns, queries including just DOCUMENT(*), and even more complex queries like JOINs.
SELECT [Document.Id], grade, score, DOCUMENT(*) FROM grades
For 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}

When used alone, DOCUMENT(*) returns the structure directly from Couchbase as if a N1QL or SQL++ SELECT * query were used. This means that no Document.Id value will be present since Couchbase does not include it automatically.

SELECT DOCUMENT(*) FROM grades
This query would return:

DOCUMENT
{"grades":{"grade":"A","score":6"}}
{"grades":{"grade":"A","score":10"}}
{"grades":{"grade":"A","score":9"}}
{"grades":{"grade":"B","score":14"}}

Couchbase Connector for CData Sync

カスタムスキーマ定義

自動スキーマ検出 に加え、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>
カスタムスキーマ例 では、上の例を含む完全なスキーマを確認できます。

テーブルプロパティ

上のスキーマは次のプロパティを使って、すべてのテーブルの特定のquality を定義します。すべて必須です。

プロパティ 説明
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 に使用される属性へのパス。子テーブルでない場合は空です。

カラムプロパティ

上のスキーマは次のプロパティを使って、それぞれのカラムの特定のquality を定義します:

プロパティ 説明
name 必須。カラムの名前。小文字。
key 主キーをマークするために使用されます。Document.Id では必須。その他のカラムでは任意。
xs:type 必須。Sync App 内のカラムのタイプ。
other:iskey 必須。キーと同じ値、またはキーが含まれていない場合は"false" にする必要があります。
other:pathspec 必須。これは、other:field 内の区切り文字を解釈するために使用されます。
other:field 必須。Couchbase のフィールドへのパス。

垂直方向のフラット化によって生成されるフィールドは、配列値とフィールド値を分離するために同じ構文を使用します。これにより、Sync App が"numeric_object.0" と"array.0" を公開するような場合にあいまいさが生じる可能性があります。

{
  "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`" が生成されます。

Couchbase Connector for CData Sync

カスタムスキーマ例

このセクションには、完全なスキーマが含まれています。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 Connector for CData Sync

高度な機能

このセクションでは、Couchbase Sync App の高度な機能を厳選して説明します。

ユーザー定義ビュー

Sync App を使用すると、事前設定されたクエリによって内容が決定されるユーザー定義ビューと呼ばれる仮想テーブルを定義できます。 このビューは、ドライバーに発行されるクエリを直接制御できない場合に有効です。 カスタムビューの作成と設定の概要については、ユーザー定義ビュー を参照してください。

SSL の設定

SSL の設定 を使用して、Sync App が証明書のネゴシエーションをどのように扱うかを調整します。さまざまな証明書形式を選択できます。 詳しくは、接続文字列オプションにあるSSLServerCert プロパティを参照してください。

ファイアウォールとプロキシ

Windows プロキシとHTTP プロキシを含むファイアウォールとプロキシ に合致するようSync App を設定します。トンネル接続を設定することもできます。

クエリ処理

Sync App は、Couchbase にできるだけ多くのSELECT ステートメント処理をオフロードし、残りのクエリをクライアント側のインメモリで処理します。

詳しくはクエリ処理 を参照してください。

ログ

CData ログを調整するために使用可能な設定の概要については、ログ を参照してください。基本的なロギングでは、 次の2つの接続プロパティを設定するだけです。LogModules 接続プロパティを使用してログに記録する情報のサブセットを選択できる、 より洗練されたロギングをサポートする多数の機能があります。

Couchbase Connector for CData Sync

SSL の設定

SSL 設定のカスタマイズ

デフォルトでは、Sync App はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL / TLS のネゴシエーションを試みます。

別の証明書を指定するには、利用可能なフォーマットについてSSLServerCert プロパティを参照してください。

クライアントSSL 証明書

Couchbase Sync App はクライアント証明書の設定もサポートしています。次を設定すれば、クライアント証明書を使って接続できます。

  • SSLClientCert:クライアント証明書のための証明書ストア名。
  • SSLClientCertType:TLS / SSL クライアント証明書を格納するキーストアの種類。
  • SSLClientCertPassword:TLS / SSL クライアント証明書のパスワード。
  • SSLClientCertSubject:TLS / SSL クライアント証明書のサブジェクト。

Couchbase Connector for CData Sync

ファイアウォールとプロキシ

Firewall またはProxy 経由の接続

HTTP プロキシ

Windows のシステムプロキシ経由の接続では、接続プロパティを追加で設定する必要はありません。他のプロキシに接続するには、ProxyAutoDetect をfalse に設定します。

さらにHTTP プロキシへの認証には、ProxyServer とProxyPort に加えてProxyAuthScheme、ProxyUser、およびProxyPassword を設定します。

その他のプロキシ

次のプロパティを設定します。

  • プロキシベースのファイヤーウォールを使用するには、FirewallType、FirewallServer、およびFirewallPort を設定します。
  • 接続をトンネルするには、FirewallType をTUNNEL に設定します。
  • 認証するには、FirewallUser とFirewallPassword を設定します。
  • SOCKS プロキシへの認証には、さらにFirewallType をSOCKS5 に設定します。

Couchbase Connector for CData Sync

データモデル

概要

使用されている接続設定に応じて、Sync App はCouchbase エンティティとリレーショナルテーブルおよびビューとの間に、いくつかの異なるマッピングを提示できます。これらの各機能の詳細については、このドキュメントのNoSQL の部分を参照してください。

  • N1QL クエリサービスに接続する場合、Sync App はCouchbase バケットをリレーショナルテーブルとしてモデル化します。さらに、TypeDetectionScheme がDocType またはInfer に設定されている場合は、Sync App は各バケット内のさまざまな種類のドキュメントを独自のテーブルとして表示します。
  • Analytics サービスに接続する場合、Sync App はCouchbase データセットをリレーショナルビューとしてモデル化します。
  • いずれかのサービスと接続する場合、Sync App はデータの配列を子テーブルまたはビューとして公開することができます。

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.

Dataverses, Scopes and Collections

Couchbase has different ways of grouping buckets and datasets depending on the CouchbaseService and version of Couchbase you are connecting to:

  • Couchbase organizes Analytics datsets into groups called dataverses. By default the Sync App exposes datasets from all dataverses using compound names like Default.users as described in DataverseSeparator. It is important to remember that these compound names must be quoted when used in queries, for example SELECT * FROM [Default.users]
  • You may also set the Dataverse property to limit the the Sync App to exposing a single dataverse. This disables compound names so view names will not include the dataset.
  • When connecting to Couchbase 7 and above, the Sync App will use the scope, collection and bucket/dataset name to build table and view names. For example, a table with a name like crm.accounts.customers exposes the customers collection under the accounts scope of the crm bucket. These must be quoted the same as other compound names when used in queries, for example SELECT * FROM [crm.accounts.customers]

Live Metadata

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

Couchbase Connector for CData Sync

接続文字列オプション

接続文字列プロパティは、接続を確立するために使用できるさまざまなオプションです。このセクションでは、本プロバイダーの接続文字列で設定できるオプションの一覧を示します。詳細については各リンクをクリックしてください。

接続を確立する方法について詳しくは、接続の確立を参照してください。

Authentication


プロパティ説明
AuthSchemeThe type of authentication to use when connecting to Couchbase.
User認証で使用されるCouchbase ユーザーアカウント。
Passwordユーザーの認証で使用されるパスワード。
CredentialsFile複数のユーザーまたはバケットにクレデンシャルを提供する必要がある場合にこのプロパティを使用します。このファイルは他の形式の認証よりも優先されます。
Server接続するCouchbase サーバーのアドレス。
CouchbaseService接続するCouchbase サービスを決定します。デフォルトはN1QL です。利用可能なオプションはN1QL とAnalytics です。
ConnectionModeDetermines how to connect to the Couchbase server. Must be either Direct or Cloud.
DNSServerDetermines what DNS server to use when retrieving Couchbase Capella information.
N1QLPortCouchbase N1QL Endpoint に接続するポート。
AnalyticsPortCouchbase Analytics Endpoint に接続するポート。
WebConsolePortCouchbase Web Console に接続するポート。

SSL


プロパティ説明
SSLClientCertSSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストア。
SSLClientCertTypeTLS/SSL クライアント証明書を格納するキーストアの種類。
SSLClientCertPasswordTLS/SSL クライアント証明書のパスワード。
SSLClientCertSubjectTLS/SSL クライアント証明書のサブジェクト。
UseSSLCouchbase サーバーに接続するときにTLS/SSL をネゴシエートするかどうか。
SSLServerCertTLS/SSL を使用して接続するときに、サーバーが受け入れ可能な証明書。

Firewall


プロパティ説明
FirewallTypeプロキシベースのファイアウォールで使われるプロトコル。
FirewallServerプロキシベースのファイアウォールの名前もしくはIP アドレス。
FirewallPortプロキシベースのファイアウォールのTCP ポート。
FirewallUserプロキシベースのファイアウォールに認証するために使うユーザー名。
FirewallPasswordプロキシベースのファイアウォールへの認証に使われるパスワード。

Proxy


プロパティ説明
ProxyAutoDetectこれは、システムプロキシ設定を使用するかどうかを示します。これは他のプロキシ設定よりも優先されるため、カスタムプロキシ設定を使用するにはProxyAutoDetect をFALSE に設定する必要があります。
ProxyServerHTTP トラフィックをルートするためのプロキシのホストネームもしくはIP アドレス。
ProxyPortProxyServer プロキシが起動しているTCP ポート。
ProxyAuthSchemeProxyServer プロキシへの認証で使われる認証タイプ。
ProxyUserProxyServer プロキシへの認証に使われるユーザー名。
ProxyPasswordProxyServer プロキシへの認証に使われるパスワード。
ProxySSLTypeProxyServer プロキシへの接続時に使用するSSL タイプ。
ProxyExceptionsProxyServer 経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。

Logging


プロパティ説明
LogModulesログファイルに含めるコアモジュール。

Schema


プロパティ説明
Locationテーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリへのパス。
BrowsableSchemasこのプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。
Tablesこのプロパティは、使用可能なテーブルのサブセットにレポートされるテーブルを制限します。例えば、Tables=TableA,TableB,TableC です。
Views使用可能なテーブルのサブセットにレポートされるビューを制限します。例えば、Views=ViewA,ViewB,ViewC です。
Dataverseテーブルを検出するときにどのAnalysis dataverse をスキャンするか。
TypeDetectionSchemeprovider がCouchbase にあるバケットからテーブルとカラムをどのように作成するかを決定します。
InferNumSampleValuesデータ型を決定する前にスキャンする各フィールドの値の最大数。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
InferSampleSizeバケット内で利用可能なカラムを探すためにスキャンするドキュメント数の最大値。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
InferSimilarityMetric異なるスキーマが同じフレーバーだと見なされる類似度を指定します。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
FlexibleSchemasWhether the provider allows queries to use columns that it has not discovered.
ExposeTTLSpecifies whether document TTL information should be exposed.
NumericStringsWhether to allow string values to be treated as numbers.
IgnoreChildAggregatesWhether the provider exposes aggregate columns that are also available as child tables. Ignored if TableSupport is not set to Full.
TableSupportprovider がCouchbase サーバー上のテーブルを検出するためにどれだけの努力をするか。
NewChildJoinsModeDetermines the kind of child table model the provider exposes.

Miscellaneous


プロパティ説明
AllowJSONParametersAllows raw JSON to be used in parameters when QueryPassthrough is enabled.
ChildSeparator子テーブルを示すために使用する記号。
CreateTableRamQuotaThe default RAM quota, in megabytes, to use when inserting buckets via the CREATE TABLE syntax.
DataverseSeparatorAnalytics dataverse およびscopes/collections を示すために使用する記号。
FlattenArraysThe number of elements to expose as columns from nested arrays. Ignored if IgnoreChildAggregates is enabled.
FlattenObjectsフラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。
FlavorSeparatorフレーバーを示すために使用する記号。
GenerateSchemaFilesスキーマを生成して保存するユーザーの好みのタイミングを示します。
InsertNullValuesDetermines whether an INSERT should include fields that have NULL values.
MaxRowsクエリで集計またはグループ化を使用しない場合に返される行数を制限します。これにより、設計時にパフォーマンスの問題を回避できます。
Otherこれらの隠しプロパティは特定のユースケースでのみ使用されます。
PagesizeCouchbase から返されるページあたりの結果の最大数。
PeriodsSeparator階層を示すために使用する記号。
PseudoColumnsこのプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。
QueryExecutionTimeoutクエリのサーバーサイドのタイムアウトを設定します。タイムアウトエラーを返す前にCouchbase がクエリを実行する期間を決定します。
QueryPassthroughこのオプションは、クエリをCouchbase サーバーにas-is で渡します。
RowScanDepthテーブルで利用可能なカラムを探すためにスキャンする行数の最大値。
StrictComparisonSQL 入力クエリのフィルタをCouchbase クエリに変換する精度を調整します。 これは、値のカンマ区切りリストに設定できます。各値はdate、number、boolean、またはstring のいずれかです。
Timeoutタイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。
TransactionDurabilitySpecifies how a document must be stored for a transaction to succeed. Specifies whether to use N1QL transactions when executing queries.
TransactionTimeoutThis sets the amount of time a transaction may execute before it is timed out by Couchbase.
UpdateNullValuesDetermines whether an UPDATE writes NULL values as NULL, or removes them.
UseCollectionsForDDLWhether 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 コンフィギュレーションファイルを指すファイルパス。
UseTransactionsSpecifies whether to use N1QL transactions when executing queries.
ValidateJSONParametersAllows the provider to validate that string parameters are valid JSON before sending the query to Couchbase.
Couchbase Connector for CData Sync

Authentication

このセクションでは、本プロバイダーの接続文字列で設定可能なAuthentication プロパティの全リストを提供します。


プロパティ説明
AuthSchemeThe type of authentication to use when connecting to Couchbase.
User認証で使用されるCouchbase ユーザーアカウント。
Passwordユーザーの認証で使用されるパスワード。
CredentialsFile複数のユーザーまたはバケットにクレデンシャルを提供する必要がある場合にこのプロパティを使用します。このファイルは他の形式の認証よりも優先されます。
Server接続するCouchbase サーバーのアドレス。
CouchbaseService接続するCouchbase サービスを決定します。デフォルトはN1QL です。利用可能なオプションはN1QL とAnalytics です。
ConnectionModeDetermines how to connect to the Couchbase server. Must be either Direct or Cloud.
DNSServerDetermines what DNS server to use when retrieving Couchbase Capella information.
N1QLPortCouchbase N1QL Endpoint に接続するポート。
AnalyticsPortCouchbase Analytics Endpoint に接続するポート。
WebConsolePortCouchbase Web Console に接続するポート。
Couchbase Connector for CData Sync

AuthScheme

The type of authentication to use when connecting to Couchbase.

解説

  • Auto: This option is deprecated and included only for compatibility.
  • Basic: Uses HTTP Basic authentication with User and Password.
  • CredentialsFile: Uses a credentials file. This will require that the CredentialsFile property be set.
  • SSLCertificate: Uses SSL client certificate authentication. Requires that UseSSL be enabled and that SSLClientCert and SSLClientCertType be set.

Note that only Basic authentication is supported when using the "Cloud" ConnectionMode.

Couchbase Connector for CData Sync

User

認証で使用されるCouchbase ユーザーアカウント。

解説

このフィールドは、Password とともに、Couchbase サーバーに対して認証をするために使われます。

Couchbase Connector for CData Sync

Password

ユーザーの認証で使用されるパスワード。

解説

User およびPassword を一緒に使用してサーバーで認証を行います。

Couchbase Connector for CData Sync

CredentialsFile

複数のユーザーまたはバケットにクレデンシャルを提供する必要がある場合にこのプロパティを使用します。このファイルは他の形式の認証よりも優先されます。

解説

複数のユーザーまたはバケットにクレデンシャルを提供する必要がある場合にこのプロパティを使用します。これは他の形式の認証よりも優先されます。

CredentialsFile を以下と同じマークアップを持つファイルへのパスに設定します。

[{"user": "YourUserName1", "pass":"YourPassword1"},
  {"user": "YourUserName2", "pass":"YourPassword2"}] 

Couchbase Connector for CData Sync

Server

接続する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 Connector for CData Sync

CouchbaseService

接続するCouchbase サービスを決定します。デフォルトはN1QL です。利用可能なオプションはN1QL とAnalytics です。

解説

接続するCouchbase サービスを決定します。デフォルトはN1QL です。利用可能なオプションはN1QL とAnalytics です。

Couchbase Connector for CData Sync

ConnectionMode

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:

  • Server
  • N1QLPort
  • AnalyticsPort

Couchbase Connector for CData Sync

DNSServer

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.

Couchbase Connector for CData Sync

N1QLPort

Couchbase N1QL Endpoint に接続するポート。

解説

SSL を使用していない場合のデフォルトは8093 で、SSL を使用している場合のデフォルトは18093 になります。UseSSL を参照してください。

このポートは、CouchbaseService がN1QL に設定されている場合にクエリを送信するために使用されます。インデックスを管理するリクエストもこのポートを経由します。

Couchbase Connector for CData Sync

AnalyticsPort

Couchbase Analytics Endpoint に接続するポート。

解説

SSL を使用していない場合のデフォルトは8095 で、SSL を使用している場合のデフォルトは18095 になります。UseSSL を参照してください。

このポートは、CouchbaseService がAnalytics に設定されている場合にクエリを送信するために使用されます。

Couchbase Connector for CData Sync

WebConsolePort

Couchbase Web Console に接続するポート。

解説

SSL を使用していない場合のデフォルトは8091 で、SSL を使用している場合のデフォルトは18091 になります。UseSSL を参照してください。

このポートは、バケット管理などのAPI 操作に使用されます。

Couchbase Connector for CData Sync

SSL

このセクションでは、本プロバイダーの接続文字列で設定可能なSSL プロパティの全リストを提供します。


プロパティ説明
SSLClientCertSSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストア。
SSLClientCertTypeTLS/SSL クライアント証明書を格納するキーストアの種類。
SSLClientCertPasswordTLS/SSL クライアント証明書のパスワード。
SSLClientCertSubjectTLS/SSL クライアント証明書のサブジェクト。
UseSSLCouchbase サーバーに接続するときにTLS/SSL をネゴシエートするかどうか。
SSLServerCertTLS/SSL を使用して接続するときに、サーバーが受け入れ可能な証明書。
Couchbase Connector for CData Sync

SSLClientCert

SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストア。

解説

クライアント証明書のための証明書ストア名。

SSLClientCertType フィールドは、SSLClientCert により指定された証明書ストアの種類を指定します。ストアがパスワードで保護されている場合は、SSLClientCertPassword でパスワードを指定します。

SSLClientCert は、SSLClientCertSubject フィールドとともにクライアント証明書を指定するために使われます。SSLClientCert に値がある場合で、SSLClientCertSubject が設定されている場合は、証明書の検索が始まります。詳しくは、SSLClientCertSubject を参照してください。

証明書ストアの指定はプラットフォームに依存します。

Windows の共通のユーザとシステム証明書ストアの指定は以下のとおりです。

MY個人証明書と関連付けられた秘密キーを格納している証明書ストア。
CA証明機関の証明書。
ROOTルート証明書。
SPCソフトウェア発行元証明書。

Javaでは、証明書ストアは通常、証明書および任意の秘密キーを含むファイルです。

証明書ストアの種類がPFXFile の場合は、このプロパティにファイル名を設定します。PFXBlob の場合は、このプロパティをPFX ファイルのバイナリコンテンツ(例えば、PKCS12証明書ストア)に設定する必要があります。

Couchbase Connector for CData Sync

SSLClientCertType

TLS/SSL クライアント証明書を格納するキーストアの種類。

解説

このプロパティには次の値の一つを設定できます。

USER - デフォルトWindows の場合、現在のユーザーにより所有された証明書ストアであることを指定します。この種類はJava では利用できませんので注意してください。
MACHINEWindows の場合、この証明書ストアがシステムストアであることを指定します。この種類は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 形式の証明書を含む文字列の名前です。

Couchbase Connector for CData Sync

SSLClientCertPassword

TLS/SSL クライアント証明書のパスワード。

解説

証明書ストアでパスワードが必要である場合、このプロパティを使用してパスワードを指定し、証明書ストアにアクセスできます。

Couchbase Connector for CData Sync

SSLClientCertSubject

TLS/SSL クライアント証明書のサブジェクト。

解説

証明書のサブジェクトは、証明書をロードするときにストア内の証明書を検索するために使用されます。

完全に一致するものが見つからない場合、ストアはプロパティの値を含むサブジェクトを検索します。それでも一致するものが見つからない場合、プロパティは空白で設定され、証明書は選択されません。

"*" に設定すると、証明書ストアの1番目の証明書が選択されます。

証明書のサブジェクトは識別の名前フィールドおよび値のカンマ区切りのリストです。例えば、"CN=www.server.com, OU=test, C=US, [email protected]" です。共通のフィールドとその説明は以下のとおりです。

フィールド説明
CN共通名。一般的には、www.server.com のようなホスト名です。
O法人名
OU法人の部署名
L法人の住所(市町村名)
S法人の住所(都道府県)
C国名
EEメールアドレス

フィールド値にカンマが含まれている場合は、それを引用符で囲む必要があります。

Couchbase Connector for CData Sync

UseSSL

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.

Couchbase Connector for CData Sync

SSLServerCert

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

これを指定しない場合は、マシンが信用するすべての証明書が受け入れられます。

すべての証明書の受け入れを示すには、'*'を使用します。セキュリティ上の理由から、これはお勧めできません。

Couchbase Connector for CData Sync

Firewall

このセクションでは、本プロバイダーの接続文字列で設定可能なFirewall プロパティの全リストを提供します。


プロパティ説明
FirewallTypeプロキシベースのファイアウォールで使われるプロトコル。
FirewallServerプロキシベースのファイアウォールの名前もしくはIP アドレス。
FirewallPortプロキシベースのファイアウォールのTCP ポート。
FirewallUserプロキシベースのファイアウォールに認証するために使うユーザー名。
FirewallPasswordプロキシベースのファイアウォールへの認証に使われるパスワード。
Couchbase Connector for CData Sync

FirewallType

プロキシベースのファイアウォールで使われるプロトコル。

解説

このプロパティは、Sync App がFirewallServer プロキシ経由でトンネルトラフィックを使うためのプロトコルを指定します。デフォルトでは、Sync App はシステムプロキシに接続します。この動作を無効化し次のプロキシタイプのどれかで接続するには、ProxyAutoDetect をfalse に設定します。

タイプ デフォルトポート 説明
TUNNEL 80 これが設定されている場合、Sync App はCouchbase への接続を開き、プロキシを経由して通信が行われます。
SOCKS4 1080 これが設定されている場合、Sync App はデータをFirewallServer およびFirewallPort で指定されたSOCS 4 プロキシ経由で送信し、接続リクエストが許容されるかどうかを決定します。
SOCKS5 1080 これが設定されている場合、Sync App はデータをFirewallServer およびFirewallPort で指定されたSOCS 5 プロキシ経由で送信します。プロキシに認証が必要な場合には、FirewallUser およびFirewallPassword をプロキシが認識する認証情報に設定します。

HTTP プロキシへの接続には、ProxyServer およびProxyPort ポートを使ってください。HTTP プロキシへの認証には、ProxyAuthScheme、ProxyUser、およびProxyPassword を使ってください。

Couchbase Connector for CData Sync

FirewallServer

プロキシベースのファイアウォールの名前もしくはIP アドレス。

解説

ファイアウォールトラバーサルを許容するために設定するIP アドレス、DNS 名、もしくはプロキシホスト名を指定するプロパティです。プロトコルはFirewallType で指定されます。このプロパティとFirewallServer を使って、SOCKS 経由での接続、もしくはトンネリングが可能です。HTTP プロキシへの接続には、ProxyServer を使用します。

Sync App はデフォルトでシステムプロキシを使うので注意してください。他のプロキシを使う場合には、ProxyAutoDetect をfalse に設定してください。

Couchbase Connector for CData Sync

FirewallPort

プロキシベースのファイアウォールのTCP ポート。

解説

ファイアウォールトラバーサルを許容するために設定するプロキシベースのファイアウォールのTCP ポート。名前もしくはIP アドレスを指定するには、FirewallServer を使います。FirewallType でプロトコルを指定します。

Couchbase Connector for CData Sync

FirewallUser

プロキシベースのファイアウォールに認証するために使うユーザー名。

解説

FirewallUser およびFirewallPassword プロパティは、FirewallType により指定された認証方式に則り、FirewallServer、およびFirewallPort で指定されたプロキシに対しての認証に使われます。

Couchbase Connector for CData Sync

FirewallPassword

プロキシベースのファイアウォールへの認証に使われるパスワード。

解説

このプロパティは、FirewallType により指定された認証メソッドに則り、FirewallServer およびFirewallPort で指定されたプロキシに渡されます。

Couchbase Connector for CData Sync

Proxy

このセクションでは、本プロバイダーの接続文字列で設定可能なProxy プロパティの全リストを提供します。


プロパティ説明
ProxyAutoDetectこれは、システムプロキシ設定を使用するかどうかを示します。これは他のプロキシ設定よりも優先されるため、カスタムプロキシ設定を使用するにはProxyAutoDetect をFALSE に設定する必要があります。
ProxyServerHTTP トラフィックをルートするためのプロキシのホストネームもしくはIP アドレス。
ProxyPortProxyServer プロキシが起動しているTCP ポート。
ProxyAuthSchemeProxyServer プロキシへの認証で使われる認証タイプ。
ProxyUserProxyServer プロキシへの認証に使われるユーザー名。
ProxyPasswordProxyServer プロキシへの認証に使われるパスワード。
ProxySSLTypeProxyServer プロキシへの接続時に使用するSSL タイプ。
ProxyExceptionsProxyServer 経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。
Couchbase Connector for CData Sync

ProxyAutoDetect

これは、システムプロキシ設定を使用するかどうかを示します。これは他のプロキシ設定よりも優先されるため、カスタムプロキシ設定を使用するにはProxyAutoDetect をFALSE に設定する必要があります。

解説

これは他のプロキシ設定よりも優先されるため、カスタムプロキシ設定を使用するにはProxyAutoDetect をFALSE に設定する必要があります。

HTTP プロキシへの接続には、ProxyServer を参照してください。SOCKS やトンネリングなどの他のプロキシには、FirewallType を参照してください。

Couchbase Connector for CData Sync

ProxyServer

HTTP トラフィックをルートするためのプロキシのホストネームもしくはIP アドレス。

解説

HTTP トラフィックをルートするためのプロキシのホストネームもしくはIP アドレス。HTTP プロキシへの認証には、Sync App はHTTP、Windows(NTLM)、もしくはKerberos 認証タイプを使用することができます。

SOCKS プロキシを経由して接続する、もしくは接続をトンネルするには、FirewallType を参照してください。

デフォルトで、Sync App はsystem プロキシを使います。他のプロキシを使う場合には、ProxyAutoDetect をfalse に設定します。

Couchbase Connector for CData Sync

ProxyPort

ProxyServer プロキシが起動しているTCP ポート。

解説

HTTP トラフィックをリダイレクトするHTTP プロキシが実行されているポート。ProxyServer でHTTP プロキシを指定します。その他のプロキシタイプについては、FirewallType を参照してください。

Couchbase Connector for CData Sync

ProxyAuthScheme

ProxyServer プロキシへの認証で使われる認証タイプ。

解説

この値は、ProxyServer およびProxyPort で指定されるHTTP プロキシに認証するために使われる認証タイプを指定します。

Sync App は、デフォルトでsystem proxy settings を使い、追加での設定が不要です。他のプロキシへの接続をする場合には、ProxyServer およびProxyPort に加え、ProxyAutoDetect をfalse に設定します。認証するには、ProxyAuthScheme を設定し、必要な場合にはProxyUser およびProxyPassword を設定します。

認証タイプは、次のどれかになります。

  • BASIC: Sync App はHTTP BASIC 認証を行います。
  • DIGEST: Sync App はHTTP DIGEST 認証を行います。
  • NEGOTIATE: Sync App は認証において有効なプロトコルに応じて、NTLM もしくはKereros トークンを取得します。
  • PROPRIETARY: Sync App はNTLM もしくはKerberos トークンを発行しません。このトークンを、HTTP リクエストのAuthorization ヘッダーに含める必要があります。

SOCKS 5 認証のような他の認証タイプを使用するには、FirewallType を参照してください。

Couchbase Connector for CData Sync

ProxyUser

ProxyServer プロキシへの認証に使われるユーザー名。

解説

ProxyUser および ProxyPassword オプションは、ProxyServer で指定されたHTTP プロキシに対して接続および認証するために使用されます。

ProxyAuthScheme で使用可能な認証タイプを選択することができます。HTTP 認証を使う場合、これをHTTP プロキシで識別可能なユーザーのユーザー名に設定します。Windows もしくはKerberos 認証を使用する場合、このプロパティを次の形式のどれかでユーザー名に設定します。

user@domain
domain\user

Couchbase Connector for CData Sync

ProxyPassword

ProxyServer プロキシへの認証に使われるパスワード。

解説

このプロパティは、NTLM(Windows)、Kerberos、もしくはHTTP 認証をサポートするHTTP プロキシサーバーに認証するために使われます。HTTP プロキシを指定するためには、ProxyServer およびProxyPort を設定します。認証タイプを指定するためにはProxyAuthScheme を設定します。

HTTP 認証を使う場合、さらにHTTP プロキシにProxyUser およびProxyPassword を設定します。

NTLM 認証を使う場合、Windows パスワードにProxyUser およびProxyPassword を設定します。Kerberos 認証には、これらを入力する必要があります。

SOCKS 5 認証もしくは、トンネリングは、FirewallType を参照してください。

デフォルトで、Sync App はsystem プロキシを使います。他のプロキシに接続する場合には、これをfalse に設定します。

Couchbase Connector for CData Sync

ProxySSLType

ProxyServer プロキシへの接続時に使用するSSL タイプ。

解説

このプロパティは、ProxyServer で指定されたHTTP プロキシへの接続にSSL を使用するかどうかを決定します。この値は、AUTO、ALWAYS、NEVER、TUNNEL のいずれかです。有効な値は次のとおりです。

AUTOデフォルト設定。URL がHTTPS URL の場合、Sync App は、TUNNEL オプションを使います。URL がHTTP URL の場合、コンポーネントはNEVER オプションを使います。
ALWAYS接続は、常にSSL 有効となります。
NEVER接続は、SSL 有効になりません。
TUNNEL接続は、トンネリングプロキシを経由します。プロキシサーバーがリモートホストへの接続を開き、プロキシを経由して通信が行われます。

Couchbase Connector for CData Sync

ProxyExceptions

ProxyServer 経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。

解説

ProxyServer は、このプロパティで定義されたアドレスを除くすべてのアドレスに使用されます。セミコロンを使用してエントリを区切ります。

Sync App は、追加設定なしにデフォルトでシステムのプロキシ設定を使います。この接続のプロキシ例外を明示的に構成するには、ProxyAutoDetect をfalse に設定して、ProxyServer およびProxyPort を設定する必要があります。認証するには、ProxyAuthScheme を設定し、必要な場合にはProxyUser およびProxyPassword を設定します。

Couchbase Connector for CData Sync

Logging

このセクションでは、本プロバイダーの接続文字列で設定可能なLogging プロパティの全リストを提供します。


プロパティ説明
LogModulesログファイルに含めるコアモジュール。
Couchbase Connector for CData Sync

LogModules

ログファイルに含めるコアモジュール。

解説

指定された(';' で区切られた)モジュールのみがログファイルに含まれます。デフォルトではすべてのモジュールが含まれます。

概要はログ ページを参照してください。

Couchbase Connector for CData Sync

Schema

このセクションでは、本プロバイダーの接続文字列で設定可能なSchema プロパティの全リストを提供します。


プロパティ説明
Locationテーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリへのパス。
BrowsableSchemasこのプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。
Tablesこのプロパティは、使用可能なテーブルのサブセットにレポートされるテーブルを制限します。例えば、Tables=TableA,TableB,TableC です。
Views使用可能なテーブルのサブセットにレポートされるビューを制限します。例えば、Views=ViewA,ViewB,ViewC です。
Dataverseテーブルを検出するときにどのAnalysis dataverse をスキャンするか。
TypeDetectionSchemeprovider がCouchbase にあるバケットからテーブルとカラムをどのように作成するかを決定します。
InferNumSampleValuesデータ型を決定する前にスキャンする各フィールドの値の最大数。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
InferSampleSizeバケット内で利用可能なカラムを探すためにスキャンするドキュメント数の最大値。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
InferSimilarityMetric異なるスキーマが同じフレーバーだと見なされる類似度を指定します。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。
FlexibleSchemasWhether the provider allows queries to use columns that it has not discovered.
ExposeTTLSpecifies whether document TTL information should be exposed.
NumericStringsWhether to allow string values to be treated as numbers.
IgnoreChildAggregatesWhether the provider exposes aggregate columns that are also available as child tables. Ignored if TableSupport is not set to Full.
TableSupportprovider がCouchbase サーバー上のテーブルを検出するためにどれだけの努力をするか。
NewChildJoinsModeDetermines the kind of child table model the provider exposes.
Couchbase Connector for CData Sync

Location

テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリへのパス。

解説

Sync App のスキーマファイル(テーブルとビューの場合は.rsd ファイル、ストアドプロシージャの場合は.rsb ファイル)を含むディレクトリへのパス。このフォルダの場所は、実行ファイルの場所からの相対パスにすることができます。Location プロパティは、定義をカスタマイズしたり(例えば、カラム名を変更する、カラムを無視するなど)、新しいテーブル、ビュー、またはストアドプロシージャでデータモデルを拡張する場合にのみ必要です。

指定しない場合、デフォルトの場所は"%APPDATA%\\CData\\Couchbase Data Provider\\Schema" となり、%APPDATA% はユーザーのコンフィギュレーションディレクトリに設定されます:

Couchbase Connector for CData Sync

BrowsableSchemas

このプロパティは、使用可能なスキーマのサブセットにレポートされるスキーマを制限します。例えば、BrowsableSchemas=SchemaA,SchemaB,SchemaC です。

解説

スキーマをデータベースからリストすると、負荷がかかる可能性があります。接続文字列でスキーマのリストを提供すると、 パフォーマンスが向上します。

Couchbase Connector for CData Sync

Tables

このプロパティは、使用可能なテーブルのサブセットにレポートされるテーブルを制限します。例えば、Tables=TableA,TableB,TableC です。

解説

テーブルを複数のデータベースからリストすると、負荷がかかる可能性があります。接続文字列でテーブルのリストを提供すると、Sync App のパフォーマンスが向上します。

このプロパティは、作業したいビューがすでにわかっていて、ビューが多すぎる場合に、ビューを自動的にリストする代わりに使用することもできます。

カンマ区切りのリストで使用したいテーブルを指定します。各テーブルは、角かっこ、二重引用符、またはバッククオートを使用してエスケープされた特殊文字列を含む有効なSQL 識別子である必要があります。 例えば、Tables=TableA,[TableB/WithSlash],WithCatalog.WithSchema.`TableC With Space` です。

複数のスキーマまたはカタログを持つデータソースに接続する場合は、複数のカタログやスキーマに存在するテーブル間の曖昧さを避けるため、最後の例のように、このプロパティにテーブルの完全修飾名を指定する必要があることに注意してください。

Couchbase Connector for CData Sync

Views

使用可能なテーブルのサブセットにレポートされるビューを制限します。例えば、Views=ViewA,ViewB,ViewC です。

解説

ビューを複数のデータベースからリストすると、負荷がかかる可能性があります。接続文字列でビューのリストを提供すると、Sync App のパフォーマンスが向上します。

このプロパティは、作業したいビューがすでにわかっていて、ビューが多すぎる場合に、ビューを自動的にリストする代わりに使用することもできます。

カンマ区切りのリストで使用したいビューを指定します。各ビューは、角かっこ、二重引用符、またはバッククオートを使用してエスケープされた特殊文字列を含む有効なSQL 識別子である必要があります。 例えば、Views=ViewA,[ViewB/WithSlash],WithCatalog.WithSchema.`ViewC With Space` です。

複数のスキーマまたはカタログを持つデータソースに接続する場合は、複数のカタログやスキーマに存在するテーブル間の曖昧さを避けるため、最後の例のように、このプロパティにテーブルの完全修飾名を指定する必要があることに注意してください。

Couchbase Connector for CData Sync

Dataverse

テーブルを検出するときにどの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_bucket
You would set this option to "websites.exampledotcom".

Couchbase Connector for CData Sync

TypeDetectionScheme

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 よりも柔軟なフレーバー検出を行いますが、Couchbase Enterprise でのみ利用可能です。
RowScan バケットからドキュメントのサンプルを読み出し、ヒューリスティックにデータ型を決定します。RowScanDepth はスキャンするドキュメントの数を決定します。フレーバー検出は行いません。
None RowScan に似ていますが、検出された型ではなく文字列型を持つカラムを常に返します。

Couchbase Connector for CData Sync

InferNumSampleValues

データ型を決定する前にスキャンする各フィールドの値の最大数。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。

解説

フィールドのデータ型を決定する前に、サンプリングされたドキュメントのすべてのフィールドからスキャンする値の最大数。 このプロパティは、Couchbase Infer コマンドを使用しているときに自動スキーマ検出 の追加設定を有効にします。このプロパティを使用するにはTypeDetectionScheme もInfer に設定する必要があります。

Couchbase Connector for CData Sync

InferSampleSize

バケット内で利用可能なカラムを探すためにスキャンするドキュメント数の最大値。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。

解説

バケット内で利用可能なカラムを探すためにスキャンするドキュメント数の最大値。Infer コマンドは、ここで指定されたサイズのドキュメントのランダムサンプルをスキャンすることにより、カラムのメタデータを返します。

大きい値を設定すると、パフォーマンスが低下する場合があります。小さな値を設定すると、特にnull データがある場合に、カラムとデータ型が正しく決定されないことがあります。

このプロパティは、Couchbase Infer コマンドを使用しているときに自動スキーマ検出 の追加設定を有効にします。このプロパティを使用するにはTypeDetectionScheme もInfer に設定する必要があります。

Couchbase Connector for CData Sync

InferSimilarityMetric

異なるスキーマが同じフレーバーだと見なされる類似度を指定します。 TypeDetectionScheme がINFER に設定されている場合は 自動スキーマ検出 に適用されます。

解説

このプロパティは、2つのスキーマが同じフレーバーとみなされるためにどの程度類似している必要があるかを指定します。例えば、次の行を考えてみましょう。

Row 1: ColA, ColB, ColC, ColD
Row 2: ColA, ColB, ColE, ColF
Row 3: ColB, ColF, ColX, ColY

次の例のように、各フレーバに返されるカラムに異なるInferSimilarityMetric 値を設定できます。

  • InferSimilarityMetric を1に設定すると、Sync App はフレーバーを返しません。
  • InferSimilarityMetric を0.5 に設定すると、Sync App は2フレーバーを返し、Row1 とRow2 で一方を構成、Row3 でもう一方を構成します。
  • InferSimilarityMetric を0.25 に設定すると、Sync App はすべての行を含む単一のフレーバーを返します。

その後、次のステートメントのように、ドット表記を使用してドキュメントフレーバーをクエリできます。

SELECT * FROM [Items.Technology]

このプロパティは、Couchbase Infer コマンドを使用しているときに自動スキーマ検出 の追加設定を有効にします。このプロパティを使用するにはTypeDetectionScheme もInfer に設定する必要があります。

Couchbase Connector for CData Sync

FlexibleSchemas

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.

Couchbase Connector for CData Sync

ExposeTTL

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:

  • All tables get a new column called Document.Expiration which contains the TTL value for each document. This column is an integer and returns whatever TTL value is stored in Couchbase directly. This column is read-write on bucket tables and read-only on child tables.
  • INSERT and UPDATE will use this field to set TTL values, or to preserve them (for update) when none is provided. Setting the field to either 0 or NULL will remove the TTL from any affected documents.

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.

Couchbase Connector for CData Sync

NumericStrings

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" }

Couchbase Connector for CData Sync

IgnoreChildAggregates

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.

Couchbase Connector for CData Sync

TableSupport

provider がCouchbase サーバー上のテーブルを検出するためにどれだけの努力をするか。

解説

利用可能な値は以下のとおりです。

Full Sync App は利用可能なバケットを検出し、それらの各バケットの内側を見て子テーブルを探します。これにより、ネストされたデータにアクセスする最も柔軟な方法が提供されますが、サーバー上の各バケットにプライマリインデックスがあることが必要です。
Basic Sync App は利用可能なバケットを検出しますが、その中で子テーブルを探すことはしません。これは、スキーマ検出の時間を削減したい場合、またはバケットにプライマリインデックスがない場合にお勧めします。
None Sync App はLocation ディレクトリにあるスキーマファイルのみを使用し、サーバー上のバケットを検出しません。このオプションは、スキーマファイルを作成済みの場合にのみ使用してください。スキーマファイルなしでこのオプションを使用すると、利用可能なテーブルがなくなります。

Couchbase Connector for CData Sync

NewChildJoinsMode

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:

  • Complex JOIN results may be incorrect. In most cases the Sync App can translate a JOIN like SELECT * FROM invoices INNERT JOIN invoices_lineitems ON invoices.[Document.Id] = invoices_lineitems.[Document.Id] into an UNNEST. But if the JOIN is too complex then both sides are executed separately which can produce incorrect results.
  • DML operations on nested child tables are impossible because there is no way to specify what row of the middle child to use. For example, you cannot change rows in a table like invoices_lineitems_discounts because there is no way to specify the lineitem that contains the discount you are updating.
  • Some environments like SSIS may not be able to operate on child tables at all because they do not have primary keys.

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:

  • Complex JOIN results are always consistent because they link foreign keys to primary keys. SELECT * FROM invoices INNERT JOIN invoices_lineitems ON invoices.[Document.Id] = invoices_lineitems.[Document.Parent]
  • DML operations on nested child tables are allowed because the Document.Id contains all the required information to pick out specific rows, regardless of the table's depth.
  • Environments which depend on primary keys can use these tables and generate JOIN queries since the relationships between Document.Id and Document.Parent columns are included in the Sync App metadata.

Couchbase Connector for CData Sync

Miscellaneous

このセクションでは、本プロバイダーの接続文字列で設定可能なMiscellaneous プロパティの全リストを提供します。


プロパティ説明
AllowJSONParametersAllows raw JSON to be used in parameters when QueryPassthrough is enabled.
ChildSeparator子テーブルを示すために使用する記号。
CreateTableRamQuotaThe default RAM quota, in megabytes, to use when inserting buckets via the CREATE TABLE syntax.
DataverseSeparatorAnalytics dataverse およびscopes/collections を示すために使用する記号。
FlattenArraysThe number of elements to expose as columns from nested arrays. Ignored if IgnoreChildAggregates is enabled.
FlattenObjectsフラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。
FlavorSeparatorフレーバーを示すために使用する記号。
GenerateSchemaFilesスキーマを生成して保存するユーザーの好みのタイミングを示します。
InsertNullValuesDetermines whether an INSERT should include fields that have NULL values.
MaxRowsクエリで集計またはグループ化を使用しない場合に返される行数を制限します。これにより、設計時にパフォーマンスの問題を回避できます。
Otherこれらの隠しプロパティは特定のユースケースでのみ使用されます。
PagesizeCouchbase から返されるページあたりの結果の最大数。
PeriodsSeparator階層を示すために使用する記号。
PseudoColumnsこのプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。
QueryExecutionTimeoutクエリのサーバーサイドのタイムアウトを設定します。タイムアウトエラーを返す前にCouchbase がクエリを実行する期間を決定します。
QueryPassthroughこのオプションは、クエリをCouchbase サーバーにas-is で渡します。
RowScanDepthテーブルで利用可能なカラムを探すためにスキャンする行数の最大値。
StrictComparisonSQL 入力クエリのフィルタをCouchbase クエリに変換する精度を調整します。 これは、値のカンマ区切りリストに設定できます。各値はdate、number、boolean、またはstring のいずれかです。
Timeoutタイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。
TransactionDurabilitySpecifies how a document must be stored for a transaction to succeed. Specifies whether to use N1QL transactions when executing queries.
TransactionTimeoutThis sets the amount of time a transaction may execute before it is timed out by Couchbase.
UpdateNullValuesDetermines whether an UPDATE writes NULL values as NULL, or removes them.
UseCollectionsForDDLWhether 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 コンフィギュレーションファイルを指すファイルパス。
UseTransactionsSpecifies whether to use N1QL transactions when executing queries.
ValidateJSONParametersAllows the provider to validate that string parameters are valid JSON before sending the query to Couchbase.
Couchbase Connector for CData Sync

AllowJSONParameters

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.

Couchbase Connector for CData Sync

ChildSeparator

子テーブルを示すために使用する記号。

解説

バケット下にある配列の子テーブルを作成する際、Sync App は、この区切り文字と各パスエレメントを使用して、ベーステーブルの名前をコンカテネートすることによって子テーブルの名前を生成します。

例えば、このドキュメントがバケット"customers" にある場合、addresses フィールドの子テーブルは"customers_addresses" となります。

{
  "addresses": [
    {"street": "123 Main St"},
    {"street": "424 Pleasant Ct"},
    {"street": "719 Blue Way"}
  ]
}

Couchbase Connector for CData Sync

CreateTableRamQuota

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.

Couchbase Connector for CData Sync

DataverseSeparator

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".

Couchbase Connector for CData Sync

FlattenArrays

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.0FLOW-MATIC

Couchbase Connector for CData Sync

FlattenObjects

フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。

解説

フラット化されたオブジェクトプロパティとしてカラムを表示するには、FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。プロパティ名は、カラム名を作り出すためにオブジェクト名にアンダースコアでコンカティネイトされます。

例えば、次のネストされたオブジェクトを接続時にフラット化できます。

address : {
  "street" : "123 Main St.",
  "city"   : "Nowhere",
  "state"  : "NY",
  "zip"    : "12345"
}
FlattenObjects がtrue に設定されている場合、オブジェクトは次のテーブルのようにフラット化されます:

カラム名カラム値
address.street123 Main St.
address.cityNowhere
address.stateNY
address.zip12345

Couchbase Connector for CData Sync

FlavorSeparator

フレーバーを示すために使用する記号。

解説

Sync App がDocType かInfer TypeDetectionScheme のいずれかを使用してフレーバーテーブルを検出すると、基底のバケット名、この区切り文字、およびバケットのプライマリフレーバーの値をコンカテネートしてフレーバーテーブルに名前を付けます。

例えば、Sync App が"beer-sample" バケットで"docType = 'beer'" というフレーバーを検出すると、"beer" doctype を持つ"beer-sample" 内のドキュメントのみを含む"beer-sample.beer" テーブルが生成されます。

Couchbase Connector for CData Sync

GenerateSchemaFiles

スキーマを生成して保存するユーザーの好みのタイミングを示します。

解説

GenerateSchemaFiles を使用すると、自動スキーマ検出 によって識別されたテーブル定義を保存できます。 このプロパティは、Location で指定されたパスの.rsd ファイルにスキーマをアウトプットします。

有効な設定は次のとおりです。

  • Never:スキーマファイルは生成されません。
  • OnUse:スキーマファイルがまだ存在していない場合に、初めてテーブルが参照されるときにスキーマファイルが生成されます。
  • OnStart:現在スキーマファイルを持たないあらゆるテーブルに対して、接続時にスキーマファイルが生成されます。
  • OnCreate:CREATE TABLE SQL クエリを実行すると、スキーマファイルが生成されます。
ファイルを再生成したい場合には、既存のファイルを削除する必要があることに注意してください。

SQL でスキーマを生成する

GenerateSchemaFiles をOnUse に設定すると、Sync App はSELECT クエリを実行したときにスキーマを生成します。スキーマはクエリのそれぞれの参照されたテーブルに対して生成されます。

GenerateSchemaFiles をOnCreate に設定すると、CREATE TABLE クエリが実行されたときにのみスキーマが生成されます。

接続時にスキーマを生成する

このプロパティのもう一つの使い方は、接続するときにデータベース内のすべてのテーブルのスキーマを取得することです。これには、GenerateSchemaFiles をOnStart に設定して接続します。

静的スキーマの別の方法

データ構造が変化する場合には、GenerateSchemaFiles をNever に設定して動的なスキーマを使うことを検討してください。動的なスキーマの詳細については、自動スキーマ検出 を参照してください。

スキーマの編集

スキーマファイルはシンプルな形式となっており、変更は簡単です。詳しくは、カスタムスキーマ定義 を参照してください。

Couchbase Connector for CData Sync

InsertNullValues

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.

Couchbase Connector for CData Sync

MaxRows

クエリで集計またはグループ化を使用しない場合に返される行数を制限します。これにより、設計時にパフォーマンスの問題を回避できます。

解説

クエリで集計またはグループ化を使用しない場合に返される行数を制限します。これにより、設計時にパフォーマンスの問題を回避できます。

Couchbase Connector for CData Sync

Other

これらの隠しプロパティは特定のユースケースでのみ使用されます。

解説

以下にリストされているプロパティは、特定のユースケースで使用可能です。通常のドライバーのユースケースおよび機能では、これらのプロパティは必要ありません。

複数のプロパティをセミコロン区切りリストで指定します。

統合およびフォーマット

DefaultColumnSizeデータソースがメタデータにカラムの長さを提供しない場合に、文字列フィールドのデフォルトの長さを設定します。デフォルト値は2000です。
ConvertDateTimeToGMT日時の値を、マシンのローカルタイムではなくGMT グリニッジ標準時に変換するかどうかを決定します。
RecordToFile=filename基底のソケットデータ転送を指定のファイルに記録します。

Couchbase Connector for CData Sync

Pagesize

Couchbase から返されるページあたりの結果の最大数。

解説

Pagesize プロパティは、Couchbase から返されるページあたりの結果の最大数に影響を与えます。より大きい値を設定すると、1ページあたりの消費メモリが増える代わりに、パフォーマンスが向上する場合があります。

Couchbase Connector for CData Sync

PeriodsSeparator

階層を示すために使用する記号。

解説

オブジェクトと配列をフラット化するとき、Sync App はこの値を使って異なるレベルのオブジェクトと配列を分離します。例えば、Couchbase サーバーがこのようなドキュメントを返す(そしてFlattenObjects が有効になっている)とき、ピリオド区切り文字が"." に設定されている場合は、Sync App は"geo.latitude" と"geo.longitude" というカラムを返します。

{
  "geo": {
    "latitude": 35.9132,
    "longitude": -79.0558
  }
}

Couchbase Connector for CData Sync

PseudoColumns

このプロパティは、テーブルのカラムとして疑似カラムが含まれているかどうかを示します。

解説

Entity Framework ではテーブルカラムでない疑似カラムに値を設定できないため、この設定はEntity Framework で特に便利です。この接続設定の値は、"Table1=Column1, Table1=Column2, Table2=Column3" の形式です。"*=*" のように"*" 文字を使用して、すべてのテーブルとすべてのカラムを含めることができます。

Couchbase Connector for CData Sync

QueryExecutionTimeout

クエリのサーバーサイドのタイムアウトを設定します。タイムアウトエラーを返す前に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 Connector for CData Sync

QueryPassthrough

このオプションは、クエリをCouchbase サーバーにas-is で渡します。

解説

これが設定されていると、クエリはCouchbase に直接渡されます。

Couchbase Connector for CData Sync

RowScanDepth

テーブルで利用可能なカラムを探すためにスキャンする行数の最大値。

解説

テーブルのカラムはテーブル行をスキャンすることで決定される必要があります。この値はスキャンされる行数の最大値を設定します。

大きい値を設定すると、パフォーマンスが低下する場合があります。小さい値を設定すると、特にnull データがある場合には、データ型を正しく判定できない場合があります。

Couchbase Connector for CData Sync

StrictComparison

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';

Couchbase Connector for CData Sync

Timeout

タイムアウトエラーがスローされ、処理をキャンセルするまでの秒数。

解説

Timeout が0に設定されている場合は、操作がタイムアウトしません。処理が正常に完了するか、エラー状態になるまで実行されます。

Timeout の有効期限が切れても処理が完了していない場合は、Sync App は例外をスローします。

Couchbase Connector for CData Sync

TransactionDurability

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.

Couchbase Connector for CData Sync

TransactionTimeout

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.

Couchbase Connector for CData Sync

UpdateNullValues

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.

Couchbase Connector for CData Sync

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.

解説

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
)

Couchbase Connector for CData Sync

UserDefinedViews

カスタムビューを含むJSON コンフィギュレーションファイルを指すファイルパス。

解説

ユーザー定義ビューは、UserDefinedViews.json というJSON 形式のコンフィギュレーションファイルで定義されています。Sync App は、このファイルで指定されたビューを自動的に検出します。

また、複数のビュー定義を持ち、UserDefinedViews 接続プロパティを使用して制御することも可能です。このプロパティを使用すると、指定されたビューのみがSync App によって検知されます。

このユーザー定義ビューのコンフィギュレーションファイルは、次のようにフォーマットされています。

  • 各ルートエレメントはビューの名前を定義します。
  • 各ルートエレメントには、query と呼ばれる子エレメントが含まれており、この子エレメントにはビューのカスタムSQL クエリが含まれています。

次に例を示します。

{
	"MyView": {
		"query": "SELECT * FROM Customer WHERE MyColumn = 'value'"
	},
	"MyView2": {
		"query": "SELECT * FROM MyTable WHERE Id IN (1,2,3)"
	}
}
UserDefinedViews 接続プロパティを使用して、JSON コンフィギュレーションファイルの場所を指定します。次に例を示します。
"UserDefinedViews", "C:\\Users\\yourusername\\Desktop\\tmp\\UserDefinedViews.json"

Couchbase Connector for CData Sync

UseTransactions

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.

Couchbase Connector for CData Sync

ValidateJSONParameters

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.

Copyright (c) 2023 CData Software, Inc. - All rights reserved.
Build 22.0.8479