CData Sync App は、Azure Cosmos DB データをデータベース、データレイク、またはデータウェアハウスに継続的にパイプライン化する簡単な方法を提供し、分析、レポート、AI、および機械学習で簡単に利用できるようにします。
Azure Cosmos DB コネクタはCData Sync アプリケーションから使用可能で、Azure Cosmos DB からデータを取得して、サポートされている任意の同期先に移動できます。
Sync App は、Azure Cosmos DB への標準ベースのアクセスを可能にします。
独自のカスタムロール定義を作成するか、組み込みのロール定義のいずれかを割り当てることができます。
また、ロール割り当てのスコープも設定する必要があり、「/」はそのID がすべてのデータベースにアクセスできることを意味します。
詳細はMicrosoft Entra ID を使用してAzure Cosmos DB アカウントのロールベースのアクセス制御を構成する を参照してください。
必須プロパティについては、設定タブを参照してください。
通常必須ではない接続プロパティについては、高度な設定タブを参照してください。
Azure Portal にログインしてAzure Cosmos DB を選択し、自分のアカウントを選択します。
認証するには以下のように設定します。
Note:Microsoft はAzure AD をEntra ID にリブランドしました。ユーザーがEntra ID 管理サイトを操作する必要があるトピックでは、Microsoft が使用している名称と同じものを使用します。ただし、名前または値が"Azure AD" を参照しているCData 接続プロパティは、依然として存在します。
Microsoft Entra ID は、マルチテナント型のクラウドベースのID およびアクセス管理プラットフォームです。 OAuth ベースの認証フローに対応しており、ドライバーによるAzure Cosmos DB エンドポイントへのセキュアなアクセスを実現します。
Web アプリケーションを介したEntra ID への認証には、必ずはじめにカスタムOAuth アプリケーションを作成して登録する必要があります。 これにより、アプリケーションは独自のリダイレクトURI を定義し、クレデンシャルのスコープを管理し、組織固有のセキュリティポリシーに準拠することができるようになります。
カスタムOAuth アプリケーションの作成および登録方法の詳細については、Entra ID(Azure AD)アプリケーションの作成 を参照してください。
AuthScheme をAzureAD に設定した後の認証手順は、環境によって異なります。 デスクトップアプリケーション、Web ベースのワークフロー、またはヘッドレスシステムから接続する方法の詳細については、以下のセクションを参照してください。
Note:Microsoft はAzure AD をEntra ID にリブランドしました。ユーザーがEntra ID 管理サイトを操作する必要があるトピックでは、Microsoft が使用している名称と同じものを使用します。ただし、名前または値が"Azure AD" を参照しているCData 接続プロパティは、依然として存在します。
Azure サービスプリンシパルは、ロールに基づいたアプリケーションベースの認証です。これは、認証がユーザーごとではなく、アプリケーションごとに行われることを意味します。
アプリケーションで実行されるすべてのタスクは、デフォルトユーザーコンテキストなしで、割り当てられたロールに基づいて実行されます。
リソースへのアプリケーションのアクセスは、割り当てられたロールの権限によって制御されます。
Azure サービスプリンシパル認証の設定方法については、Entra ID(Azure AD)でのサービスプリンシパルアプリの作成 を参照してください。
次のプロパティを使って、Azure Cosmos DB API 機能およびSync App のストラテジーをさらに制御できます。
GenerateSchemaFiles:このプロパティを使用すると、例えばテーブルメタデータを、カスタマイズしやすい静的スキーマファイルに永続化したり、カラムのデータ型の変更を永続化したりできます。
このプロパティを"OnStart" に設定すると、接続時にデータベース内のすべてのテーブルのスキーマファイルを生成できます。あるいは、テーブルにSELECT クエリを実行したときにスキーマを生成できます。
生成されるスキーマは、自動スキーマ検出 の設定に使用する接続プロパティに基づいています。
生成されたスキーマファイルを使用するには、Location プロパティをスキーマを有するフォルダに設定します。
SQL 準拠 で説明されるように、Sync App はバッチCUD(Create、Update、Delete)操作をサポートします。バッチ処理は、複数のリクエストを同時に発行することで実現します。 この方法では書き込み操作のパフォーマンスが大幅に向上しますが、この操作のコストは比較的高いため、特定のコンテナーやデータベースの1秒あたりの要求ユニット(RU)予算を超える可能性があります。 Azure Cosmos DB サービスのクォータによっては、RU 予算を超えると追加コストが発生したり、他のワークロードのAzure Cosmos DB 利用が一時的に制限されたり、中断されたりすることがあります。
1秒あたりのRU 予算を超えないようにするため、Sync App は、設定されたWriteThroughputBudget と、常に調整されるステートメントあたりの平均RU コストに応じて、1秒あたりの同時リクエスト数を動的に調整します。 ユーザーは、WriteThroughputBudget 接続プロパティを利用してバッチ書き込み操作が超えてはならない1秒あたりのRU 予算を定義することができます。 バッチ書き込み操作におけるもう一つの重要な要素にMaxThreads 接続プロパティがあり、これは同時リクエストの最大数を指定します。 MaxThreads の値を低くすると、Sync App は利用可能な予算を効率的に使用できない可能性があります。
リクエストのスロットリングロジックはクライアントサイドで適用されるため、比較的少量であってもRU / 秒予算を超過する場合があります。 このようなケースには、カラム数やカラムごとの入力値の長さが大きく変化するレコードの挿入、更新、削除が含まれます。
Note:デフォルトでは、WriteThroughputBudget プロパティは1000 RU/s、MaxThreads プロパティは200スレッドに設定されています。
Azure Cosmos DB はスキーマレスなドキュメントデータベースで、高いパフォーマンス、使用性、およびスケーラビリティを提供します。これらの機能は、必ずしもSQL-92 のような標準準拠のクエリ言語と互換しないわけではありません。このセクションでは、Sync App が複数のやり方によって、リレーショナルSQL とドキュメントデータベースのギャップの橋渡しをいかに行うかを説明します。
Sync App では、スキーマレスなAzure Cosmos DB オブジェクトをリレーショナルテーブルにモデル化し、SQL クエリをAzure Cosmos DB クエリに読み替えることで、要求されたデータを取得します。 さまざまなAzure Cosmos DB 操作がSQL としてどのように表されるかの詳細については、クエリマッピング(Sql API) を参照してください。
自動スキーマ検出 スキームでは、設定された行数のオブジェクトをスキャンすることで、自動的にAzure Cosmos DB 内のデータ型を見つけます。Azure Cosmos DB コレクションのリレーショナル表現をコントロールするためにRowScanDepth、FlattenArrays、およびFlattenObjects を使うことができます。スキーマに結びついていない自由形式クエリ を記述することもできます。
オプションとして、カスタムスキーマ定義 を使って、Azure Cosmos DB オブジェクトの上に選択されたリレーショナル構造を投射することもできます。これにより、自分で選択したカラム名、データ型、 コレクション内の値の位置を定義することができます。
GenerateSchemaFiles を設定すると、検出されたスキーマを拡張しやすいシンプルな設定ファイルとして保存できます。データベース内のすべてのコレクション、もしくはSELECT クエリの結果にスキーマを保持することができます。
If the TypeDetectionScheme is set to RawValue, the Sync App will push each document as single aggregate value on a column named JsonData, along with its resource identifier on the separate Primary Key column. The JSON documents are not processed, and as a result, the below functionalities are NOT supported with this configuration.
Sync App は、コレクション内のAzure Cosmos DB ドキュメントをサンプルとして調べ、リレーショナルスキーマを提案します。RowScanDepth プロパティを使って、Sync App がスキャンするドキュメント数を設定することができます。検出プロセスで特定されるカラムはFlattenArrays およびFlattenObjects プロパティに依存します。
FlattenObjects が設定されている場合、すべてのネストされたオブジェクトは連続したカラムにフラット化されます。例えば、次のドキュメントを考えましょう。
{
id: 12,
name: "Lohia Manufacturers Inc.",
address: {street: "Main Street", city: "Chapel Hill", state: "NC"},
offices: ["Chapel Hill", "London", "New York"],
annual_revenue: 35,600,000
}
このドキュメントは次のカラムにより表されます:
| カラム名 | データ型 | サンプル値 |
| id | Integer | 12 |
| name | String | Lohia Manufacturers Inc. |
| address.street | String | Main Street |
| address.city | String | Chapel Hill |
| address.state | String | NC |
| offices | String | ["Chapel Hill", "London", "New York"] |
| annual_revenue | Double | 35,600,000 |
FlattenObjects が設定されていない場合、address.street、address.city、およびaddress.state カラムは別々にはなりません。文字列型の住所カラムは一つのオブジェクトとして表されます。値は次のようになります {street:"Main Street", city:"Chapel Hill", state:"NC"}。JSON アグリゲートの詳細についてはJSON 関数 を参照してください。
カラム名の区切り文字をドットから変更するには、SeparatorCharacter を設定します。
FlattenArrays プロパティは配列の値をフラット化してそれぞれのカラムとするために使われます。これは次の例のように短い配列の場合にのみ推奨されます。
"coord": [ -73.856077, 40.848447 ]FlattenArrays プロパティは2に設定して上の配列を次のように表すことができます:
| カラム名 | データ型 | サンプル値 |
| coord.0 | Float | -73.856077 |
| coord.1 | Float | 40.848447 |
アンバウンドの配列をそのままにしておき、必要な際にJSON 関数 を使ってデータを取り出すことをお勧めします。
自動スキーマ検出 の説明にあるとおり、直感的なテーブルスキーマは非構造化Azure Cosmos DB データへのSQL アクセスを可能にします。JSON 関数 は標準のJSON 関数を使ってAzure Cosmos DB データをサマライズし、あらゆるネスト構造から値を抽出できます。 カスタムスキーマ定義 では静的なテーブルを定義でき、データのリレーショナルビューでの緻密な制御を可能にします。例えば、parent/child テーブルやfact/dimension テーブルを定義するスキーマを記述することができます。 しかし、これらのスキーマに限定されません。
接続後は、どんなネストされた構造でもデータをフラット化せずにクエリできますFlattenArrays やFlattenObjects でアクセスできるあらゆるリレーションへは、アドホックなSQL クエリを使ってもアクセスが可能です。
次のRestaurant データセットからのサンプルドキュメントを考えてみましょう。
{
"address": {
"building": "1007",
"coord": [
-73.856077,
40.848447
],
"street": "Morris Park Ave",
"zipcode": "10462"
},
"borough": "Bronx",
"cuisine": "Bakery",
"grades": [
{
"grade": "A",
"score": 2,
"date": {
"$date": "1393804800000"
}
},
{
"date": {
"$date": "1378857600000"
},
"grade": "B",
"score": 6
},
{
"score": 10,
"date": {
"$date": "1358985600000"
},
"grade": "C"
}
],
"name": "Morris Park Bake Shop",
"restaurant_id": "30075445"
}
このドキュメントのあらゆるネスト構造にカラムとしてアクセスできます。以下のクエリで示すように、ドット表記法を使ってアクセスしたい値にドリルダウンします。配列のインデックスはゼロオリジンです。例えば、次のクエリではサンプル内のrestaurant のsecond grade を取得します。
SELECT [address.building], [grades.1.grade] FROM restaurants WHERE restaurant_id = '30075445'先のクエリは、次の結果を返します。
| カラム名 | データ型 | サンプル値 |
| address.building | String | 1007 |
| grades.1.grade | String | A |
ドキュメントの配列を、個別のテーブルのように取得することが可能です。例えば、restaurants コレクションから次のJSON 構造を取得します。
{
"_id" : ObjectId("568c37b748ddf53c5ed98932"),
"address" : {
"building" : "1007",
"coord" : [-73.856077, 40.848447],
"street" : "Morris Park Ave",
"zipcode" : "10462"
},
"borough" : "Bronx",
"cuisine" : "Bakery",
"grades" : [{
"date" : ISODate("2014-03-03T00:00:00Z"),
"grade" : "A",
"score" : 2
}, {
"date" : ISODate("2013-09-11T00:00:00Z"),
"grade" : "A",
"score" : 6
}, {
"date" : ISODate("2013-01-24T00:00:00Z"),
"grade" : "A",
"score" : 10
}, {
"date" : ISODate("2011-11-23T00:00:00Z"),
"grade" : "A",
"score" : 9
}, {
"date" : ISODate("2011-03-10T00:00:00Z"),
"grade" : "B",
"score" : 14
}],
"name" : "Morris Park Bake Shop",
"restaurant_id" : "30075445"
}
垂直フラット化ではgrades 配列を別々のテーブルとして取得することを許可します。
SELECT * FROM [restaurants.grades]このクエリは、次のデータセットを返します。
| date | grade | score | P_id | _index |
| 2014-03-03T00:00:00.000Z | A | 2 | 568c37b748ddf53c5ed98932 | 1 |
| 2013-09-11T00:00:00.000Z | A | 6 | 568c37b748ddf53c5ed98932 | 2 |
| 2013-01-24T00:00:00.000Z | A | 10 | 568c37b748ddf53c5ed98932 | 3 |
SELECT [restaurants].[restaurant_id], [restaurants.grades].* FROM [restaurants.grades] JOIN [restaurants] WHERE [restaurants].name = 'Morris Park Bake Shop'このクエリは、次のデータセットを返します。
| restaurant_id | date | grade | score | P_id | _index |
| 30075445 | 2014-03-03T00:00:00.000Z | A | 2 | 568c37b748ddf53c5ed98932 | 1 |
| 30075445 | 2013-09-11T00:00:00.000Z | A | 6 | 568c37b748ddf53c5ed98932 | 2 |
| 30075445 | 2013-01-24T00:00:00.000Z | A | 10 | 568c37b748ddf53c5ed98932 | 3 |
| 30075445 | 2011-11-23T00:00:00.000Z | A | 9 | 568c37b748ddf53c5ed98932 | 4 |
| 30075445 | 2011-03-10T00:00:00.000Z | B | 14 | 568c37b748ddf53c5ed98932 | 5 |
Sync App では、JSON ストラクチャーをカラム値として返すことができます。Sync App を使って、これらのJSON ストラクチャーにおいて標準SQL 関数を使用できます。このセクションの例では、次の配列を使用します。
[
{ "grade": "A", "score": 2 },
{ "grade": "A", "score": 6 },
{ "grade": "A", "score": 10 },
{ "grade": "A", "score": 9 },
{ "grade": "B", "score": 14 }
]
SELECT Name, JSON_EXTRACT(grades,'[0].grade') AS Grade, JSON_EXTRACT(grades,'[0].score') AS Score FROM Students;
| カラム名 | サンプル値 |
| Grade | A |
| Score | 2 |
SELECT Name, JSON_COUNT(grades,'[x]') AS NumberOfGrades FROM Students;
| カラム名 | サンプル値 |
| NumberOfGrades | 5 |
SELECT Name, JSON_SUM(score,'[x].score') AS TotalScore FROM Students;
| カラム名 | サンプル値 |
| TotalScore | 41 |
SELECT Name, JSON_MIN(score,'[x].score') AS LowestScore FROM Students;
| カラム名 | サンプル値 |
| LowestScore | 2 |
SELECT Name, JSON_MAX(score,'[x].score') AS HighestScore FROM Students;
| カラム名 | サンプル値 |
| HighestScore | 14 |
DOCUMENT 関数はすべてのドキュメントをJSON 文字列として取得する場合に用いられます。例として、次のクエリとその結果をご覧ください。
SELECT DOCUMENT(*) FROM Customers;上のクエリはすべてのドキュメントを返します。
{ "id": 12, "name": "Lohia Manufacturers Inc.", "address": { "street": "Main Street", "city": "Chapel Hill", "state": "NC"}, "offices": [ "Chapel Hill", "London", "New York" ], "annual_revenue": 35,600,000 }
Cosmos DB also supports a number of built-in functions for common operations, that can be used inside queries. Here are some example of how can be used as part of select columns or the WHERE clause:
Use Built-in functions as part of SELECT columns
SELECT IS_NUMBER(user_id) AS ISN_ATTR, IS_NUMBER(id) AS ISN_ID FROM [users] SELECT POWER(user_id, 2) AS POWERSSS, LENGTH(id) AS LENGTH_ID, PI() AS JustThePI FROM [users]
Use Built-in functions as part of WHERE clause
SELECT * FROM [users] WHERE STARTSWITH(middle_name, 'G') SELECT * FROM [users] WHERE REPLACE(middle_name, 'Chr', '___') = '___istopher'
| Function group | Operations |
| Mathematical functions | ABS, CEILING, EXP, FLOOR, LOG, LOG10, POWER, ROUND, SIGN, SQRT, SQUARE, TRUNC, ACOS, ASIN, ATAN, ATN2, COS, COT, DEGREES, PI, RADIANS, SIN, and TAN |
| Type checking functions | IS_ARRAY, IS_BOOL, IS_NULL, IS_NUMBER, IS_OBJECT, IS_STRING, IS_DEFINED, and IS_PRIMITIVE |
| String functions | ARRAY, CONCAT, STRINGEQUALS, CONTAINS, ENDSWITH, INDEX_OF, LEFT, LENGTH, LOWER, LTRIM, REPLACE, REPLICATE, REVERSE, RIGHT, RTRIM, STARTSWITH, SUBSTRING, and UPPER |
| Array functions | ARRAY_CONCAT, ARRAY_CONTAINS, ARRAY_LENGTH, and ARRAY_SLICE |
The mathematical functions each perform a calculation, based on input values that are provided as arguments, and return a numeric value. Here's a table of supported built-in mathematical functions.
| Usage | Description |
| ABS (num_expr) | Returns the absolute (positive) value of the specified numeric expression. |
| CEILING (num_expr) | Returns the smallest integer value greater than, or equal to, the specified numeric expression. |
| FLOOR (num_expr) | Returns the largest integer less than or equal to the specified numeric expression. |
| EXP (num_expr) | Returns the exponent of the specified numeric expression. |
| LOG (num_expr [,base]) | Returns the natural logarithm of the specified numeric expression, or the logarithm using the specified base |
| LOG10 (num_expr) | Returns the base-10 logarithmic value of the specified numeric expression. |
| ROUND (num_expr) | Returns a numeric value, rounded to the closest integer value. |
| TRUNC (num_expr) | Returns a numeric value, truncated to the closest integer value. |
| SQRT (num_expr) | Returns the square root of the specified numeric expression. |
| SQUARE (num_expr) | Returns the square of the specified numeric expression. |
| POWER (num_expr, num_expr) | Returns the power of the specified numeric expression to the value specified. |
| SIGN (num_expr) | Returns the sign value (-1, 0, 1) of the specified numeric expression. |
| ACOS (num_expr) | Returns the angle, in radians, whose cosine is the specified numeric expression; also called arccosine. |
| ASIN (num_expr) | Returns the angle, in radians, whose sine is the specified numeric expression. This is also called arcsine. |
| ATAN (num_expr) | Returns the angle, in radians, whose tangent is the specified numeric expression. This is also called arctangent. |
| ATN2 (num_expr) | Returns the angle, in radians, between the positive x-axis and the ray from the origin to the point (y, x), where x and y are the values of the two specified float expressions. |
| COS (num_expr) | Returns the trigonometric cosine of the specified angle, in radians, in the specified expression. |
| COT (num_expr) | Returns the trigonometric cotangent of the specified angle, in radians, in the specified numeric expression. |
| DEGREES (num_expr) | Returns the corresponding angle in degrees for an angle specified in radians. |
| PI () | Returns the constant value of PI. |
| RADIANS (num_expr) | Returns radians when a numeric expression, in degrees, is entered. |
| SIN (num_expr) | Returns the trigonometric sine of the specified angle, in radians, in the specified expression. |
| TAN (num_expr) | Returns the tangent of the input expression, in the specified expression. |
The type checking functions allow you to check the type of an expression within SQL queries. Type checking functions can be used to determine the type of properties within documents dynamically when it is variable or unknown. Here's a table of supported built-in type checking functions.
| Usage | Description |
| IS_ARRAY (expr) | Returns a Boolean indicating if the type of the value is an array. |
| IS_BOOL (expr) | Returns a Boolean indicating if the type of the value is a Boolean. |
| IS_NULL (expr) | Returns a Boolean indicating if the type of the value is null. |
| IS_NUMBER (expr) | Returns a Boolean indicating if the type of the value is a number. |
| IS_OBJECT (expr) | Returns a Boolean indicating if the type of the value is a JSON object. |
| IS_STRING (expr) | Returns a Boolean indicating if the type of the value is a string. |
| IS_DEFINED (expr) | Returns a Boolean indicating if the property has been assigned a value. |
| IS_PRIMITIVE (expr) | Returns a Boolean indicating if the type of the value is a string, number, Boolean or null. |
The following scalar functions perform an operation on a string input value and return a string, numeric or Boolean value. Here's a table of built-in string functions:
| Usage | Description |
| ARRAY (str_expr) | Project the results of the specified query as an array. |
| LENGTH (str_expr) | Returns the number of characters of the specified string expression |
| CONCAT (str_expr, str_expr [, str_expr]) | Returns a string that is the result of concatenating two or more string values. |
| SUBSTRING (str_expr, num_expr, num_expr) | Returns part of a string expression. |
| STARTSWITH (str_expr, str_expr, bool_expr) | Returns a Boolean indicating whether the first string expression starts with the second. By default, this is case-insensitive. Setting bool_expr to false makes STARTSWITH case-sensitive. |
| ENDSWITH (str_expr, str_expr, bool_expr) | Returns a Boolean indicating whether the first string expression ends with the second. By default, this is case-insensitive. Setting bool_expr to false makes ENDSWITH case-sensitive. |
| CONTAINS (str_expr, str_expr, bool_expr) | Returns a Boolean indicating whether the first string expression contains the second. By default, this is case-insensitive. Setting bool_expr to false makes CONTAINS case-sensitive. |
| STRINGEQUALS (str_expr, str_expr, bool_expr) | Returns a Boolean indicating whether the first string expression equals the second. By default, this is case-insensitive. Setting bool_expr to false makes STRINGEQUALS case-sensitive. |
| INDEX_OF (str_expr, str_expr) | Returns the starting position of the first occurrence of the second string expression within the first specified string expression, or -1 if the string is not found. |
| LEFT (str_expr, num_expr) | Returns the left part of a string with the specified number of characters. |
| RIGHT (str_expr, num_expr) | Returns the right part of a string with the specified number of characters. |
| LTRIM (str_expr) | Returns a string expression after it removes leading blanks. |
| RTRIM (str_expr) | Returns a string expression after truncating all trailing blanks. |
| LOWER (str_expr) | Returns a string expression after converting uppercase character data to lowercase. |
| UPPER (str_expr) | Returns a string expression after converting lowercase character data to uppercase. |
| REPLACE (str_expr, str_expr, str_expr) | Replaces all occurrences of a specified string value with another string value. |
| REPLICATE (str_expr, num_expr) | Repeats a string value a specified number of times. |
| REVERSE (str_expr) | Returns the reverse order of a string value. |
The following scalar functions perform an operation on an array input value and return numeric, Boolean or array value. Here's a table of built-in array functions:
| Usage | Description |
| ARRAY_LENGTH (arr_expr) | Returns the number of elements of the specified array expression. |
| ARRAY_CONCAT (arr_expr, arr_expr [, arr_expr]) | Returns an array that is the result of concatenating two or more array values. |
| ARRAY_CONTAINS (arr_expr, expr [, bool_expr]) | Returns a Boolean indicating whether the array contains the specified value. Can specify if the match is full or partial. |
| ARRAY_SLICE (arr_expr, num_expr [, num_expr]) | Returns part of an array expression. |
You can also perform nested built-in functions, which are processed server side as well:
i.e. SELECT TOP 10 CONCAT(SUBSTRING(UPPER(cuisine), 0, 3), '-cuisine') FROM [restaurants]
The GROUP BY clause divides the query's results according to the values of one or more specified properties. This operation is partially done server-side because of some API limitations. We still need to operate a client-side grouping.
SELECT COUNT(*) AS CNT, gender FROM [users] GROUP BY gender SELECT COUNT(*) AS CNT, gender, doc_type FROM [users] GROUP BY gender, doc_type
Cosmos DB's SQL API supports a special type of join operation called JOIN IN, which is specifically designed for working with nested arrays within documents. Unlike traditional SQL joins that combine data from separate tables, JOIN IN allows you to "flatten" and query nested array elements within a single document.
{
"id": "3",
"name": "DEV Park Bake Shop",
"cuisine": "Bakery",
"grades": [
{
"date": 1393804800000,
"grade": "D",
"score": 2
},
{
"date": 1378857600000,
"grade": "A",
"score": 6
}
]
}
SELECT c.Id, g.grade, g.score, g.date
FROM restaurants c
JOIN g IN c.grades
WHERE c.[name] = 'DEV Park Bake Shop'
SELECT c["Id"], g["grade"], g["score"], g["date"]
FROM C AS c
JOIN g IN c.grades
WHERE c["name"] = "DEV Park Bake Shop"
Sync App は、SQL クエリを対応するAzure Cosmos DB クエリにマッピングします。ここではトランスフォーメーションの詳細は説明しませんが、いくつか代表的なものを説明します。Sync App は、Aggregation Framework などのSQL API の機能の良いところを使って望まれる結果を出します。
| SQL クエリ | Sql API クエリ |
SELECT id, name FROM Users | SELECT C.id, C.name FROM C |
SELECT * FROM Users WHERE name = 'A' | SELECT * FROM C WHERE C.name = 'A' |
SELECT * FROM Users WHERE name = 'A' OR email = '[email protected]' | SELECT * FROM C WHERE C.name = 'A' OR C.email = '[email protected]' |
SELECT id, grantamt FROM WorldBank WHERE grantamt IN (4500000, 85400000) OR grantamt = 16200000 | SELECT C.id, C.grantamt FROM C WHERE C.grantamt IN (4500000, 85400000) OR C.grantamt = 16200000 |
SELECT * FROM WorldBank WHERE CountryCode = 'A' ORDER BY TotalCommAmt ASC | SELECT * FROM C WHERE C.countrycode = 'AL' ORDER BY C.totalcommamt ASC |
SELECT * FROM WorldBank WHERE CountryCode = 'A' ORDER BY TotalCommAmt DESC | SELECT * FROM C WHERE C.countrycode = 'AL' ORDER BY C.totalcommamt DESC |
| SQL クエリ | Sql API クエリ |
SELECT COUNT(grantamt) AS COUNT_GRAMT FROM WorldBank | SELECT COUNT(C.grantamt) AS COUNT_GRAMT FROM C |
SELECT SUM(grantamt) AS SUM_GRAMT FROM WorldBank | SELECT SUM(C.grantamt) AS SUM_GRAMT FROM C |
| SQL クエリ | Sql API クエリ |
SELECT IS_NUMBER(grantamt) AS ISN_ATTR, IS_NUMBER(id) AS ISN_ID FROM WorldBank | SELECT IS_NUMBER(C.grantamt) AS ISN_ATTR, IS_NUMBER(C.id) AS ISN_ID FROM C |
SELECT POWER(totalamt, 2) AS POWERS_A, LENGTH(id) AS LENGTH_ID, PI() AS ThePI FROM WorldBank | SELECT POWER(C.totalamt, 2) AS POWERS_A, LENGTH(C.id) AS LENGTH_ID, PI() AS ThePI FROM C |
自動スキーマ検出 で作成されたテーブルスキーマを、スキーマファイルに保存することで拡張できます。スキーマファイルはシンプルな形式で、変更は簡単です。
GenerateSchemaFiles を"OnStart" に設定すると、接続時にすべてのテーブルのスキーマを保持します。テーブルスキーマを必要に応じて生成することもできます。GenerateSchemaFiles を"OnUse" に設定して、テーブルにSELECT クエリを実行します。
例えば、レストランのデータセットのスキーマを考えてみましょう。これはAzure Cosmos DB が提供するサンプルデータです。
コレクションからのサンプルドキュメントは以下のとおりです。
{
"address":{
"building":"461",
"coord":[
-74.138492,
40.631136
],
"street":"Port Richmond Ave",
"zipcode":"10302"
},
"borough":"Staten Island",
"cuisine":"Other",
"name":"Indian Oven",
"restaurant_id":"50018994"
}
GenerateSchemaFiles が設定されている場合、Sync App はLocation プロパティで指定されたフォルダ内にスキーマを格納します。 生成されたスキーマでカラムの動作を変更できます。
次のスキーマは、other:bsonpath プロパティを使用して、特定のカラムのデータをコレクションのどこに取得するかを定義します。このモデルを使って、階層構造のアービトラリーレベルをフラット化することができます。
以下はレストランのデータセットの対応するカラム定義です。カスタムスキーマ例 では、完全なスキーマを確認できます。
<rsb:script xmlns:rsb="http://www.rssbus.com/ns/rsbscript/2">
<rsb:info title="StaticRestaurants" description="Custom Schema for the restaurants data set.">
<!-- Column definitions -->
<attr name="_rid" xs:type="string" key="true" other:collrid="hWdRAKRi3Pg=" other:dbrid="hWdRAA==" other:partitionpath="/name" />
<attr name="borough" xs:type="string" />
<attr name="cuisine" xs:type="string" />
<attr name="address.building" xs:type="string" />
<attr name="address.street" xs:type="string" />
<attr name="address.coord.0" xs:type="double" />
<attr name="address.coord.1" xs:type="double" />
<input name="rows@next" desc="Internal attribute used for paging through data." />
</rsb:info>
<rsb:set attr="collection" value="restaurants"/>
</rsb:script>
このセクションには、完全なスキーマが含まれています。info セクションではAzure Cosmos DB オブジェクトのリレーショナルビューを可能にします。詳細はカスタムスキーマ定義 を参照してください。次のテーブルではSELECT、INSERT、UPDATE、およびDELETE コマンドが以下のスキーマのGET、POST、MERGE、およびDELETE セクションとして実行されます。
スキーマにrows@next input をas-is でコピーします。 cosmosdbadoSysData のような操作は内部実装で、そのままコピーができます。
Location プロパティをスキーマファイルを格納するファイルディレクトリに設定します。
When, creating custom schemas, the attr for _rid, shown below, is required.
Also required are three properties for the _rid column definition:
<rsb:script xmlns:rsb="http://www.rssbus.com/ns/rsbscript/2">
<rsb:info title="StaticRestaurants" description="Custom Schema for the restaurants data set.">
<!-- Column definitions -->
<attr name="_rid" xs:type="string" key="true" other:collrid="hWdRAKRi3Pg=" other:dbrid="hWdRAA==" other:partitionpath="/name" />
<attr name="borough" xs:type="string" />
<attr name="cuisine" xs:type="string" />
<attr name="address.building" xs:type="string" />
<attr name="address.street" xs:type="string" />
<attr name="address.coord.0" xs:type="double" />
<attr name="address.coord.1" xs:type="double" />
<input name="rows@next" desc="Internal attribute used for paging through data." />
</rsb:info>
<rsb:script method="GET">
<rsb:call op="cosmosdbadoSysData">
<rsb:push />
</rsb:call>
</rsb:script>
<rsb:script method="POST">
<rsb:call op="cosmosdbadoSysData">
<rsb:push />
</rsb:call>
</rsb:script>
<rsb:script method="MERGE">
<rsb:call op="cosmosdbadoSysData">
<rsb:push />
</rsb:call>
</rsb:script>
<rsb:script method="DELETE">
<rsb:call op="cosmosdbadoSysData">
<rsb:push />
</rsb:call>
</rsb:script>
</rsb:script>
ストアドプロシージャはファンクションライクなインターフェースで、Azure Cosmos DB の単純なSELECT/INSERT/UPDATE/DELETE 処理にとどまらずSync App の機能を拡張します。
ストアドプロシージャは、パラメータのリストを受け取り、目的の機能を実行し、プロシージャが成功したか失敗したかを示すとともにAzure Cosmos DB から関連するレスポンスデータを返します。
| Name | Description |
| AddDocument | Insert entire JSON string to CosmosDB. |
Insert entire JSON string to CosmosDB.
| Name | Type | Description |
| Database | String | Name of the database. |
| Table | String | Name of the table. |
| PartitionKey | String | Partition key value of the table. |
| Document | String | The JSON string to be inserted. |
| Name | Type | Description |
| Success | String | Returns true if the operation is successful. |
Creates a schema file for the collection.
データモデル内の既存のテーブルまたはビューからローカルスキーマファイル(.rsd)を作成します。
スキーマファイルは、このプロシージャが実行されると、Location 接続プロパティで設定されたディレクトリに作成されます。ファイルを編集してカラムを含めたり除外したり、カラム名を変更したり、カラムのデータ型を変更したりできます。
Sync App はLocation を確認し、.rsd ファイルの名前がデータモデルのテーブルまたはビューに一致するかどうかを判断します。重複がある場合、スキーマファイルはデータモデル内のこのテーブルのデフォルトインスタンスよりも優先されます。既存のテーブルまたはビューに一致しないスキーマファイルがLocation に存在する場合、新しいテーブルまたはビューのエントリがSync App のデータモデルに追加されます。
| Name | Type | Description |
| SchemaName | String | The schema of the collection. |
| TableName | String | The name of the collection. |
| FileName | String | The full file path and name of the schema to generate. If not set, the FileData output is used instead. |
| Name | Type | Description |
| Result | String | Returns Success or Failure. |
| FileData | String | The generated schema encoded in Base64. Only returned if FileName is not set. |
Gets the OAuth access token from CosmosDB.
| Name | Type | Description |
| AuthMode | String | The type of authentication you are attempting. Use App for a Windows application, or Web for Web-based applications.
デフォルト値はAPPです。 |
| Verifier | String | A verifier returned by the service that must be input to return the access token. Needed only when using the Web auth mode. Obtained by navigating to the URL returned in GetOAuthAuthorizationUrl. |
| CallbackUrl | String | The URL the user will be redirected to after authorizing your application. |
| Scope | String | The scope or permissions you are requesting. |
| Prompt | String | Defaults to 'select_account' which prompts the user to select account while authenticating. Set to 'None', for no prompt, 'login' to force user to enter their credentials or 'consent' to trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app. |
| Name | Type | Description |
| OAuthAccessToken | String | The access token used for communication with CosmosDB. |
| OAuthRefreshToken | String | A token that may be used to obtain a new access token. |
| ExpiresIn | String | The remaining lifetime for the access token in seconds. |
Gets the CosmosDB authorization URL. Access the URL returned in the output in a Web browser. This requests the access token that can be used as part of the connection string to CosmosDB.
| Name | Type | Description |
| CallbackUrl | String | The URL that CosmosDB will return to after the user has authorized your app. |
| Scope | String | The scope or permissions you are requesting. |
| State | String | This field indicates any state that may be useful to your application upon receipt of the response. Your application receives the same value it sent, as this parameter makes a round-trip to CosmosDB authorization server and back. Uses include redirecting the user to the correct resource in your site, using nonces, and mitigating cross-site request forgery. |
| Prompt | String | Defaults to 'select_account' which prompts the user to select account while authenticating. Set to 'None', for no prompt, 'login' to force user to enter their credentials or 'consent' to trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app. |
| Name | Type | Description |
| URL | String | The URL to be entered into a Web browser to obtain the verifier token and authorize the data provider with. |
Refreshes the OAuth access token used for authentication with CosmosDB.
| Name | Type | Description |
| OAuthRefreshToken | String | The refresh token returned from the original authorization code exchange. |
| Scope | String | The scope or permissions you are requesting. |
| Name | Type | Description |
| OAuthAccessToken | String | The new OAuthAccessToken returned from the service. |
| OAuthRefreshToken | String | A token that may be used to obtain a new access token. |
| ExpiresIn | String | The remaining lifetime on the access token. |
| プロパティ | 説明 |
| AuthScheme | The type of authentication to use when connecting to Azure Cosmos DB. |
| AccountEndpoint | 値は、Cosmos DB アカウントの[Keys]ブレードからのCosmos DB アカウントURL である必要があります。 |
| AccountKey | Azure Cosmos DB REST API に接続するためのマスターキートークンまたはリソーストークン。 |
| TokenType | トークンの種類を示します:マスターまたはリソース。 |
| プロパティ | 説明 |
| AzureTenant | データにアクセスするために使用されているAzure Cosmos DB テナントを識別します。テナントのドメイン名(例: contoso.onmicrosoft.com )またはディレクトリ(テナント)ID のいずれかを受け付けます。 |
| AzureEnvironment | 接続するAzure ネットワーク環境を指定します。Azure アカウントが追加されたネットワークと同じである必要があります。 |
| プロパティ | 説明 |
| Scope | データへの適切なアクセスを確実にするために、認証ユーザーのアプリケーションへのアクセス範囲を指定します。 カスタムOAuth アプリケーションが必要な場合は、通常、アプリケーションの作成時に指定します。 |
| プロパティ | 説明 |
| OAuthJWTCert | クライアント証明書のJWT 証明書ストアの名前を指定します。 |
| OAuthJWTCertType | JWT 証明書を格納しているキーストアの種類を指定します。 |
| OAuthJWTCertPassword | パスワードで保護された証明書ストアにアクセスするために使用されるOAuth JWT 証明書のパスワードを指定します。証明書ストアがパスワードを必要としない場合は、このプロパティを空白のままにします。 |
| OAuthJWTCertSubject | ストアで一致する証明書を検索するために使用される、OAuth JWT 証明書のサブジェクトを指定します。部分一致と、先頭の証明書を選択するためのワイルドカード '*' をサポートします。 |
| プロパティ | 説明 |
| SSLClientCert | SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストアを指定します。このプロパティは、他のSSL 関連プロパティと連動して、セキュアな接続を確立します。 |
| SSLClientCertType | SSL クライアント認証用のTLS/SSL クライアント証明書を格納するキーストアの種類を指定します。プラットフォームや証明書のソースに応じて、さまざまなキーストア形式から選択できます。 |
| SSLClientCertPassword | TLS/SSL クライアント証明書ストアにアクセスするために必要なパスワードを指定します。選択した証明書ストアの種類がアクセスにパスワードを必要とする場合、このプロパティを使用します。 |
| SSLClientCertSubject | TLS/SSL クライアント証明書のサブジェクトを指定し、証明書ストアで場所を検索します。 CN=www.server.com, C=US のように、識別名フィールドのカンマ区切りのリストを使用します。ワイルドカード * は、ストアの先頭の証明書を選択します。 |
| SSLServerCert | TLS/SSL を使用して接続する際に、サーバーが受け入れ可能な証明書を指定します。 |
| プロパティ | 説明 |
| FirewallType | provider がプロキシベースのファイアウォールを介してトラフィックをトンネリングするために使用するプロトコルを指定します。 |
| FirewallServer | ファイアウォールを通過し、ユーザーのクエリをネットワークリソースに中継するために使用されるプロキシのIP アドレス、DNS 名、またはホスト名を識別します。 |
| FirewallPort | プロキシベースのファイアウォールで使用するTCP ポートを指定します。 |
| FirewallUser | プロキシベースのファイアウォールに認証するアカウントのユーザーID を識別します。 |
| FirewallPassword | プロキシベースのファイアウォールで認証するユーザーアカウントのパスワードを指定します。 |
| プロパティ | 説明 |
| ProxyAutoDetect | provider が、手動で指定されたプロキシサーバーを使用するのではなく、既存のプロキシサーバー構成についてシステムプロキシ設定をチェックするかどうかを指定します。 |
| ProxyServer | HTTP トラフィックをルートするプロキシサーバーのホストネームもしくはIP アドレスを指定します。 |
| ProxyPort | クライアントとの間でHTTP トラフィックをルーティングするために予約された、指定されたプロキシサーバーの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 です。 |
| Schema | 作業するAzure Cosmos DB データベースを指定します。 |
| プロパティ | 説明 |
| CalculateAggregates | 集計の計算値を返すか、パーティション範囲でグループ化するかを指定します。 |
| ConsistencyLevel | Denotes the type of token: master or resource. |
| FlattenArrays | デフォルトで、ネスト配列はJSON 文字列として返されます。 FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。ネスト配列から返すエレメントの数に FlattenArrays を設定します。 |
| FlattenObjects | フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。 |
| ForceQueryOnNonIndexedContainers | Force the use of an index scan to process the query if indexing is disabled or the right index path is not available. |
| GenerateSchemaFiles | スキーマを生成して保存するユーザーの好みのタイミングを示します。 |
| MaxRows | 集計やGROUP BY を含まないクエリで返される最大行数を指定します。 |
| MaxThreads | Specifies the maximum number of concurrent requests for Batch CUD (Create, Update, Delete) operations. |
| MultiThreadCount | パーティション化されたコレクション内の集計クエリでは、異なるパーティション範囲に対する並列リクエストが必要になります。このプロパティを、同時に発行する並列リクエストの数に設定します。 |
| Other | 特定の問題に対処するため、特殊なシナリオ向けの高度な接続プロパティを指定します。このプロパティは、サポートチームの指示がある場合にのみ使用してください。 |
| Pagesize | provider がAzure Cosmos DB にデータをリクエストするときに返す、ページあたりの最大レコード数を指定します。 |
| PseudoColumns | テーブルカラムとして公開する擬似カラムを、'TableName=ColumnName;TableName=ColumnName' の形式の文字列で指定します。 |
| RequestPriorityLevel | Specifies the priority level for requests sent to Azure Cosmos DB when the number of requests exceeds the configured RU/s within a second. |
| RowScanDepth | テーブルで利用可能なカラムを探すためにスキャンする行数の最大値。 |
| SeparatorCharacter | 階層を示すために使用する記号。 |
| SetPartitionKeyAsPK | Whether or not to use the collection's Partition Key field as part of composite Primary Key for the corresponding exposed table. |
| Timeout | provider がタイムアウトエラーを返すまでにサーバーからの応答を待機する最大時間を秒単位で指定します。 |
| TypeDetectionScheme | 各ドキュメントコレクションのフィールドおよびデータタイプを決定するために、provider がデータをどのようにスキャンするかを示すカンマ区切りのオプション。 |
| UserDefinedViews | カスタムビューを定義するJSON 構成ファイルへのファイルパスを指定します。provider は、このファイルで指定されたビューを自動的に検出して使用します。 |
| UseRidAsPk | Set this property to false to switch using the id column as primary key instead the default _rid. |
| WriteThroughputBudget | Defines the Requests Units (RU) budget per Second that the Batch CUD (Create, Update, Delete) operations should not exceed. |
このセクションでは、本プロバイダーの接続文字列で設定可能なAuthentication プロパティの全リストを提供します。
| プロパティ | 説明 |
| AuthScheme | The type of authentication to use when connecting to Azure Cosmos DB. |
| AccountEndpoint | 値は、Cosmos DB アカウントの[Keys]ブレードからのCosmos DB アカウントURL である必要があります。 |
| AccountKey | Azure Cosmos DB REST API に接続するためのマスターキートークンまたはリソーストークン。 |
| TokenType | トークンの種類を示します:マスターまたはリソース。 |
The type of authentication to use when connecting to Azure Cosmos DB.
値は、Cosmos DB アカウントの[Keys]ブレードからのCosmos DB アカウントURL である必要があります。
値は、Cosmos DB アカウントの[Keys]ブレードからのCosmos DB アカウントURL である必要があります。
Azure Cosmos DB REST API に接続するためのマスターキートークンまたはリソーストークン。
Azure ポータルで、Cosmos DB サービスに移動してAzure Cosmos DB アカウントを選択します。リソースメニューから、 [Keys]ページに移動します。[PRIMARY KEY]値を見つけ、Token をこの値に設定します。
トークンの種類を示します:マスターまたはリソース。
マスターキーは、アカウントの作成時に作成されます。マスターキーには、プライマリキーとセカンダリキーの2つがあります。 アカウントの管理者は、セカンダリキーを使用してキーローテーションを実行できます。さらに、アカウント管理者は必要に応じてキーを再生成することもできます。
リソーストークンは、データベース内のユーザーに、リソースへの正確なアクセス制御のためのアクセス許可が付与されたときに作成されます。アクセス許可リソースとも呼ばれます。 アクセス許可リソースには、ユーザーがアクセスできるリソースパスとアクセスタイプに関する情報で構成されたハッシュリソーストークンが含まれています。 アクセス許可リソーストークンには有効期限があり、有効期限はオーバーライドできます。 アクセス許可リソースがPOST、GET、PUT で動作するときに、新しいリソーストークンが生成されます。
このセクションでは、本プロバイダーの接続文字列で設定可能なAzure Authentication プロパティの全リストを提供します。
| プロパティ | 説明 |
| AzureTenant | データにアクセスするために使用されているAzure Cosmos DB テナントを識別します。テナントのドメイン名(例: contoso.onmicrosoft.com )またはディレクトリ(テナント)ID のいずれかを受け付けます。 |
| AzureEnvironment | 接続するAzure ネットワーク環境を指定します。Azure アカウントが追加されたネットワークと同じである必要があります。 |
データにアクセスするために使用されているAzure Cosmos DB テナントを識別します。テナントのドメイン名(例: contoso.onmicrosoft.com )またはディレクトリ(テナント)ID のいずれかを受け付けます。
テナントとは、Microsoft Entra ID(旧称:Azure AD)を通じて管理される、組織のユーザーやリソースのためのデジタルコンテナです。 各テナントには一意のディレクトリID が関連付けられており、多くの場合、カスタムドメイン(例:microsoft.com やcontoso.onmicrosoft.com)も関連付けられています。
Microsoft Entra 管理センターでディレクトリ(テナント)ID を確認するには、Microsoft Entra ID -> プロパティに移動し、「ディレクトリ(テナント)ID」と表示されている値をコピーします。
このプロパティは以下の場合に必要です。
テナントの値は、2つの形式のいずれかで指定できます。
テナントを明示的に指定することで、認証リクエストが正しいディレクトリにルーティングされるようになります。これは、ユーザーが複数のテナントに所属している場合や、サービスプリンシパルベースの認証を使用する場合に特に重要です。
この値が必要な場面で省略されると、認証に失敗したり、誤ったテナントに接続されたりする可能性があります。その結果、認可されていないまたはリソースが見つからないといったエラーが発生する可能性があります。
テナントとは、Microsoft Entra ID(旧称:Azure AD)を通じて管理される、組織のユーザーやリソースのためのデジタルコンテナです。 各テナントには一意のディレクトリID が関連付けられており、多くの場合、カスタムドメイン(例:microsoft.com やcontoso.onmicrosoft.com)も関連付けられています。
Microsoft Entra 管理センターでディレクトリ(テナント)ID を確認するには、Microsoft Entra ID -> プロパティに移動し、「ディレクトリ(テナント)ID」と表示されている値をコピーします。
このプロパティは以下の場合に必要です。
テナントの値は、2つの形式のいずれかで指定できます。
テナントを明示的に指定することで、認証リクエストが正しいディレクトリにルーティングされるようになります。これは、ユーザーが複数のテナントに所属している場合や、サービスプリンシパルベースの認証を使用する場合に特に重要です。
この値が必要な場面で省略されると、認証に失敗したり、誤ったテナントに接続されたりする可能性があります。その結果、認可されていないまたはリソースが見つからないといったエラーが発生する可能性があります。
接続するAzure ネットワーク環境を指定します。Azure アカウントが追加されたネットワークと同じである必要があります。
Azure アカウントがGlobal ネットワークとは異なるネットワーク(China、USGOVT、USGOVTDOD など)の一部である場合は、必要です。
このセクションでは、本プロバイダーの接続文字列で設定可能なOAuth プロパティの全リストを提供します。
| プロパティ | 説明 |
| Scope | データへの適切なアクセスを確実にするために、認証ユーザーのアプリケーションへのアクセス範囲を指定します。 カスタムOAuth アプリケーションが必要な場合は、通常、アプリケーションの作成時に指定します。 |
データへの適切なアクセスを確実にするために、認証ユーザーのアプリケーションへのアクセス範囲を指定します。 カスタムOAuth アプリケーションが必要な場合は、通常、アプリケーションの作成時に指定します。
スコープは、認証ユーザーがどのようなアクセス権を持つかを定義するために設定されます。例えば、読み取り、読み取りと書き込み、機密情報への制限付きアクセスなどです。システム管理者は、スコープを使用して機能またはセキュリティクリアランスによるアクセスを選択的に有効化できます。
InitiateOAuth がGETANDREFRESH に設定されている場合、要求するスコープを変更したい場合はこのプロパティを使用する必要があります。
InitiateOAuth がREFRESH またはOFF のいずれかに設定されている場合、このプロパティまたはScope 入力を使用して、要求するスコープを変更できます。
このセクションでは、本プロバイダーの接続文字列で設定可能なJWT OAuth プロパティの全リストを提供します。
| プロパティ | 説明 |
| OAuthJWTCert | クライアント証明書のJWT 証明書ストアの名前を指定します。 |
| OAuthJWTCertType | JWT 証明書を格納しているキーストアの種類を指定します。 |
| OAuthJWTCertPassword | パスワードで保護された証明書ストアにアクセスするために使用されるOAuth JWT 証明書のパスワードを指定します。証明書ストアがパスワードを必要としない場合は、このプロパティを空白のままにします。 |
| OAuthJWTCertSubject | ストアで一致する証明書を検索するために使用される、OAuth JWT 証明書のサブジェクトを指定します。部分一致と、先頭の証明書を選択するためのワイルドカード '*' をサポートします。 |
クライアント証明書のJWT 証明書ストアの名前を指定します。
OAuthJWTCertType フィールドは、OAuthJWTCert により指定された証明書ストアの種類を指定します。 ストアがパスワードで保護されている場合は、OAuthJWTCertPassword を使用してパスワードを指定します。
OAuthJWTCert は、OAuthJWTCertSubject フィールドとともにクライアント証明書を指定するために使われます。 OAuthJWTCert に値が設定され、かつOAuthJWTCertSubject が設定されている場合、CData Sync App は証明書の検索を開始します。 詳しくは、OAuthJWTCertSubject を参照してください。
証明書ストアの指定はプラットフォームに依存します。
注記
JWT 証明書を格納しているキーストアの種類を指定します。
| 値 | 説明 | 注記 |
| USER | 現在のユーザーが所有する証明書ストア。 | Windows のみ使用可能です。 |
| MACHINE | マシンストア。 | Java やその他の非Windows 環境では使用できません。 |
| PFXFILE | 証明書を含むPFX(PKCS12)ファイル。 | |
| PFXBLOB | PFX(PKCS12)形式の証明書ストアをbase-64 でエンコードした文字列。 | |
| JKSFILE | 証明書を含むJava キーストア(JKS)ファイル。 | Java 専用。 |
| JKSBLOB | Java キーストア(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エンコード)。 |
パスワードで保護された証明書ストアにアクセスするために使用されるOAuth JWT 証明書のパスワードを指定します。証明書ストアがパスワードを必要としない場合は、このプロパティを空白のままにします。
このプロパティは、パスワードで保護された証明書ストアを開くために必要なパスワードを指定します。 パスワードが必要かどうかを判断するには、ご利用の証明書ストアのドキュメントまたは設定を参照してください。
ストアで一致する証明書を検索するために使用される、OAuth JWT 証明書のサブジェクトを指定します。部分一致と、先頭の証明書を選択するためのワイルドカード '*' をサポートします。
このプロパティの値は、ストアで一致する証明書を検索するために使用されます。検索プロセスは以下のように動作します。
値を '*' に設定すると、ストアの先頭の証明書が自動的に選択されます。 証明書のサブジェクトは識別名フィールドおよび値のカンマ区切りのリストです。 例:CN=www.server.com, OU=test, C=US, [email protected]。
一般的なフィールドには以下のものが含まれます。
| フィールド | 説明 |
| CN | 共通名。一般的には、www.server.com のようなホスト名です。 |
| O | 法人名 |
| OU | 法人の部署名 |
| L | 法人の住所(市町村名) |
| S | 法人の住所(都道府県) |
| C | 国名 |
| E | E メールアドレス |
フィールド値にカンマが含まれる場合は、引用符で囲んでください。例:"O=ACME, Inc."。
このセクションでは、本プロバイダーの接続文字列で設定可能な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 のように、識別名フィールドのカンマ区切りのリストを使用します。ワイルドカード * は、ストアの先頭の証明書を選択します。 |
| 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。
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 |
Note:'*' を使用してすべての証明書を受け入れるように指定することも可能ですが、セキュリティ上の懸念があるため推奨されません。
このセクションでは、本プロバイダーの接続文字列で設定可能なFirewall プロパティの全リストを提供します。
| プロパティ | 説明 |
| FirewallType | provider がプロキシベースのファイアウォールを介してトラフィックをトンネリングするために使用するプロトコルを指定します。 |
| FirewallServer | ファイアウォールを通過し、ユーザーのクエリをネットワークリソースに中継するために使用されるプロキシのIP アドレス、DNS 名、またはホスト名を識別します。 |
| FirewallPort | プロキシベースのファイアウォールで使用するTCP ポートを指定します。 |
| FirewallUser | プロキシベースのファイアウォールに認証するアカウントのユーザーID を識別します。 |
| FirewallPassword | プロキシベースのファイアウォールで認証するユーザーアカウントのパスワードを指定します。 |
provider がプロキシベースのファイアウォールを介してトラフィックをトンネリングするために使用するプロトコルを指定します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
Note:デフォルトでは、Sync App はシステムプロキシに接続します。この動作を無効化し、次のプロキシタイプのいずれかに接続するには、ProxyAutoDetect をfalse に設定します。
次の表は、サポートされている各プロトコルのポート番号情報です。
| プロトコル | デフォルトポート | 説明 |
| TUNNEL | 80 | Sync App がAzure Cosmos DB への接続を開くポート。トラフィックはこの場所のプロキシを経由して行き来します。 |
| SOCKS4 | 1080 | Sync App がAzure Cosmos DB への接続を開くポート。SOCKS 4 は次にFirewallUser 値をプロキシに渡し、接続リクエストが許容されるかどうかを決定します。 |
| SOCKS5 | 1080 | Sync App がAzure Cosmos DB にデータを送信するポート。SOCKS 5 プロキシに認証が必要な場合には、FirewallUser およびFirewallPassword をプロキシが認識する認証情報に設定します。 |
HTTP プロキシへの接続には、ProxyServer およびProxyPort ポートを使ってください。HTTP プロキシへの認証には、ProxyAuthScheme、ProxyUser、およびProxyPassword を使ってください。
ファイアウォールを通過し、ユーザーのクエリをネットワークリソースに中継するために使用されるプロキシのIP アドレス、DNS 名、またはホスト名を識別します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
プロキシベースのファイアウォールで使用するTCP ポートを指定します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
プロキシベースのファイアウォールに認証するアカウントのユーザーID を識別します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
プロキシベースのファイアウォールで認証するユーザーアカウントのパスワードを指定します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
このセクションでは、本プロバイダーの接続文字列で設定可能なProxy プロパティの全リストを提供します。
| プロパティ | 説明 |
| ProxyAutoDetect | provider が、手動で指定されたプロキシサーバーを使用するのではなく、既存のプロキシサーバー構成についてシステムプロキシ設定をチェックするかどうかを指定します。 |
| ProxyServer | HTTP トラフィックをルートするプロキシサーバーのホストネームもしくはIP アドレスを指定します。 |
| ProxyPort | クライアントとの間でHTTP トラフィックをルーティングするために予約された、指定されたプロキシサーバーのTCP ポートを指定します。 |
| ProxyAuthScheme | ProxyServer 接続プロパティで指定されたプロキシサーバーに対して認証する際にprovider が使用する認証方法を指定します。 |
| ProxyUser | ProxyServer 接続プロパティで指定されたプロキシサーバーに登録されているユーザーアカウントのユーザー名を提供します。 |
| ProxyPassword | ProxyUser 接続プロパティで指定されたユーザーのパスワードを指定します。 |
| ProxySSLType | ProxyServer 接続プロパティで指定されたプロキシサーバーに接続する際に使用するSSL タイプを指定します。 |
| ProxyExceptions | ProxyServer 接続プロパティで設定されたプロキシサーバー経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリストを指定します。 |
provider が、手動で指定されたプロキシサーバーを使用するのではなく、既存のプロキシサーバー構成についてシステムプロキシ設定をチェックするかどうかを指定します。
この接続プロパティをTrue に設定すると、Sync App は既存のプロキシサーバー構成についてシステムプロキシ設定をチェックします(プロキシサーバーの詳細を手動で入力する必要はありません)。
この接続プロパティは他のプロキシ設定より優先されます。特定のプロキシサーバーに接続するためにSync App を構成する場合は、ProxyAutoDetect をFalse に設定します。
HTTP プロキシへの接続には、ProxyServer を参照してください。SOCKS やトンネリングなどの他のプロキシには、FirewallType を参照してください。
HTTP トラフィックをルートするプロキシサーバーのホストネームもしくはIP アドレスを指定します。
ProxyAutoDetect がFalse に設定されている場合、Sync App はこの接続プロパティで指定されたプロキシサーバーを通じてのみHTTP トラフィックをルーティングします。
ProxyAutoDetect がTrue(デフォルト)に設定されている場合、Sync App は代わりにシステムプロキシ設定で指定されたプロキシサーバーを介してHTTP トラフィックをルーティングします。
クライアントとの間でHTTP トラフィックをルーティングするために予約された、指定されたプロキシサーバーのTCP ポートを指定します。
ProxyAutoDetect がFalse に設定されている場合、Sync App はこの接続プロパティで指定されたProxyServer ポートを通じてのみ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 接続プロパティは設定しないでください。 |
Note: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 を参照してください。
Note: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 は、このプロパティで定義されたアドレスを除くすべてのアドレスに使用されます。セミコロンを使用してエントリを区切ります。
Note:Sync App はデフォルトでシステムプロキシ設定を使用するため、それ以上の設定は必要ありません。 この接続にプロキシ例外を明示的に設定する場合は、ProxyAutoDetect をFalse に設定します。
このセクションでは、本プロバイダーの接続文字列で設定可能なLogging プロパティの全リストを提供します。
| プロパティ | 説明 |
| LogModules | ログファイルに含めるコアモジュールを指定します。セミコロンで区切られたモジュール名のリストを使用します。デフォルトでは、すべてのモジュールがログに記録されます。 |
ログファイルに含めるコアモジュールを指定します。セミコロンで区切られたモジュール名のリストを使用します。デフォルトでは、すべてのモジュールがログに記録されます。
Sync App は、実行する各操作の詳細を Logfile 接続プロパティで指定されたログファイルに書き込みます。
ログに記録される各操作は、モジュールと呼ばれるカテゴリに分類されます。各モジュールには対応する短いコードがあり、個々の Sync App の操作がどのモジュールに属するかを示すラベルとして使用されます。
この接続プロパティにモジュールコードをセミコロン区切りのリストで設定すると、指定したモジュールに属する操作のみがログファイルに書き込まれます。この設定は今後のログ記録にのみ適用され、既存のログファイルの内容には影響しません。例: INFO;EXEC;SSL;META;
デフォルトでは、すべてのモジュールの操作がログに含まれます。
モジュールを明示的に除外するには、先頭に「-」を付けます。例: -HTTP
サブモジュールにフィルターを適用するには、<モジュール名>.<サブモジュール名> の構文で指定します。たとえば、次の値を設定すると、Sync App は HTTP モジュールに属するアクションのみをログに記録し、さらに HTTP モジュールの Res サブモジュールに属するアクションを除外します: HTTP;-HTTP.Res
Verbosity 接続プロパティによるログファイルのフィルタリングは、この接続プロパティによるフィルタリングよりも優先されます。そのため、Verbosity 接続プロパティで指定したレベルよりも高い詳細レベルの操作は、この接続プロパティで指定したモジュールに属していても、ログファイルには出力されません。
使用可能なモジュールとサブモジュールは次のとおりです。
| モジュール名 | モジュールの説明 | サブモジュール |
| INFO | 一般情報。接続文字列、製品バージョン(ビルド番号)、および初期接続メッセージが含まれます。 |
|
| EXEC | クエリ実行。ユーザーが記述した SQL クエリ、解析済み SQL クエリ、正規化済み SQL クエリの実行メッセージが含まれます。クエリおよびクエリページの成功/失敗メッセージもここに表示されます。 |
|
| HTTP | HTTP プロトコルメッセージ。HTTP リクエスト/レスポンス(POST メッセージを含む)、および Kerberos 関連のメッセージが含まれます。 |
|
| WSDL | WSDL/XSD ファイルの生成に関するメッセージ。 | — |
| SSL | SSL 証明書メッセージ。 |
|
| AUTH | 認証関連の失敗/成功メッセージ。 |
|
| SQL | SQL トランザクション、SQL 一括転送メッセージ、および SQL 結果セットメッセージが含まれます。 |
|
| META | メタデータキャッシュとスキーマメッセージ。 |
|
| FUNC | SQL 関数の実行に関連する情報。 |
|
| TCP | TCP トランスポートレイヤーメッセージでの送受信生バイト。 |
|
| FTP | File Transfer Protocol に関するメッセージ。 |
|
| SFTP | Secure File Transfer Protocol に関するメッセージ。 |
|
| POP | Post Office Protocol 経由で転送されるデータに関するメッセージ。 |
|
| SMTP | Simple Mail Transfer Protocol 経由で転送されるデータに関するメッセージ。 |
|
| CORE | 他のモジュールでカバーされていない、さまざまな製品内部操作に関連するメッセージ。 | — |
| DEMN | SQL リモーティングに関連するメッセージ。 | — |
| CLJB | 一括データアップロード(クラウドジョブ)に関するメッセージ。 |
|
| SRCE | 他のモジュールに属さない、製品が生成するその他のメッセージ。 | — |
| TRANCE | 低レベルの製品操作に関する高度なメッセージ。 | — |
このセクションでは、本プロバイダーの接続文字列で設定可能なSchema プロパティの全リストを提供します。
| プロパティ | 説明 |
| Location | テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリの場所を指定します。サービスの要件に応じて、これは絶対パスまたは相対パスのいずれかで表されます。 |
| BrowsableSchemas | レポートされるスキーマを利用可能なすべてのスキーマのサブセットに制限するオプション設定。例えば、 BrowsableSchemas=SchemaA,SchemaB,SchemaC です。 |
| Tables | レポートされるテーブルを利用可能なすべてのテーブルのサブセットに制限するオプション設定。例えば、 Tables=TableA,TableB,TableC です。 |
| Views | レポートされたビューを使用可能なテーブルのサブセットに制限するオプション設定。例えば、 Views=ViewA,ViewB,ViewC です。 |
| Schema | 作業するAzure Cosmos DB データベースを指定します。 |
テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリの場所を指定します。サービスの要件に応じて、これは絶対パスまたは相対パスのいずれかで表されます。
Location プロパティは、定義をカスタマイズしたり(例えば、カラム名を変更する、カラムを無視するなど)、新しいテーブル、ビュー、またはストアドプロシージャでデータモデルを拡張する場合にのみ必要です。
指定しない場合、デフォルトの場所は%APPDATA%\\CData\\CosmosDB 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:複数のスキーマまたはカタログを持つデータソースに接続する場合は、確認する各ビューを完全修飾名で指定する必要があります。これにより、複数のカタログやスキーマに存在するビューが混同されることを防ぎます。
作業するAzure Cosmos DB データベースを指定します。
作業するAzure Cosmos DB データベースを指定します。
このセクションでは、本プロバイダーの接続文字列で設定可能なMiscellaneous プロパティの全リストを提供します。
| プロパティ | 説明 |
| CalculateAggregates | 集計の計算値を返すか、パーティション範囲でグループ化するかを指定します。 |
| ConsistencyLevel | Denotes the type of token: master or resource. |
| FlattenArrays | デフォルトで、ネスト配列はJSON 文字列として返されます。 FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。ネスト配列から返すエレメントの数に FlattenArrays を設定します。 |
| FlattenObjects | フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。 |
| ForceQueryOnNonIndexedContainers | Force the use of an index scan to process the query if indexing is disabled or the right index path is not available. |
| GenerateSchemaFiles | スキーマを生成して保存するユーザーの好みのタイミングを示します。 |
| MaxRows | 集計やGROUP BY を含まないクエリで返される最大行数を指定します。 |
| MaxThreads | Specifies the maximum number of concurrent requests for Batch CUD (Create, Update, Delete) operations. |
| MultiThreadCount | パーティション化されたコレクション内の集計クエリでは、異なるパーティション範囲に対する並列リクエストが必要になります。このプロパティを、同時に発行する並列リクエストの数に設定します。 |
| Other | 特定の問題に対処するため、特殊なシナリオ向けの高度な接続プロパティを指定します。このプロパティは、サポートチームの指示がある場合にのみ使用してください。 |
| Pagesize | provider がAzure Cosmos DB にデータをリクエストするときに返す、ページあたりの最大レコード数を指定します。 |
| PseudoColumns | テーブルカラムとして公開する擬似カラムを、'TableName=ColumnName;TableName=ColumnName' の形式の文字列で指定します。 |
| RequestPriorityLevel | Specifies the priority level for requests sent to Azure Cosmos DB when the number of requests exceeds the configured RU/s within a second. |
| RowScanDepth | テーブルで利用可能なカラムを探すためにスキャンする行数の最大値。 |
| SeparatorCharacter | 階層を示すために使用する記号。 |
| SetPartitionKeyAsPK | Whether or not to use the collection's Partition Key field as part of composite Primary Key for the corresponding exposed table. |
| Timeout | provider がタイムアウトエラーを返すまでにサーバーからの応答を待機する最大時間を秒単位で指定します。 |
| TypeDetectionScheme | 各ドキュメントコレクションのフィールドおよびデータタイプを決定するために、provider がデータをどのようにスキャンするかを示すカンマ区切りのオプション。 |
| UserDefinedViews | カスタムビューを定義するJSON 構成ファイルへのファイルパスを指定します。provider は、このファイルで指定されたビューを自動的に検出して使用します。 |
| UseRidAsPk | Set this property to false to switch using the id column as primary key instead the default _rid. |
| WriteThroughputBudget | Defines the Requests Units (RU) budget per Second that the Batch CUD (Create, Update, Delete) operations should not exceed. |
集計の計算値を返すか、パーティション範囲でグループ化するかを指定します。
集計の計算値を返すか、パーティション範囲でグループ化するかを指定します。
Denotes the type of token: master or resource.
The consistency level override for read options against documents and attachments. The valid values are: Strong, Bounded, Session, or Eventual (in order of strongest to weakest). The override must be the same or weaker than the account's configured consistency level.
The consistency level override for read options against documents and attachments. The valid values are: Strong, Bounded, Session, or Eventual (in order of strongest to weakest). The override must be the same or weaker than the account's configured consistency level.
デフォルトで、ネスト配列はJSON 文字列として返されます。 FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。ネスト配列から返すエレメントの数に FlattenArrays を設定します。
デフォルトで、ネスト配列はJSON 文字列として返されます。FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。これは短い配列の場合にのみ推奨されます。
ネスト配列から返すエレメントの数にFlattenArrays を設定します。特定されたエレメントはカラムとして返されます。Zero-base のインデックスはカラム名にコンカテネートされます。他のエレメントは無視されます。
例えば、文字列の配列からエレメントのアービトラリー数を返すことができます。
["FLOW-MATIC","LISP","COBOL"]FlattenArrays が1に設定されている場合、配列は次のテーブルのようにフラット化されます。
| カラム名 | カラム値 |
| languages.0 | FLOW-MATIC |
FlattenArrays を-1 に設定すると、ネストされた配列のすべてのエレメントをフラット化します。
フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。
フラット化されたオブジェクトプロパティとしてカラムを表示するには、FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。プロパティ名は、カラム名を作り出すためにオブジェクト名にドットでコンカティネイトされます。
例えば、次のネストされたオブジェクトをコネクションタイムでフラット化できます:
[
{ "grade": "A", "score": 2 },
{ "grade": "A", "score": 6 },
{ "grade": "A", "score": 10 },
{ "grade": "A", "score": 9 },
{ "grade": "B", "score": 14 }
]
FlattenObjects がtrue に設定されていて、FlattenArrays が1に設定されている場合、配列は次のテーブルのようにフラット化されます。
| Column Name | カラム値 |
| grades.0.grade | A |
| grades.0.score | 2 |
Force the use of an index scan to process the query if indexing is disabled or the right index path is not available.
Queries against containers where indexing is disabled or paths are excluded may fail. Set this property to true to force the use of indexing on the server so the query is processed successfully. By default, queries that require the use of indexing on containers where IndexingMode=None are handled client-side.
スキーマを生成して保存するユーザーの好みのタイミングを示します。
GenerateSchemaFiles を使用すると、自動スキーマ検出 によって識別されたテーブル定義を保存できます。 このプロパティは、Location で指定されたパスの.rsd ファイルにスキーマをアウトプットします。
有効な設定は次のとおりです。
GenerateSchemaFiles をOnUse に設定すると、Sync App はSELECT クエリを実行したときにスキーマを生成します。スキーマはクエリのそれぞれの参照されたテーブルに対して生成されます。
GenerateSchemaFiles をOnCreate に設定すると、CREATE TABLE クエリが実行されたときにのみスキーマが生成されます。
このプロパティのもう一つの使い方は、接続するときにデータベース内のすべてのテーブルのスキーマを取得することです。これには、GenerateSchemaFiles をOnStart に設定して接続します。
データ構造が変化する場合には、GenerateSchemaFiles をNever に設定して動的なスキーマを使うことを検討してください。動的なスキーマの詳細については、自動スキーマ検出 を参照してください。
スキーマファイルはシンプルな形式となっており、変更は簡単です。詳しくは、カスタムスキーマ定義 を参照してください。
集計やGROUP BY を含まないクエリで返される最大行数を指定します。
このプロパティのデフォルト値である-1 は、クエリに明示的にLIMIT 句が含まれていない限り、行の制限が適用されないことを意味します。 (クエリにLIMIT 句が含まれている場合、クエリで指定された値がMaxRows 設定よりも優先されます。)
MaxRows を0より大きい整数に設定することで、クエリがデフォルトで過度に大きな結果セットを返さないようにします。
このプロパティは、非常に大きなデータセットを返す可能性のあるクエリを実行する際に、パフォーマンスを最適化し、過剰なリソース消費を防ぐのに役立ちます。
Specifies the maximum number of concurrent requests for Batch CUD (Create, Update, Delete) operations.
This property should be used in conjunction with the WriteThroughputBudget connection property. The Sync App may execute less parallel requests than the configured MaxThreads value, since it always aims to not exceed the WriteThroughputBudget limit. The number of concurrent requests will also depend on the running machine's resources.
Note: This property is applicable only when executing batch CUD operations.
パーティション化されたコレクション内の集計クエリでは、異なるパーティション範囲に対する並列リクエストが必要になります。このプロパティを、同時に発行する並列リクエストの数に設定します。
パーティション化されたコレクション内の集計クエリでは、異なるパーティション範囲に対する並列リクエストが必要になります。このプロパティを、同時に発行する並列リクエストの数に設定します。
特定の問題に対処するため、特殊なシナリオ向けの高度な接続プロパティを指定します。このプロパティは、サポートチームの指示がある場合にのみ使用してください。
このプロパティにより、シニアユーザーはサポートチームのアドバイスに基づいて、特定の状況に対応する隠しプロパティを設定できます。 これらの設定は通常のユースケースには必要ありませんが、特定の要件に対応したり、追加の機能を提供したりすることができます。 複数のプロパティを定義するには、セミコロンで区切られたリストを使用します。
Note:特定のシナリオや問題に対処するためにサポートチームから助言があった場合にのみ、これらのプロパティを設定することを強く推奨します。
| プロパティ | 説明 |
| DefaultColumnSize | データソースがメタデータにカラムの長さを提供しない場合に、文字列フィールドのデフォルトの長さを設定します。デフォルト値は2000です。 |
| ConvertDateTimeToGMT=True | 日時の値を、マシンのローカルタイムではなくGMT グリニッジ標準時に変換します。デフォルト値はFalse(ローカルタイムを使用)です。 |
| RecordToFile=filename | 基底のソケットデータ転送を指定のファイルに記録します。 |
provider がAzure Cosmos DB にデータをリクエストするときに返す、ページあたりの最大レコード数を指定します。
クエリを処理する際、Azure Cosmos DB でクエリされたデータすべてを一度にリクエストする代わりに、Sync App はクエリされたデータをページと呼ばれる部分ごとにリクエストすることができます。
この接続プロパティは、Sync App がページごとにリクエストする結果の最大数を決定します。
Note:大きなページサイズを設定すると全体的なクエリ実行時間が短縮される可能性がありますが、その場合、クエリ実行時にSync App がより多くのメモリを使用することになり、タイムアウトが発生するリスクがあります。
テーブルカラムとして公開する擬似カラムを、'TableName=ColumnName;TableName=ColumnName' の形式の文字列で指定します。
このプロパティを使用すると、Sync App がテーブルカラムとして公開する擬似カラムを定義できます。
個々の擬似カラムを指定するには、以下の形式を使用します。
Table1=Column1;Table1=Column2;Table2=Column3
すべてのテーブルのすべての擬似カラムを含めるには、次を使用してください:
*=*
Specifies the priority level for requests sent to Azure Cosmos DB when the number of requests exceeds the configured RU/s within a second.
テーブルで利用可能なカラムを探すためにスキャンする行数の最大値。
テーブルのカラムはテーブル行をスキャンすることで決定される必要があります。この値はスキャンされる行数の最大値を設定します。
大きい値を設定すると、パフォーマンスが低下する場合があります。小さい値を設定すると、特にnull データがある場合には、データ型を正しく判定できない場合があります。
階層を示すために使用する記号。
階層構造をフラット化するために、Sync App には階層を通るカラムへのパスを表す指定子が必要です。この値が"." の場合、カラムがaddress.city という名前で返されたときには、city という名の子がマップされた属性であることを示します。 データにすでにピリオドを属性名として使っているカラムが存在する場合には、記号を区別するためにSeparatorCharacter を設定してください。
Whether or not to use the collection's Partition Key field as part of composite Primary Key for the corresponding exposed table.
By default, this is set to TRUE, and the collection's Partition Key is used as part of the table's composite Primary Key along with the _rid column. If this is set to FALSE, only the _rid column will serve as the Primary Key for the exposed table.
provider がタイムアウトエラーを返すまでにサーバーからの応答を待機する最大時間を秒単位で指定します。
タイムアウトは、クエリや操作全体ではなくサーバーとの個々の通信に適用されます。 例えば、各ページング呼び出しがタイムアウト制限内に完了する場合、クエリは60秒を超えて実行を続けることができます。
タイムアウトはデフォルトで60秒に設定されています。タイムアウトを無効にするには、このプロパティを0に設定します。
タイムアウトを無効にすると、操作が成功するか、サーバー側のタイムアウト、ネットワークの中断、またはサーバーのリソース制限などの他の条件で失敗するまで無期限に実行されます。
Note: このプロパティは慎重に使用してください。長時間実行される操作がパフォーマンスを低下させたり、応答しなくなる可能性があるためです。
各ドキュメントコレクションのフィールドおよびデータタイプを決定するために、provider がデータをどのようにスキャンするかを示すカンマ区切りのオプション。
| None | TypeDetectionScheme をNone に設定した場合は、すべてのカラムは文字列型で返されます。他のオプションとの併用はできません。 |
| RowScan | TypeDetectionScheme をRowScan に設定した場合には、ヒューリスティックにデータ型を決定します。RowScanDepth ではスキャンする行数を決定します。Recent と一緒に使用できます。 |
| Recent | TypeDetectionScheme をRecent に設定すると、コレクション内の直近のドキュメントでRowScan を実行するかどうかを決定します。RowScan と一緒に使用できます。 |
| RawValue | Setting TypeDetectionScheme to RawValue will push each document as single aggregate on a column named JsonData, along with its resource identifier on the separate Primary Key column. Cannot be combined with other options. |
カスタムビューを定義するJSON 構成ファイルへのファイルパスを指定します。provider は、このファイルで指定されたビューを自動的に検出して使用します。
UserDefinedViews を使用すると、UserDefinedViews.json というJSON 形式の構成ファイルを通じてカスタムビューを定義および管理できます。 これらのビューはSync App によって自動的に認識され、標準のデータベースビューのようにカスタムSQL クエリを実行できるようになります。 JSON ファイルは、各ビューをルート要素として定義し、その子要素として"query" を持ちます。この"query" にはビューのSQL クエリが含まれています。
次に例を示します。
{
"MyView": {
"query": "SELECT * FROM [CData].[Entities].Customers WHERE MyColumn = 'value'"
},
"MyView2": {
"query": "SELECT * FROM MyTable WHERE Id IN (1,2,3)"
}
}
このプロパティを使用して、1つのファイルに複数のビューを定義し、ファイルパスを指定できます。
次に例を示します。
UserDefinedViews=C:\Path\To\UserDefinedViews.jsonUserDefinedViews でビューを指定すると、Sync App はそのビューだけを参照します。
詳しくは、ユーザー定義ビュー を参照してください。
Set this property to false to switch using the id column as primary key instead the default _rid.
Since CosmosDB allows you to use both _rid and id fields as unique values for retrieving resource data, you can set this property to false to switch using the id column as primary key instead the default _rid.
Defines the Requests Units (RU) budget per Second that the Batch CUD (Create, Update, Delete) operations should not exceed.
The Sync App will dynamically adjust the maximum number of requests per second depending on the configured RU budget. Although the Sync App always aims to not exceed the RU budget, since the requests throttling logic is applied client-side, it may be exceeded by a relatively small amount in a few cases. These cases include inserting, updating and deleting records with highly variable column count and input value length per column.
Note: This property is applicable only when executing batch CUD operations.
LZMA from 7Zip LZMA SDK
LZMA SDK is placed in the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute the original LZMA SDK code, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
LZMA2 from XZ SDK
Version 1.9 and older are in the public domain.
Xamarin.Forms
Xamarin SDK
The MIT License (MIT)
Copyright (c) .NET Foundation Contributors
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
NSIS 3.10
Copyright (C) 1999-2025 Contributors THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
1. DEFINITIONS
"Contribution" means:
a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and b) in the case of each subsequent Contributor:
i) changes to the Program, and
ii) additions to the Program;
where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
"Contributor" means any person or entity that distributes the Program.
"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
"Program" means the Contributions distributed in accordance with this Agreement.
"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
2. GRANT OF RIGHTS
a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
3. REQUIREMENTS
A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
a) it complies with the terms and conditions of this Agreement; and
b) its license agreement:
i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
When the Program is made available in source code form:
a) it must be made available under this Agreement; and
b) a copy of this Agreement must be included with each copy of the Program.
Contributors may not remove or alter any copyright notices contained within the Program.
Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
4. COMMERCIAL DISTRIBUTION
Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
5. NO WARRANTY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
6. DISCLAIMER OF LIABILITY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. GENERAL
If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.