Matrixone: Hyperconverged Cloud-edge Native Database

Matrixone

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

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

๐ŸŽฏ Key Features

๐Ÿ’ฅ Hyper-converged Engine

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

โ˜๏ธ Cloud & Edge Native

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

๐Ÿš€ Extreme Performance

High PerformanceAccelerated queries supported by patented vectorized execution as well as optimal computation push down strategies through factorization techniques.Strong ConsistencyMatrixOne introduces a global, high-performance distributed transaction protocol across storage engines.High ScalabilitySeamless and non-disruptive scaling by disaggregated storage and compute.

๐Ÿ’Ž User Values

Simplify Database Management and MaintenanceTo 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 InconsistencyData 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 InfrastructureCurrently 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 PerformancePoor 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 ExperienceCurrent 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 ScalabilityIt 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.
 

๐Ÿ”Ž Architecture

MatrixOne's architecture is as below:

MatrixOne

For more details, you can checkout MatrixOne Architecture Design.

โšก๏ธ Quick start

โš™๏ธ 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.20 is required)

Click Go Download and install to enter its official documentation, and follow the installation steps to complete the Go installation.

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.

Get the MatrixOne(Develop Version) code:

git clone https://github.com/matrixorigin/matrixone.git
cd matrixone

Run make build to compile the MatrixOne file:

Tips: You can also run make debug, make clean, or anything else our Makefile offers, make debug can be used to debug the build process, and make clean can be used to clean up the build process.

make build
  • Option 2: Get the MatrixOne(Stable Version) code, build MatrixOne

If you want to get the latest stable version code released by MatrixOne, please switch to the branch of version 0.8.0 first.

git clone https://github.com/matrixorigin/matrixone.git
git checkout 0.8.0
cd matrixone

Run make config and make build to compile the MatrixOne file:

Tips: You can also run make debug, make clean, or anything else our Makefile offers, make debug can be used to debug the build process, and make clean can be used to clean up the build process.

make config
make build

Step 3. Launch MatrixOne server

Launch MatrixOne server in the frontend or backend as 3. Launch MatrixOne server suggests in Building from source code.

Launch in the frontend"

This launch method will keep the mo-service process running in the frontend, the system log will be printed in real time. If you'd like to stop MatrixOne server, just make a CTRL+C or close your current terminal.

# Start mo-service in the frontend
./mo-service -launch ./etc/quickstart/launch.toml

Launch in the backend"

This launch method will put the mo-service process running in the backend, the system log will be redirected to the test.log file. If you'd like to stop MatrixOne server, you need to find out its PID by and kill it by the following commands. Below is a full example of the whole process.

Tips: As shown in the above example, use the command ps aux | grep mo-service to find out that the process number running on MatrixOne is 15277, and kill -9 15277 means to stop MatrixOne with the process number 15277.

# 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

Using docker

Make sure Docker is installed, verify Docker daemon is running in the background:

$ docker --version

The successful installation results are as follows:

Docker version 20.10.17, build 100c701

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.8.0 version)
docker pull matrixorigin/matrixone:0.8.0
docker run -d -p 6001:6001 --name matrixone matrixorigin/matrixone:0.8.0

If you are using the network in mainland China, you can pull the MatrixOne stable version image on Alibaba Cloud:

docker pull registry.cn-shanghai.aliyuncs.com/matrixorigin/matrixone:0.8.0
docker run -d -p 6001:6001 --name matrixone registry.cn-shanghai.aliyuncs.com/matrixorigin/matrixone:0.8.0

If you want to pull the develop version image, see Docker Hub, get the image tag. An example as below:

Develop Version Image

If you are using the network in mainland China, you can pull the MatrixOne develop version image on Alibaba Cloud:

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

docker pull registry.cn-shanghai.aliyuncs.com/matrixorigin/matrixone:nightly-commitnumber
docker run -d -p 6001:6001 --name matrixone registry.cn-shanghai.aliyuncs.com/matrixorigin/matrixone:nightly-commitnumber
docker pull matrixorigin/matrixone:nightly-commitnumber
docker run -d -p 6001:6001 --name matrixone matrixorigin/matrixone:nightly-commitnumber

๐ŸŒŸ Connecting to MatrixOne server

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.

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.

After you enter the preceding command, the terminal will prompt you to provide the username and password. You can use our built-in account:

  • user: dump
  • password: 111
mysql -h IP -P PORT -uUsername -p

Now, MatrixOne only supports the TCP listener.

๐Ÿ™Œ Contributing

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


Docs || Official Website 
English || ็ฎ€ไฝ“ไธญๆ–‡ 


Download Details:

Author: matrixorigin
Source Code: https://github.com/matrixorigin/matrixone 
License: Apache-2.0 license

#go #golang #streaming #sql #database 

Matrixone: Hyperconverged Cloud-edge Native Database
1.15 GEEK