MatrixOne从入门到实践01——初识MatrixOne
初识MatrixOne
简介
MatrixOrigin
矩阵起源 是一家数据智能领域的创新企业,其愿景是成为数字世界的核心技术提供者。
物理世界的数字化和智能化无处不在。我们致力于建设开放的技术开源社区和生态系统、打造世界级的团队、并通过业界领先的技术创新和工程能力,实现数据在数字世界中的任意存储和任意计算,帮助用户释放数据的潜力和创新力(Store Anywhere, Compute Anywhere, Innovate Anywhere)。
MatrixOne
MatrixOne 是一款致力于 One Size Fits Most 的超融合异构数据库。
MatrixOne通过超融合数据引擎HSTAP实现单一数据库系统支持 事务性(TP,Transactional Processing)、分析型(AP,Analytical Processing)、流式(Streaming)等多种数据负载,通过异构云原生架构实现单一数据库系统支持公有云原生、私有云、边缘云部署和使用。从而简化开发运维,消简数据碎片,提升数据端到端存算性能和开发敏捷度。
技术架构
MatrixOne 是第一个开源的分布式 HSTAP 数据库,支持 OLTP、OLAP 和 Streaming,使用单个自动调优存储引擎。
HSTAP 对 HTAP 数据库进行了重新定义,HSTAP 旨在满足单一数据库内事务处理(TP)和分析处理(AP)的所有需求。与传统的 HTAP 相比,HSTAP 强调其内置的用于连接TP和AP表数据流处理能力。为用户提供了数据库可以像大数据平台一样的使用体验,也恰恰得益于大数据的繁荣,很多用户已经熟悉了这种体验。 MatrixOne 以最少的集成工作,让用户摆脱大数据的限制,为企业提供所有TP和AP场景的一站式覆盖。
MatrixOne 作为一个从零开始打造的全新数据库,并在其他 DBMS 中引入了多种创新和最佳实践。采用解耦存储和计算架构,将数据存储在 S3 云存储服务上,实现低成本,计算节点无状态,可随意启动,实现极致弹性。在本地部署可用的情况下,MatrixOne 可以利用用户的 HDFS 或其他支持的分布式文件系统来保存数据。MatrixOne 还配备了兼容 S3 的内置替代方案,以确保其存储的弹性、高可靠性和高性能,而无需依赖任何外部组件。架构如下:
集群管理层
Cluster Managerment Layer 这一层负责集群管理,在云原生环境中与 Kubernetes 交互动态获取资源;在本地部署时,根据配置获取资源。集群状态持续监控,根据资源信息分配每个节点的任务。提供系统维护服务以确保所有系统组件在偶尔出现节点和网络故障的情况下正常运行,并在必要时重新平衡节点上的负载。集群管理层的主要组件是:
- Prophet 调度:提供负载均衡和节点 Keep-alive。
- 资源管理:提供物理资源。
Serverless层
Serverless Layer 层是一系列无状态节点的总称,整体上包含三类:
- 后台任务:最主要的功能是 Offload Worker,负责卸载成本高的压缩任务,以及将数据刷新到S3存储。
- SQL计算节点:负责执行 SQL 请求,这里分为写节点和读节点,写节点还提供读取最新数据的能力。
- 流任务处理节点:负责执行流处理请求。
日志层
Log Layer 作为 MatrixOne 的单一数据源 (即Single source of truth),数据一旦写入日志层,则将永久地存储在 MatrixOne中。它建立在我们世界级的复制状态机模型的专业知识之上,以保证我们的数据具有最先进的高吞吐量、高可用性和强一致性。它本身遵循完全模块化和分解的设计,也帮助解耦存储和计算层的核心组件,与传统的 NewSQL 架构相比,我们的架构具有更高的弹性。
存储层
Storage Layer存储层将来自日志层的传入数据转换为有效的形式,以供将来对数据进行处理和存储。包括为快速访问已写入 S3 的数据进行的缓存维护等。在 MatrixOne 中,TAE(即Transactional Analytic Engine)是存储层的主要公开接口,它可以同时支持行和列存储以及事务处理能力。此外,存储层还包括其他内部使用的存储功能,例如流媒体的中间存储。
存储供应层
Provision Layer作为与基础架构解耦的 DBMS,MatrixOne 可以将数据存储在 S3/HDFS 、本地磁盘、本地服务器、混合云或其他各类型云,以及智能设备的共享存储中。存储供应层通过为上层提供一个统一的接口来访问这些多样化的存储资源,并且不向上层暴露存储的复杂性。
相关技术解读
关于TAE(Transactional Analytical Engine)的那些事 - 矩阵起源 | Matrix Origin
浅谈MatrixOne如何用Go语言高性能哈希表的设计与实现 - 矩阵起源 | Matrix Origin
数据技术大融合,HSTAP数据库有多少想象空间? - 矩阵起源 | Matrix Origin
为什么MatrixOne 0.5变慢了? - 矩阵起源 | Matrix Origin
MOers的最高追求→把「重新定义数据库」圈为重点 - 矩阵起源 | Matrix Origin
MatrixCube揭秘102——300行实现的完整分布式存储系统MatrixKV - 矩阵起源 | Matrix Origin
Push还是Pull,这是个问题么? - 矩阵起源 | Matrix Origin
茴字有四种写法,HTAP呢? - 矩阵起源 | Matrix Origin
核心特性
超融合引擎
超融合引擎
融合数据引擎,单数据库即可支持TP、AP、时序、机器学习等混合工作负载。
内置流引擎
利用独有的增量物化视图能力,无需跨数据库即可实现实时数据流处理。
异构云原生
异构统一
支持跨机房协同/多地协同/云边协同,实现无感知扩缩容,提供高效统一的数据管理。
多地多活
MatrixOne采用最优的一致性协议,实现业内最短网络延迟的多地多活。
极致性能
高性能
特有的向量化执行引擎,支持极速的复杂查询。单表、星型和雪花查询都具备极速分析性能。
强一致
提供跨存储引擎的高性能全局分布式事务能力,在保证极速分析性能的同时支持更新、删除和实时点查询。
高可用
存算分离,支持存储节点与计算节点独立扩缩容,高效应对负载变化。
应用场景
数据一致性及高可靠、系统高可用、扩展性和容灾要求较高的金融行业
有高并发OLTP事务要求和极速OLAP分析要求的混合场景
HSTAP一体化场景
OLTP和数仓构建场景
. . . . . .
. . . . . .
用户价值
简化数据开发和运维
随着业务发展,企业使用的数据引擎和中间件越来越多,而每一个数据引擎平均依赖5+个基础组件,存储3+个数据副本,每一个数据引擎都要各自安装、监控、补丁和升级。这些都导致数据引擎的选型、开发及运维成本高昂且不可控。在MatrixOne的一体化架构下,用户使用单个数据库即可服务多种数据应用,引入的数据组件和技术栈减少80%,大大简化了数据库管理和维护的成本。
消减数据碎片和不一致
在既有复杂的系统架构内,存在多条数据管道多份数据存储冗余。数据依赖复杂,导致数据更新维护复杂,上下游数据不一致问题频发,人工校对难度增大。MatrixOne的高内聚架构和独有的增量物化视图能力,使得下游可以支持上游数据的实时更新,摆脱冗余的ETL流程,实现端到端实时数据处理。
无需绑定基础设施
因为基础设施的碎片化,企业的私有化数据集群和公有云数据集群之间数据架构和建设方案割裂,数据迁移成本高。而数据上云一旦选型确定数据库厂商,后续的集群扩容、其他组件采购等都将被既有厂商绑定。MatrixOne提供统一的云边基础架构和高效统一的数据管理,企业数据架构不再被基础设施绑定,实现单数据集群跨云无感知扩缩容,提升性价比。
极速的分析性能
目前,由于缓慢的复杂查询性能以及冗余的中间表,数据仓库在业务敏捷性上的表现不尽人意,大量宽表的创建也严重影响迭代速度。MatrixOne通过特有的因子化计算和向量化执行引擎,支持极速的复杂查询,单表、星型和雪花查询都具备极速分析性能。
像TP一样可靠的AP体验
传统数据仓库数据更新代价非常高,很难做到数据更新即可见。在营销风控,无人驾驶,智能工厂等实时计算要求高的场景或者上游数据变化快的场景中,当前的大数据分析系统无法支持增量更新,往往需要做全量的更新,耗时耗力。MatrixOne通过提供跨存储引擎的高性能全局分布式事务能力,支持条级别的实时增量更新,在保证极速分析性能的同时支持更新、删除和实时点查询。
不停服自动扩缩容
传统数仓无法兼顾性能和灵活度,性价比无法做到最优。MatrixOne基于存算分离的技术架构,支持存储节点与计算节点独立扩缩容,高效应对负载变化。
MatrixOne从入门到实践01——初识MatrixOne的更多相关文章
- MatrixOne从入门到实践03——部署MatrixOne
MatrixOne从入门到实践--部署MatrixOne 前两章节我们简单介绍了MatrixOne和源码编译了MatrixOne.本章节将使用不同的部署方式,来部署MatrixOne的服务. 注意:不 ...
- MatrixOne从入门到实践02——源码编译
MatrixOne从入门到实践--源码编译 在部署MatrixOne前,我们可能会比较纠结使用哪个版本合适,MatrixOne在github上有各个版本的Releases,包含源码包和适用于Lin ...
- MatrixOne从入门到实践08——SSB性能测试
MatrixOne从入门到实践--SSB性能测试 SSB 星型模式基准测试是 OLAP 数据库性能测试的常用场景,通过本篇教程,您可以了解到如何在 MatrixOne 中实现 SSB 测试. 测试环境 ...
- MatrixOne从入门到实战04——MatrixOne的连接和建表
MatrixOne从入门到实战--MatrixOne的连接和建表 前景回顾 前几篇文章,为大家介绍了MatrixOne这个产品,以及编译.部署MatrixOne的服务. 直通车: MatrixOne从 ...
- 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
- 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
随机推荐
- linux学习之selinux安全处理
linux在默认情况下会开启selinux,如果软件开放的端口不是selinux默认的协议端口会导致防火墙端口开放后还是无法访问.以下是解决办法. [root@localhost ~]# semana ...
- SingleSphere类定义
针对于单个球体的碰撞,其实和多个球体一样的,只是我修改了书上的代码,定义了这么多类,终于到头了.马上就要展示奇迹的时候了. 类定义: #pragma once #ifndef __SINGLESPHE ...
- DolphinScheduler 线上 Meetup 视频回放(07.25)
上周六下午 DolphinScheduler 社区联合 Doris 社区进行了 2020 年首次线上 Meetup,各位讲师都做了非常精彩的分享,也吸引了 1900 多位技术伙伴观看. 其中 Dolp ...
- Linux 10 安装JDK
参考源 https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0 版本 本文章基于 CentOS 7.6 这里使用 rpm ...
- Canvas 非线性图形(一):文本
基础 画布除了绘制图形以外还可以绘制文本,画布中的文本可以设置字体大小.字体格式.对齐方式(横向和纵向对齐方式),并且还可以制作很炫酷的文本,比如渐变文字. 文本有以下三个属性,控制文本的字体大小.字 ...
- laravel框架中验证后在页面提示错误信息
{{-- 显示错误信息 判断:如果有错误则进行显示,--}} {{-- 通过$errors->any() 获取是否有错误,如果有则返回布尔值true,没有返回布尔值false--}} @if($ ...
- python自学笔记10:while循环和for循环
条件控制和循环控制是两种典型的流程控制方法,前面我们写了 if 条件控制,这节讲 for 循环和 while 循环. 循环是另一种控制流程的方式,一个循环体中的代码在程序中只需要编写一次,但可能会连续 ...
- 2.窗口部件-对话框QDialog
1.模态和非模态 看代码 widget.cpp #include "widget.h" #include "ui_widget.h" #include<Q ...
- 第六十七篇:Vue的计算属性
好家伙, 1.什么是计算属性? 首先它是一种属性,其次他有计算这个特殊的性质, 它是一个依赖于其他属性的属性,当依赖的属性发生变化的时候就会触发我们计算属性的逻辑 它会对这个属性进行计算, 所以说它是 ...
- 第十一篇:vue.js监听属性(大作业进行时)
这个知识点急着用所以就跳过<计算属性>先学了 首先理解一下什么是监听:对事件进行监控,也就是当我进行操作(按了按钮之类的事件)时,会有相应的事情发生 上代码 <div id = &q ...