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

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

SQLファイルの構成

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

SQL ファイルの名前は<method>-<endpoint-path>.sql形式です。3 と<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;

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

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

    注記:

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

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