用于产品业务相关数据存储,兼容mysql,支持弹性自动水平扩容(实际上是因为接手的时候,已经用了这种数据库)TDSQL for MySQL。
我们选择的是TDSQL MySQL版 InnoDB引擎,与原生的mysql有一些语法上的不兼容,例如常见的
DDL
不支持 CREATE TABLE ... SELECT
不支持 CREATE TEMPORARY TABLE
不支持 CREATE/DROP/ALTER SERVER/LOGFILE GROUP
不支持 ALTER 对分表键(shardkey)进行改名,但可以修改类型
不支持 RENAME
官方给出的使用限制文档。
但除了这些还有一些我们踩的坑, 我们使用的版本是mysql 8.0.18,mysql 从8.0.17开始就支持了json的多值索引,多值索引旨在为JSON数组建立索引,但tdsql却不支持,官方文档也没说明。
会出现如下报错:
CREATE TABLE customers (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
modified DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
custinfo JSON,
INDEX zips( (CAST(custinfo->'$.zipcode' AS UNSIGNED ARRAY)) )
);
报错信息:CREATE TABLE customers (
-> id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> modified DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-> custinfo JSON,
-> INDEX zips( (CAST(custinfo->'$.zipcode' AS UNSIGNED ARRAY)) )
-> );
ERROR 1064 (HY000): Proxy ERROR: You have an error in your SQL syntax; check the manual that corresponds to your Mysql server version for the right syntax to use near '(CAST(custinfo->'$.zipcode' AS UNSIGNED ARRAY)) )
)' at line 5
在选型数据库时,尽量选择兼容云原生的数据库,一些自研的产品在使用过程中出现了问题,很难排查原因只能找腾讯云去帮忙协助,通常排查周期会比较长,如果在让我选一次,我会选择使用完全兼容云原生的 “TDSQL-C MySQL 版(TDSQL-C for MySQL)是腾讯云自研的新一代云原生关系型数据库”,详见:https://cloud.tencent.com/document/product/1003/30488
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。