MatrixOne v1.0.0-RC1 Release Notes

We are thrilled to announce the release of MatrixOne 1.0.0-RC1 on 2023/8/24!

This milestone marks we have basically achieved the initial design goal of the MatrixOne open-source project. Cheers!

MatrixOne 1.0.0-RC1 Review

MatrixOne is designed to provide a unified and scalable database management solution for transactional, analytical and streaming workloads and powers a wide range of applications. In general, MatrixOne 1.0.0-RC1 has delivered a cloud-native architecture with separated storage and computing, presenting a fully-functional database with high performance queries and elastic scaling with familiar relational SQL. The OLTP and OLAP performance of MatrixOne has also reached the industry’s average level, meanwhile MatrixOne provides an experimental function of Stream table and Kafka connector for streaming processing.

SQL

  • Syntax: MatrixOne SQL syntax is highly compatible with MySQL 8.0.
  • DDL: Supports common DDL statements such as CREATE, ALTER, and DELETE databases, tables, views, and partitioned tables.
  • DML: Supports common DML statements including INSERT, UPDATE, DELETE, and data import/export statements.
  • Basic SQL query: Supports basic query capabilities such as grouping, deduplication, filtering, sorting, limiting, regular expressions, etc.
  • Advanced SQL query: Supports advanced query capabilities including views, subqueries, joins, unions, Common Table Expressions (CTE), window functions, prepared statements, etc.
  • Data Types: Supports data types including integer, floating-point, string, date/time, boolean, enum, binary, and JSON types.
  • Aggregate Functions: Supports common aggregate functions such as AVG, COUNT, MIN, MAX, SUM, etc.
  • System Functions and Operators: Supports common string, date/time, mathematical functions, and operators.
  • Indexes and Constraints: Supports primary keys, unique constraints, non-null constraints, foreign keys, auto-increment constraints, and secondary indexes.
  • Streaming: Supports the creation of streaming tables and integration with Kafka data sources.
  • Multi-tenancy: Supports the creation and management of internal tenants within the database.

Data Import and Export

  • Supports batch insert data using INSERT, LOAD DATA, SOURCE, etc.
  • Supports data export using SELECT INTO and modump methods.
  • Supports direct import from local files and object storage.

Transactions

  • Supports ACID (Atomicity, Consistency, Isolation, Durability) transaction properties.
  • Supports transaction initiation, commit, and rollback operations.
  • Supports both pessimistic and optimistic transactions, allowing users to switch between them.
  • Provides configuration options for isolation levels, including Snapshot Isolation and Read Committed.

Deployment

  • Supports both standalone and distributed deployment architectures.
  • Supports deployment through source code, binary packages, Docker, and Kubernetes.
  • Supports deployment on public cloud, private cloud, and physical machines.

Application Development

  • Supports native connectors for popular development languages such as Java, Python, and Golang, including JDBC, pymysql, go-sql-driver.
  • Supports common ORM frameworks for various languages such as MyBatis, Spring JPA, SQLAlchemy, GORM.
  • Supports popular MySQL management tools like Navicat, MySQL Workbench, DBeaver, HeidiSQL.
  • Provides a standalone and distributed command-line management tool named mo_ctl.
  • Includes comprehensive database logging and query recording capabilities, with the ability to integrate with visualization components like Grafana for real-time cluster monitoring.

Security and Privileges

  • Supports Transport Layer Security (TLS) encrypted connections.
  • Supports Role-Based Access Control (RBAC).

Backup and Restore

  • Supports logical backups using the modump tool.
  • Supports physical backups using the mobr tool.

MatrixOne Use Cases

Operational Analytics

As the data volume of common IT systems such as OA, ERP, CRM, etc., increases with business growth, traditional single-node databases may not meet their performance requirements. Many companies set up a separate analytical database system to meet the needs of important reporting requirements at month-end or quarter-end, or use sharding techniques to reduce query loads. An operational analytics system is one that allows you to make quick decisions based on the current operational system. MatrixOne can fulfill the requirements of both the business system and the analytical system with a single database, while providing powerful scalability that can seamlessly expand as the business grows.

Real-time Analytics

For typical OLAP (Online Analytical Processing) applications in business, such as dashboards and BI reports, massive data analysis is often required. When the data volume becomes significant, performance bottlenecks may arise, resulting in poor timeliness. MatrixOne offers fast data ingestion, powerful analytical performance and scalability, enabling accelerated processing of complex and large-scale SQL queries, achieving sub-second response times, and improving the agility of enterprise decision-making and analysis.

IoT Monitoring

With the widespread application of sensors and network technologies, various IoT devices generate massive amounts of data, such as manufacturing plant production lines, renewable energy vehicles, city surveillance cameras, and more. The scale of data can easily reach hundreds of terabytes or even petabytes. There is an increasing demand for enterprises to store and utilize this data. Traditional database solutions cannot handle the real-time data ingestion and processing required in such massive and large-scale scenarios. MatrixOne provides powerful capabilities for streaming data ingestion and processing, along with robust scalability to handle any workload and data volume, fully meeting the requirements of this scenario.

Fluctuating Web Applications

For internet-based web applications such as gaming, e-commerce, entertainment, social media, news, etc., where user numbers are large and business fluctuations are frequent and significant, substantial computing resources are often required to support business demands during peak events. MatrixOne, with its fully cloud-native architecture, offers exceptional scalability, automatically scaling up or down in response to changes in the business, thereby greatly reducing the operational complexity for users.

SaaS Applications

SaaS applications have experienced explosive growth in recent years. In SaaS application development, a multi-tenant model needs to be considered. Traditional solutions often involve either shared database instances for multiple tenants or dedicated database instances for each tenant, facing a trade-off between management costs and isolation. MatrixOne comes with built-in multi-tenancy capabilities, providing natural workload isolation between tenants and independent scalability. It also offers centralized management capabilities, effectively addressing cost, ease of management, and isolation requirements, making it the ideal choice for SaaS applications.

Quick Start

Docker

  1. docker pull matrixorigin/matrixone:1.0.0-rc1

This documentation site also provides detailed architecture instructions, installation guides, and development tutorials to help you explore the features and capabilities of MatrixOne here.

Additionally, our GitHub and community forums are available for any questions, discussions, or feedback you may have.

What’s changed from 0.8 to 1.0

From 0.8 to 1.0, we mainly developed some new functions and improve usability for production-level deployment.

Key New Features

Physical Backup(Enterprise Edition)

In this version, we have introduced the physical backup feature, allowing users to easily backup and restore databases. Now, you can effortlessly create snapshots of your database and restore to previous states when needed, ensuring data integrity and reliability.

Stream Computing

As the final piece of the HSTAP architecture puzzle, we have completed the framework design for stream computing. In this iteration, we have added the ability to create streaming tables and implemented a Kafka connector to meet the streaming data ingestion needs of various time-series scenarios.

Recursive CTE

Recursive CTE (Common Table Expression) is a feature that allows for repeatedly executing an initial CTE to return subsets of data until the complete result set is obtained. The implementation in this iteration enables users to easily handle hierarchical data and build more complex and flexible queries using recursive queries.

Key Improvements

MySQL DDL Compatibility

We have further improved MatrixOne’s compatibility with MySQL, enabling better support for MySQL table creation statements. Now, users can seamlessly migrate existing MySQL applications to MatrixOne without modifying existing table creation statements.

Session Migration during Scaling

We have added the capability to migrate sessions seamlessly during distributed instance scaling operations. Users can easily adjust the capacity of MatrixOne without impacting existing sessions and business operations.

Simplified System Configuration

We have significantly simplified the startup configuration options for both single-node and distributed versions, allowing users to quickly and easily start the database.

mo_ctl Tool

We have optimized the functionality of the mo_ctl maintenance tool for both single-node and distributed setups, providing more powerful and user-friendly maintenance capabilities. Now, you can effortlessly deploy, upgrade, scale, and perform other maintenance operations using the distributed mo_ctl tool (Enterprise Edition).

Other Features

  • Add Replace for DDL
  • Add column modification for Alter Table
  • Add Create Stage statement, simplify Data Import/Export process
  • Add Show Processlist for checking system status
  • Add enum data type
  • Add Year data type
  • Add To_Days/To_Seconds system functions
  • Improve Group by behavior by alias support

Known Issues

  • Secondary Key doesn’t improve any performance.
  • Memory leak occasionally happens and may lead to an OOM error.
  • DN is a single point of failure for distributed version.
  • Occasional system hung under high concurrency workload.

Full Changelog

https://github.com/matrixorigin/matrixone/compare/v0.8.0…v1.0.0-rc1