MatrixOne v1.1.0 发布报告
我们非常高兴地宣布 MatrixOne 内核 v1.1.0 版本于 2023 年 12 月 29 日正式发布!
MatrixOne 是什么?
MatrixOne 是一款分布式超融合异构云原生数据库,MatrixOne 旨在提供一个云原生、高性能、高弹性、高度兼容 MySQL 的 HSTAP 数据库,让用户面对事务、分析、时序、流计算等混合负载时,通过 MatrixOne 一站式的完成整个数据处理过程。
重点关注
MatrixOne 在本迭代增加了多个重要功能,在整体 HTAP 的基础上增强了向量,流和时序方面的能力,进一步丰富了能力象限和适用范围。
向量数据类型
作为 2023 年 AI 与大模型热潮的数据基座能力,向量类型已经成为通用数据库的标配。本迭代 MatrixOne 支持了 vecf32 及 vecf64 的向量类型,分别对应 float32 和 float64 数据类型,同时支持了基本的算子和操作符,以及向量常见的求和,L1 范数,L2 范数,内积,余弦相似度等计算函数。用户使用的时候配合 AI 算法模型可以快速搭建一个 AI 应用。比如基于大语言模型 LLM 的 RAG 应用,如下图所示,用户仅需将自己的知识库调用 OpenAI 的 Embedding 接口生成向量数据存入 MatrixOne 中,再通过余弦相似度函数计算搜索最相似答案,再将答案通过 OpenAI 的 Prompt 接口交给 LLM 优化回答即可。
与专用的向量数据库不同的是,MatrixOne 是一个高度兼容 MySQL 的通用数据库,用户几乎不需要额外的学习门槛即可快速上手,同时在构建 AI 应用的时候也可以将结构化数据与向量数据的处理合二为一。
时序能力
为了更好的处理数据快速流入的各类 IoT 场景,本迭代 MatrixOne 在时序方案的能力也大幅加强,具体体现在以下几点:
- 比 INSERT INTO 性能大幅提升的流式写入能力 LOAD INTO INLINE。
- 支持建立按时间戳作为主键的专用时序表,并支持任意的维度/指标列。
- 增加在时序表上的滑动窗口能力,可以按不同的时间进行降采样查询。
- 支持针对空值的插值能力,并提供不同策略的插值方法。
Kafka Connector (beta)
本迭代在基础流计算的框架基础上实现了 Kafka connector。用户可以通过 CREATE DYNAMIC TABLE 创建流式动态表,此类型的表是 Append Only 的表,同时用户可以通过 CREATE SOURCE 的方式配置外部数据源,本迭代已适配 Kafka 作为数据源,可以接入 Kafka 的 Topic(JSON 类型或者 protobuf 协议类型),接入后 MatrixOne 会自动将 Kafka 的 Message 写入到动态表中,用户可以对流式表进行窗口查询,或者与其他表一起进行关联查询。
自定义函数 UDF(beta)
本迭代 MatrixOne 开始支持用户编写自定义函数,目前第一个版本仅支持 Python 语言。在很多场景中数据库系统提供的系统函数并无法满足用户的业务需求,通过 UDF 的方式用户可以将业务的逻辑包装在 Python 文件中,并将其封装成 SQL 的函数,实现在 SQL 中直接调用。基于 Python 的 UDF,用户可以非常方便的使用 numpy 和 scikit-learn 等 Python 的流行库,大幅度的提高 MatrixOne 在数据科学,机器学习及 AI 等领域的适用性。
其他新功能
DDL 语句
- 支持 insert on duplicate key ignore
- 支持 create or replace view
- 支持 alter sequence
- 支持 Key, hash 的分区裁剪能力 (beta)
- 支持 List/List column, Range/Range Columns partition 分区存储能力(beta)
索引与约束
- 完整实现次级索引 secondary index,可实现动态查询加速
函数
- 自定义函数 UDF:支持用户创建 Python 语言的自定义函数 UDF (beta)
- 增加 SAMPLE 采样函数
- 增加 CONVERT_TZ 转换时区函数
- 增加 SHA2 加密函数
- 增加 Encode/Decode 编解码函数
安全与权限
- 支持通过创建 Stage 对 select into 的路径权限进行管理
工具
mo_dump 工具(逻辑备份)
- 支持单独将 DDL 导出
- 支持导出多个数据库和表
mo_backup 工具
- 支持物理备份
- 支持文件系统、对象存储作为备份和还原的存储介质
mo_ctl 单机部署运维工具
- 支持自动数据备份
- 支持自动日志表数据清理
- 支持数据文件从 csv 格式转换为 insert 或 load data inline 格式
- 支持 docker 镜像自动构建
- 支持 docker 模式单机部署
mo_ctl 分布式部署运维工具
- 支持 install 一键部署分布式集群
- 支持 destroy 一键销毁分布式集群
- 支持 matrixone 集群的起动/停止,升级/回滚操作
- 支持在现有 k8s 集群中安装 matrixone
mo_operator 工具
- 支持配置自定义的 S3 证书
- 支持通过 API 进行 matrixone 集群的备份恢复和备份数据管理
- 支持自动为 matrixone 集群设置更优化的 Go GC 策略
- 支持为 matrixone 集群启用 Python UDF
- 支持 Kubernetes 上的 matrixone 与 Prometheus 集成
MySQL 兼容性
- 大幅减少与 MySQL 不兼容的保留关键字
Known Issues
- 次级索引对于 IN 类型的查询没有加速作用
- Kafka 连接器仅在单机版本中运行
- 高并发负载下偶现系统会卡住
- 大数据量查询容易碰到内存溢出 OOM 问题
文档更新
- 新增时序整体能力描述
- 新增流式导入时序表,滑动窗口相关文档
- 新增向量类型及函数文档
- 新增流计算相关文档
- 新增 partition 实现及加速相关文档
- 新增 SQL 语句,系统函数的参考手册
- 更新整体功能列表
- 更新 MySQL 兼容性列表
更详细的更新日志
https://github.com/matrixorigin/matrixone/compare/v1.0.0…v1.1.0