MariaDB Xpand架构实现数据库保护

9 篇文章 0 订阅
5 篇文章 0 订阅
本文详细介绍了MariaDB Xpand的数据分布原理,包括表的表示形式、切片机制以及一致性哈希算法。Xpand通过为主键和其他索引创建不同表示并进行切片,确保数据分散在多个节点。每个切片有副本以提供冗余,当节点故障时,副本能保证数据不丢失。此外,一致哈希算法用于动态重新分配数据。
摘要由CSDN通过智能技术生成

MariaDB Xpand的数据分布以及实现数据库保护的原理

随着MariaDB Platform X5的发布,数据库供应商MariaDB公司为客户提供了分布式SQL数据库解决方案,将MariaDB的多功能性提升到另一个层次。在这里我们来谈一下MariaDB Enterprise Service提供的Xpand智能引擎的数据分布以及实现数据库保护的原理,下面将会结合一个例子来进行阐述。

首先我们先创建一张命名为test的表格,并建立两个索引。创建表格和索引的代码如下:

CREATE TABLE test (
   id BIGINT PRIMARY KEY,
   col1 INT,
   col2 INT,
   col3 VARCHAR(64),
   KEY k1 (col2),
   KEY k2 (col3, col1)
);

然后向test插入一些数据,代码如下:

INSERT INTO test
   (col1, col2, col3)
   VALUES
   (16, 36, "JANUARY"),
   (17, 35, "FEBRUARY"),
   (18, 34,  "MARCH"),
   (19, 33,  "APRIL"),
   (20, 32,  "MAY");

表格数据和索引如下图所示:
在这里插入图片描述

表示:

Xpand 将每个表划分为表中每个索引的表示形式。每个表示具有由与表示相关联的索引定义的不同分布键。主键产生基本表示,其中包含表中的所有列。其他索引产生其他表示,其中包含索引列。每个表示的切片包含不同的行。Xpand 对分布键进行哈希处理,从而确定行属于哪个切片。

test表由一个主键和两个二级索引组成,因此它具有三种表示形式:

  • 主键表示使用主键列作为分布键。此表示的切片包含所有表列。
  • k1表示使用col2列作为分布键。此表示的切片还包含主键列。
  • k2表示使用col3col1列作为分布键。此表示的切片还包含主键列。

切片:

Xpand 将每个表示水平划分为切片

  • 给定行的切片是通过对分布键应用上的一致哈希算法来确定的。

  • 每个表示都是独立切片的。

  • 同一个表的每个表示可以有不同数量的切片。

  • 默认情况下,每个表示从每个节点一个切片开始。但是,可以使用SLICEtable 选项配置表的初始切片数。

  • 如果切片太大,Xpand 会自动将切片分成多个切片。最大切片大小基于rebalancer_split_threshold_kb系统变量。默认情况下,最大大小为 8 GB。

我们的test表由三种表示形式组成,每种表示形式可以有不同数量的切片,为了方便阐述,就将三种表示都分为三个切片并且放在三个节点上

在这里插入图片描述

假设Node #1(节点1)故障,Xpand是怎么保存Node #1的数据的呢?这就要提到副本了。

副本:

Xpand 将切片作为副本写入磁盘。Xpand 维护每个切片的多个副本。

  • 在默认配置中,Xpand自动在磁盘上维护每个片的两个副本。但是,可以使用REPLICAStable选项或通过设置MAX_FAILURES将Xpand配置为维护更多副本。

  • 给定切片的每个副本都存储在不同的节点上。

  • 副本分布在节点之间以实现冗余并平衡读取、写入和磁盘使用。

  • Xpand 可以使新副本联机,而无需暂停或阻止对切片的写入。

在这里插入图片描述

在上图中我们可以看到在Node #2存储有Node #1 Slice 1切片的副本,而Node #3存储有Node #2 Slice 2切片的副本,并以此类推。根据上述副本的描述默认情况下,Xpand会自动在磁盘上维护每个片的两个副本。但是我们可以根据实际情况的需要使用REPLICAS table选项或者通过设置MAX_FAILURES将Xpand配置为维护更多副本。这里为了讲解方便就以一个副本为例。这样当Node #1发生故障后,因为在Node #2有Node #1 Slice 1切片的副本,从而保证了Slice 1切片上的数据不会丢失。对于Node #1 上的其他切片也是如此,这里就不再赘述了。

一致哈希算法:

Xpand 使用一致的散列进行数据分发。一致的散列允许 Xpand 动态地重新分配数据,而无需重新散列整个数据集。

Xpand 将每个分发密钥散列为 64 位数字。然后将空间划分为多个范围。每个范围都归一个特定的切片所有。下表说明了一致性哈希如何将特定键分配给特定切片。

哈希范围关键值
1最小-100A,D,G
2101-200B,E
3201-最大C,F,H

最后:

有关Xpand智能引擎的数据分布以及实现数据库保护的原理的讲述就到这里了,鉴于本人技术有限如若有错,欢迎评论区留言沟通交流~

想要了解更多有关MariaDB Xpand的内容可以到MariaDB官网查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值