暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oushudb-Magma

原创 宗恩 2023-02-03
535


Magma是什么?Magma它是存储,它是分布式的,高可用的,支持事务的。尽管OushuDB的数据可以存储在HDFS,但HDFS只支持以追加的方式写入,对表数据的更新和删除操作很不友好,因此我们开发了Magma。


接下了解下Magma的主要功能。


作为存储,Magma存储的数据是表数据,是结构化数据,不是简单的KV。


Magma支持对表数据做更新和删除操作。


它的高可用是通过Raft的协议数据复制来实现的。


它的事务特性是通过多版本来实现的。


它的高性能的是通过行列混合的存储格式来支持OLAP高性能查询。


它提供了数据索引功能,可以建立主键索引和非主键索引。


作为分布式的存储,它整合数据预处理技术,提供了便捷的集群扩展、集群容错以及负载均衡。


总结Magma的功能,主要包括数据分布、数据清理、事务模型、索引、数据副本、负载均衡。


我们看一下Magma在OushuDB架构的位置。


OushuDB由master和多个segment组成,master负责对SQL进行解析,优化生成查询计划。通过Dispatcher分发到每个segment。每个segment执行计划的过程中就涉及到对数据的存储和读取。


Magma通过直接操作本地文件系统,实现了支持表数据的更新和删除操作。

作为分布式存储,Magma在集群的每个节点上启动Magma的进程。整个集群中的多个Magma进程组成了Magma集群。


Magma具体是怎么存储数据的呢?


通过示意图,我们可以看到三个节点,每个数据目录下面有若干RG,也就是range group。黄色的RG1的Leader副本在节点1,另外两个Follower副本在节点2和节点3;类似的,绿色的RG3的Leader副本在节点3,另外两个Follower副本在节点1和节点2。


我们可以发现,每个节点都有一个range group leader在对外提供服务,这样最大化利用了每个节点,提升了集群的整体利用率。


每个range group包含了多个range,都以表存储。每个range group的数据包含了不同部分:数据缓冲、数据文件、统计数据、索引文件、删除数据。


再来看下Stable data file是什么样的结构。从图中可以看出它是由多个block组成的文件,block之间以行进行切分,block内部按照列存的形式存储Column 1、Column 2、Column N,每个Column内部又分为Page 1、Page 2、Page N。所以整体来看是行列混合的存储模式。


接下来介绍下Magma在磁盘上的数据结构。


以单个节点为例,每个节点有多个数据目录,每个数据目录下又有多个RG目录,每个RG目录分为AP数据目录、索引目录、raft日志目录,数据目录下根据Table进行划分,每个Table目录下是Range目录,Range下面是数据文件、统计数据、索引文件、删除数据。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论