背景技术
随着科技的发展,越来越多公司依赖架设多个数据库执行公司的业务或管理,而这些数据库之间彼此互相关联并互相传送数据,以维持数据库的一致性。然数据库一旦发生电力中断、病毒入侵等足以使数据遭受不可回复的损害的情况,往往造成公司内部数据混乱或遗失,对整个公司的运作造成严重的影响,故数据库的备份对于企业来说是相当重要的。
维持营运的数据库相当庞大,故数据库的备份往往必须在一固定时间进行备份,且企业的多个数据库常因业务重叠等原因造成数据大量重复,所以备份时,庞大的数据量会占用大量的硬件空间,提高备份的成本。
为了节省数据备份时所占用的大量硬盘空间,业界随后发展出一种数据重复删除系统(Deduplication System),此种方法可把文件分割成多个数据块,经过一对比的程序后,若是数据块与目前已备份的数据块有重复的情况,系统就只储存一指针指向该备份过的文件。通过这样的方式,备份时可以节省数据重叠所造成的资源浪费,舒缓数据备份时对硬盘的大量需求。
然而,这种数据重复删除系统的处理过程中,若是有其中一数据块的数据需要变动,其它指向此数据块的指针和内容也跟着需要变动,故此种方法会增加中央处理器和记忆体的处理量,也造成数据备份的时间相对增长。所以,本领域亟需一种当数据重复删除系统执行时,可以降低中央处理器和记忆体的处理量并加快备份速度的方法。
附图说明
图1为依据本发明内容第一实施例的硬件结构示意图;
图2为图1的数据流向图;
图3为图1的流程图;
图4为图1的细部流程图;
图5为图4步骤S620的流程图;
图6为依据本发明内容第二实施例的流程图;
图7为依据本发明内容第三实施例的流程图;
图8为依据本发明内容第四实施例的流程图。
其中,附图标记
10、10a、10b、10c 客户端
12 中央处理器
14 记忆体
15 硬盘
16 硬盘高速缓存
18、18a 数据块
20 服务端
22 中央处理器
24 记忆体
25、25a、25b、25c 高速缓存
26 硬盘
27、27a 暂存数据块
28 主高速缓存
29 储存数据块
30 空白储存数据块
S100 设置旗标
S150 接收客户端的备份数据元请求
S200 读取数据元的指纹值
S300 判断指纹值是否与对应数据元的暂存指纹值一致
S310 计算数据元的哈希值
S320 读取哈希值对应的暂存数据块中的暂存指纹值
S330 判断指纹值与暂存指纹值是否相等
S400 写入数据元及指纹值于对应的暂存数据块中
S500 判断旗标是否为真值
S600 把数据元及指纹值写入主高速缓存中并重置旗标
S610 判断已写入暂存数据块中的指纹值是否与主高速缓存中对应暂存数据块的储存指纹值一致
S620 写入暂存数据块中的数据元与指纹值至储存数据块中并重置旗标
S622 判断储存数据块的引用计数器是否大于1
S624 复制移动储存数据块的数据元及指纹值至空白储存数据块
S626 移动非属暂存数据块的指针至空白储存数据块
S628 覆盖写入数据元及指纹值至储存数据块中并重置旗标
S700 设置计数器
S710 累加计数器的值
S720 判断计数器的值是否大于或等于预设值
S730 设定旗标为真值
S740 重置计数器
S800 设置定时器
S820 判断定时器的值是否大于或等于预设值
S830 设定旗标为真值
S840 重置定时器
S930 设定旗标为真值
具体实施方式
以下在实施方式中明确且充分叙述本发明内容的详细特征以及优点,其内容足以使任何本发明内容所属技术领域中具有通常知识者了解本发明内容的技术内容并据以实施,且根据本说明书所揭示的内容、权利要求范围及附图,本发明内容所属技术领域中具有通常知识者可轻易地理解本发明内容相关的目的及优点。
本发明内容为一种事务型系统的处理方法,请参阅图1,图1为依据本发明内容一实施例的硬件结构示意图。本实施例的一客户端10与一服务端20相连,数据是由客户端10传送至服务端20。客户端10内部具有一中央处理器12、一记忆体14、一硬盘15以及一硬盘高速缓存16。数据在做备份时,是读取硬盘15内的数据再通过中央处理器12以及记忆体14把数据分成多块数据,并放置于数据块18。而数据块18则是放置在硬盘高速缓存16中。
如图1所示,服务端20是由一中央处理器22、一记忆体24、一硬盘26、一高速缓存25以及一主高速缓存28所组成。在服务端20中,是由中央处理器22以及记忆体24去控制数据的接收以及分配。接收到的数据会先被写在对应于客户端10的高速缓存25的暂存数据块27里,经过整合后,一起写入主高速缓存28中,待整份数据接收完成后,再把数据写入硬盘26里。
详细数据写入的方法可参照图2,图2为图1的数据流向图。从图2中可得知本发明内容可用来处理多个客户端10a、10b、10c并接收至少一个数据块18,且每一个客户端10a、10b、10c均分别有可与客户端10a、10b、10c对应的高速缓存25a、25b、25c。当欲接收第一客户端10a的数据块18a时,服务端20会先找到对应于第一客户端10a的第一高速缓存25a,再把数据块18a写入对应于数据块18a的暂存数据块27a中。如图所示,高速缓存25a、25b、25c在接收了客户端10a、10b、10c的数据块18后,经过整合后,会把高速缓存25a、25b、25c一起写入主高速缓存28中。
再如图3所示,图3为图1的实施细部流程图。首先,服务端20会设置旗标S100,此旗标是服务端20用来判断是否须把高速缓存25的内容写入主高速缓存28中。当服务端20接收到客户端10发出的备份数据元请求S150后,服务端20会先读取数据元的指纹值(Fingerprinting)S200,服务端20并判断指纹值是否与对应数据元的暂存指纹值一致S300。此暂存指纹值位于高速缓存25的一暂存数据块27里,也就是原本就存在于高速缓存25中并经备份过的指纹值。由于数据元的指纹值与人类的指纹特性相似,不同数据元均有不一样的指纹值,故我们可以由指纹值判断两者数据元是否一致,若两者数据元为一致,服务端20即不需再重复写入此数据元。若服务端20判断指纹值与暂存指纹值不一致,服务端20会写入数据元及指纹值于对应的暂存数据块27中S400。在本发明内容中,判断指纹值是否与对应数据元的暂存指纹值一致S300是使用布隆过滤器判断这些指纹值是否已存在于暂存指纹值的集合中。
本方法是可用于接收多个客户端10a、10b、10c至少一个数据元,也可以接收多个数据元,上述服务端20接收由客户端10备份数据元的请求的步骤S100到S400可依据接收的数据元的数量而重复执行。
执行上述步骤S100到S400后,服务端20会先判断旗标是否为真值S500。因旗标是服务端20用来判断是否须把高速缓存25的内容写入主高速缓存28中,故当旗标为真值时,服务端20会把数据元及指纹值写入主高速缓存28中并重置旗标S600。重置旗标是为了使服务端20可以重新判断下一次把高速缓存25写入主高速缓存28的时点。
为了让阅读者更清楚了解本发明内容,我们可以把判断指纹值是否与对应数据元的暂存指纹值一致S300的步骤用更细部的说明。请参考图4,图4为图1的方法细部流程图。为了要判断指纹值是否与对应数据元的暂存指纹值一致S300,达到可删除重复数据的目的,故服务端20须先计算数据元的哈希值(Hash,赫序值)S310。哈希值是用来表示数据元所存放的位置,故得知数据元的哈希值后,可以得到此数据元存放于高速缓存25中的位置,而数据元的哈希值可以由指纹值计算得知。
服务端20得知了数据元的哈希值后,接着便可读取哈希值对应的暂存数据块27中的暂存指纹值S320。若哈希值对应的暂存数据块27中不具暂存指纹值时,服务端20可以直接写入对应该哈希值的数据元及指纹值于该暂存数据块27中。有了数据元的指纹值以及对应的暂存指纹值后,服务端20即可判断指纹值与暂存指纹值是否相等S330。
再如图4所示,把数据元及指纹值写入主高速缓存28中并重置旗标S600的步骤可再细分为判断已写入暂存数据块27中的指纹值是否与主高速缓存28中对应的暂存数据块27的储存指纹值一致S610以及写入暂存数据块27中的数据元与指纹值至储存数据块29中S620。每一个存入暂存数据块27的指纹值会分别对应到主高速缓存28中的储存指纹值,与上述指纹值与暂存指纹值的对比一样,若存入暂存数据块27的指纹值与主高速缓存28中的储存指纹值相同,服务端20即不需重新存入对应的暂存数据元。但若存入暂存数据块27的指纹值与主高速缓存28中的储存指纹值不相同,即代表暂存数据块27的数据元与主高速缓存28中储存的数据元不同,此时,服务端20就必须写入暂存数据块27中的数据元与指纹值至储存数据块29中S620。
如图5所示,图5为图4步骤S620的流程图。步骤服务端20写入暂存数据块27中的数据元与指纹值至储存数据块29中S620时,服务端20会先判断储存数据块29的引用计数器是否大于1S622。此引用计数器是用来计算目前有几个暂存数据块27的指针指向此储存数据块29。当客户端10数据元变更时,因其它客户端10的数据元未必会变更,故当服务端20欲把修正后的数据元及指纹值写入储存数据块29中时,必须要考虑到是否有其它的暂存数据块27也同时指向此储存数据块29。若是有其它的暂存数据块27也指向储存数据块29,此时,服务端20需先复制移动储存数据块29的数据元及指纹值至另一空白储存数据块30S624,以保有其它暂存数据块27原有的数据。此空白储存数据块30即为空白的储存数据块29。复制移动储存数据块29的数据元及指纹值后,还须先移动非属暂存数据块27的指针至空白储存数据块30S626,此空白储存数据块30与复制移动储存数据块29的数据元及指纹值至空白储存数据块30S624中的空白储存数据块30相同,在经由上述步骤复制移动储存数据块29的数据元及指纹值至空白储存数据块30S624后,此空白储存数据块30的内容即成为储存数据块29的数据。而步骤移动其它非属暂存数据块27的一指针至空白储存数据块30S626即为把其它未修正的暂存数据块27以及指向原本储存数据块29的指针都移至一个新的储存数据块29。这样一来,主高速缓存28于其它暂存数据块27保有原本的数据后,服务端20便可覆盖写入数据元及指纹值至储存数据块29中并重置旗标S628。
参照图6,图6为依据本发明内容第二实施例的流程图。在本发明内容的第二实施例中,服务端20会先重设一计数器S700,此计数器是用来计算服务端20把接收的数据元写入高速缓存25的次数。每当服务端20写入数据元及指纹值于对应的暂存数据块27中S400后,服务端20会自动累加计数器的值S710。接着服务端20会判断计数器的值是否大于或等于一默认值S720,当计数器的值大于或等于一默认值时,服务端20会把旗标设定为真值S730。此默认值为服务端20设定的数目,可以为5次、10次等实体数字,此设定值的数字可为任何数字,不被本实施方式所发明的内容限制。
再参照图7,图7为依据本发明内容第三实施例的流程图。在本发明内容的第三实施例中,服务端20会先重设一定时器S800,此定时器会计算经过了多久时间。在写入数据元及指纹值于对应的暂存数据块27中S400的步骤后,服务端20会判断定时器的值是否大于或等于一默认值S820,当计数器的值大于或等于一默认值时,服务端20会把旗标设定为真值S830。此默认值为服务端20设定的时间长度,可以为5秒、10秒等时间长度,此设定值的时间长度可为任何数字,不被本实施方式所发明的内容限制。
再参照图8,图8为依据本发明内容第四实施例的流程图。在写入数据元及指纹值于对应的暂存数据块27中S400的步骤后,服务端20会直接设定旗标为真值S930,也就是只要有一个暂存数据元被更改旗标就会设为真值。所以即使仅有一个暂存数据元被更改,服务端20于判断旗标是否为真值S500后即会执行把数据元及指纹值写入一主高速缓存28中并重置旗标S600。而上述的第二实施例、第三实施例及第四实施例也可以同时使用,也就是同时使用计数器、定时器及旗标判断暂存数据元是否被更改。
综上所述,本发明内容提供了一种事务型系统处理的方法,此方法可以在数据重复删除系统中提供一种降低中央处理器以及记忆体处理量的方法,不仅可舒缓备份时所需的大量空间需求,并大幅降低备份的速度及成本。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。