分布式数据库的数据分片、复制和分配技术

dbmsfragmentationdatabase更新于 2026/1/28 3:37:17

数据分片

将数据库划分为多个较小的部分或子表的过程称为分片。这些较小的部分或子表称为碎片,存储在不同的位置。数据分片应以能够从碎片重建原始父数据库的方式进行。恢复可以使用 UNION 或 JOIN 操作完成。

数据库分片分为三种类型:水平分片、垂直分片以及混合分片。

水平分片

它将表水平划分为一组行,以创建表的多个碎片或子集。然后,这些碎片可以分配到数据库中的不同位置。重建使用 UNION 或 JOIN 操作完成。在关系代数中,它表示为任意给定表 (T) 的 σp(T)。

示例

在此示例中,我们将了解表中的水平碎片化情况。

输入:

STUDENT

id	  name	   age	  salary
1	  aman	   21	  20000
2	  naman	   22	  25000
3	  raman	   23	  35000
4	  sonam	   24	  36000

示例

SELECT * FROM student WHERE salary<35000;
SELECT * FROM student WHERE salary>35000;

输出

id	name	age	salary
1	aman	21	20000
2	naman	22	25000
id	name	age	salary
4	soman	24	36000

水平碎片化有三种类型:主水平碎片化、派生水平碎片化和完全水平碎片化

A:主水平碎片化:它是使用一组条件按行方式对单个表进行分段的过程。

示例

此示例展示了如何将 Select 语句与条件结合使用以提供输出。

SELECT * FROM student SALARY<30000;

输出

id	name	age	salary
1	aman	21	20000
2	naman	22	25000

B:派生水平碎片:从主关系派生的碎片。

示例

此示例展示了如何将 Select 语句与 where 子句结合使用以提供输出。

SELECT * FROM student WHERE age=21 AND salary<30000; 

输出

id	name	age	  salary
1	aman	21	  20000

C:完全水平分片:它会派生一组水平分片,使表至少有一个分区。

垂直分片

它会将表垂直划分为一组列,以创建表的多个分片或子集。然后,这些分片可以分配到数据库中的不同位置。重建操作使用完全外连接操作完成。

示例

此示例展示了如何使用 Select 语句进行分片并提供输出。

输入表:

STUDENT

id	name	age	salary
1	aman	21	20000
2	naman	22	25000
3	raman	23	35000
4	sonam	24	36000

示例

SELECT * FROM name;#fragmentation 1
SELECT * FROM id, age;#fragmentation 2

输出

name
aman
naman
raman
sonam
age
21
22
23
24

混合分片

混合分片是通过同时执行水平和垂直分区来实现的。它是一组相互关联的行和列。

示例

此示例展示了如何将 Select 语句与 where 子句结合使用来提供输出。

SELECT * FROM name WHERE age=22;

输出

name     age
naman	 22

数据复制

数据复制是指创建副本,即将数据复制到多个位置以提高数据可用性。它用于消除相同数据之间的不一致性,从而实现分布式数据库,以便用户在不干扰其他用户工作的情况下完成任务。

数据复制的类型:

事务复制

它会创建数据库的完整副本以及更改的数据。事务一致性的保证是因为数据从发布数据库复制到订阅数据库时顺序相同。它用于服务器到服务器环境,通过一致且准确地复制数据库中的更改。

快照复制

它是最简单的类型,无论数据是否更新,它都会按照特定时刻的数据准确分发。它复制数据的"快照"。当数据库不频繁更改时,它非常有用。事务复制速度较慢,因为数据是从一端批量发送到另一端的。它通常用于订阅者不需要更新数据且以只读模式运行的情况。

合并复制

它将来自多个数据库的数据合并到一个数据库中。它是最复杂的复制类型,因为发布者和订阅者都可以进行数据库更改。它用于服务器到客户端的环境,并将更改从一个发布者发送到多个订阅者。

数据分配

这是一个决定在数据库中存储数据的确切位置的过程。还涉及决定哪种数据类型必须存储在哪个特定位置。数据分配主要有三种类型:集中式、分区式和复制式。

集中式:整个数据库存储在单个站点。数据不分布

分区:数据库被分成不同的碎片,存储在多个站点。

复制:数据库的副本存储在不同的位置以便访问数据。

结论

本文由三部分组成。第一部分是数据碎片,即将数据分成多个子表并存储在不同的位置。数据碎片的类型包括水平碎片,即将表水平划分为行组;垂直碎片,即将表垂直划分为列组;最后一种是混合碎片,即将水平和垂直分区结合起来。第二部分是数据复制,即将数据复制到多个位置。复制的类型包括事务复制,它会对数据库进行完整复制以及发生的更改;其次是快照复制,它会复制要分发的数据快照;最后一种是合并复制,它会将数据合并到单个数据库中。第三部分是数据分配,它会告诉我们在哪里存储数据。