基于人工智能的数据库扩展方法及相关设备与流程

文档序号:31043614发布日期:2022-08-06 04:53阅读:71来源:国知局
基于人工智能的数据库扩展方法及相关设备与流程

1.本技术涉及人工智能技术领域,尤其涉及一种基于人工智能的数据库扩展方法、装置、电子设备及存储介质。


背景技术:

2.随着信息科技的飞速发展,视频监控、物联网等领域对于海量数据的监测和存储的需求也与日俱增。目前各行各业通常使用时间序列数据库存储和处理具备时间标签的数据,为了保障时间序列数据库的可用性与安全性,通常会对具备时间标签的数据创建副本以提升时间序列数据库的容灾能力。
3.由于时间序列数据库会随着时间的推移不断地进行读写数据的操作,因此目前通常通过停机维护的方式扩展时序数据的副本,这种方法在数据量庞大的情况下耗时较高,且会对原始数据库产生较大的读写压力,从而降低时序数据库的性能。


技术实现要素:

4.鉴于以上内容,有必要提供一种基于人工智能的数据库扩展方法及相关设备,以解决如何提高数据库扩展的效率这一技术问题,其中,相关设备包括基于人工智能的数据库扩展装置、电子设备及存储介质。
5.本技术实施例提供一种基于人工智能的数据库扩展方法,所述方法包括:
6.记录数据库扩展的开始时刻,并依据原始数据库的默认时区对开始时刻进行校准获得校准后时刻;
7.读取所述原始数据库的归档策略以获取每个数据块的归档进度,所述原始数据库包含多个数据块,将每个数据块存储数据的时间范围作为第一时间范围,所述归档策略用以定义每个数据块进行归档操作的第二时间范围,所述归档进度用以表征数据块当前是否正在进行归档操作;
8.依据所述校准后时刻与所述归档进度对所述数据块进行二分类获得离线数据块和在线数据块;
9.将所述离线数据块迁移至预设的副本数据库并记录迁移完成时刻;
10.在所述离线数据块迁移完成之后,查询所述在线数据块存储数据的时间范围,并按照所述时间范围由早至晚的顺序依次将所述在线数据块写入所述副本数据库。
11.上述基于人工智能的数据库扩展方法通过原始数据库的默认时区修正了副本扩展开始的时刻以获取校准后时刻,并读取原始数据库的归档策略获取了原始数据库中每个数据块的归档进度,进而依据校准后时刻和归档进度对数据块进行二分类获得了离线数据块和在线数据块,并将离线数据块直接迁移至副本数据库,按照在线数据块存储数据的时间范围由早至晚的顺序依次将在线数据块写入副本数据库以完成了数据库扩展,能够不停止时序数据库的运行即可扩展时序副本,从而提升了副本扩展的效率。
12.在一些实施例中,所述记录数据库扩展的开始时刻,并依据原始数据库的默认时
区对开始时刻进行校准获得校准后时刻包括:
13.实时获取原始数据库的资源占用率,若所述资源占用率小于预设的第一阈值则开始扩展时序副本并记录开始时刻;
14.依据当前时区与所述原始数据库默认时区的时间差修正所述开始时刻获得校准后时刻。
15.如此,通过计算当前时区与原始数据库中默认时区的时间差修正了当前时刻进而获得了修正后时刻,能够确保对所述原始数据库进行数据读写操作时数据的时间戳信息能够对齐,从而避免了数据迁移过程中的误差,从而提升了数据库扩展过程中数据的准确性。
16.在一些实施例中,所述读取所述原始数据库的归档策略以获取每个数据块的归档进度包括:
17.依据所述原始数据库的归档模式查询所述原始数据库的归档策略;
18.从所述归档策略中查询每个数据块进行归档操作的时间范围;
19.基于每个数据块进行归档操作的时间范围计算每个数据块的归档进度,所述归档进度包括“正在归档”和“未被归档”。
20.如此,通过查询原始数据库的归档模式,并依据归档模式运行对应的程序获得了原始数据库的归档日志,并通过归档日志获取了原始数据库中每个数据块的时间范围,为后续对数据块进行分类提供了数据支撑,能够提升数据库扩展的效率。
21.在一些实施例中,所述依据所述校准后时刻与所述归档进度对所述数据块进行二分类获得离线数据块和在线数据块包括:
22.若某个数据块的归档进度为“正在归档”,则将该数据块归类为在线数据块,若某个数据块的归档进度为“未被归档”,则将该数据块作为备用离线数据块;
23.查询每个备用离线数据块存储数据的时间范围;
24.分别对比每个备用离线数据块的时间范围与所述校准后时刻,若所述校准后时刻在备用离线数据块的时间范围内则将该备用离线数据块归类为在线数据块,否则归类为离线数据块。
25.如此,通过对原始数据数据库中的数据块进行二分类获得了在线数据块和离线数据块,为后续数据库扩展过程提供了指引,从而能够规避数据库扩展过程的误差。
26.在一些实施例中,所述按照所述在线数据块的第一时间范围由早至晚的顺序依次将所述在线数据块写入所述副本数据库包括:
27.依据所述在线数据块的第一时间范围由早至晚的顺序将所述在线数据块写入计算机的缓存空间中;
28.依据预设的校验方法修正所述缓存空间中的在线数据块;
29.将所述缓存空间中的在线数据块依次写入所述副本数据库以完成数据库扩展。
30.如此,按照在线数据块的时间范围由早至晚地将在线数据块写入计算机的缓存空间,并依据预设的校验方法对修正所述缓存空间中的在线数据块,能够在数据写入副本数据库之前完成对时序数据的校验,确保了副本数据库中所有数据的完整性,从而能够提升数据库扩展的可用性。
31.在一些实施例中,所述依据所述在线数据块的第一时间范围由早至晚的顺序将所述在线数据块写入计算机的缓存空间中包括:
32.依据计算机缓存空间的容量和预设的阈值计算用于存储在线数据块的缓存容量;
33.将所述缓存容量划分为多个层级,每个层级可存储数据的容量由上至下依次递增;
34.依据所述在线数据块的第一时间范围由早至晚的顺序从数据容量最低的层级开始依次将所述在线数据块写入所述缓存空间;
35.当某个层级的数据容量溢满之后,将正在写入该层级的数据块重新写入下一个层级,直至所有在线数据块都被写入所述缓存空间。
36.如此,通过将计算机的缓存空间划分为多个层级获得了树型结构的缓存空间,每个层级的数据量依次递增,进一步依据层序遍历的方式遍历每个层级中的所有数据以过滤掉多余的数据,进一步可将完整的数据块依次写入所述副本数据库,从而提升了数据库扩展的完整性。
37.在一些实施例中,所述依据预设的校验方法修正所述缓存空间中的在线数据块包括:
38.依据层序遍历算法遍历所述缓存空间中的在线数据块并分类为完好数据块和缺损数据块;
39.利用循环冗余校验算法验证所述完好数据块以获取验证结果,所述验证结果包括“错误”和“无误”;
40.从所述原始数据库中查询所述验证结果为“错误”的完好数据块对应的在线数据块并重新写入所述缓存空间。
41.如此,通过验证缓存空间中数据是否有缺损进而直接对所述缓存空间中的数据块进行修复,提升了时序数据副本扩展的效率。
42.本技术实施例还提供一种基于人工智能的数据库扩展装置,所述装置包括:
43.校准单元,用于记录数据库扩展的开始时刻,并依据原始数据库的默认时区对开始时刻进行校准获得校准后时刻;
44.读取单元,用于读取所述原始数据库的归档策略以获取每个数据块的归档进度,所述原始数据库包含多个数据块,将每个数据块存储数据的时间范围作为第一时间范围,所述归档策略用以定义每个数据块进行归档操作的第二时间范围,所述归档进度用以表征数据块当前是否正在进行归档操作;
45.分类单元,用于依据所述校准后时刻与所述归档进度对所述数据块进行二分类获得离线数据块和在线数据块;
46.迁移单元,用于将所述离线数据块迁移至预设的副本数据库并记录迁移完成时刻;
47.写入单元,用于在所述离线数据块迁移完成之后,按照所述在线数据块的第一时间范围由早至晚的顺序依次将所述在线数据块写入所述副本数据库。
48.本技术实施例还提供一种电子设备,所述电子设备包括:
49.存储器,存储计算机可读指令;及
50.处理器,执行所述存储器中存储的计算机可读指令以实现所述基于人工智能的数据库扩展方法。
51.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储
有计算机可读指令,所述计算机可读指令被电子设备中的处理器执行以实现所述基于人工智能的数据库扩展方法。
52.上述基于人工智能的数据库扩展方法通过原始数据库的默认时区修正了副本扩展开始的时刻以获取校准后时刻,并读取原始数据库的归档策略获取了原始数据库中每个数据块的归档进度,进而依据校准后时刻和归档进度对数据块进行二分类获得了离线数据块和在线数据块,并将离线数据块直接迁移至副本数据库,按照在线数据块存储数据的时间范围由早至晚的顺序依次将在线数据块写入副本数据库以完成了数据库扩展,能够不停止时序数据库的运行即可扩展时序副本,从而提升了副本扩展的效率。
附图说明
53.图1是本技术所涉及的一种基于人工智能的数据库扩展方法的较佳实施例的流程图。
54.图2是本技术所涉及的基于人工智能的数据库扩展装置的较佳实施例的功能模块图。
55.图3是本技术所涉及的基于人工智能的数据库扩展方法的较佳实施例的电子设备的结构示意图。
56.图4是本技术所涉及的时序数据的结构示意图。
57.图5是本技术所涉及的数据块与原始数据库的关系示意图。
58.图6是本技术所涉及的归档策略结构示意图。
59.图7是本技术所涉及的数据块结构示意图。
60.图8是本技术所涉及的缓存容量中层级划分的结构示意图。
61.图9是本技术所涉及的层级容量溢出后截取数据块的示意图。
具体实施方式
62.为了能够更清楚地理解本技术的目的、特征和优点,下面结合附图和具体实施例对本技术进行详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互结合。在下面的描述中阐述了很多具体细节以便于充分理解本技术,所述描述的实施例仅是本技术一部分实施例,而不是全部的实施例。
63.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
64.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中在本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
65.本技术实施例提供一种基于人工智能的数据库扩展方法,可应用于一个或者多个电子设备中,所述电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecific
integratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。
66.所述电子设备可以是任何一种可与用户进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(personaldigitalassistant,pda)、游戏机、交互式网络电视(internetprotocoltelevision,iptv)、智能式穿戴式设备等。
67.所述电子设备还可以包括网络设备和/或用户设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(cloudcomputing)的由大量主机或网络服务器构成的云。
68.所述电子设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(virtualprivatenetwork,vpn)等。
69.如图1所示,是本技术基于人工智能的数据库扩展方法的较佳实施例的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
70.s10,记录数据库扩展的开始时刻,并依据原始数据库的默认时区对开始时刻进行校准获得校准后时刻。
71.在一个可选的实施例中,所述记录数据库扩展的开始时刻,并依据原始数据库的默认时区对开始时刻进行校准获得校准后时刻包括:
72.实时获取原始数据库的资源占用率,若所述资源占用率小于预设的第一阈值则开始扩展时序副本并记录开始时刻;
73.依据当前时区与所述原始数据库默认时区的时间差修正所述开始时刻获得校准后时刻。
74.该可选的实施例中,所述原始数据库是一种时序数据库,所述时序数据库的全称为时间序列数据库,主要用于存储具备时间标签的结构化数据。示例性的,所述时序数据库可以是dolphindb,所述dolphindb是一款分布式时序数据库,其主要功能是用以存储时序数据。
75.该可选的实施例中,所述时序数据指时间序列数据,其本质是带有时间戳的一系列结构化数据。示例性的,所述时序数据通常是周期固定的数据,譬如数控机床每百毫秒采集的轴坐标、移动量、速度等数据,无人机每秒采集的位置、高度、风力、风向等数据,汽车每分钟采集的位置、车速、转速、温度等数据,智能冰箱每小时采集的温度、湿度、耗电量,用户访问网站的点击事件流等数据。如图4所示为所述时序数据的结构示意图。该可选的实施例中,数据库扩展是指将所述原始数据库中的时序数据迁移至另一个预设的数据库中,由于原始数据库为时序数据库,因此需要制定动态的数据迁移策略以确保原始数据库在不停机的状态下也能够持续的迁移数据。
76.该可选的实施例中,所述资源占用率指所述原始数据库的数据读写流量占总数据流量的比值,示例性的,若所述原始数据库的数据读写流量为500mb每秒且总数据流量为1024mb每秒,则所述资源占用率的计算方式为:
[0077][0078]
示例性的,所述第一阈值的取值可以是0.5,若所述资源占用率小于0.5则开始扩展副本并记录当前时刻。
[0079]
示例性的,所述当前时刻的格式可以是[utc-82022-3-3110:13:54],其中utc-8代表当前时刻所属的时区为“东八区”。
[0080]
该可选的实施例中,在扩展时序副本之前需要先对所述当前时刻进行校准以使当前时刻所属时区与默认时区统一。
[0081]
该可选的实施例中,首先可运行预设的程序以查询原始数据库的默认时区,所述预设的程序可以是sql程序,示例性的,其形式可以是“showvariableslike

%time_zone%
’”
,其中,variables代表所述sql程序的返回值,

%time_zone%’代表该sql程序要查询的信息为所述原始数据库的默认时区。
[0082]
示例性的,该sql程序的返回值可以是“+8:00”,代表所述原始数据库的默认时区为东八区。
[0083]
该可选的实施例中,可计算当前时区与所述默认时区的时间差,示例性的,若当前时区为东八区,且所述默认时区为东九区,则当前时区对应的时区数据为“+8:00”并记为a,且所述默认时区对应的时区数据为“+9:00”并记为b,则所述时间差d的计算方式为:
[0084]
d=b-a=9-8=1
[0085]
则当前时区与所述默认时区的时间差为1小时。
[0086]
该可选的实施例中,由于所述原始数据库中所有数据块存储数据的第一时间范围都是依据所述默认时区来设置的,因此需要利用所述时间差对当前时刻进行修正以避免后续数据库扩展过程可能出现的误差。
[0087]
该可选的实施例中,若所述时间差不为0,则可依据所述时间差修正当前时刻以获得校准后时刻,可计算所述当前时刻与所述时间差的和以作为校准后时刻。
[0088]
示例性的,若当前时刻为“utc-82022-3-3110:13:54”,且所述时间差为1小时,则所述校准后时刻为“utc-92022-3-3111:13:54”。
[0089]
该可选的实施例中,所述原始数据库包含多个数据块,每个数据块包含多条时序数据,且每个数据块存储数据的第一时间范围不同。
[0090]
该可选的实施例中,如图5所示为所述数据块与所述原始数据库的关系示意图。
[0091]
如此,通过计算当前时区与原始数据库中默认时区的时间差修正了当前时刻进而获得了修正后时刻,能够确保对所述原始数据库进行数据读写操作时数据的时间戳信息能够对齐,从而避免了数据迁移过程中的误差,从而提升了数据库扩展过程中数据的准确性。
[0092]
s11,读取所述原始数据库的归档策略以获取每个数据块的归档进度,所述原始数据库包含多个数据块,将每个数据块存储数据的时间范围作为第一时间范围,所述归档策略用以定义每个数据块进行归档操作的第二时间范围,所述归档进度用以表征数据块当前是否正在进行归档操作。
[0093]
在一个可选的实施例中,所述读取所述原始数据库的归档策略以获取每个数据块的归档进度包括:
[0094]
依据所述原始数据库的归档模式查询所述原始数据库的归档策略;
[0095]
从所述归档策略中查询每个数据块进行归档操作的第二时间范围;
[0096]
基于所述每个数据块进行归档操作的第二时间范围计算每个数据块的归档进度,所述归档进度包括“正在归档”和“未被归档”。
[0097]
该可选的实施例中,首先可运行预设的第一程序以查询所述原始数据库的当前模
式,若所述当前模式为非归档模式则可运行预设的第二程序进入所述原始数据库的归档模式。
[0098]
示例性的,所述预设的第一程序可以是sql脚本,所述预设的第二程序的形式可以是“log_archive_start”,在所述原始数据库的非归档模式下运行该程序即可将所述原始数据库切换至归档模式。
[0099]
该可选的实施例中,在所述原始数据库的归档模式下运行预设的第三程序以获得所述原始数据库的多个归档策略,每个归档策略包含了所述原始数据库中某一个数据块归档策略相关的信息。示例性的,如图6所示为某一个归档策略的结构示意图,其中,原始数据块指某一个需要被归档的数据块,原始数据块中的数据被归档之后需要被存储于图6中的目标数据块,归档周期用以定义该数据块归档时的时间跨度,归档开始时间用以定义该数据块开始进行归档操作的时间。
[0100]
该可选的实施例中,可从所述归档策略中查询每个数据块进行归档操作的第二时间范围,示例性的,如图6所示的归档策略中的归档周期为20分钟,且归档开始时间为2022年4月1日15点36分01秒,则该归档策略对应的数据块进行归档操作的第二时间范围是2022年4月1日15点36分01秒至4月1日15点56分01秒。
[0101]
该可选的实施例中,可基于每个数据块进行归档操作的第二时间范围计算每个数据块的归档进度,所述归档进度包括“正在归档”和“未被归档”。
[0102]
示例性的,如图6所示,该归档策略对应的原始数据块为数据块1,且其对应的目标数据块为数据块2,且该归档策略对应的数据块进行归档操作的第二时间范围是2022年4月1日15点36分01秒至4月1日15点56分01秒,则在此第二时间范围内数据块1和数据块2的归档进度都为“正在归档”。
[0103]
该可选的实施例中,所述数据块的存储形式具体可如图7所示,其中文件头是一个包含5个字节的字符串,文件尾是一个包含4个字节的字符串,数据块部分包含多个子块,每个子块包含一个校验值和一个元数据,索引部分包括数据块保存数据的第一时间范围和该数据块的索引值。
[0104]
如此,运行预设的程序进入原始数据库的归档模式,并在所述归档模式下查询到了每个数据块的归档策略,进一步依据归档策略查询到了每个数据块的第二时间范围,为后续对数据块进行分类提供了数据支撑,能够提升数据库扩展的效率。
[0105]
s12,依据所述校准后时刻与所述归档进度对所述数据块进行二分类获得离线数据块和在线数据块。
[0106]
在一个可选的实施例中,对所述数据块进行二分类获得离线数据快和在线数据块包括:
[0107]
若某个数据块的归档进度为“正在归档”,则将该数据块归类为在线数据块,若某个数据块的归档进度为“未被归档”,则将该数据块作为备用离线数据块;
[0108]
查询每个备用离线数据块存储数据的第一时间范围;
[0109]
对比所述第一时间范围与所述校准后时刻,若所述校准后时刻在所述第一时间范围内则将所述备用离线数据块归类为在线数据块,否则归类为离线数据块。
[0110]
该可选的实施例中,可遍历所述原始数据库中的每一个数据块,若某一个数据块的归档进度为“正在归档”,则将该数据块归类为在线数据块,若某一个数据块的归档进度
为“未被归档”,则将该数据块归类为备用离线数据块。
[0111]
该可选的实施例中,所述原始数据库中数据块的存储形式如图7所示,其中,文件头和文件尾分别为字符串形式的数据,用以表征每个数据块独特的标识;数据块部分用以存储多个子块,每个子块包含一个元数据和每个元数据对应的校验值;索引部分用以存储该数据块中存储数据的开始时间、结束时间、索引键、数据类型和数据尺寸等信息。
[0112]
该可选的实施例中,可查询每个备用离线数据块中存储数据的开始时间和结束时间以作为每个备用离线数据块存储数据的第一时间范围。
[0113]
该可选的实施例中,可对比所述第一时间范围与所述校准后时刻,若所述校准后时刻在所述第一时间范围内则将所述备用离线数据块归类为在线数据块,否则归类为离线数据块。
[0114]
示例性的,若某一个备用离线数据块存储数据的开始时间为2022年1月1日0:00:00,结束时间为2022年4月1日0:00:00,且校准后时刻为2022年3月31日15:30:30,则所述校准后时刻在该备用离线数据块存储数据的第一时间范围之内,则该备用离线数据块可被归类为在线数据块。
[0115]
如此,通过对原始数据数据库中的数据块进行二分类获得了在线数据块和离线数据块,为后续数据库扩展过程提供了指引,从而能够规避数据库扩展过程的误差。
[0116]
s13,将所述离线数据块迁移至预设的副本数据库。
[0117]
该可选的实施例中,由于所述离线数据块中存储数据的第一时间范围并未包括当前时刻,因此所述离线数据块中并未进行数据读写操作。并且由于所述离线数据块当前未进行归档操作,因此可将所述离线数据块直接复制并导入至预设的副本数据库。
[0118]
该可选的实施例中,可复制所述离线数据块以获得副本数据块,并将所述副本数据块导入至预设的副本数据库。
[0119]
该可选的实施例中,当所有副本数据块都被导入所述副本数据库中之后,记录导入完成的时刻作为离线数据块的迁移完成时刻。
[0120]
如此,通过复制离线数据块获得了副本数据块,并将副本数据块导入副本数据库完成了离线数据块的迁移,能够预先转移没有进行数据操作的数据块,提高了数据库扩展过程的效率。
[0121]
s14,在所述离线数据块迁移完成之后,按照所述在线数据块的第一时间范围由早至晚的顺序依次将所述在线数据块写入所述副本数据库。
[0122]
在一个可选的实施例中,按照所述在线数据块的第一时间范围由早至晚的顺序依次将所述在线数据块写入所述副本数据库包括:
[0123]
依据所述在线数据块的第一时间范围由早至晚的顺序将所述在线数据块写入计算机的缓存空间中;
[0124]
依据预设的校验方法修正所述缓存空间中的在线数据块;
[0125]
将所述缓存空间中的在线数据块依次写入所述副本数据库以完成数据库扩展。
[0126]
在一个可选的实施例中,依据所述在线数据块的第一时间范围由早至晚的顺序将所述在线数据块写入计算机的缓存空间中包括:
[0127]
依据计算机缓存空间的容量和预设的阈值计算用于存储在线数据块的缓存容量;
[0128]
将所述缓存容量划分为多个层级,每个层级可存储数据的容量依次递增;
[0129]
依据所述在线数据块的第一时间范围由早至晚的顺序从可存储数据容量最低的层级开始依次将所述在线数据块写入所述缓存空间;
[0130]
当某个层级的数据容量溢满之后,将正在写入该层级的数据块重新写入下一个层级,直至所有在线数据块都被写入所述缓存空间;
[0131]
依据预设的校验方法修正所述缓存空间中的在线数据块;
[0132]
将修正后的在线数据块依次写入所述副本数据库以完成数据库扩展。
[0133]
该可选的实施例中,首先可依据所述在线数据块的第一时间范围由早至晚对所述在线数据块进行排序,示例性的,若一个在线数据块x存储数据的第一时间范围是[utc-82020-3-3000:00:00,2020-4-3000:00:00]且另一个在线数据块y存储数据的第一时间范围是[utc-82021-3-3000:00:00,2021-4-3000:00:00],则所述x代表的在线数据块的排列次序在所述y代表的在线数据块之前。
[0134]
该可选的实施例中,可依据预设的阈值与计算机缓存空间的容量计算用于存储在线数据块的缓存容量,其目的在于只将一部分缓存空间用于存储在线数据块进而规避缓存空间拥堵的情况。
[0135]
该可选的实施例中,可记计算机的缓存空间容量为m字节,并可记所述预设的阈值为r,所述预设的阈值r的取值范围为(0,1),进一步可计算所述缓存空间容量与所述预设的阈值的乘积以作为所述存储在线数据块的缓存容量。
[0136]
示例性的,当所述计算机的缓存空间容量为16gb且所述阈值r的取值为0.5时,所述缓存容量的取值为8gb。
[0137]
该可选的实施例中,可将所述缓存容量划分为多个层级,每个层级可存储数据的容量依次递增。示例性的,所述多个层级可以通过树型数据结构实现,所述树型数据结构包括多层,每层可存储多个数据块,所述树型数据结构中每一层存储数据的容量依次递增。
[0138]
示例性的,如图8所示为所述缓存容量中层级划分的结构示意图。
[0139]
该可选的实施例中,可记所述树型数据结构中第一层的数据容量为n个字节,并记第二层的数据容量为2n个字节,依次类推。因此,所述树型数据结构中每个层级可存储数据的容量与层级的索引之间的关系为:
[0140]
dni=volume
×
leveli[0141]
其中,dni代表所述树型数据结构中第i个层级可存储数据的容量,其所述容量的单位是字节;volume代表所述树型数据结构中第一层级可存储数据的容量;leveli代表所述树型数据结构中第i个层级的索引,示例性的,所述树型数据结构中第一层级的索引为1,则第一层级对应的level取值为1。
[0142]
示例性的,当所述volume的取值为1024字节时,则所述树型结构中第2层存储数据的容量的计算方式为:
[0143]
dn2=1024
×
2=2048字节
[0144]
该可选的实施例中,可依据所述在线数据块存储数据的第一时间范围由早至晚的顺序读取所述在线数据块,并将读取到的数据块从数据容量最低的层级开始依次写入所述缓存空间。
[0145]
示例性的,如图8所示,记排序第一位的在线数据块为数据块1,则可将数据块1写入所述树型数据结构的第一层,记排序第二位的在线数据块为数据块2,则可将所述数据块
2继续写入树型数据结构的第一层,依次类推。
[0146]
该可选的实施例中,当某一个层级的数据容量溢满之后,可将正在写入的数据块重新写入下一个层级。
[0147]
示例性的,如图9所示,若读取到的第一个在线数据块为a,则将所述数据块a写入第一个层级中,若读取到的第二个在线数据块为数据块b,则将所述数据块b写入第一个层级并存储于在线数据块a之后的缓存空间中,若写入第三个在线数据块c时发现当前第一层级中数据的总量已经超出了第一层级的数据容量,则将数据块c中超出第一层级数据容量的部分截断,截断的部分即图9中的黑色部分,并重新在第二层级中写入所述数据块c中的所有数据。
[0148]
在一个可选的实施例中,依据预设的校验方法修正所述缓存空间中的在线数据块包括:
[0149]
依据层序遍历算法遍历所述缓存空间中的在线数据块并分类为完好数据块和缺损数据块;
[0150]
利用循环冗余校验算法验证所述完好数据块以获取验证结果,所述验证结果包括“错误”和“无误”;
[0151]
从所述原始数据库中查询所述验证结果为“错误”的完好数据块对应的在线数据块并重新写入所述缓存空间。
[0152]
该可选的实施例中,在所有在线数据块全部写入所述缓存空间之后,可利用层序遍历的方法读取所述缓存空间中的在线数据块,并依次将遍历到的数据块写入所述副本数据库。
[0153]
该可选的实施例中,可将每个在线数据块的文件头作为键且将文件尾作为值以构建键值对,并将所述键值对存储为在线哈希表。示例性的若一个在线数据块的文件头为包含五个字节的字符串且其形式为(10010),且该在线数据块的文件尾是包含四个字节的字符串且其形式为(1x10),则该在线数据块对应的键值对为(10010,1x10)。
[0154]
该可选的实施例中,所述层序遍历算法是一种搜索算法,所述层序遍历算法通常被用于搜索树型数据结构中存储的数据。以所述多个层级的第一层级为例,所述层序遍历算法的具体实施方式为:
[0155]
a1:从所述第一层级的最左侧开始依次遍历所述缓存空间中每个字节的数据,每遍历五个字节的数据即从所述在线哈希表的所有键中查询所述五个字节是否为某个文件头;
[0156]
a2:当所述五个字节是文件头时,则依据所述文件头在所述原始数据库中查询该文件头对应的数据块的数据大小并记为k;
[0157]
a3:从所述五个字节之后的首个字节开始,查询k-9个字节之后的四个字节的数据,并从所述在线哈希表的所有值中查询所述四个字节是否为该文件头对应的文件尾,若查询结果为“是”,则将所述文件头的首个字节至所述文件尾的末位字节之间的所有数据标记为完好数据块;
[0158]
a4:若所述步骤a3中的查询结果为“否”,则表明该文件头对应的数据块是超出了该层级容量的数据块并已经被截断,则可将该文件头的首位字节至所述第一层级的末位字节之间所有的字节数据标记为缺损数据块;
[0159]
a5:依据所述步骤a1至a3的方法依次遍历每个层级并将所述多个层级中的所有在线数据块标记为完好数据块或缺损数据块。
[0160]
该可选的实施例中,可依据循环冗余校验算法验证所述完好数据块以获取验证结果,所述验证结果包括“错误”和“无误”。
[0161]
该可选的实施例中,所述循环冗余校验算法的实施方式为:
[0162]
依次遍历所述完好数据块中的每个校验值,所述校验值为二进制数组;
[0163]
利用预设的辅助值对所述校验值进行模二除法获得余数,若所述余数为0则该校验值对应的元数据的验证结果为“无误”,否则该校验值对应的元数据的验证结果为“错误”。
[0164]
示例性的,当所述校验值为101001001且所述预设的辅助值为1101时,利用所述1101对所述校验值进行模二除法获得的余数为000,则所述校验值对应的元数据的验证结果为“无误”。
[0165]
该可选的实施例中,若某个完好数据块中所有元数据的验证结果为“无误”,则该数据块的验证结果为“无误”,否则该完好数据块的验证结果为“错误”。
[0166]
该可选的实施例中,若某个完好数据块的验证结果为“错误”,则可查询该完好数据块的文件头、文件尾和索引以作为查询信息,并利用所述查询信息在所述原始数据库中重新检索与该完好数据块对应的在线数据块,并重新将该在线数据块写入所述缓存空间,并将该数据块标记为“无误”。
[0167]
该可选的实施例中,可将所述标记为“无误”的完好数据块依次写入所述副本数据库中以完成数据库扩展。
[0168]
如此,通过将计算机的缓存空间划分为多个层级获得了树型结构的缓存空间,每个层级的数据量依次递增,进一步依据层序遍历的方式遍历每个层级中的所有数据以过滤掉多余的数据,进一步可将完整的数据块依次写入所述副本数据库,从而提升了数据库扩展的完整性。
[0169]
上述基于人工智能的数据库扩展方法通过原始数据库的默认时区修正了副本扩展开始的时刻以获取校准后时刻,并读取原始数据库的归档策略获取了原始数据库中每个数据块的归档进度,进而依据校准后时刻和归档进度对数据块进行二分类获得了离线数据块和在线数据块,并将离线数据块直接迁移至副本数据库,按照在线数据块存储数据的时间范围由早至晚的顺序依次将在线数据块写入副本数据库以完成了数据库扩展,能够不停止时序数据库的运行即可扩展时序副本,从而提升了副本扩展的效率。
[0170]
如图2所示,是本技术实施例提供的基于人工智能的数据库扩展装置的较佳实施例的功能模块图。基于人工智能的数据库扩展装置11包括校准单元110、读取单元111、分类单元112、迁移单元113、写入单元114。本技术所称的模块/单元是指一种能够被处理器13所执行,并且能够完成固定功能的一系列计算机程序段,其存储在存储器12中。在本实施例中,关于各模块/单元的功能将在后续的实施例中详述。
[0171]
在一个可选的实施例中,校准单元110用于记录数据库扩展的开始时刻,并依据原始数据库的默认时区对开始时刻进行校准获得校准后时刻。
[0172]
在一个可选的实施例中,所述记录数据库扩展的开始时刻,并依据原始数据库的默认时区对开始时刻进行校准获得校准后时刻包括:
[0173]
实时获取原始数据库的资源占用率,若所述资源占用率小于预设的第一阈值则开始扩展时序副本并记录开始时刻;
[0174]
依据当前时区与所述原始数据库默认时区的时间差修正所述开始时刻获得校准后时刻。
[0175]
该可选的实施例中,所述原始数据库是一种时序数据库,所述时序数据库的全称为时间序列数据库,主要用于存储具备时间标签示的结构化数据。示例性的,所述时序数据库可以是dolphindb,所述dolphindb是一款分布式时序数据库,其主要功能是用以存储时序数据。
[0176]
该可选的实施例中,所述时序数据指时间序列数据,其本质是带有时间戳的一系列结构化数据。
[0177]
示例性的,所述时序数据通常是周期固定的数据,譬如数控机床每百毫秒采集的轴坐标、移动量、速度等数据,无人机每秒采集的位置、高度、风力、风向等数据,汽车每分钟采集的位置、车速、转速、温度等数据,智能冰箱每小时采集的温度、湿度、耗电量,用户访问网站的点击事件流等数据。如图4所示为所述时序数据的结构示意图。
[0178]
该可选的实施例中,数据库扩展是指将所述原始数据库中的时序数据迁移至另一个预设的数据库中,由于原始数据库为时序数据库,因此需要制定动态的数据迁移策略以确保原始数据库在不停机的状态下也能够持续的迁移数据。
[0179]
该可选的实施例中,所述资源占用率指所述原始数据库的数据读写流量占总数据流量的比值,示例性的,若所述原始数据库的数据读写流量为500mb每秒且总数据流量为1024mb每秒,则所述资源占用率的计算方式为:
[0180][0181]
示例性的,所述第一阈值的取值可以是0.5,若所述资源占用率小于0.5则开始扩展副本并记录当前时刻。
[0182]
示例性的,所述当前时刻的格式可以是[utc-82022-3-3110:13:54],其中utc-8代表当前时刻所属的时区为“东八区”。
[0183]
该可选的实施例中,在扩展时序副本之前需要先对所述当前时刻进行校准以使当前时刻所属时区与默认时区统一。
[0184]
该可选的实施例中,首先可运行预设的程序以查询原始数据库的默认时区,所述预设的程序可以是sql程序,示例性的,其形式可以是“showvariableslike

%time_zone%
’”
,其中,variables代表所述sql程序的返回值,

%time_zone%’代表该sql程序要查询的信息为所述原始数据库的默认时区。
[0185]
示例性的,该sql程序的返回值可以是“+8:00”,代表所述原始数据库的默认时区为东八区。
[0186]
该可选的实施例中,可计算当前时区与所述默认时区的时间差,示例性的,若当前时区为东八区,且所述默认时区为东九区,则当前时区对应的时区数据为“+8:00”并记为a,且所述默认时区对应的时区数据为“+9:00”并记为b,则所述时间差d的计算方式为:
[0187]
d=b-a=9-8=1
[0188]
则当前时区与所述默认时区的时间差为1小时。
[0189]
该可选的实施例中,由于所述原始数据库中所有数据块存储数据的第一时间范围都是依据所述默认时区来设置的,因此需要利用所述时间差对当前时刻进行修正以避免后续数据库扩展过程可能出现的误差。
[0190]
该可选的实施例中,若所述时间差不为0,则可依据所述时间差修正当前时刻以获得校准后时刻,可计算所述当前时刻与所述时间差的和以作为校准后时刻。
[0191]
示例性的,若当前时刻为“utc-82022-3-3110:13:54”,且所述时间差为1小时,则所述校准后时刻为“utc-92022-3-3111:13:54”。
[0192]
该可选的实施例中,所述原始数据库包含多个数据块,每个数据块包含多条时序数据,且每个数据块存储数据的第一时间范围不同。
[0193]
该可选的实施例中,如图5所示为所述数据块与所述原始数据库的关系示意图。
[0194]
在一个可选的实施例中,读取单元111用于读取所述原始数据库的归档策略以获取每个数据块的归档进度,所述原始数据库包含多个数据块,将每个数据块存储数据的时间范围作为第一时间范围,所述归档策略用以定义每个数据块进行归档操作的第二时间范围,所述归档进度用以表征数据块当前是否正在进行归档操作。
[0195]
在一个可选的实施例中,所述读取所述原始数据库的归档策略以获取每个数据块的归档进度包括:
[0196]
依据所述原始数据库的归档模式查询所述原始数据库的归档策略;
[0197]
从所述归档策略中查询每个数据块进行归档操作的第二时间范围;
[0198]
基于所述每个数据块进行归档操作的第二时间范围计算每个数据块的归档进度,所述归档进度包括“正在归档”和“未被归档”。
[0199]
该可选的实施例中,首先可运行预设的第一程序以查询所述原始数据库的当前模式,若所述当前模式为非归档模式则可运行预设的第二程序进入所述原始数据库的归档模式。
[0200]
示例性的,所述预设的第一程序可以是sql脚本,所述预设的第二程序的形式可以是“log_archive_start”,在所述原始数据库的非归档模式下运行该程序即可将所述原始数据库切换至归档模式。
[0201]
该可选的实施例中,在所述原始数据库的归档模式下运行预设的第三程序以获得所述原始数据库的多个归档策略,每个归档策略包含了所述原始数据库中某一个数据块归档策略相关的信息。示例性的,如图6所示为某一个归档策略的结构示意图,其中,原始数据块指某一个需要被归档的数据块,原始数据块中的数据被归档之后需要被存储于图6中的目标数据块,归档周期用以定义该数据块归档时的时间跨度,归档开始时间用以定义该数据块开始进行归档操作的时间。
[0202]
该可选的实施例中,可从所述归档策略中查询每个数据块进行归档操作的第二时间范围,示例性的,如图6所示的归档策略中的归档周期为20分钟,且归档开始时间为2022年4月1日15点36分01秒,则该归档策略对应的数据块进行归档操作的第二时间范围是2022年4月1日15点36分01秒至4月1日15点56分01秒。
[0203]
该可选的实施例中,可基于每个数据块进行归档操作的第二时间范围计算每个数据块的归档进度,所述归档进度包括“正在归档”和“未被归档”。
[0204]
示例性的,如图6所示,该归档策略对应的原始数据块为数据块1,且其对应的目标
数据块为数据块2,且该归档策略对应的数据块进行归档操作的第二时间范围是2022年4月1日15点36分01秒至4月1日15点56分01秒,则在此第二时间范围内数据块1和数据块2的归档进度都为“正在归档”。
[0205]
该可选的实施例中,所述数据块的存储形式具体可如图7所示,其中文件头是一个包含5个字节的字符串,文件尾是一个包含4个字节的字符串,数据块部分包含多个子块,每个子块包含一个校验值和一个元数据,索引部分包括数据块保存数据的第一时间范围和该数据块的索引值。
[0206]
在一个可选的实施例中,分类单元112用于依据所述校准后时刻与所述归档进度对所述数据块进行二分类获得离线数据块和在线数据块。
[0207]
在一个可选的实施例中,对所述数据块进行二分类获得离线数据快和在线数据块包括:
[0208]
若某个数据块的归档进度为“正在归档”,则将该数据块归类为在线数据块,若某个数据块的归档进度为“未被归档”,则将该数据块作为备用离线数据块;
[0209]
查询每个备用离线数据块存储数据的第一时间范围;
[0210]
对比所述第一时间范围与所述校准后时刻,若所述校准后时刻在所述第一时间范围内则将所述备用离线数据块归类为在线数据块,否则归类为离线数据块。
[0211]
该可选的实施例中,可遍历所述原始数据库中的每一个数据块,若某一个数据块的归档进度为“正在归档”,则将该数据块归类为在线数据块,若某一个数据块的归档进度为“未被归档”,则将该数据块归类为备用离线数据块。
[0212]
该可选的实施例中,所述原始数据库中数据块的存储形式如图7所示,其中,文件头和文件尾分别为字符串形式的数据,用以表征每个数据块独特的标识;数据块部分用以存储多个子块,每个子块包含一个元数据和每个元数据对应的校验值;索引部分用以存储该数据块中存储数据的开始时间、结束时间、索引键、数据类型和数据尺寸等信息。
[0213]
该可选的实施例中,可查询每个备用离线数据块中存储数据的开始时间和结束时间以作为每个备用离线数据块存储数据的第一时间范围。
[0214]
该可选的实施例中,可对比所述第一时间范围与所述校准后时刻,若所述校准后时刻在所述第一时间范围内则将所述备用离线数据块归类为在线数据块,否则归类为离线数据块。
[0215]
示例性的,若某一个备用离线数据块存储数据的开始时间为2022年1月1日0:00:00,结束时间为2022年4月1日0:00:00,且校准后时刻为2022年3月31日15:30:30,则所述校准后时刻在该备用离线数据块存储数据的第一时间范围之内,则该备用离线数据块可被归类为在线数据块。
[0216]
在一个可选的实施例中,迁移单元113用于将所述离线数据块迁移至预设的副本数据库。
[0217]
该可选的实施例中,由于所述离线数据块中存储数据的第一时间范围并未包括当前时刻,因此所述离线数据块中并未进行数据读写操作。并且由于所述离线数据块当前未进行归档操作,因此可将所述离线数据块直接复制并导入至预设的副本数据库。
[0218]
该可选的实施例中,可复制所述离线数据块以获得副本数据块,并将所述副本数据块导入至预设的副本数据库。
[0219]
该可选的实施例中,当所有副本数据块都被导入所述副本数据库中之后,记录导入完成的时刻作为离线数据块的迁移完成时刻。
[0220]
在一个可选的实施例中,写入单元114用于在所述离线数据块迁移完成之后,查询所述在线数据块存储数据的时间范围,并按照所述时间范围由早至晚的顺序依次将所述在线数据块写入所述副本数据库。
[0221]
在一个可选的实施例中,按照所述在线数据块的第一时间范围由早至晚的顺序依次将所述在线数据块写入所述副本数据库包括:
[0222]
依据所述在线数据块的第一时间范围由早至晚的顺序将所述在线数据块写入计算机的缓存空间中;
[0223]
依据预设的校验方法修正所述缓存空间中的在线数据块;
[0224]
将所述缓存空间中的在线数据块依次写入所述副本数据库以完成数据库扩展。
[0225]
在一个可选的实施例中,依据所述在线数据块的第一时间范围由早至晚的顺序将所述在线数据块写入计算机的缓存空间中包括:
[0226]
依据计算机缓存空间的容量和预设的阈值计算用于存储在线数据块的缓存容量;
[0227]
将所述缓存容量划分为多个层级,每个层级可存储数据的容量依次递增;
[0228]
依据所述在线数据块的第一时间范围由早至晚的顺序从可存储数据容量最低的层级开始依次将所述在线数据块写入所述缓存空间;
[0229]
当某个层级的数据容量溢满之后,将正在写入该层级的数据块重新写入下一个层级,直至所有在线数据块都被写入所述缓存空间;
[0230]
依据预设的校验方法修正所述缓存空间中的在线数据块;
[0231]
将修正后的在线数据块依次写入所述副本数据库以完成数据库扩展。
[0232]
该可选的实施例中,首先可依据所述在线数据块的第一时间范围由早至晚对所述在线数据块进行排序,示例性的,若一个在线数据块x存储数据的第一时间范围是[utc-82020-3-3000:00:00,2020-4-3000:00:00]且另一个在线数据块y存储数据的第一时间范围是[utc-82021-3-3000:00:00,2021-4-3000:00:00],则所述x代表的在线数据块的排列次序在所述y代表的在线数据块之前。
[0233]
该可选的实施例中,可依据预设的阈值与计算机缓存空间的容量计算用于存储在线数据块的缓存容量,其目的在于只将一部分缓存空间用于存储在线数据块进而规避缓存空间拥堵的情况。
[0234]
该可选的实施例中,可记计算机的缓存空间容量为m字节,并可记所述预设的阈值为r,所述预设的阈值r的取值范围为(0,1),进一步可计算所述缓存空间容量与所述预设的阈值的乘积以作为所述存储在线数据块的缓存容量。
[0235]
示例性的,当所述计算机的缓存空间容量为16gb且所述阈值r的取值为0.5时,所述缓存容量的取值为8gb。
[0236]
该可选的实施例中,可将所述缓存容量划分为多个层级,每个层级可存储数据的容量依次递增。示例性的,所述多个层级可以通过树型数据结构实现,所述树型数据结构包括多层,每层可存储多个数据块,所述树型数据结构中每一层存储数据的容量依次递增。
[0237]
示例性的,如图8所示为所述缓存容量中层级划分的结构示意图。
[0238]
该可选的实施例中,可记所述树型数据结构中第一层的数据容量为n个字节,并记
第二层的数据容量为2n个字节,依次类推。因此,所述树型数据结构中每个层级可存储数据的容量与层级的索引之间的关系为:
[0239]
dni=volume
×
leveli[0240]
其中,dni代表所述树型数据结构中第i个层级可存储数据的容量,其所述容量的单位是字节;volume代表所述树型数据结构中第一层级可存储数据的容量;leveli代表所述树型数据结构中第i个层级的索引,示例性的,所述树型数据结构中第一层级的索引为1,则第一层级对应的level取值为1。
[0241]
示例性的,当所述volume的取值为1024字节时,则所述树型结构中第2层存储数据的容量的计算方式为:
[0242]
dn2=1024
×
2=2048字节
[0243]
该可选的实施例中,可依据所述在线数据块存储数据的第一时间范围由早至晚的顺序读取所述在线数据块,并将读取到的数据块从数据容量最低的层级开始依次写入所述缓存空间。
[0244]
示例性的,如图8所示,记排序第一位的在线数据块为数据块1,则可将数据块1写入所述树型数据结构的第一层,记排序第二位的在线数据块为数据块2,则可将所述数据块2继续写入树型数据结构的第一层,依次类推。
[0245]
该可选的实施例中,当某一个层级的数据容量溢满之后,可将正在写入的数据块重新写入下一个层级。
[0246]
示例性的,如图9所示,若读取到的第一个在线数据块为a,则将所述数据块a写入第一个层级中,若读取到的第二个在线数据块为数据块b,则将所述数据块b写入第一个层级并存储于在线数据块a之后的缓存空间中,若写入第三个在线数据块c时发现当前第一层级中数据的总量已经超出了第一层级的数据容量,则将数据块c中超出第一层级数据容量的部分截断,截断的部分即图9中的黑色部分,并重新在第二层级中写入所述数据块c中的所有数据。
[0247]
在一个可选的实施例中,依据预设的校验方法修正所述缓存空间中的在线数据块包括:
[0248]
依据层序遍历算法遍历所述缓存空间中的在线数据块并分类为完好数据块和缺损数据块;
[0249]
利用循环冗余校验算法验证所述完好数据块以获取验证结果,所述验证结果包括“错误”和“无误”;
[0250]
从所述原始数据库中查询所述验证结果为“错误”的完好数据块对应的在线数据块并重新写入所述缓存空间。
[0251]
该可选的实施例中,在所有在线数据块全部写入所述缓存空间之后,可利用层序遍历的方法读取所述缓存空间中的在线数据块,并依次将遍历到的数据块写入所述副本数据库。
[0252]
该可选的实施例中,可将每个在线数据块的文件头作为键且将文件尾作为值以构建键值对,并将所述键值对存储为在线哈希表。示例性的若一个在线数据块的文件头为包含五个字节的字符串且其形式为(10010),且该在线数据块的文件尾是包含四个字节的字符串且其形式为(1x10),则该在线数据块对应的键值对为(10010,1x10)。
[0253]
该可选的实施例中,所述层序遍历算法是一种搜索算法,所述层序遍历算法通常被用于搜索树型数据结构中存储的数据。以所述多个层级的第一层级为例,所述层序遍历算法的具体实施方式为:
[0254]
a1:从所述第一层级的最左侧开始依次遍历所述缓存空间中每个字节的数据,每遍历五个字节的数据即从所述在线哈希表的所有键中查询所述五个字节是否为某个文件头;
[0255]
a2:当所述五个字节是文件头时,则依据所述文件头在所述原始数据库中查询该文件头对应的数据块的数据大小并记为k;
[0256]
a3:从所述五个字节之后的首个字节开始,查询k-9个字节之后的四个字节的数据,并从所述在线哈希表的所有值中查询所述四个字节是否为该文件头对应的文件尾,若查询结果为“是”,则将所述文件头的首个字节至所述文件尾的末位字节之间的所有数据标记为完好数据块;
[0257]
a4:若所述步骤a3中的查询结果为“否”,则表明该文件头对应的数据块是超出了该层级容量的数据块并已经被截断,则可将该文件头的首位字节至所述第一层级的末位字节之间所有的字节数据标记为缺损数据块;
[0258]
a5:依据所述步骤a1至a3的方法依次遍历每个层级并将所述多个层级中的所有在线数据块标记为完好数据块或缺损数据块。
[0259]
该可选的实施例中,可依据循环冗余校验算法验证所述完好数据块以获取验证结果,所述验证结果包括“错误”和“无误”。
[0260]
该可选的实施例中,所述循环冗余校验算法的实施方式为:
[0261]
依次遍历所述完好数据块中的每个校验值,所述校验值为二进制数组;
[0262]
利用预设的辅助值对所述校验值进行模二除法获得余数,若所述余数为0则该校验值对应的元数据的验证结果为“无误”,否则该校验值对应的元数据的验证结果为“错误”。
[0263]
示例性的,当所述校验值为101001001且所述预设的辅助值为1101时,利用所述1101对所述校验值进行模二除法获得的余数为000,则所述校验值对应的元数据的验证结果为“无误”。
[0264]
该可选的实施例中,若某个完好数据块中所有元数据的验证结果为“无误”,则该数据块的验证结果为“无误”,否则该完好数据块的验证结果为“错误”。
[0265]
该可选的实施例中,若某个完好数据块的验证结果为“错误”,则可查询该完好数据块的文件头、文件尾和索引以作为查询信息,并利用所述查询信息在所述原始数据库中重新检索与该完好数据块对应的在线数据块,并重新将该在线数据块写入所述缓存空间,并将该数据块标记为“无误”。
[0266]
该可选的实施例中,可将所述标记为“无误”的完好数据块依次写入所述副本数据库中以完成数据库扩展。
[0267]
上述基于人工智能的数据库扩展方法通过原始数据库的默认时区修正了副本扩展开始的时刻以获取校准后时刻,并读取原始数据库的归档策略获取了原始数据库中每个数据块的归档进度,进而依据校准后时刻和归档进度对数据块进行二分类获得了离线数据块和在线数据块,并将离线数据块直接迁移至副本数据库,按照在线数据块存储数据的时
间范围由早至晚的顺序依次将在线数据块写入副本数据库以完成了数据库扩展,能够不停止时序数据库的运行即可扩展时序副本,从而提升了副本扩展的效率。
[0268]
如图3所示,是本技术实施例提供的一种电子设备的结构示意图。电子设备1包括存储器12和处理器13。存储器12用于存储计算机可读指令,处理器13用执行储器中存储的计算机可读指令以实现上述任一实施例的基于人工智能的数据库扩展方法。
[0269]
在一个可选的实施例中,电子设备1还包括总线、存储在存储器12中并可在处理器13上运行的计算机程序,例如基于人工智能的数据库扩展程序。
[0270]
图3仅示出了具有组件12-13的电子设备1,本领域技术人员可以理解的是,图3示出的结构并不构成对电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
[0271]
结合图1,电子设备1中的存储器12存储多个计算机可读指令以实现一种基于人工智能的数据库扩展方法,处理器13可执行多个指令从而实现:
[0272]
记录数据库扩展的开始时刻,并依据原始数据库的默认时区对开始时刻进行校准获得校准后时刻;
[0273]
读取所述原始数据库的归档策略以获取每个数据块的归档进度,所述原始数据库包含多个数据块,所述归档策略用以定义每个数据块进行归档操作的时间范围,所述归档进度用以表征数据块当前是否正在进行归档操作;
[0274]
依据所述校准后时刻与所述归档进度对所述数据块进行二分类获得离线数据块和在线数据块;
[0275]
将所述离线数据块迁移至预设的副本数据库;
[0276]
在所述离线数据块迁移完成之后,查询所述在线数据块存储数据的时间范围,并按照所述时间范围由早至晚的顺序依次将所述在线数据块写入所述副本数据库。
[0277]
具体地,处理器13对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
[0278]
本领域技术人员可以理解,所述示意图仅仅是电子设备1的示例,并不构成对电子设备1的限定,电子设备1既可以是总线型结构,也可以是星形结构,电子设备1还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置,例如电子设备1还可以包括输入输出设备、网络接入设备等。
[0279]
需要说明的是,电子设备1仅为举例,其他现有的或今后可能出现的电子产品如可适应于本技术,也应包含在本技术的保护范围以内,并以引用方式包含于此。
[0280]
其中,存储器12至少包括一种类型的可读存储介质,所述可读存储介质可以是非易失性的,也可以是易失性的。所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器12在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。存储器12在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(smartmediacard,smc)、安全数字(securedigital,sd)卡、闪存卡(flashcard)等。进一步地,存储器12还可以既包括电子设备1的内部存储单元也包括外部存储设备。存储器12不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如基于人工智能的数据库扩展程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
[0281]
处理器13在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(centralprocessingunit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。处理器13是电子设备1的控制核心(controlunit),利用各种接口和线路连接整个电子设备1的各个部件,通过运行或执行存储在存储器12内的程序或者模块(例如执行基于人工智能的数据库扩展程序等),以及调用存储在存储器12内的数据,以执行电子设备1的各种功能和处理数据。
[0282]
处理器13执行电子设备1的操作系统以及安装的各类应用程序。处理器13执行所述应用程序以实现上述各个基于人工智能的数据库扩展方法实施例中的步骤,例如图1所示的步骤。
[0283]
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在存储器12中,并由处理器13执行,以完成本技术。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机程序在电子设备1中的执行过程。例如,所述计算机程序可以被分割成校准单元110、读取单元111、分类单元112、迁移单元113、写入单元114。
[0284]
上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、计算机设备,或者网络设备等)或处理器(processor)执行本技术各个实施例所述基于人工智能的数据库扩展方法的部分。
[0285]
电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指示相关的硬件设备来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。
[0286]
其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存储器及其他存储器等。
[0287]
进一步地,计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
[0288]
本技术所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
[0289]
总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,在图3中仅用一根箭头表示,
但并不表示仅有一根总线或一种类型的总线。所述总线被设置为实现存储器12以及至少一个处理器13等之间的连接通信。
[0290]
尽管未示出,电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器13逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。电子设备1还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。
[0291]
进一步地,电子设备1还可以包括网络接口,可选地,所述网络接口可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备之间建立通信连接。
[0292]
可选地,该电子设备1还可以包括用户接口,用户接口可以是显示器(display)、输入单元(比如键盘(keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
[0293]
本技术实施例还提供一种计算机可读存储介质(图未示),计算机可读存储介质中存储有计算机可读指令,计算机可读指令被电子设备中的处理器执行以实现上述任一实施例所述的基于人工智能的数据库扩展方法。
[0294]
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
[0295]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0296]
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0297]
另外,在本技术各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
[0298]
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。说明书陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。
[0299]
最后应说明的是,以上实施例仅用以说明本技术的技术方案而非限制,尽管参照较佳实施例对本技术进行了详细说明,本领域的普通技术人员应当理解,可以对本技术的技术方案进行修改或等同替换,而不脱离本技术技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1