内存表的实现方法、存储器和分布式数据库的数据节点与流程

文档序号:19947098发布日期:2020-02-18 09:37阅读:184来源:国知局
内存表的实现方法、存储器和分布式数据库的数据节点与流程

本申请涉及分布式数据库技术领域,特别是涉及一种内存表的实现方法、存储器和分布式数据库的数据节点。



背景技术:

在分布式数据库的每个独立的数据节点,目前对内存表的实现主要有两个方案,其一是使用基于ramfs文件系统的内存表方案,其二是基于pgfincore组件的内存表方案。

其中ramfs文件系统不能控制实际的数据容量大小,如果数据写入过多,会导致操作系统内存不足而崩溃。而pgfincore组件在有大批量的数据修改或更新时,将导致需回写的脏数据块很多,进而造成脏数据块回写到磁盘中需要更多的耗时,致使pgfincore组件在大批量的数据删除和更新操作时数据的查询效率不高。

临时文件系统(temporaryfilestorage,tmpfs)同样是基于内存的文件系统,其不具有上述缺点,且能够在内存中快速完成数据的读取、写入、更新、删除等操作,但其建立在易失性的内存中,在断电、系统重启或故障后内存表的数据会丢失,使得该内存中的数据的安全性不高。



技术实现要素:

本申请主要提供一种内存表的实现方法、存储器和分布式数据库的数据节点,以解决临时文件系统在断电、系统重启或故障后内存表的数据会丢失、安全性不高的问题。

为解决上述技术问题,本申请采用的一个技术方案是:提供一种内存表的实现方法。该内存表的实现方法包括:在tmpfs空间内建立内存表;在物理备份空间内建立物理表;将内存表内的数据同步到物理表。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种存储器。该存储器存储有程序,程序被执行时能够实现如上述的方法。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种分布式数据库的数据节点。该数据节点包括处理器和存储器,处理器耦接存储器,存储器用于存储程序,处理器用于执行程序以实现如上述的方法。

本申请的有益效果是:区别于现有技术的情况,本申请公开了一种内存表的实现方法、存储器和分布式数据库的数据节点。通过在物理备份空间内建立与内存表对应的物理表,并将内存表内的数据同步到物理表,进而本申请能够将临时文件系统中内存表的数据同步备份到物理表中,避免重启或故障时tmpfs空间内的内存表的数据丢失而难以找回,从而保障内存表中数据的安全,提高了数据的安全性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,其中:

图1是本申请提供的内存表的实现方法一实施例的流程示意图;

图2是图1所示方法流程中s11之前进一步包括的流程示意图;

图3是图图1所示方法流程中s13之后进一步包括的流程示意图;

图4是本申请提供的存储器一实施例的结构示意图;

图5是本申请提供的分布式数据库的数据节点一实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

参阅图1,图1是本申请提供的一种内存表的实现方法一实施例的流程示意图。该内存表的实现方法包括:

s11:在tmpfs空间内建立内存表。

临时文件系统(temporaryfilestorage,tmpfs)是一种基于内存的文件系统。tmpfs空间设置于内存中,在tmpfs空间内建立内存表,进而通过对内存表的操作实现对所关联数据的读取、写入、更新和删除等操作。

在tmpfs空间内建立内存表之前,进一步包括:

s101:根据可用内存的大小分配tmpfs空间的实际内存容量。

本实施例中,将磁盘的部分存储空间划分为虚拟内存,该虚拟内存作为设置tmpfs空间的可用内存。例如,将可用内存的三分之一的大小分配作为tmpfs空间的实际内存容量;或者,将可用内存的四分之一或二份之一的大小分配作为tmpfs空间的实际内存容量。本申请对此不作限制,可根据tmpfs空间的实际内存容量需求进行分配。

具体地,本实施例中磁盘划分有tmpfs空间、物理备份空间和冷数据空间,其中tmpfs空间为易失性存储空间,易失性存储空间在重启或系统故障时其内的数据会丢失,物理备份空间和冷数据空间为非易失性存储空间,非易失性存储空间在重启或系统故障时其内的数据不会丢失。

在其他实施方式中,还可采用物理内存作为设置tmpfs空间的可用内存,本申请对此不作限制。

s102:挂载tmpfs目录至tmpfs空间,并根据tmpfs空间的实际内存容量设置tmpfs目录的大小。

挂载tmpfs目录至tmpfs空间,即临时文件系统将挂载tmpfs目录与tmpfs空间进行挂载,以便于对存储于tmpfs空间内的数据进行处理。

根据tmpfs空间的实际内存容量设置tmpfs目录的大小,换言之,通过tmpfs目录所设置的大小去限定每一内存表的内存容量,以限制内存表的实际数据量,避免内存表内数据写入过多致使内存不足导致系统崩溃。

s103:为tmpfs目录进行权限设置。

为tmpfs目录进行权限设置,该权限包括对数据的读取、写入、更新和删除等操作。

在tmpfs空间内建立内存表之后,还将tmpfs目录指向内存表。内存表的表结构内存有各数据的存储位置,各数据存储于tmpfs空间内,tmpfs目录通过对内存表的权限操作,以实现对各数据的读取、写入、更新和删除等。

s12:在物理备份空间内建立物理表。

物理备份空间为非易失性存储空间,物理备份空间在重启或系统故障时其内的数据不会丢失。物理表的表结构大致上与内存表的表结构相同,以便于后续内存表与物理表的数据同步。

s13:将内存表内的数据同步到物理表。

将内存表内的数据同步到物理表,以避免重启或故障时tmpfs空间内的内存表的数据丢失而难以找回,从而保障内存表内的数据的安全。

具体地,在内存表与物理表之间建立数据同步机制,例如采用开源数据库postgresql的数据同步技术把内存表的数据实时同步到位于物理备份空间的物理表,进而保障内存表数据的安全。

本实施例中,采用发布订阅机制来实现内存表到物理表的数据实时同步。其中,内存表中有新增数据时,内存表作为数据发布的发布方实时发送新增的数据,物理表开启订阅模式作为接受方实时接收发布方发送的数据,并对物理表中的数据进行实时更新,从而实现数据实时同步。

进一步地,在系统重启或系统故障修复后,还将物理表中的数据还原到内存表,以保障临时文件系统的可用性,避免用于内存表内的数据丢失而使得临时文件系统不可用。

具体地,在系统重启或系统故障修复后,依据物理表重建tmpfs空间内的内存表的表结构和数据,并采用多并发线程的方式将物理表中的数据还原到内存表,以现实内存表数据的快速恢复,保障临时文件系统随系统重启或故障修复后的实时可用。

考虑到tmpfs空间是有限的,如果空间内的数据占用量超过最大上限,则新的数据将不能继续写入,并将导致系统提示报错的信息。因次,进一步建立对tmpfs空间内的数据占用量检测机制。

具体地,采用以下方式来实现对tmpfs空间内的数据占用量进行监测。

s14:确认tmpfs空间内的数据占用量是否达到预设容量阈值。

设置tmpfs空间内数据占用量的预设容量阈值,例如该预设容量阈值为tmpfs空间的数据占用量最大上限的85%,本申请对预设容量阈值的具体设置数值不作限制。

确认tmpfs空间内的数据占用量是否达到预设容量阈值,若达到预设容量阈值,则执行步骤s15,以清理老化数据,使得tmpfs空间内的数据占用量小于预设容量阈值。

s15:若达到预设容量阈值,则按存入时间从先到后剔除tmpfs空间内的数据,直至数据占用量小于预设容量阈值。

存入到tmpfs空间内的数据的命名上均带有时间戳,进而据此可判断各数据按时间存入的先后顺序。在tmpfs空间内的数据占用量达到预设容量阈值时,则按数据的存入时间从先到后剔除tmpfs空间内的数据,直至数据占用量小于预设容量阈值,以避免tmpfs空间内的数据写入过多,导致系统报错或因存储空间不足而崩溃。同时,物理表实时随内存表进行更新,以剔除物理备份空间内备份的相应数据。

具体地,按存入时间的从先到后将tmpfs空间内的数据转移到冷数据空间,以实现对tmpfs空间内数据的剔除。其中tmpfs空间为易失性存储空间,物理备份空间和冷数据空间为非易失性存储空间。

进一步地,若tmpfs空间内的数据占用量未达到预设容量阈值,则间隔设定时长后再次确认tmpfs空间内的数据占用容量是否达到预设容量阈值,从而实现对tmpfs空间内的数据的持续监测,以保证对tmpfs空间内的老化数据及时清理。

本申请通过在物理备份空间内建立与内存表对应的物理表,并将内存表内的数据同步到物理表,进而本申请能够将临时文件系统中内存表的数据同步备份到物理表中,避免重启或故障时tmpfs空间内的内存表的数据丢失而难以找回,从而保障内存表中数据的安全,提高了数据的安全性。

基于此,本申请还提供一种存储器20,请参阅图4,图4是本申请提供的存储器一实施例的结构示意图,该实施方式中,存储器20存储有程序21,程序21被执行时能够实现上述任一实施例的内存表实现方法。

其中,该程序21可以以软件产品的形式存储在上述存储器20中,包括若干指令用以使得一个设备或处理器执行本申请各个实施方式方法的全部或部分步骤。

存储器20是计算机存储器中用于存储某种不连续物理量的媒体。而前述的具有存储功能的存储器20包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序21代码的介质。

基于此,本申请还提供一种分布式数据库的数据节点30,请参阅图5,图5是本申请提供的分布式数据库的数据节点一实施例的结构示意图。该实施方式中,数据节点30包括处理器32和存储器31,处理器32耦接存储器31,存储器31用于存储程序,处理器32用于执行程序以实现上述任一实施例的内存表实现方法。

数据节点30可以是个人计算机或数据服务器等。处理器32还可以称为cpu(centralprocessingunit,中央处理单元)。处理器32可以是一种集成电路芯片,具有信号的处理能力。处理器32还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

在本申请所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。

以上所述仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1