功能介绍
在数据处理和存储领域,冷数据的管理一直是一个挑战。为了解决这一问题,TXSQL 推出了 COS 外表(数据库直接访问 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 等。
注意:
这里
CREATE COS_SERVER 因为包含了敏感信息 my_secretKey,所以该字段在数据库中已经屏蔽。暂时不支持
DROP COS_SERVER 和 SHOW COS_SERVER 的操作,如果要删除 COS_SERVER,可以用 tencentroot 用户登录,然后对 mysql.cos_server_meta 中的记录执行 DELETE/SELECT 操作来完成。操作示例
1. 创建一个 COS SERVER。
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 SERVER 中可以看到对应 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;多表 joinSELECT id FROM t1 left join t2 on t1.id = t2.id WHERE t2.name like "%er%";