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

このドキュメントでは、 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/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に、SQL ファイルはhttp_endpoints/sql/<method>-<endpoint-name>.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クラスターのIDです。TiDBクラスターのURLから取得できます。例えば、クラスターURLがhttps://tidbcloud.com/clusters/1234567891234567890/overviewの場合、クラスターIDは1234567891234567890です。
params配列エンドポイントで使用されるパラメータ。パラメータを定義することで、エンドポイントを介したクエリ内のパラメータ値を動的に置き換えることができます。1 では、 params type name requiredを定義する必要があります。エンドポイントにパラメータが不要な場合は、 params空白のままにすることができます(例: default "params": []
params.nameパラメータ名。名前には文字、数字、アンダースコア( _ )のみを使用でき、文字またはアンダースコア( _ )で始まる必要があります。7とpage_size page結果のページ区切り用に予約されているため、パラメータ名として使用しないでください
params.typeパラメータのデータ型。サポートされる値はstringnumberintegerbooleanarrayです。11 型のパラメータを使用する場合は、引用符( 'または" )を追加する必要はありません。例えば、 stringstringfooが有効であり、 "foo"として処理されますが、 "foo" "\"foo\""として処理されます。
params.required整数リクエストにおいてパラメータが必須かどうかを指定します。サポートされている値は0 (必須ではない)と1 (必須)です。デフォルト値は0です。
params.enum(オプション)パラメータの値オプションを指定します。このフィールドは、 params.type stringnumber 、またはintegerに設定されている場合にのみ有効です。複数の値を指定するには、カンマ( , )で区切ります。
params.defaultパラメータのデフォルト値です。値が指定したパラメータの型と一致していることを確認してください。一致していない場合、エンドポイントはエラーを返します。1 型ARRAYパラメータのデフォルト値は文字列で、複数の値を指定する場合はカンマ ( , ) で区切ることができます。
params.descriptionパラメータの説明。
params.is_path_parameterブール値パラメータがパスパラメータかどうかを指定しますtrueに設定されている場合、 endpointフィールドに対応するパラメータプレースホルダが含まれていることを確認してください。含まれていない場合、デプロイに失敗します。逆に、 endpointフィールドに対応するパラメータプレースホルダが含まれているにもかかわらず、このフィールドがfalseに設定されている場合も、デプロイに失敗します。
settings.timeout整数エンドポイントのタイムアウト(ミリ秒単位)。デフォルトは30000です1から60000までの整数に設定できます。
settings.row_limit整数エンドポイントが操作または返すことができる行の最大数。デフォルトは1000です。3 batch_operation 0に設定すると、 1から2000までの整数を設定できます。11 batch_operation 1に設定すると、 1から100までの整数を設定できます。
settings.enable_pagination整数リクエストによって返される結果のページ区切りを有効にするかどうかを制御します。サポートされる値は0 (無効) と1 (有効) です。デフォルト値は0です。
settings.cache_enabled整数GETリクエストで返されたレスポンスを、指定された有効期限(TTL)内にキャッシュするかどうかを制御します。サポートされている値は0 (無効)と1 (有効)です。デフォルト値は0です。
settings.cache_ttl整数settings.cache_enabled 1に設定した場合の、キャッシュされたレスポンスの有効期間(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エンドポイントの応答形式"json"のみが可能です。

SQLファイルの構成

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

SQL ファイルの名前は<method>-<endpoint-path>.sql形式です。3 と<endpoint-path> <method> http_endpoints/config.json methodendpoint構成と一致する必要があります。

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で構成されたパラメータ名と一致します。

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