MySQL 和 Databend 区别对比
wubx3月 1, 2023
Databend 提供了 MySQL 协议的兼容,但实质上和 MySQL 还有一定的区别。Databend 定位在基于对象存储实现一个真正的存算分离的弹性数仓。现在也在有很多朋友利用 Databend 做 MySQL 和 RDS MySQL 的归档存储分析。
这里给大家介绍一下 Databend 数据类型,索引,DDL ,协议 几方面和 MySQL 的区别,其中文章最后一条可能减少你使用很多麻烦,以下详细内容供大家参考:
1. 数据类型
Type | Databend | MySQL |
---|---|---|
tinyint | Yes | Yes |
smallint | Yes | Yes |
mediumint | No | Yes |
int | Yes | Yes |
bigint | Yes | Yes |
2. 浮点类型
Type | Databend | MySQL |
---|---|---|
decimal | Yes | Yes |
float | Yes | Yes |
double | Yes | Yes |
3. 日期类型
Type | Databend | MySQL |
---|---|---|
datetime | Yes | Yes |
timestamp | Yes | Yes |
date | No | Yes |
time | No | Yes |
year | No | Yes |
在 Databend 中 datetime 实质上是 timstamp 的同义词,现在支持 6 位精度:
YYYY-MM-DD hh:mm:ss
4. 字符类型
Type | Databend | MySQL |
---|---|---|
varchar | Yes | Yes |
string | Yes | No |
binary | No | Yes |
varbinary | No | Yes |
blog | No | Yes |
enum | No | Yes |
set | No | Yes |
在 Databend 中 string 是 Varchar 的同义词,另外使用需要注意在 Databend 声明 Varchar 不需要声明长度,存储按实际长度存储
5. JSON 类型
Type | Databend | MySQL |
---|---|---|
json | Yes | Yes |
variant | Yes | No |
Databend 中 json 基于 jsonb 实现,函数上和 MySQL 不一样,参考:https://docs.databend.cn/sql/sql-functions/semi-structured-functions/
json 格式建议只是使用在数据清洗过程
6. 嵌套类型
Type | Databend | MySQL |
---|---|---|
array | Yes | No |
tuple | Yes | No |
Databend 主要定位在大数据解环境,对于数据格式支持更加利于使用一点。后续马上会加一个 map 类型。
7. 其它数据类型
Type | Databend | MySQL |
---|---|---|
bit | No | Yes |
boolean | Yes | No |
如你用 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 设计。
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。
订阅我们的新闻简报
及时了解功能发布、产品规划、支持服务和云服务的最新信息!