Skip to content

LiSong0214/matrixone

 
 

Repository files navigation

Connect with us:

matrixone16 matrixone16

If you are interested in MatrixOne project, please kindly give MatrixOne a triple `Star`, `Fork` and `Watch`, Thanks!

Contents

What is MatrixOne?

MatrixOne is a future-oriented hyper-converged cloud and edge native DBMS that supports transactional, analytical, and streaming workloads with a simplified and distributed database engine, across multiple data centers, clouds, edges and other heterogeneous infrastructures.

MatrixOne

💥 Hyper-converged Engine

Monolithic Engine A monolithic database engine is designed to support hybrid workloads: transactional, analytical, streaming, time-series, machine learning, etc.
Built-in Streaming Engine With the built-in streaming engine, MatrixOne supports in-database streaming processing by groundbreaking incremental materialized view maintenance.

☁️ Cloud & Edge Native

Real Infrastructure Agnostic MatrixOne supports seemless workload migration and bursting among different locations and infrastructures.
Multi-site Active/Active MatrixOne provides industry-leading latency control with optimized consistency protocol.

🚀 Extreme Performance

High Performance Accelerated queries supported by patented vectorized execution as well as optimal computation push down strategies through factorization techniques.
Strong Consistency MatrixOne introduces a global, high-performance distributed transaction protocol across storage engines.
High Scalability Seamless and non-disruptive scaling by disaggregated storage and compute.
Simplify Database Management and Maintenance To solve the problem of high and unpredictable cost of database selection process, management and maintenance due to database overabundance, MatrixOne all-in-one architecture will significantly simplify database management and maintenance, single database can serve multiple data applications.
Reduce Data Fragmentation and Inconsistency Data flow and copy between different databases makes data sync and consistency increasingly difficult. The unified incrementally materialized view of MatrixOne makes the downstream can support real-time upstream update, achieve the end-to-end data processing without redundant ETL process.
Decoupling Data Architecture From Infrastructure Currently the architecture design across different infrastructures is complicated, causes new data silos between cloud and edge, cloud and on-premise. MatrixOne is designed with unified architecture to support simplified data management and operations across different type of infrastructures.
Extremely Fast Complex Query Performance Poor business agility as a result of slow complex queries and redundant intermediate tables in current data warehousing solutions. MatrixOne supports blazing fast experience even for star and snowflake schema queries, improving business agility by real-time analytics.
A Solid OLTP-like OLAP Experience Current data warehousing solutions have the following problems such as high latency and absence of immediate visibility for data updates. MatrixOne brings OLTP (Online Transactional Processing) level consistency and high availability to CRUD operations in OLAP (Online Analytical Processing).
Seamless and Non-disruptive Scalability It is difficult to balance performance and scalability to achieve optimum price-performance ratio in current data warehousing solutions. MatrixOne's disaggregated storage and compute architecture makes it fully automated and efficient scale in/out and up/down without disrupting applications.

MatrixOne's architecture is as below:

MatrixOne

For more details, you can checkout MatrixOne Architecture.

⚙️ Install MatrixOne

MatrixOne supports Linux and MacOS. You can install MatrixOne either by building from source or using docker. For other installation types, please refer to MatrixOne installation for more details.

Building from source

Step 1. Install Go (version 1.19 is required)

Step 2. Get the MatrixOne code to build MatrixOne

Depending on your needs, choose whether you want to keep your code up to date, or if you want to get the latest stable version of the code.

  • Option 1: Get the MatrixOne(Develop Version) code, build MatrixOne

The main branch is the default branch, the code on the main branch is always up-to-date but not stable enough.

  1. Get the MatrixOne(Develop Version, also called Pre0.6 version) code:

    git clone https://github.com/matrixorigin/matrixone.git
    cd matrixone
    
  2. You can run make debug, make clean, or anything else our Makefile offers.

    make build
    
  3. Launch MatrixOne server:

    !!! note The startup-config file of MatrixOne(Develop Version) is different from the startup-config file of MatrixOne(Stable Version). The startup-config file code of MatrixOne(Develop Version) is as below:

    ./mo-service -cfg ./etc/cn-standalone-test.toml
    
  • Option 2: Get the MatrixOne(Stable Version) code, build MatrixOne
  1. If you want to get the latest stable version code released by MatrixOne, please switch to the branch of version 0.5.1 first.

    git clone https://github.com/matrixorigin/matrixone.git
    git checkout 0.5.1
    cd matrixone
    
  2. You can run make debug, make clean, or anything else our Makefile offers.

    make config
    make build
    
  3. Launch MatrixOne server:

    !!! note The startup-config file of MatrixOne(Stable Version) is different from the startup-config file of MatrixOne(Develop Version). The startup-config file code of MatrixOne(Stable Version) is as below:

    ./mo-server system_vars_config.toml
    

Using docker

  1. Make sure Docker is installed, verify Docker daemon is running in the background:
$ docker --version
  1. Create and run the container for the latest release of MatrixOne. It will pull the image from Docker Hub if not exists.

It will pull the image from Docker Hub if not exists. You can choose to pull the stable version image or the develop version image.

  • Stable Version Image(0.5.1 version)
docker run -d -p 6001:6001 --name matrixone matrixorigin/matrixone:0.5.1
  • If you want to pull the develop version image, see Docker Hub, get the image tag. An example as below:

    Develop Version Image(Pre0.6 version)

    docker run -d -p 6001:6001 --name matrixone matrixorigin/matrixone:nightly-commitnumber

    !!! info The nightly version is updated once a day.

  1. Mount the data directory(Optional)

    To customize the configuration file, you can mount the custom configuration file stored on the local disk.

docker run -d -p 6001:6001 -v ${path_name}/system_vars_config.toml:/system_vars_config.toml:ro -v ${path_name}/store:/store:rw --name matrixone matrixorigin/matrixone:0.5.1

🌟 Connecting to MatrixOne server

  1. Install MySQL client.

    MatrixOne supports the MySQL wire protocol, so you can use MySQL client drivers to connect from various languages. Currently, MatrixOne is only compatible with Oracle MySQL client. This means that some features might not work with MariaDB client.

    To install MySQL client, enter into the MySQL Community Downloads download page:

    • According to your System, Select Select Operating System.

    • Click Select OS Version from the drop-down list. Version 8.0.30 or later is recommended.

  2. Connect to MatrixOne server:

    When you finish installing and starting MatrixOne, many logs are generated in startup mode. Then you can start a new terminal and connect to a matrixone.

$ mysql -h IP -P PORT -uUsername -p

The connection string is the same format as MySQL accepts. You need to provide a user name and a password.

Use the built-in test account for example:

  • user: dump
  • password: 111
$ mysql -h 127.0.0.1 -P 6001 -udump -p
Enter password:

Now, MatrixOne only supports the TCP listener.

Contributions to MatrixOne are welcome from everyone.
See Contribution Guide for details on submitting patches and the contribution workflow.

👏 All contributors

nnsgmsone
Nnsgmsone
XuPeng-SH
XuPeng-SH
daviszhen
Daviszhen
reusee
Reusee
zhangxu19830126
Fagongzi
ouyuanning
Ouyuanning
aunjgr
BRong Njam
sukki37
Maomao
dengn
Dengn
iamlinjunhong
Iamlinjunhong
lni
Lni
jiangxinmeng1
Jiangxinmeng1
jianwan0214
Jianwan0214
LeftHandCold
GreatRiver
m-schen
Chenmingsong
w-zr
Wei Ziran
broccoliSpicy
BroccoliSpicy
zzl200012
Kutori
qingxinhome
Qingxinhome
fengttt
Fengttt
JinHai-CN
Jin Hai
lignay
Matthew
aptend
Aptend
lacrimosaprinz
Prinz
xzxiong
Jackson
cnutshell
Cui Guoke
wanhanbo
Wanhanbo
guguducken
Brown
dongdongyang33
Dongdongyang
bbbearxyz
Bbbearxyz
tianyahui-python
tianyahui-python
wanglei4687
Wanglei
JackTan25
Boyu Tan
mklzl
Mklzl
YANGGMM
YANGGMM
triump2020
Triump2020
yingfeng
Yingfeng
goodMan-code
goodMan-code
domingozhang
DomingoZhang
mooleetzi
Mooleetzi
aylei
Aylei
aressu1985
Aressu1985
noneback
NoneBack
WenhaoKong2001
Otter
richelleguice
Richelle Guice
yjw1268
Ryan
e1ijah1
Elijah
MatrixAdventurer
MatrixAdventurer
NTH19
NTH19
anitajjx
Anitajjx
whileskies
Whileskies
BePPPower
BePPPower
jiajunhuang
Jiajun Huang
Y7n05h
Y7n05h
matrix-meow
Mo-bot
Abirdcfly
Abirdcfly
decster
Binglin Chang
Charlie17Li
Charlie17Li
DanielZhangQD
DanielZhangQD
Juneezee
Eng Zer Jun
ericsyh
Eric Shen
Fungx
Fungx
xy2398437254
He ZhiYuan
JasonPeng1310
Jason Peng
jensenojs
Jensen
volgariver6
LiuBo
ikenchina
O2
RinChanNOWWW
RinChanNOW!
chaixuqing
XuQing Chai
yubindy
ZeYu Zhao
adlternative
ZheNing Hu
TszKitLo40
Zijie Lu
ZoranPandovski
Zoran Pandovski
ajian2002
Ajian
bxiiiiii
Binxxi
coderzc
Coderzc
florashi181
Florashi181
hiyoyolumi
Hiyoyolumi
jinfuchiang
Jinfu
lokax
Lokax
lyfer233
Lyfer233
sundy-li
Sundyli
supermario1990
Supermario1990
lawrshen
Tjie
Toms1999
Toms
wuliuqii
Wuliuqii
xiw5
Xiyuedong
yclchuxue
Yclchuxue
ZtXavier
Zt
taofengliu
刘陶峰

MatrixOne is licensed under the Apache License, Version 2.0.

About

Hyperconverged cloud-edge native database

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 96.3%
  • Yacc 1.6%
  • C 1.0%
  • PLpgSQL 0.7%
  • Assembly 0.2%
  • Shell 0.1%
  • Other 0.1%