機能説明
データ処理とストレージの分野では、コールドデータの管理は常に課題となっています。この問題を解決するために、TXSQL はTencent Cloud COS 外部テーブル機能を導入しました。以下、略称として COS 外部テーブルと呼びます。これは、ユーザーが直接データベース内で、COS 上に保存された CSV 形式のデータをクエリおよび分析することを可能にします。この革新的な機能を通じて、ユーザーは効果的にアクセス頻度の低いコールドデータを COS 上に保存し、同時にデータベースのクエリ能力を活用してデータ管理と分析を行い、それによりストレージコストを最適化し、データ処理効率を向上させることができます。
サポートバージョン
カーネルバージョン TXSQL 8.0 3.1.15.002以上です。
適用シーン
COS外部テーブルは、複数のシナリオに適用され、以下を含みますがこれに限定されません:
ビッグデータストレージ:大量のアクセス頻度の低いデータ(ログファイル、履歴記録など)を保存する必要があるシナリオに適用されます。
データウェアハウス:データウェアハウスの構築や、履歴データに対するクエリおよび分析を行うシナリオに適用されます。
コスト最適化:コールドデータをCOSに移行することで、ストレージコストを削減しつつ、データのアクセシビリティを維持できます。
データ分析:COS上に保存されたCSVデータに対して複雑なクエリや分析が必要なシナリオに適用されます。
利用制限
CSV形式のデータのみサポートしています。
COS外部テーブルに対してCREATE、SELECT、DROP操作のみサポートしています。
インデックス、パーティション、トランザクションはサポートしていません。
地理空間データタイプはサポートしていません。
ALTER TABLEなどの操作はサポートしていません。
使用説明
COSサーバーを作成する
以下のコマンドでCOSサーバーを作成します。
CREATE COS_SERVER <server_name> OPTIONS(
"<my_appid>" "<my_secretId>" "<my_secretKey>" "<my_bucket>" "<region>"
);
<server_name>:COSサーバー(COS SERVER)の名称で、グローバルに一意です。
<my_appid>:開発者がCOSサーバーにアクセスする際に保有する、ユーザー次元で一意のリソース識別子であり、リソースを識別するために使用されます。
<my_secretId>:開発者が保有するプロジェクトのID識別子であり、認証に用いられます。
<my_secretKey>:開発者が保有するプロジェクトの認証キー。
<my_bucket>:バケット。COSでデータを保存するためのコンテナです。バケットの詳細については、バケット概要をご参照ください。 <region>:バケットのリージョン。バケットがサポートするリージョンについては、リージョンとアクセスドメインをご参照ください。例:ap-beijing、ap-hongkong、eu-frankfurtなど。 説明:
SERVER_INFOのパラメータに関する詳細な説明については、COS関連用語の紹介を参照してください。また、SERVER_INFOの内容はCOS関連用語の内容を参照して補充します。 注意:
ここで CREATE COS_SERVER は機密情報である my_secretKey を含んでいるため、このフィールドはデータベースでマスクされています。
DROP COS_SERVER および SHOW COS_SERVER の操作は現在サポートされていません。COS_SERVERを削除する場合は、tencentrootユーザーでログインし、mysql.cos_server_metaのレコードに対してDELETE/SELECT操作を実行できます。
操作例
1. COSサーバーを作成する。
CREATE COS SERVER cos_s1 options (
"1605222305" "******************" "******************" "dcthxd-cos-test-1308666666" "ap-shanghai" );
2. 通常のテーブルをCOSストレージにエクスポートします。
SELECT * FROM table_name INTO COSOUTFILE "outfile" COS_SERVER "server_name";
COSサーバーでは、対応するoutfileファイルを確認できます。outfileの内容と形式は、以下のステートメントと同等です:
SELECT * FROM table_name INTO OUTFILE "outfile"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\\\'
LINES TERMINATED BY '\\n' STARTING BY '';
説明:
FIELDS TERMINATED BY:各フィールド間のセパレータを表します。
OPTIONALLY ENCLOSED BY:フィールドの両端に付ける区切り文字を指定します。OPTIONALLYを付けると文字列型フィールドのみに適用され、そうでない場合は全フィールドに区切り文字が付加されます。
ESCAPED BY:エスケープ文字。ここでは単一文字のみ指定可能です。例えば、ESCAPED BY '' と指定した場合、NULLは \\N として出力され、'' は '\\' にエスケープされます。
LINES TERMINATED BY:行区切り文字。
STARTING BY:各行の先頭に埋め込む文字。ここでは空です。
注意:
COSストレージのデータにCOS外部テーブルでアクセスする必要がある場合、ファイル形式は「database.table.CSV」という命名規則に従い、かつmy_bucketのルートディレクトリに配置されなければなりません。
3. COS外部テーブルを作成する
CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`time` timestamp NULL DEFAULT NULL
) ENGINE=CSV COS_SERVER='server_name';
説明:
新規スイッチ thread_pool_avoid_thread_starvation を追加しました。デフォルトはオンで、スレッドプールの飢餓状態防止機能が有効になります。また、パラメータ thread_pool_allow_more_wait_threads を追加し、待機スレッドの総数を設定できます。
server_name は COS SERVER 作成時の名称であり、自動的に COS SERVER 内の database.table.CSV ファイルと紐付けられます。例えば上記の t1 テーブルの場合、database は test であるため、この COS 外部テーブルは自動的に COS SERVER 上の test.t1.CSV ファイルと関連付けられ、当該ファイルのデータに直接アクセスします。
4. データクエリ
COS外部テーブル機能のデータクエリ構文は、通常のMySQL使用と同様です。
t1テーブル内のデータ数をクエリ実行する
SELECT count(*) FROM t1;
範囲クエリ
SELECT id FROM t1 WHERE id < 10 AND id > 1;
ポイントクエリ
SELECT id FROM t1 where id = 5;
複数テーブル join
SELECT id FROM t1 left join t2 on t1.id = t2.id WHERE t2.name like "%er%";