Skip to main content

MySQL 和 Databend 区别对比

mysql-databend-diff

Databend 提供了 MySQL 协议的兼容,但实质上和 MySQL 还有一定的区别。Databend 定位在基于对象存储实现一个真正的存算分离的弹性数仓。现在也在有很多朋友利用 Databend 做 MySQL 和 RDS MySQL 的归档存储分析。

这里给大家介绍一下 Databend 数据类型,索引,DDL,协议 几方面和 MySQL 的区别,其中文章最后一条可能减少你使用很多麻烦,以下详细内容供大家参考:

1. 数据类型

TypeDatabendMySQL
tinyintYesYes
smallintYesYes
mediumintNoYes
intYesYes
bigintYesYes

2. 浮点类型

TypeDatabendMySQL
decimalYesYes
floatYesYes
doubleYesYes

3. 日期类型

TypeDatabendMySQL
datetimeYesYes
timestampYesYes
dateNoYes
timeNoYes
yearNoYes

在 Databend 中 datetime 实质上是 timstamp 的同义词,现在支持 6 位精度:YYYY-MM-DD hh:mm:ss[.fraction]

4. 字符类型

TypeDatabendMySQL
varcharYesYes
stringYesNo
binaryNoYes
varbinaryNoYes
blogNoYes
enumNoYes
setNoYes

在 Databend 中 string 是 Varchar 的同义词,另外使用需要注意在 Databend 声明 Varchar 不需要声明长度,存储按实际长度存储

5. JSON 类型

TypeDatabendMySQL
jsonYesYes
variantYesNo

Databend 中 json 基于 jsonb 实现,函数上和 MySQL 不一样,参考:https://docs.databend.cn/sql/sql-functions/semi-structured-functions/

json 格式建议只是使用在数据清洗过程

6. 嵌套类型

TypeDatabendMySQL
arrayYesNo
tupleYesNo

Databend 主要定位在大数据解环境,对于数据格式支持更加利于使用一点。后续马上会加一个 map 类型。

7. 其它数据类型

TypeDatabendMySQL
bitNoYes
booleanYesNo

如你用 MySQL 的习惯使用 Databend 需要别小心 Databend 的 Boolean 类型,MySQL 没有 Boolean 类型,一般是使用 tinyint 中的 0 和 1 表示。

8. 索引上区别

在 Databend 中不用定义索引,默认情况下每一列都自带 min/max, bloom index 索引,在 Databend 中也没有唯一约束,外键等。这里使用上也需注意一下。

9. DDL 支持

目前 Databend 已经支持无 Block 实现 alter table 操作。

参考:https://docs.databend.cn/sql/sql-commands/ddl/table/alter-table-column

10. 协议和一些细节

Databend 支持 MySQL 协议 和 Clickhouse HTTP 协议,同时也支持 HTTP Restful API 设计。

参考:https://docs.databend.cn/developer/apis/http

Databend 在双引号和单引号这块参考了 PostgreSQL 明确约束,如果你是 MySQL 使用的风格的用户可以通过:

set global sql_dialect='MySQL';

把 SQL 会话习惯更改成:MySQL 风格。

Databend 默认时区是:timezone= UTC,如果你在国内使用可以通过:

 set global timezone='Asia/Shanghai';

小结

现在 Databend 和 MySQL 结构的场景

  • 使用 Databend 使用对象存储的成本优势担任 MySQL 的数据归档和分析

  • 使用 Databend 担任 MySQL 的离线 AP 库

  • 使用 Databend 把线上的分库分表的库合并到一起

Connect With Us

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。