准备工作

非常欢迎您参与到MatrixOne(以下简称MO)项目的建设中来!无论你是初识MatrixOne,还是已经迫切地想参与到开发工作中来,亦或是在阅读文档、使用产品的过程中发现了一些问题,都欢迎你提出意见和建议,与我们共同打造更加强大、稳定的MatrixOne! 当然,在您向MatrixOne项目提出改进之前,我们需要提前说明一些基本规范与流程,以提高整个贡献过程的质量与流畅性,同时也能保障MO的稳定性与安全性。 此外,在本章中,我们为尚未熟知MO的贡献者们提供一些了解我们的渠道,希望能为你们带来一些便利!

了解MatrixOne

特点与框架

MatrixOne简介中您可以了解到MO的超融合、云边协同特性以及其所创造的优异表现与独特价值。 此外,在MatrixOne框架中您可以详细地了解MO的整体架构,以及存储层、计算层、负责分布式管理的MatrixCube的具体组成情况。 同时,你也可以查阅MatrixOne术语表来了解一些复杂的词汇。 在技术层面,SQL参考指南 为您提供了详细的SQL语言的参考,其中对语法和示例都有详细解释;同样,自定义函数提供了MO中自定义函数的相关解释。

建设情况

目前,MatrixOne v0.3.0 已经发布了,您可以通过版本发布指南来了解最新的发布信息,其中包含了最新的修改与优化。 同时,我们当前正在开发 v0.4.0和 v0.5.0版本,对应的工作任务在GitHub的milestone0.4.0中列出。 关于长期的项目规划,请参阅MatrixOne roadmap

你可以做些什么?

对MatrixOne的贡献可分为以下几类: * 报告代码中的bug或文档中的谬误。请在GitHub上提出issue,并提供问题的详细信息。请记得选取合适的issue模板,并打上标签。 * 提议新的功能。请在Feature Request中描述详情并与社区中的开发人员商议。一旦我们的团队认可了您的计划,您就可以按照工作流程进行具体开发。 * 实现某个功能或修复既有问题,请按照工作流程完成开发。如果你需要关于某一特定问题的更多背景信息,请就该问题发表评论。

工作目录与文件介绍

我们将为Github上matrixorigin/matrixone的项目目录及其中关键文件进行简单介绍,以期为您的深入了解和开发提供指导性帮助。 matrixone是MatrixOne代码所在的主库,我们将介绍其中的项目目录以及关键文件,以期为您的深入了解和开发提供指导性帮助。

目录内容
/LICENSES相关依赖库的许可
/cmdGo的可执行文件的binary entry
optools测试与部署工具
pkgMatrixOne项目的主要代码库

对于不同的技术模块,/pkg喜爱的代码结构如下表所示。详情请参照MatrixOne技术架构

目录模块
frontend/SQL前端
sql/parserSQL解析
sql/MPP SQL Execution
sql/vectorizeSQL的向量化执行
catalog/存储元数据的Catalog
github.com/matrixorigin/matrixcubeMatrixCube
vm/engine存储引擎
vm/engine/aoeAOE引擎(分析优化引擎)
vm/engine/tpeTPE引擎(事务处理引擎)
buildin/系统的内置函数

在文档方面,matrixone, matrixorigin.ioartwork都是在贡献过程中可能使用的库,详情参见文档贡献

目录内容
matrixone/docs/en/MatrixOne文档网站的具体内容文件(.md文件)
matrixone/docs/rfcsMatrixOne项目的设计文档
matrixorigin.io/mkdocs.yml文档网站的配置文件
artwork/docs文档官网出现的图片和图表

开发环境

MO主要由Go语言编写,因此需要提前安装部署好相关的开发环境,简要的示例流程如下: 1. 安装版本为1.18的Go,您可以通过Download GoInstallation instructions教程来完成整个过程。 2. 定义环境变量并修改路径,您可以遵循以下示例流程:

  1. export GOPATH=$HOME/go
  2. export PATH=$PATH:$GOPATH/bin

Note

MatrixOne使用Go Modules 来管理相关依赖。

若您需要补充Go语言的相关知识,可以通过How to Write Go Code进行了解。

此外,确保您至少已经安装了单机版本的MatrixOne,具体过程可参照 Install Standalone MatrixOne

Github & Git

为更好地开发建设MatrixOne,我们采取了开源运营的方式,通过Github为项目维护人员和其他开发者提供了一个协作平台。因此,如果您想参与到MO的开发中来,我们强烈建议您采取Github的渠道。
若您还未使用过Github或缺少相关开发经验,您首先需要熟悉GitHub上的相关操作,并学习基本的git命令。
如果您没有Github帐户,请在https://github.com上完成注册。
如果你没有SSH密钥,你可以按照GitHub上关于SSH的教程来生成、添加密钥。
更多详情请参见Github Docs

此外,我们建议您学习并使用git命令来完成github上的各种流程,因为我们提供的相关工作流程大多通过git命令完成,这有助于您提高效率。
您可通过install git安装git环境。
并且可以通过以下教程来学习如何使用: * 简易版 * 详细版