功能介绍
在数据处理和存储领域,冷数据的管理一直是一个挑战。为了解决这一问题,TXSQL 推出了腾讯云对象存储(COS)外表功能,以下简称 COS 外表。它允许用户直接在数据库中查询和分析存储在 COS 上的 CSV 格式数据。通过这一创新特性,用户可以有效地将不常访问的冷数据存储到 COS 上,同时利用数据库的查询能力进行数据管理和分析,从而优化存储成本和提高数据处理效率。
支持版本
内核版本 TXSQL 8.0 3.1.15及以上。
适用场景
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 SERVER。
CREATE COS SERVER cos_s1 options (
"1605222305" "AKIDeCXq8E8nFXhhhhhhhhyKUPegZZZZZZZZ" "64OVVVVVVVKKkKMtDDDDDDDDDDD" "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;
多表 join
SELECT id FROM t1 left join t2 on t1.id = t2.id WHERE t2.name like "%er%";
本页内容是否解决了您的问题?