在当今数据驱动的世界中,数据库的多元性和融合性逐渐成为数据架构选型的重要要素。MatrixOne (以下简称 MO)是一个超融合云和边缘原生分布式数据库,其结构将存储、计算和事务分离,形成一个合并的 HSTAP (Hybrid Streaming & Transaction/Analytical Processing) 数据引擎,主要实现语言为 Go。本文将简要介绍 MO 项目及其 MO Cloud 服务。 MO 概览

MO 是一款超融合异构云原生数据库。它不仅支持在线事务处理(OLTP),也支持在线分析处理(OLAP),以及流式工作(Sreaming)负载,使其成为处理大数据的理想选择。MO 架构设计考虑了云原生环境,支持容器化部署和 Kubernetes 管理,从而简化了数据库的部署和管理过程。 MO 关键特性

云原生架构:与云基础设施的无缝集成,支持自动化部署和扩展。
分布式存储:跨多个节点的数据自动分布,提高了性能和可靠性。
弹性扩展:根据业务需求动态调整资源,优化成本。
MySQL 兼容性:高度兼容 MySQL 协议,方便开发快速上手。
实时分析:快速的数据查询和分析能力。
多租户支持:支持多个用户或组织在同一数据库实例上独立操作。

MO 优势

在ICT(信息与通信技术)基础设施中,使用 MO 数据库可以带来以下好处:

提高数据处理能力:MO 的分布式架构可以处理大规模数据集,满足大数据时代的需求。
增强业务敏捷性:云原生的特性使得数据库能够快速响应业务变化,支持快速部署和扩展。
降低运维复杂性:通过自动化的部署和管理,MO 减少了对专业数据库管理员的依赖。
提升数据安全性:MO 提供了多层次的数据安全和隐私保护措施,包括数据加密、访问控制等。
优化成本效益:通过按需扩展资源,企业可以根据实际使用情况优化成本。
性能监控与调优:实时监控数据处理任务的性能,及时发现并解决潜在问题,同时针对大规模数据集选择高效的算法和优化策略。
数据安全和隐私保护:在处理数据时,确保通过数据脱敏和访问控制等手段保护数据安全和用户隐私。

MO 最新动态

MO 的最新版本为 1.2.2,发布于 2024 年 07 月 12 日。

MO 内核 v1.2.0 版本于 2024 年 05 月 20 日正式发布。本次迭代中进行了显著的功能扩展,重点功能有:快照备份、增量物理备份、CTAS、BITMAP 和向量索引。 MO Cloud

MO Cloud 是 MO 提供的云服务,它允许用户在云上快速部署和管理 MO 数据库。通过简化的操作界面,用户可以轻松地创建实例、导入数据、执行查询并监控数据库性能。

MO Cloud 的优势主要有:

简化管理:通过云界面简化数据库的创建和管理。
性能监控:实时监控数据库性能,快速响应系统状态变化。
安全性:提供多层次的安全措施,包括数据加密和访问控制。

从本地使用 MySQL 客户端连接 MO Cloud,并查看数据库状态。

[root@centos7 ~]# mysql -h xxx.matrixonecloud.cn -P 6001 -u admin  -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1489138821
Server version: 8.0.30-MatrixOne-v1.2.2 MatrixOne

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

(admin) [(none)] 14:14:27> \s
--------------
mysql  Ver 9.0.0 for Linux on x86_64 (MySQL Community Server - GPL)

Connection id:  1489138821
Current database: 
Current user:  admin@localhost
SSL:   Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
Current pager:  stdout
Using outfile:  ''
Using delimiter: ;
Server version:  8.0.30-MatrixOne-v1.2.2 MatrixOne
Protocol version: 10
Connection:  xxx.matrixonecloud.cn via TCP/IP
Server characterset: utf8mb4
Db     characterset: utf8mb4
Client characterset: utf8mb4
Conn.  characterset: utf8mb4
TCP port:  6001
Binary data as:  Hexadecimal
--------------

MO 性能测试

为了评估 MO 的性能,接下来进行 TPC-H 测试。

TPC Benchmark™H(TPC-H)是决策支持基准,是 OLAP 数据库广泛使用的基准测试。它由一套面向业务的即时查询(ad-hoc)和并发数据修改组成。选择查询和填充数据库的数据具有广泛的行业相关性。该基准测试解释说明了决策支持系统,该系统可检查大量数据,执行高度复杂的查询并为关键业务问题提供答案。

TPC-H 测试的主要步骤为:

建表:在 MO Cloud 中创建 TPC-H 测试的表结构。
导数:将数据加载到 MO Cloud 数据库中,数据文件 1.2G,数据行数 850万。
执行:运行标准 SQL 进行测试查询。

运行时长统计如下表。

其中,运行时间最长的 Q16 语句的执行计划如下。

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| QUERY PLAN                                                                                                                                                             |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Project                                                                                                                                                                |
|   ->  Sort                                                                                                                                                             |
|         Sort Key: COUNT(distinct partsupp.ps_suppkey) DESC, part.p_brand INTERNAL, part.p_type INTERNAL, part.p_size INTERNAL                                          |
|         ->  Aggregate                                                                                                                                                  |
|               Group Key: #[0,0], #[0,1], #[0,2]                                                                                                                        |
|               Aggregate Functions: count(#[0,3])                                                                                                                       |
|               ->  Aggregate                                                                                                                                            |
|                     Group Key: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey                                                                             |
|                     ->  Join                                                                                                                                           |
|                           Join Type: ANTI   hashOnPK                                                                                                                   |
|                           Join Cond: (partsupp.ps_suppkey = supplier.s_suppkey)                                                                                        |
|                           ->  Join                                                                                                                                     |
|                                 Join Type: INNER   hashOnPK                                                                                                            |
|                                 Join Cond: (partsupp.ps_partkey = part.p_partkey)                                                                                      |
|                                 ->  Table Scan on tpch.partsupp                                                                                                        |
|                                 ->  Table Scan on tpch.part                                                                                                            |
|                                       Filter Cond: part.p_size in ([6 15 16 18 30 37 46 47]), (part.p_brand <> 'Brand#45'), (not (part.p_type like 'SMALL ANODIZED%')) |
|                           ->  Table Scan on tpch.supplier                                                                                                              |
|                                 Filter Cond: (supplier.s_comment like '%Customer%Complaints%')                                                                         |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
19 rows in set (0.16 sec)

测试结果表明,MO 在执行复杂查询时具有出色的性能。 结语

MatrixOrigin 作为一个高性能的云原生分布式数据库系统,提供了强大的数据处理能力和实时分析支持。MO Cloud 服务进一步简化了 MO 部署和管理。通过 TPC-H 基准测试,我们可以看到 MO Cloud 在处理大规模数据集时的性能优势。希望看到更多 MO 商业化落地的案例,以及在数据库与AI方面新的技术突破。

喵~

🌻 往期精彩 ▼

[Oracle]
    Oracle 数据库全面升级为 23ai
    python-oracledb 已率先支持 Oracle 23ai
    一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
[MySQL]
    MySQL 9.0 的 VECTOR 文档更新
    MySQL 9.0.0 新鲜出炉!支持向量类型
    「合集」MySQL 8.x 系列文章汇总
    如何选择适合的 MySQL Connector/J 版本
[TiDB]
    星辰考古:TiDB v4.0 进化前夜
    国产基础软件“出海”标杆炼成记
    敢于公布BUG的国产数据库才是好数据库
[PG]
    [RL9] Rocky Linux 9.4 搭载 PG 16.1
    即将告别PG 12,建议升级到PG 16.3版本
    后 EL 7 时代,PG 16 如何在 CentOS 7 上运行

-- / END / --

👉 这里可以找到我

微信公众号:少安事务所
墨天轮:严少安
PGFans: 严少安
ITPUB:少安事务所
TiDB 专栏:@ShawnYan

如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~