云端原生大数据引擎-MatrixOne
MatrixOne是一个行星级的云端原生大数据引擎,专为异构工作负载而设计。它提供了一个端到端的数据处理平台,具有高度的自主性和易用性,使用户能够跨设备、边缘和云来存储、处理和分析数据,并将操作费用降到最低。是一款面向未来的超融合异构云原生数据库,通过超融合数据引擎支持事务/分析/流处理等混合工作负载,通过异构云原生架构支持跨机房协同/多地协同/云边协同。简化开发运维,消简数据碎片,打破数据的系统、位置和创新边界。采用Go语言开发并在ApacheV2协议下授权。
特性
Planet Scalability
MatrixOne 集群可以在 SQL 处理、计算和存储过程中通过动态向集群添加节点来轻松扩展容量。
Cloud-Edge Native
MatrixOne 不仅限于公共云、混合云、内部部署服务器或智能设备,它可以适应无数的基础设施,同时仍然提供低延迟和高吞吐量的顶级服务。
混合流、事务和分析处理引擎
通过融合多个引擎,MatrixOne 可以支持混合流、事务和分析工作负载;凭借其可插拔架构,允许与第三方引擎轻松集成。
高可用性
使用基于 RAFT 的共识算法在一个区域内提供容错。并且未来计划使用更高级的状态机复制协议来实现地理分布式双活。
便于使用
其一个重要目标是让用户可以轻松操作和管理数据,让日常工作几乎不费吹灰之力。
无依赖性:无需依赖外部工具即可直接下载、安装或启动。
简化管理:重新平衡、故障转移、系统调整和其他管理任务是全自动的。
MySQL 兼容语法:MatrixOne 允许您使用传统的 SQL 查询来查询数据。

端到端自动化数据科学
通过流式传输 SQL 和用户定义的函数,它提供端到端的数据处理管道,以交付高效的数据科学应用程序。
架构

MatrixOne 支持 MySQL 连接协议,因此您可以使用各种语言通过 MySQL 客户机程序进行连接。
目前,MatrixOne 只兼容 Oracle MySQL 客户端,因此一些特性可能无法在 MariaDB、Percona 客户端下正常工作。
性能优化
OLTP:在点查、插入等常见 OLTP 场景中性能提升数倍,已达到行业领先 OLTP 数据库水平。
OLAP:进一步提升 OLAP 性能,在 TPCH 等常见性能测试 benchmark 中可以对齐行业领先 OLAP 数据库。
扩展性:实现 Compute Node 计算节点的秒级扩容能力,且扩容后 OLTP 及 OLAP 的性能可线性增长。
最新版本:0.8
数据格式向后兼容:从2023年7月发布的 0.8 版迭代开始,后续的迭代版本均兼容该版本的底层数据存储格式。在软件版本升级的过程中,不再需要删除老的数据目录及重新导入数据。
新增部署及运维工具:本次迭代提供了极简化的部署及运维命令行工具 mo_ctl,帮助用户快速检查基础硬件环境,初始化配置及一键安装部署。不论是单机版本还是分布式版本用户都不再需要通过复杂的 Linux 及 K8s 原生命令来进行部署及运维。
与 MySQL 兼容性提升:新增了与 MySQL 兼容的大小写模式,MySQL 到 MatrixOne 的 SQL 转换工具,及补齐了大量 information_schema 库的表结构,大幅减少 MySQL 迁移的适配工作。
新增悲观事务:为了兼容现有 OLTP 类应用事务使用习惯,MatrixOne 增加了对悲观事务的支持,同时支持 SI 及 RC 隔离级别,不再要求上层应用针对乐观事务可能出现的冲突去设置重试机制,同时增加对 Select for update 的支持。
架构完善(Proxy 模块)
在一个基于 MatrixOne 开发的应用系统中,存在着多种业务负载类型(OLTP/OLAP/外部数据交换),同时 MatrixOne 有多租户机制,多个租户的资源及业务负载类型均需要达到隔离及互不干扰。Proxy 架构图如下:

Proxy 作为 MO 内核之外承担负载均衡与 SQL 请求分发的唯一组件,是当前实现 MO 的 SQL 路由功能的最优路径。通过将 CN 分组标签的方式,搭配 Proxy 的 SQL 分发,实现会话级别的 SQL 路由功能。
其他新功能
新增 binary 类型及相关函数,发布订阅功能,sequence 序列,Alter table 功能,实现了部分 partition by 分区表功能,多层外键支持,Rank, Row_number 和 Dense_rank 窗口函数,INSERT...ON DUPLICATE KEY UPDATE 语句支持,密码修改与 owner 逻辑,全局参数持久化功能,Rand 系统函数。
0.8 以前版本数据格式不兼容,无法直接升级,业务负载隔离标签目前仅支持 JDBC,次级索引没有加速查询能力,内存泄漏仍会有偶发,可能导致系统内存溢出,分布式版本中 DN 存在一定的单点风险,高并发负载下有一定概率出现系统卡住的现象。
最新版本:1.0
2024年1月上旬发布的v1.1.0在本迭代增加了多个重要功能,在整体 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 等领域的适用性。
其他新功能
1、DDL
支持 insert on duplicate key ignore
支持 create or replace view
支持 alter sequence
支持 Key, hash 的分区裁剪能力 (beta)
支持 List/List column, Range/Range Columns partition 分区存储能力(beta)
2、索引与约束
完整实现次级索引 secondary index,可实现动态查询加速
3、函数
自定义函数 UDF:支持用户创建 Python 语言的自定义函数 UDF (beta)
增加 SAMPLE 采样函数
增加 CONVERT_TZ 转换时区函数
增加 SHA2 加密函数
增加 Encode/Decode 编解码函数
4、安全与权限
支持通过创建 Stage 对 select into 的路径权限进行管理
5、周边工具
modump 工具(逻辑备份)
新增支持单独导出 DDL 语句
支持导出多个数据库、多个表
mo_backup 工具
支持物理备份
支持文件系统、对象存储作为备份和还原的存储介质
mo_ctl(单机)工具
支持自动数据备份
支持自动日志表数据清理
支持数据文件从 csv 格式转换为 insert 或 load data inline 格式
支持 docker 镜像自动构建
支持 docker 模式
单机部署 mo_ctl(分布式)工具
支持 install 一键部署分布式集群
支持 destroy 一键销毁分布式集群
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 兼容性列表
了解更多详情可以访问我们的文档网站。可以在该网站找到详细的架构说明、安装指南和开发教程,帮助您探索 MatrixOne 的能力。此外我们的 Github 网站也可以用于提问、讨论或反馈。
官方主页:
http://matrixorigin.cn/
https://github.com/matrixorigin/matrixone