📣
TiDB Cloud Premium はパブリックプレビュー中です。エンタープライズワークロード向けの無制限のスケーリング、即時の弾力性、高度なセキュリティを提供します。このページは自動翻訳されたものです。原文はこちらからご覧ください。

データアプリコンフィグレーションファイル



このドキュメントでは、TiDB Cloudのデータアプリの構成ファイルについて説明します。

データデータアプリをGitHubに接続しましたた場合は、次のように GitHub の指定したディレクトリでデータアプリの構成ファイルを見つけることができます。

├── <Your Data App directory> │ ├── data_sources │ │ └── cluster.json │ ├── dataapp_config.json │ ├── http_endpoints │ │ ├── config.json │ │ └── sql │ │ ├── <method>-<endpoint-path1>.sql │ │ ├── <method>-<endpoint-path2>.sql │ │ └── <method>-<endpoint-path3>.sql

データソース構成

データアプリのデータソースは、リンクされた TiDB クラスターから取得されます。データソースの設定はdata_sources/cluster.jsonで確認できます。

├── <Your Data App directory> │ ├── data_sources │ │ └── cluster.json

各データアプリは、1つまたは複数のTiDBクラスターにリンクできます。

以下はcluster.jsonの構成例です。この例では、このデータアプリにリンクされたクラスターが 2 つあります。

[ { "cluster_id": <Cluster ID1> }, { "cluster_id": <Cluster ID2> } ]

当該フィールドの説明は以下のとおりです。

分野タイプ説明
cluster_id整数TiDB Cloud StarterインスタンスのIDです。インスタンスのURLから取得できます。たとえば、インスタンスのURLがhttps://tidbcloud.com/tidbs/1234567891234567890/overview?orgId=<organization-id>の場合、インスタンスIDは1234567891234567890になります。

データアプリの設定

データアプリのプロパティには、アプリID、名前、およびタイプが含まれます。これらのプロパティはdataapp_config.jsonファイルで確認できます。

├── <Your Data App directory> │ ├── dataapp_config.json

以下はdataapp_config.jsonの構成例です。

{ "app_id": "<Data App ID>", "app_name": "<Data App name>", "app_type": "dataapi", "app_version": "<Data App version>", "description": "<Data App description>" }

各項目の説明は以下のとおりです。

分野タイプ説明
app_idデータアプリID。 dataapp_config.jsonファイルが別のデータアプリからコピーされたもので、現在のデータアプリのIDに更新したい場合を除き、このフィールドは変更しないでください。そうでない場合、この変更によってトリガーされるデプロイは失敗します。
app_nameデータアプリの名前。
app_typeデータアプリのタイプは、 "dataapi"のみとなります。
app_versionデータアプリのバージョンは、 "<major>.<minor>.<patch>"形式です。たとえば、 "1.0.0"
descriptionデータアプリの説明。

HTTPエンドポイント構成

データアプリのディレクトリには、 http_endpoints/config.jsonにエンドポイント構成があり、 http_endpoints/sql/<method>-<endpoint-name>.sqlに SQL ファイルが見つかります。

├── <Your Data App directory> │ ├── http_endpoints │ │ ├── config.json │ │ └── sql │ │ ├── <method>-<endpoint-path1>.sql │ │ ├── <method>-<endpoint-path2>.sql │ │ └── <method>-<endpoint-path3>.sql

エンドポイント構成

各データアプリには、1つまたは複数のエンドポイントが存在する可能性があります。データアプリのすべてのエンドポイントの設定はhttp_endpoints/config.jsonで確認できます。

以下はconfig.jsonの構成例です。この例では、このデータアプリには 2 つのエンドポイントがあります。

[ { "name": "<Endpoint name1>", "description": "<Endpoint description1>", "method": "<HTTP method1>", "endpoint": "<Endpoint path1>", "data_source": { "cluster_id": <Cluster ID1> }, "params": [], "settings": { "timeout": <Endpoint timeout>, "row_limit": <Maximum rows>, "enable_pagination": <0 | 1>, "cache_enabled": <0 | 1>, "cache_ttl": <time-to-live period> }, "tag": "Default", "batch_operation": <0 | 1>, "sql_file": "<SQL file directory1>", "type": "sql_endpoint", "return_type": "json" }, { "name": "<Endpoint name2>", "description": "<Endpoint description2>", "method": "<HTTP method2>", "endpoint": "<Endpoint path2>", "data_source": { "cluster_id": <Cluster ID2> }, "params": [ { "name": "<Parameter name>", "type": "<Parameter type>", "required": <0 | 1>, "default": "<Parameter default value>", "description": "<Parameter description>", "is_path_parameter": <true | false> } ], "settings": { "timeout": <Endpoint timeout>, "row_limit": <Maximum rows>, "enable_pagination": <0 | 1>, "cache_enabled": <0 | 1>, "cache_ttl": <time-to-live period> }, "tag": "Default", "batch_operation": <0 | 1>, "sql_file": "<SQL file directory2>", "type": "sql_endpoint", "return_type": "json" } ]

各項目の説明は以下のとおりです。

分野タイプ説明
nameエンドポイント名。
description(オプション)エンドポイントの説明。
methodエンドポイントの HTTP メソッド。 GETを使用してデータを取得し、 POSTを使用してデータを作成または挿入し、 PUTを使用してデータを更新または変更し、 DELETEを使用してデータを削除できます。
endpointデータ アプリ内のエンドポイントの一意のパス。パスには、文字、数字、アンダースコア ( _ )、およびスラッシュ ( / ) のみを使用できます。パスはスラッシュ ( / ) で始まり、文字、数字、またはアンダースコア ( _ ) で終わる必要があります。例: /my_endpoint/get_id 。パスの長さは 64 文字未満である必要があります。
cluster_idエンドポイントのTiDB Cloud Starterインスタンスの ID です。インスタンスの URL から取得できます。たとえば、インスタンスの URL がhttps://tidbcloud.com/tidbs/1234567891234567890/overview?orgId=<organization-id>の場合、インスタンス ID は1234567891234567890です。
params配列エンドポイントで使用されるパラメーター。パラメーターを定義することで、エンドポイントを介してクエリ内のパラメーター値を動的に置き換えることができます。 paramsでは、1 つまたは複数のパラメーターを定義できます。各パラメーターについて、 nametyperequired 、およびdefaultフィールドを定義する必要があります。エンドポイントにパラメーターが必要ない場合はparams }} のように { "params": [] PLACEHOLDER-5-PLACEHOLDER-E}} を空のままにすることができます。
params.nameパラメータ名。名前には文字、数字、アンダースコアのみを使用できます( _ )。また、文字またはアンダースコアで始まる必要があります( _ )。 pageおよびpage_sizeはリクエスト結果のページネーション用に予約されているため、パラメータ名として使用しないでください。
params.typeパラメーターのデータ型。サポートされている値はstringnumberintegerboolean 、およびarraystring型のパラメーターを使用する場合は、引用符( 'または" )を追加する必要はありません。例えば、 foo stringタイプに対して有効であり、 "foo"として処理されますが、 "foo""\"foo\""として処理されます。
params.required整数リクエストでパラメータが必須かどうかを指定します。サポートされている値は、 0 (必須ではない) と1 (必須) です。デフォルト値は0です。
params.enum(オプション)パラメーターの値オプションを指定します。このフィールドは、 params.typestringnumber 、またはintegerに設定されている場合にのみ有効です。複数の値を指定する場合は、カンマで区切ります( , )。
params.defaultパラメーターのデフォルト値です。指定したパラメーターの型と値が一致していることを確認してください。一致しない場合、エンドポイントはエラーを返します。 ARRAY型のパラメーターのデフォルト値は文字列で、複数の値を区切るにはカンマ ( , ) を使用できます。
params.descriptionパラメータの説明。
params.is_path_parameterブール値パラメータがパス パラメータであるかどうかを指定します。 trueに設定されている場合、 endpointフィールドに該当するパラメータ プレースホルダーが含まれていることを確認してください。含まれていない場合、デプロイが失敗します。逆に、 endpointフィールドに該当するパラメータ プレースホルダーが含まれているにもかかわらず、このフィールドがfalseに設定されている場合も、デプロイが失敗します。
settings.timeout整数エンドポイントのタイムアウト時間(ミリ秒単位)。デフォルトでは30000です。 1から60000までの整数値を設定できます。
settings.row_limit整数エンドポイントが操作または返すことができる行の最大数。デフォルトでは1000です。 batch_operation0に設定されている場合、 1から2000までの整数に設定できます。 batch_operation1に設定されている場合、 1 100までの整数に設定できます。
settings.enable_pagination整数リクエストによって返される結果のページネーションを有効にするかどうかを制御します。サポートされている値は、 0 (無効) と1 (有効) です。デフォルト値は0です。
settings.cache_enabled整数GETリクエストによって返されたレスポンスを、指定された有効期限 (TTL) 期間内にキャッシュするかどうかを制御します。サポートされている値は、 0 (無効) と1 (有効) です。デフォルト値は0です。
settings.cache_ttl整数settings.cache_enabled1に設定した場合のキャッシュされた応答の有効期間 (TTL) を秒単位で指定します。30 ~ 600 の整数値を設定できます。TTL 期間中に同じGETリクエストを再度行うと、データ サービスは対象データベースからデータを再度取得する代わりに、キャッシュされた応答を直接返します。これにより、クエリのパフォーマンスが向上します。
tagエンドポイントのタグ。デフォルト値は"Default"です。
batch_operation整数エンドポイントをバッチモードで動作させるかどうかを制御します。サポートされている値は0 (無効) と1 (有効) です。 1に設定すると、1 つのリクエストで複数の行を操作できます。このオプションを有効にするには、リクエストメソッドがPOSTまたはPUTであることを確認してください。
sql_fileエンドポイントの SQL ファイルディレクトリ。例: "sql/GET-v1.sql"
typeエンドポイントのタイプ。定義済みのシステムエンドポイントの場合は"system-data" 、その他のエンドポイントの場合は"sql_endpoint"となります。
return_typeエンドポイントの応答形式は"json"のみです。

SQLファイル構成

エンドポイントの SQL ファイルには、エンドポイントを介してデータを照会するための SQL ステートメントが指定されています。データ アプリのエンドポイント SQL ファイルはhttp_endpoints/sql/ディレクトリにあります。各エンドポイントには、対応する SQL ファイルが必要です。

SQL ファイルの名前は<method>-<endpoint-path>.sql形式です。ここで、 <method><endpoint-path>http_endpoints/config.jsonmethodendpointの設定と一致する必要があります。

SQLファイルには、テーブル結合クエリ、複雑なクエリ、集計関数などのステートメントを記述できます。以下はSQLファイルの例です。

/* Getting Started: Enter "USE {database};" before entering your SQL statements. Type "--your question" + Enter to try out AI-generated SQL queries in the TiDB Cloud console. Declare a parameter like "Where id = ${arg}". */ USE sample_data; SELECT rank, company_name, FROM global_fortune_500_2018_2022 WHERE country = ${country};

SQLファイルを作成する際は、以下の点に注意してください。

  • SQL ファイルの先頭で、SQL ステートメント内のデータベースを指定する必要があります。たとえば、 USE database_name;のようになります。

  • エンドポイントのパラメータを定義するには、 ${variable-name}のような変数プレースホルダーとして SQL ステートメントに挿入します。

    上記の例では、 ${country}がエンドポイントのパラメータとして使用されています。このパラメータを使用すると、エンドポイントの curl コマンドでクエリ対象の国を指定できます。

    注記:

    • パラメータ名は大文字と小文字を区別します。
    • パラメータには、テーブル名または列名を指定することはできません。
    • SQL ファイル内のパラメータ名はhttp_endpoints/config.jsonで設定されているパラメータ名と一致します。

このページは役に立ちましたか?