# matrixone
**Repository Path**: matrixorigin/matrixone
## Basic Information
- **Project Name**: matrixone
- **Description**: MatrixOne 是一个分布式的云原生融合数据库,专为异构混合工作负载而设计
- **Primary Language**: Go
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: https://docs.matrixorigin.io
- **GVP Project**: No
## Statistics
- **Stars**: 39
- **Forks**: 14
- **Created**: 2021-10-27
- **Last Updated**: 2025-07-19
## Categories & Tags
**Categories**: database-service
**Tags**: 云原生数据库
## README
加入 MatrixOne 社区
如果你对 MatrixOne 项目感兴趣的话,请帮忙给 MatrixOne 点击 Star, Fork 和 Watch 三连吧,谢谢!
目录
========
* [MatrixOne 是什么?](#what-is-matrixone)
* [核心特性](#key-features)
* [用户价值](#user-values)
* [架构](#architecture)
* [快速上手](#quick-start)
* [参与贡献](#contributing)
* [License](#license)
## MatrixOne 是什么?
MatrixOne 是一款超融合异构分布式数据库,通过云原生化和存储、计算、事务分离的架构构建 HSTAP 超融合数据引擎,实现单一数据库系统支持 OLTP、OLAP、流计算等多种业务负载,并且支持公有云、私有云、边缘云部署和使用,实现异构基础设施的兼容。
## 🎯 核心特性
### 💥 **超融合引擎**
超融合引擎
HTAP 数据引擎,单数据库即可支持 TP、AP、时序、机器学习等混合工作负载。
内置流引擎
内置流计算引擎,支持实时数据流入、实时数据转换及实时数据查询。
### ☁️ **异构云原生**
存算分离架构
将存储、计算、事务三层解耦,通过完全容器化的设计来实现极致扩展。
多基础设施兼容
支持跨机房协同/多地协同/云边协同,实现无感知扩缩容,提供高效统一的数据管理。
### 🚀 **极致性能**
高性能执行引擎
通过 Compute Node 和 Transaction node 的灵活配合兼顾点查询与批处理,对于 OLTP 和 OLAP 都具备极致性能。
企业级高可用
在领先的 Multi-Raft 复制状态机模型下建立强一致共享日志,可在避免数据重复的同时保证集群的高可用。
### 🖊️ **简单易用**
自带多租户能力
自带多租户功能,租户既相互隔离,独立扩缩容又可进行统一管理,简化上层应用的多租户设计复杂度。
MySQL 高度兼容
MatrixOne 与 MySQL8.0 高度兼容,包括传输协议,SQL 语法和生态工具,降低使用和迁移门槛。
### 💰 **高性价比**
高效存储设计
以成本低廉的对象存储作为主存储,通过纠删码技术仅需要 150% 左右的数据冗余即可实现高可用,同时提供高速缓存能力,通过冷热分离多级存储方案兼顾成本和性能。
资源灵活调配
用户可以根据业务情况自由调整为 OLTP 及 OLAP 分配的资源比例,实现资源最大化利用。
### 🔒 **企业级安全合规**
采用用户角色访问控制(RBAC)、TLS 连接、数据加密等手段,建立多级安全防护体系,保障企业级数据安全和合规。
## 💎 **用户价值**
简化数据开发和运维
随着业务发展,企业使用的数据引擎和中间件越来越多,而每一个数据引擎平均依赖 5+ 个基础组件,存储 3+ 个数据副本,每一个数据引擎都要各自安装、监控、补丁和升级。这些都导致数据引擎的选型、开发及运维成本高昂且不可控。在 MatrixOne 的一体化架构下,用户使用单个数据库即可服务多种数据应用,引入的数据组件和技术栈减少 80%,大大简化了数据库管理和维护的成本。
消减数据碎片和不一致
在既有复杂的系统架构内,存在多条数据管道多份数据存储冗余。数据依赖复杂,导致数据更新维护复杂,上下游数据不一致问题频发,人工校对难度增大。MatrixOne 的高内聚架构和独有的增量物化视图能力,使得下游可以支持上游数据的实时更新,摆脱冗余的 ETL 流程,实现端到端实时数据处理。
无需绑定基础设施
因为基础设施的碎片化,企业的私有化数据集群和公有云数据集群之间数据架构和建设方案割裂,数据迁移成本高。而数据上云一旦选型确定数据库厂商,后续的集群扩容、其他组件采购等都将被既有厂商绑定。MatrixOne 提供统一的云边基础架构和高效统一的数据管理,企业数据架构不再被基础设施绑定,实现单数据集群跨云无感知扩缩容,提升性价比。
极速的分析性能
目前,由于缓慢的复杂查询性能以及冗余的中间表,数据仓库在业务敏捷性上的表现不尽人意,大量宽表的创建也严重影响迭代速度。MatrixOne 通过特有的因子化计算和向量化执行引擎,支持极速的复杂查询,单表、星型和雪花查询都具备极速分析性能。
像 TP 一样可靠的 AP 体验
传统数据仓库数据更新代价非常高,很难做到数据更新即可见。在营销风控,无人驾驶,智能工厂等实时计算要求高的场景或者上游数据变化快的场景中,当前的大数据分析系统无法支持增量更新,往往需要做全量的更新,耗时耗力。MatrixOne 通过提供跨存储引擎的高性能全局分布式事务能力,支持条级别的实时增量更新,在保证极速分析性能的同时支持更新、删除和实时点查询。
不停服自动扩缩容
传统数仓无法兼顾性能和灵活度,性价比无法做到最优。MatrixOne 基于存算分离的技术架构,支持存储节点与计算节点独立扩缩容,高效应对负载变化。
## 🔎 架构一览
MatrixOne 的架构图如下图所示:
关于更详细的 MatrixOne 技术架构,可以参考[MatrixOne 架构设计](https://docs.matrixorigin.cn/latest/MatrixOne/Overview/architecture/matrixone-architecture-design/)。
## ⚡️ 快速上手
### ⚙️ 安装 MatrixOne
MatrixOne 目前支持 Linux 及 MacOS 系统,您可以通过源码安装,二进制包安装或者 docker 安装。对于更详情的安装方式请参见[MatrixOne 安装指南](https://docs.matrixorigin.cn/latest/MatrixOne/Get-Started/install-standalone-matrixone/)。
以下为您介绍通过源码部署和docker部署两种方式:
**步骤 1.前置依赖**
- 源码部署
1. 搭建 Go 语言环境(至少需要 1.22 版本)
点击 Go Download and install 入到 **Go** 的官方文档,按照官方指导安装步骤完成 **Go** 语言的安装。
2. 安装 GCC/Clang
点击 GCC Download and install 进入到 **GCC** 的官方文档,按照官方指导安装步骤完成 **GCC** 的安装。
3. 安装 Git
通过[官方文档](https://git-scm.com/download)安装 Git.
4. 安装 MySQL Client
点击 MySQL Community Downloads,进入到 MySQL 客户端下载安装页面,根据你的操作系统和硬件环境,按需选择下载安装包进行安装并配置环境变量。
- docker部署
1. 安装docker
点击 Get Docker,进入 Docker 的官方文档页面,根据你的操作系统,下载安装对应的 Docker,Docker 版本推荐选择在 20.10.18 及以上,且尽量保持 Docker client 和 Docker server 的版本一致。
2. 安装 MySQL 客户端
点击 MySQL Community Downloads,进入到 MySQL 客户端下载安装页面,根据你的操作系统和硬件环境,按需选择下载安装包进行安装并配置环境变量。
__Tips__: 建议 MySQL 客户端版本为 8.0.30 版本及以上。
**步骤 2.安装 mo_ctl 工具**
[mo_ctl](https://github.com/matrixorigin/mo_ctl_standalone) 是一个部署安装和管理 MatrixOne 的命令行工具,使用它可以非常方便的对 MatrixOne 进行各类操作。
通过以下命令一键安装 mo_ctl 工具:
```
wget https://raw.githubusercontent.com/matrixorigin/mo_ctl_standalone/main/install.sh && sudo -u $(whoami) bash +x ./install.sh
```
如需获取完整的使用细节可以参考 [mo_ctl 工具指南](https://docs.matrixorigin.cn/latest/MatrixOne/Reference/mo-tools/mo_ctl_standalone/)。
**步骤 3.设置 mo_ctl 的配置参数**
- 源码部署
```
mo_ctl set_conf MO_PATH="yourpath" # 设置自定义的MatrixOne下载路径
mo_ctl set_conf MO_DEPLOY_MODE=git #设置MatrixOne部署方式,此为源码部署方式
```
- docker部署
```
mo_ctl set_conf MO_CONTAINER_DATA_HOST_PATH="/yourpath/mo/" # 宿主机mo的数据目录
mo_ctl set_conf MO_DEPLOY_MODE=docker #设置MatrixOne部署方式,此为docker部署方式
```
**步骤 4.一键安装 MatrixOne**
根据您的需要,选择您所获取的代码永远保持最新,还是获得稳定版本的代码。
- *选项 1*:获取 MatrixOne(开发版本)
**main** 分支是默认分支,主分支上的代码总是最新的,但不够稳定。
```
mo_ctl deploy main
```
- *选项 2*:获取 MatrixOne (稳定版本)
如果您想获得 MatrixOne 发布的最新稳定版本,请指定版本号。
```
mo_ctl deploy
```
**步骤 5.启动 MatrixOne 服务**
通过 `mo_ctl start` 命令一键启动 MatrixOne 服务。
__Tips__: 首次启动 MatrixOne 大致需要花费 20 至 30 秒的时间,在稍作等待后,你便可以连接至 MatrixOne。
**步骤 6.连接 MatrixOne 服务**
通过 `mo_ctl connect` 命令一键连接 MatrixOne 服务。
__Tips__: 连接和登录账号为初始账号 `root` 和密码 `111`,请在登录 MatrixOne 后及时修改初始密码,参见[密码管理](https://docs.matrixorigin.cn/latest/MatrixOne/Security/password-mgmt/)。修改登录用户名或密码后重新登录同样需要通过 `mo_ctl set_conf` 的方式设置新的用户名和密码。详情可以参考 [mo_ctl 工具指南](https://docs.matrixorigin.cn/latest/MatrixOne/Reference/mo-tools/mo_ctl_standalone/)。
### 👏贡献者
## 🙌 参与贡献
欢迎大家对 MatrixOne 的贡献。
请查看[贡献指南](https://docs.matrixorigin.cn/latest/MatrixOne/Contribution-Guide/make-your-first-contribution/)来了解有关提交补丁和完成整个贡献流程的详细信息。
## License
[Apache License, Version 2.0](LICENSE)。