System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 数据库集群的数据结构及其数据写入方法、数据读取方法技术_技高网

数据库集群的数据结构及其数据写入方法、数据读取方法技术

技术编号:40794609 阅读:6 留言:0更新日期:2024-03-28 19:23
本发明专利技术提供了一种数据库集群的数据结构、及其数据写入方法、数据读取方法,包括:索引节点,其包括主基础信息和多个分块地址指针;多个数据块,每个数据块包括多个块数据和一个块元数据,分块地址指针用于指向其对应的数据块,块元数据包括其所处数据块的数据块基础信息;主基础信息、多个数据块的所有数据块基础信息以及所有分块地址指针构成文件的元数据信息;数据块基础信息包括块数据内存储的具体数据的地址空间,地址空间用于数据库集群的输入输出操作,以减少对索引节点的频繁修改。本发明专利技术的数据库集群的数据结构可以对不同的数据块分别采用不同的锁,将索引节点从数据块操作中解放出来,降低锁冲突,以提升数据库的性能。

【技术实现步骤摘要】

本专利技术涉及数据库领域,特别是涉及一种数据库集群的数据结构及其数据写入方法、数据读取方法


技术介绍

1、集群文件系统多节点同时访问相同的文件,通过分布式锁解决一致性问题,分布式锁管理器(dlm,distribute lock manager)保持一致性的过程如图1所示。分布式锁的锁的单位是文件级,以文件为单位,文件加锁以后,只能由一个进程处理,其他进程想要获取该锁,需要当前进程释放后,才能获取锁并进行io处理(input/output,输入输出处理)。

2、文件级锁的问题在于锁的粒度太大,尤其在db场景,大文件可以达到1gb,文件级别锁颗粒度太大,会造成大量的锁冲突,减小锁的颗粒度是有效降低锁冲突的方法,块分布式锁管理器(bdlm,block-distributed lock manager)是降低颗粒度的有效方法。现有技术中通常的块级锁针对文件的每个块分别进行锁申请,让不同的块使用不同的锁,最大颗粒度的减小了冲突,如图2所示。

3、现有技术中的块级锁存在诸多问题。现有技术中的块级锁方案是一个相对理想化的方案,它还有很多问题没有解决,导致性能基本没有太大变化,主要问题包括每次对于块的访问都涉及更新元数据的操作,包括但不限于文件大小(size)、访问时间(atime)、更改时间(ctime)、地址信息等更新内容,也就是块的每次io访问都不能避免对文件索引节点(inode)的操作,而文件索引节点属于整个文件,所以相当于几乎所有块的所有操作都是要有文件级锁操作的,块级锁带来了更多的锁管理消耗的同时,也没有脱离文件级锁,因此方案基本没有性能提升,甚至会导致性能下降。想要真正实现提升性能的块级锁方案,核心点在于不同的块采用不同的锁,降低锁冲突的同时,将索引节点从块操作中解放出来,块的操作要不涉及索引节点操作,当多数的io操作都不需要索引节点更新时,才能真正达到块级锁的目的。


技术实现思路

1、本专利技术的一个目的是要提供一种能够解决上述任一技术问题的数据库集群的数据结构及其数据写入方法、数据读取方法。

2、本专利技术一个进一步的目的是要提升数据库性能。

3、特别地,本专利技术提供了一种数据库集群的数据结构,包括:

4、索引节点,其包括主基础信息和多个分块地址指针;

5、多个数据块,每个所述数据块包括多个块数据和一个块元数据,所述分块地址指针用于指向其对应的所述数据块,所述块元数据包括其所处数据块的数据块基础信息;

6、所述主基础信息、所述多个数据块的所有所述数据块基础信息以及所有所述分块地址指针构成文件的元数据信息;

7、所述数据块基础信息包括所述块数据内存储的具体数据的地址空间,所述地址空间用于所述数据库集群的输入输出操作,以减少所述数据库集群在进行输入输出操作时对所述索引节点的频繁修改。

8、进一步地,所述块元数据存储于其对应数据块的开始位置,所述分块地址指针为头指针,所述分块地址指针指向所述块元数据。

9、进一步地,所述数据块基础信息还包括所述数据块的最后更新位置、所述数据块的锁状态。

10、进一步地,所述文件的元数据信息中的文件大小属性变化单位设置为1-2m。

11、进一步地,所述块元数据的大小设置为8k。

12、进一步地,所述主基础信息包括文件内容修改时间、文件属性更改时间、文件访问时间。

13、进一步地,所述文件内容修改时间、所述文件属性更改时间以及所述文件访问时间被配置为根据所述文件大小变化进行更新。

14、进一步地,所述文件内容修改时间、所述文件属性更改时间以及所述文件访问时间被配置为按照预设时间更新。

15、本专利技术在另一方面,还提供一种基于上述任一种数据库集群的数据结构的数据读取方法,所述数据库集群包括第一节点与第二节点,该数据读取方法包括:

16、所述第一节点向数据库集群管理系统获取文件读锁;

17、在得到所述文件读锁后所述第一节点向所述数据库集群管理系统获取所述文件的第一数据块的块锁;

18、所述第一节点对所述第一数据块进行数据读取;

19、所述第二节点向数据库集群管理系统获取文件读锁;

20、在得到所述文件读锁后向所述数据库集群管理系统获取所述文件的第二数据块的块锁;

21、所述第二节点对所述第二数据块进行数据读取,以实现所述数据库集群不同节点针对同一文件的数据读取。

22、本专利技术在另一方面,还提供一种基于上述任一种的数据库集群的数据结构的数据写入方法,包括:

23、获取文件读锁;

24、得到所述文件读锁;

25、向所述共享存储发送请求读取所述索引节点;

26、得到所述索引节点;

27、判断所述索引节点是否存在目标数据块的首地址;

28、若否,则向所述共享存储申请文件写锁;

29、得到所述文件写锁;

30、创建所述目标数据块,并更新所述索引节点的所述目标数据块的首地址信息、数据时间信息、数据大小信息后释放写锁;

31、获取所述目标数据块的块锁;

32、得到所述目标数据块的块锁;

33、对所述目标数据块进行数据写入。

34、本专利技术的数据库集群的数据结构包括索引节点和多个数据块。索引节点包括主基础信息和多个分块地址指针。每个数据块包括多个块数据和一个块元数据。分块地址指针用于指向其对应的块元数据所在位置。块元数据包括其所处数据块的数据块基础信息。主基础信息、多个数据块的所有数据块基础信息以及分块地址指针构成文件的元数据信息。数据块基础信息包括块数据内存储的具体数据的地址空间。地址空间用于数据库集群的输入输出操作,以减少数据库集群进行输入输出操作对索引节点的频繁修改。本专利技术的数据库集群的数据结构可以对不同的数据块分别采用不同的锁,将索引节点从数据块操作中解放出来,降低锁冲突,以提升数据库的性能。

35、根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。

本文档来自技高网...

【技术保护点】

1.一种数据库集群的数据结构,包括:

2.根据权利要求1所述的数据库集群的数据结构,其中,所述块元数据存储于其对应数据块的开始位置,所述分块地址指针为头指针,所述分块地址指针指向所述块元数据。

3.根据权利要求1所述的数据库集群的数据结构,其中,所述数据块基础信息还包括所述数据块的最后更新位置、所述数据块的锁状态。

4.根据权利要求1所述的数据库集群的数据结构,其中,所述文件的元数据信息中的文件大小属性变化单位设置为1-2M。

5.根据权利要求3所述的数据库集群的数据结构,其中,所述块元数据的大小设置为8K。

6.根据权利要求3所述的数据库集群的数据结构,其中,所述主基础信息包括文件内容修改时间、文件属性更改时间、文件访问时间。

7.根据权利要求6所述的数据库集群的数据结构,其中,所述文件内容修改时间、所述文件属性更改时间以及所述文件访问时间被配置为根据所述文件大小变化进行更新。

8.根据权利要求6所述的数据库集群的数据结构,其中,所述文件内容修改时间、所述文件属性更改时间以及所述文件访问时间被配置为按照预设时间更新。

9.一种基于权利要求1-8中任一项所述的数据库集群的数据结构的数据读取方法,所述数据库集群包括第一节点与第二节点,该数据读取方法包括:

10.一种基于权利要求1-8中任一项所述的数据库集群的数据结构的数据写入方法,包括:

...

【技术特征摘要】

1.一种数据库集群的数据结构,包括:

2.根据权利要求1所述的数据库集群的数据结构,其中,所述块元数据存储于其对应数据块的开始位置,所述分块地址指针为头指针,所述分块地址指针指向所述块元数据。

3.根据权利要求1所述的数据库集群的数据结构,其中,所述数据块基础信息还包括所述数据块的最后更新位置、所述数据块的锁状态。

4.根据权利要求1所述的数据库集群的数据结构,其中,所述文件的元数据信息中的文件大小属性变化单位设置为1-2m。

5.根据权利要求3所述的数据库集群的数据结构,其中,所述块元数据的大小设置为8k。

6.根据权利要求3所述的数据库集群的数据结构,其中,所述...

【专利技术属性】
技术研发人员:单春鑫杨尚孙文奇
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1