# matrixone **Repository Path**: hedgelion/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**: 0 - **Forks**: 15 - **Created**: 2023-03-15 - **Last Updated**: 2023-03-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

MatrixOne All in One

license language macos linux codefactor release
Docs || Official Website
English || 简体中文

加入 MatrixOne 社区

matrixone16 matrixone16

如果你对 MatrixOne 项目感兴趣的话,请帮忙给 MatrixOne 点击 Star, Fork 和 Watch 三连吧,谢谢!
目录 ======== * [MatrixOne 是什么?](#what-is-matrixone) * [核心特性](#key-features) * [用户价值](#user-values) * [架构](#architecture) * [快速上手](#quick-start) * [参与贡献](#contributing) * [License](#license) ## MatrixOne 是什么? MatrixOne 是一款面向未来的超融合异构云原生数据库,通过超融合数据引擎支持事务/分析/流处理等混合工作负载,通过异构云原生架构支持跨机房协同/多地协同/云边协同。简化开发运维,消简数据碎片,打破数据的系统、位置和创新边界。

MatrixOne

## 🎯 核心特性 ### 💥 **超融合引擎**
超融合引擎 融合数据引擎,单数据库即可支持TP、AP、时序、机器学习等混合工作负载。
内置流引擎 利用独有的增量物化视图能力,无需跨数据库即可实现实时数据流处理。
### ☁️ **异构云原生**
异构统一 支持跨机房协同/多地协同/云边协同,实现无感知扩缩容,提供高效统一的数据管理。
多地多活 MatrixOne采用最优的一致性协议,实现业内最短网络延迟的多地多活。
### 🚀 **极致的性能**
高性能 特有的因子化计算和向量化执行引擎,支持极速的复杂查询。单表、星型和雪花查询都具备极速分析性能。
强一致 提供跨存储引擎的高性能全局分布式事务能力,在保证极速分析性能的同时支持更新、删除和实时点查询。
高可用 存算分离,支持存储节点与计算节点独立扩缩容,高效应对负载变化。
## 💎 **用户价值**
简化数据开发和运维 随着业务发展,企业使用的数据引擎和中间件越来越多,而每一个数据引擎平均依赖5+个基础组件,存储3+个数据副本,每一个数据引擎都要各自安装、监控、补丁和升级。这些都导致数据引擎的选型、开发及运维成本高昂且不可控。在MatrixOne的一体化架构下,用户使用单个数据库即可服务多种数据应用,引入的数据组件和技术栈减少80%,大大简化了数据库管理和维护的成本。
消减数据碎片和不一致 在既有复杂的系统架构内,存在多条数据管道多份数据存储冗余。数据依赖复杂,导致数据更新维护复杂,上下游数据不一致问题频发,人工校对难度增大。MatrixOne的高内聚架构和独有的增量物化视图能力,使得下游可以支持上游数据的实时更新,摆脱冗余的ETL流程,实现端到端实时数据处理。
无需绑定基础设施 因为基础设施的碎片化,企业的私有化数据集群和公有云数据集群之间数据架构和建设方案割裂,数据迁移成本高。而数据上云一旦选型确定数据库厂商,后续的集群扩容、其他组件采购等都将被既有厂商绑定。MatrixOne提供统一的云边基础架构和高效统一的数据管理,企业数据架构不再被基础设施绑定,实现单数据集群跨云无感知扩缩容,提升性价比。
极速的分析性能 目前,由于缓慢的复杂查询性能以及冗余的中间表,数据仓库在业务敏捷性上的表现不尽人意,大量宽表的创建也严重影响迭代速度。MatrixOne通过特有的因子化计算和向量化执行引擎,支持极速的复杂查询,单表、星型和雪花查询都具备极速分析性能。
像 TP 一样可靠的 AP 体验 传统数据仓库数据更新代价非常高,很难做到数据更新即可见。在营销风控,无人驾驶,智能工厂等实时计算要求高的场景或者上游数据变化快的场景中,当前的大数据分析系统无法支持增量更新,往往需要做全量的更新,耗时耗力。MatrixOne通过提供跨存储引擎的高性能全局分布式事务能力,支持条级别的实时增量更新,在保证极速分析性能的同时支持更新、删除和实时点查询。
不停服自动扩缩容 传统数仓无法兼顾性能和灵活度,性价比无法做到最优。MatrixOne基于存算分离的技术架构,支持存储节点与计算节点独立扩缩容,高效应对负载变化。
## 🔎 架构一览 MatrixOne 的架构图如下图所示:

MatrixOne

关于更详细的 MatrixOne 技术架构,可以参考[MatrixOne 架构设计](https://docs.matrixorigin.io/cn/0.7.0/MatrixOne/Overview/matrixone-architecture-design/)。 ## ⚡️ 快速上手 ### ⚙️ 安装 MatrixOne MatrixOne 目前支持 Linux 及 MacOS 系统,您可以通过源码安装或者 docker 安装。其他安装方式请参见[MatrixOne 安装指南](https://docs.matrixorigin.io/cn/0.7.0/MatrixOne/Get-Started/install-standalone-matrixone/) #### 使用源代码搭建 **步骤 1.** 搭建 Go 语言环境(至少需要 1.19 版本) 点击 Go Download and install 入到 **Go** 的官方文档,按照官方指导安装步骤完成 **Go** 语言的安装。 **步骤 2.** 获取 MatrixOne 源码,构建 MatrixOne 根据您的需要,选择您所获取的代码永远保持最新,还是获得稳定版本的代码。 - *选项 1*:获取 MatrixOne(开发版本) 代码,搭建 MatrixOne **main** 分支是默认分支,主分支上的代码总是最新的,但不够稳定。 1. 获取 MatrixOne(开发版本) 代码方法如下: ```shell git clone https://github.com/matrixorigin/matrixone.git cd matrixone ``` 2. 运行 `make build` 编译文件: ``` make build ``` __Tips__: 你也可以运行`make debug`与`make clean`或者其他任何`Makefile`支持的命令;`make debug` 可以用来调试构建进程,`make clean` 可以清除构建进程。 - *选项 2*:获取 MatrixOne(稳定版本) 代码,搭建 MatrixOne 1. 如果您想获得 MatrixOne 发布的最新稳定版本代码,请先从 **main** 切换选择至 **0.7.0** 版本分支。 ``` git clone https://github.com/matrixorigin/matrixone.git git checkout 0.7.0 cd matrixone ``` 2. 运行 `make config` 和 `make build` 编译文件: ``` make config make build ``` __Tips__: 你也可以运行`make debug`与`make clean`或者其他任何`Makefile`支持的命令;`make debug` 可以用来调试构建进程,`make clean` 可以清除构建进程。 **步骤 3.** 启动 MatrixOne 服务: - **在终端的前台启动 MatrixOne 服务** 该启动方式会在终端的前台运行 `mo-service` 进行,实时打印系统日志。如果你想停止 MatrixOne 服务器,只需按 CTRL+C 或关闭当前终端。 ``` # Start mo-service in the frontend ./mo-service -launch ./etc/quickstart/launch.toml ``` - **在终端的后台启动 MatrixOne 服务** 该启动方法会在后台运行 `mo-service` 进程,系统日志将重定向到 `test.log` 文件中。如果你想停止 MatrixOne 服务器,你需要通过以下命令查找出它的 `PID` 进程号并消除进程。下面是整个过程的完整示例。 ``` # Start mo-service in the backend ./mo-service --daemon --launch ./etc/quickstart/launch.toml &> test.log & # Find mo-service PID ps aux | grep mo-service [root@VM-0-10-centos ~]# ps aux | grep mo-service root 15277 2.8 16.6 8870276 5338016 ? Sl Nov25 156:59 ./mo-service -launch ./etc/quickstart/launch.toml root 836740 0.0 0.0 12136 1040 pts/0 S+ 10:39 0:00 grep --color=auto mo-service # Kill the mo-service process kill -9 15277 ``` __Tips__: 如上述示例所示,使用命令 `ps aux | grep mo-service` 首先查找出 MatrixOne 运行的进程号为 `15277`,`kill -9 15277` 即表示停止进程号为 `15277` 的 MatrixOne。 #### 使用 Docker **步骤 1.** 确保 Docker 已经安装 点击Get Docker,进入 Docker 的官方文档页面,根据你的操作系统,下载安装对应的 Docker。 请检查 Docker daemon 是否正在后台运行,并确认 Docker 版本: ``` $ docker --version ``` 安装成功,代码示例如下: ``` Docker version 20.10.17, build 100c701 ``` **步骤 2.** 创建并运行容器 使用以下命令将从 Docker Hub 中拉取 MatrixOne 镜像,你可以选择稳定版本镜像,或开发版本镜像。 - 稳定版本的镜像(0.7.0) ```bash docker pull matrixorigin/matrixone:0.7.0 docker run -d -p 6001:6001 --name matrixone matrixorigin/matrixone:0.7.0 ``` - 开发版本的镜像 获取最新开发版本的镜像,参见[Docker Hub](https://hub.docker.com/r/matrixorigin/matrixone/tags),找到最新 Tag,拉取镜像。拉取镜像代码示例如下: ```bash docker pull matrixorigin/matrixone:nightly-commitnumber docker run -d -p 6001:6001 --name matrixone matrixorigin/matrixone:nightly-commitnumber ``` !!! info 如上面代码所示,*nightly* 为标识的 Tag 版本每天都进行更新,请注意获取最新的镜像。 运行 Docker Hub 时需要输入用户名和密码,获取用户名和密码可以参考**连接 MatrixOne 服务**章节所述。 ### 🌟 连接 MatrixOne 服务 1. 安装 MySQL 客户端 MatrixOne 支持 MySQL 连接协议,因此您可以使用各种语言通过 MySQL 客户机程序进行连接。 目前,MatrixOne 只兼容 Oracle MySQL 客户端,因此一些特性可能无法在 MariaDB、Percona 客户端下正常工作。 安装部署 MySQL 客户端请进入到 [MySQL Community Downloads](https://dev.mysql.com/downloads/mysql/) 页面下载: - 根据你的系统,下拉选择 **Select Operating System**。 - 下拉选择 **Select OS Version**,建议选择 8.0.30 版本及以上。 安装完成后,按照Installing and Upgrading MySQL指导,配置 MySQL 客户端环境变量。 2. 连接 MatrixOne 服务 你按照上述步骤完成安装启动 MatrixOne,默认在启动模式下,产生很多日志,接下来你可以启动新的终端,使用 MySQL 命令行客户端来连接 MatrixOne 服务。 ``` mysql -h IP -P PORT -uUsername -p ``` 输入完成上述命令后,终端会提示你提供用户名和密码。你可以使用我们的内置帐号: - user: dump - password: 111 也可以使用 MySQL 客户端下述命令行,输入密码,来连接 MatrixOne 服务: ``` mysql -h 127.0.0.1 -P 6001 -udump -p Enter password: ``` 目前,MatrixOne 只支持 TCP 监听。 ## 🙌 参与贡献 欢迎大家对 MatrixOne 的贡献。 请查看[贡献指南](https://docs.matrixorigin.io/cn/0.7.0/MatrixOne/Contribution-Guide/make-your-first-contribution/)来了解有关提交补丁和完成整个贡献流程的详细信息。 ### 👏贡献者们 ## License [Apache License, Version 2.0](LICENSE)。