数据库信息处理方法及装置
技术领域
本发明涉及数据处理领域,具体而言,涉及一种数据库信息处理方法及装置。
背景技术
随着云计算和大数据的发展,用户数据规模越来越大,传统的数据库无法承载,分析型数据库地位越来越重要,而列存储是分析型数据库的核心功能之一,可以大量节约存储成本,提高列查询性能。
但是,列存储的索引功能与行存储相比仍不具优势,因此,基于列存表存储的优化方案层出不穷,其中,收集并更新列存表的元信息是最普遍的做法,然而,频繁更新元信息会导致元信息数据膨胀,从而带来副作用。
发明内容
本发明实施例提供了一种数据库信息处理方法及装置,以至少解决现有的需要频繁更新元信息而导致元信息数据膨胀的技术问题。
根据本发明实施例的一个方面,提供了一种数据库信息处理方法,包括:当检测到新增记录时,根据所述新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;其中,所述多个信息表还包括第二信息表,所述第二信息表用于在所述第一信息表对应的记录数量超过第一预设值的情况下,存储所述第一信息表中的特征值。
根据本发明实施例的一个方面,还提供了一种数据库信息处理装置,包括:存储器,用于存储指令;处理器,与所述存储器连接,用于调用所述指令执行下述步骤:当检测到新增记录时,根据所述新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;其中,所述多个信息表还包括第二信息表,所述第二信息表用于在所述第一信息表对应的记录数量超过第一预设值的情况下,存储所述第一信息表中的特征值。
在本发明实施例中,采用多信息表功能划分的方式,通过当检测到新增记录时,根据新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;其中,多个信息表还包括第二信息表,第二信息表用于在第一信息表对应的记录数量超过第一预设值的情况下,存储第一信息表中的特征值,对于第二信息表而言,仅是新增特征值而不进行特征值的更新,达到了在特征值收集的过程中,避免因频繁更新导致的信息数据膨胀的目的,从而实现了优化采用列存储的数据库的性能的技术效果,进而解决了现有的需要频繁更新元信息而导致元信息数据膨胀的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种数据库信息处理装置的结构示意图
图2是根据本发明实施例的一种数据库信息处理方法的步骤流程图;
图3是根据本发明实施例的一种可选的数据库信息处理方法的步骤流程图;
图4是根据本发明实施例的一种可选的数据库信息处理方法的步骤流程图;
图5是根据本发明实施例的一种可选的数据库信息处理方法的步骤流程图;
图6是根据本发明实施例的一种可选的数据库信息处理方法的步骤流程图;
图7是根据本发明实施例的一种可选的数据库信息处理方法的步骤流程图;
图8是根据本发明实施例的一种可选的数据库信息处理方法的步骤流程图;
图9是根据本发明实施例的一种数据库信息处理装置的结构示意图;
图10是根据本发明实施例的一种计算机终端的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
(1)列存表:是指数据库表的记录以“列”为单位存储到文件中,不同于传统以“行”为单位存储的表。
(2)元信息:是指关于数据记录的值,元信息允许服务器提供所发送数据的信息,例如,可以是列存表中每一列有组织的统计信息,该统计信息可以为:最小值(min),最大值(max)。
(3)膨胀:由于数据库事务的实现是基于多版本并发控制(MVCC),以至于在更新数据时,会出现新数据和老数据同时存在的现象,也即是膨胀。
(4)VACUUM:是指数据库的一种垃圾回收机制。
实施例1
在描述本申请的各实施例的进一步细节之前,将参考图1来描述可用于实现本申请原理的一个合适的数据库信息处理装置。
图1是根据本申请实施例的一种数据库信息处理装置的结构示意图,出于描述的目的,所绘结构仅为合适环境的一个示例,并非对本申请的使用范围或功能提出任何局限。也不应将该数据库信息处理装置,解释为对图1所示的任一组件或其组合具有任何依赖或需求。
需要说明的是,本申请实施例1所提供的***实施例可以广泛应用在互联网上。
在数据库***中,通常以数据页(Page)为基本单位对数据进行存储,而数据行是实际数据的存储单位,以数据行为单位在数据页(Page)上进行存储记录的方式,即为行存储;当数据以数据列为单位,而不是以数据行为单位进行连续的数据存储时,即为列存储。列存储是分析型数据库的核心功能之一,由于磁盘的每个数据页(Page)仅仅存储来自单列的值,而不是整行的值,因此,采用列存储应用压缩算法会更加高效,提升了缓存的利用率,不仅可以大量节约存储成本,由于在查询过程中,还可以有效避免读取无关列,从而可以有效提高数据库以列“列”进行查询的性能。
但值得注意的是,列存储虽然节约存储成本,但是索引、更新等功能依然无法匹敌行存储,相对来说,列存储尤其不适用于***、删除等操作频繁的场合。
基于此,本申请的申请人经研究发现,可以设置多个不同的信息表来存储元信息,即主元信息表(第二信息表)和次元信息表(第一信息表),例如,以1000条数据为一个数据组为例,若数据库列存表中不满1000条数据记录,则先存储对应的数据记录的特征值暂时存储在次元信息表,次元信息表可以频繁的更新特征值,主元信息表仅用来存储所有满1000条的数据(一个数据组)的特征值,主元信息表只存储所有满一组的数据记录的特征值,并不进行特征值的新增和更新,以避免现有技术中采用一个元信息表频繁更新特征值导致数据膨胀的问题。
具体的,图1示出了一种数据库信息处理装置的结构示意图,如图1所示,该装置包括:处理器10和存储器20,其中,
存储器20,用于存储指令;
处理器10,与存储器20连接,用于调用指令执行下述步骤:当检测到新增记录时,根据新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;其中,多个信息表还包括第二信息表,第二信息表用于在第一信息表对应的记录数量超过第一预设值的情况下,存储第一信息表中的特征值。
可选的,上述处理器10可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置。
可选的,上述存储器20可以包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器20可进一步包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至处理器10。
需要说明的是,上述新增记录(也可称为新增数据记录)可以为数据库列存表中新增加的数据记录,由于元信息是数据记录的值,数据库中每增加一条记录,(也可称为数据记录)进而需判断是否更新第一信息表中的元信息。
仍需要说明的是,上述新增数据记录的特征值可以存储在元信息表中,可以为但不限于:新增记录的元信息,也即,该条新增记录的值。
具体的,上述第一信息表为次元信息表,该第一信息表的个数可以为一个或多个;上述第二信息表为主元信息表;上述任意一种类型的信息表均可以存储在与处理器10连接的存储器20中。
在一种可选的实施例中,处理器10可以检测数据库中是否有新增数据记录,并通过比较新增数据记录的特征值与元信息表中存储的数据记录的特征值,判断新增数据记录的特征值相对于元信息表中存储的数据记录的特征值是否发生改变,并在发生改变的情况下,更新多个信息表中的次元信息表存储的特征值。
作为一种可选的实施方式,处理器10可以预先对列存表中存储的数据记录进行分组,例如,若1000条数据记录分为一个数据组,若列存表中新增加的数据记录不满1000条,则将不满1000条数据记录的最大值和最小值,存储在次元信息表;若新增加的数据记录满1000条,则将该满1000条的数据记录的最大值和最小值,同步到主元信息表。
通过本申请的上述实施例,还可以***化的对数据记录进行查询,从而实现了优化以“列”为单位进行存储的数据库性能。此外,由于本申请通过将更新数据暂时存储在新增的次元信息表中,进而可以有效地对元信息表中的数据进行更新,在检测到次元信息表的过大的情况下,对次元信息表中的数据进行垃圾回收,可以达到在不影响查询数据的条件下,实现元信息数据不膨胀。
在一种可选的实施例中,上述处理器10,用于从第一信息表中读取第一信息表存储的特征值;将第一信息表存储的特征值与新增记录的特征值进行比较,得到比较结果;在比较结果满足预定条件的情况下,更新第一信息表存储的特征值;在比较结果不满足预定条件的情况下,不更新第一信息表存储的特征值。
需要说明的是,由于处理器10从第一信息表中读取得到的新增记录的特征值是一个固定的值,因此,可以将该新增记录的特征值,分别与第一信息表中的min值和max值相比较,如果该新增记录的特征值小于min值或者大于max值,则确定比较结果满足上述预定条件。
作为一种可选的实施例,在比较结果满足预定条件的情况下,如果新增记录的特征值小于第一信息表存储的min值,则将新增记录的特征值更新为第一信息表存储的min值。
作为另一种可选的实施例,在比较结果满足预定条件的情况下,如果新增记录的特征值大于第一信息表存储的max值,则将新增记录的特征值更新为第一信息表存储的max值。
此外,仍存在一种可选的实施例,在比较结果不满足预定条件的情况下,处理器10不更新第一信息表存储的特征值。
在一种可选的实施例中,上述处理器10用于执行以下步骤更新第一信息表存储的特征值:对第一信息表存储的特征值设置标记,并将新增记录的特征值写入第一信息表。
为实现在更新列存表中的数据记录时,相应更新多个信息表中的次元信息表中存储的特征值,在一种可选的实施方式中,可以在将次元信息表中存储的原始数据的特征值进行保留和标记之后,处理器10再写入新增数据记录的特征值,也即,处理器10通过更新(update)的方式将新增数据记录的特征值,写入次元信息表中。
作为一种可选的实施例,所述处理器10,还用于检测所述第一信息表的大小;在所述第一信息表的大小大于第二预设值的情况下,删除所述第一信息表中设置有所述标记的特征值。
可选的,该第二预设值可以为但并不限于64M。
在一种可选的实施例中,若检测出次元信息表的文件大小大于或等于64M,则可能当前次元信息表中可能存在过多的垃圾数据,需要对次元信息表中的垃圾数据进行回收处理,以实现及时的删除垃圾数据。
值得注意的是,由于在更新次元信息表存储的特征值时,保留和标记了次元信息表中与原始数据对应的特征值,因而,在检测到当前次元信息表存在数据膨胀现象时,处理器10优先删除次元信息表中带有标记的特征值。
需要说明的是,可以在每次更新次元信息表存储的特征值之后,检测该次元信息表的文件大小,可选的,还可以周期性的对该次元信息表的文件大小进行检测,或在收到指示检测该次元信息表的文件大小的检测指令后,对次元信息表的文件大小进行检测。
在一种可选的实施例中,处理器10,还用于接收查询指令;通过第二信息表存储的特征值判断第二信息表对应的记录中是否包含待查询记录,其中,查询指令中包含待查询记录;若第二信息表对应的记录中不包含待查询记录,根据第一信息表的状态查找待查询记录。
需要说明的是,主元信息表存储的数据记录的特征值,并不是整个列存表的数据记录的特征值,不满一组的数据记录的特征值暂时存放在次元信息表中进行更新。
在本申请实施例所提供的实施例中,数据库中的数据记录,可以以组为单位存储在列存表中,并且,列存表的数据记录与元信息表的特征值对应设置,因而可以通过元信息表来完成列存表中的数据记录查询。
需要说明的是,由于次元信息表中存放有不满一组的新增数据记录的特征值,因此,在接到查询指令之后,处理器10首先根据主元信息表的存储的特征值,查询主元信息表对应的数据记录中是否包含待查询记录,在主元信息表对应的列存表的数据记录中不包含待查询记录的情况下,处理器10可以根据次元信息表的状态,对待查询记录进行查找。
作为一种可选的实施例,处理器10用于执行以下步骤根据第一信息表的状态查找待查询记录:检测第一信息表是否为锁定状态;若第一信息表为锁定状态,在第一信息表对应的记录中查找待查询记录;若第一信息表不为锁定状态,通过第一信息表存储的特征值查找待查询记录。
可选的,如果次元信息表被数据库的垃圾回收机制锁定,则次元信息表处于锁定状态。
作为一种可选的实施方式,如果处理器10检测到次元信息表处于锁定状态,也即当前不满一组的数据记录无法通过次元信息进行查询,处理器10直接访问查询列存表中不满一组的数据记录的每条数据记录,如果处理器10检测到次元信息表未处于锁定状态,则仍根据次元信息表存储的特征值进行查询。
实施例2
根据本发明实施例,还提供了一种数据库信息处理方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
需要说明的是,本实施例所提供的一种数据库信息处理方法可用于更新列存表的元信息的过程中,解决了现有的需要频繁更新元信息而导致元信息数据膨胀的技术问题。
具体的,本申请提供了如图2所示的数据库信息处理方法。图2是根据本发明实施例1的一种数据库信息处理方法的流程图,如图2所示,该方法包括如下步骤:
步骤S202,检测数据库是否有新增记录。
步骤S204,当检测到新增记录时,根据新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;
其中,多个信息表还包括第二信息表,第二信息表用于在第一信息表对应的记录数量超过第一预设值的情况下,存储第一信息表中的特征值。
此处需要说明的是,元信息是指的一条数据记录的值,也即,一条数据记录并没有最大值最小值之分,它的值是固定的,如100,多条记录之间才存在最大值和最小值,例如,值为100、101、102、103的数据记录之间最大值是103,最小值是100。
例如,第一信息表存储了最大值103,最小值100,当新增记录的值是99时,第一信息表中的最小值需要更新为99,最大值则不需进行更新操作。
但是现有的在更新数据记录的过程中,是将更新前的最小值“100”标记并保留,然后将更新的最小值“99”写入第一信息表,正由于这种更新处理方式,会导致元信息的数据膨胀的问题,在此情况下,本申请提供一种采用多张信息表的方式,其中的第二信息表(主元信息表),仅是新增特征值而不进行特征值的更新,以解决上述数据膨胀的问题。
表1是根据本申请实施例的一种主元信息表,如表1所示,该主元信息表存储有与列存表中的每组数据对应的记录的最大值和最小值。
组数据 |
min |
max |
0 |
x |
y |
1000 |
x5 |
y5 |
2000 |
x4 |
y4 |
表1
为了有效解决现有的一个元信息表频繁更新,造成元信息数据膨胀的问题,在一种可选的实施例中,如图3所示,可以但不限于采用两个元信息表进行功能划分,以元信息表为两个为例,可以为一个第一信息表,一个第二信息表,具体的,如图3所示,上述第一信息表为次元信息表;上述第二信息表为主元信息表。
作为一种可选的实施例,次元信息表可以用来存储新增加的数据记录的元信息,每新增加一条数据记录,确定是否需要更新一次该次元信息表的特征值,如图3所示,以1000条数据为一个数据组为例,若列存表中新增加的数据记录不满1000条,则将不满1000条数据记录的最大值和最小值,存储在次元信息表;若新增加的数据记录满1000条,则将该满1000条的数据记录的最大值和最小值,同步到主元信息表。
需要说明的是,次元信息表可以频繁的更新最大值(min值)和最小值(max值),主元信息表可以用来存储所有满1000条的数据记录(一个数据组)的最大值和最小值,主元信息表只会存储所有满一组的数据记录的最大值和最小值,不进行更新,从而可以有效的避免现有技术中,采用一个元信息表频繁更新特征值,会导致数据膨胀的问题。
此外,仍需要说明的是,可以通过设计多于两个的元信息表的方案来实现本申请实施例,例如,可以采用三个元信息表存储数据记录的特征值,具体的,可以设计一个主元信息表用于存储所有满一组的数据记录的最大值和最小值,一个次元信息表,用于存储满100条数据的一个数据分组中数据记录的最大值和最小值,另一个次元信息表,用于存储不满100条数据的数据记录的最大值和最小值,可以实现更加精细对数据记录进行更新和存储处理。
基于上述步骤S202至步骤S204可以获知,当检测到新增记录时,根据新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;其中,多个信息表还包括第二信息表,第二信息表用于在第一信息表对应的记录数量超过第一预设值的情况下,存储第一信息表中的特征值。
容易注意到的是,由于可以设置多个不同的信息表来存储与列存表中对应的数据记录的元信息,其中,多个信息表中的主元信息表只存储所有满一组的数据记录的最大值和最小值,不进行最大值和最小值的更新,在列存表中有新增数据时,由多个次元信息表来新增和更新数据记录的特征值,可以避免现有技术中,采用一个元信息表频繁更新特征值,会导致数据膨胀的问题。
通过本申请上述实施例所提供的方案,可以达到在新增和更新数据记录的特征值的过程中,避免元信息数据膨胀的目的,从而实现了优化采用列存储的数据库的性能的技术效果,进而解决了现有的需要频繁更新元信息而导致元信息数据膨胀的技术问题。
在一种可选的实施方式中,图4是根据本发明实施例的一种可选的数据库信息处理方法的步骤流程图,如图4所示,上述根据新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值,可以通过以下方法步骤实现:
步骤S402,从第一信息表中读取第一信息表存储的特征值;
步骤S404,将第一信息表存储的特征值与新增记录的特征值进行比较,得到比较结果;
步骤S406,在比较结果满足预定条件的情况下,更新第一信息表存储的特征值;
步骤S408,在比较结果不满足预定条件的情况下,不更新第一信息表存储的特征值。
可选的,读取第一信息表存储的特征值,也即读取次元信息表中与列存表中最后一组数据记录对应的最大值和最小值。
需要说明的是,由于新增记录的特征值是一个固定的值,因此可以将该新增记录的特征值,分别与第一信息表中的最大值和最小值相比较,若比较结果为:该新增记录的特征值小于最小值或者大于最大值,则确定比较结果满足上述预定条件。
此外,还存在一种可选的实施方式,第一信息表存储的特征值包括最大值和最小值;其中,图5是根据本发明实施例的一种可选的数据库信息处理方法的步骤流程图,如图5所示,将第一信息表存储的特征值与新增记录的特征值进行比较,可以通过以下方法步骤实现:
步骤S502,将第一信息表中的最大值和最小值分别与新增记录的特征值进行比较;
步骤S504,若比较结果为新增记录的特征值大于最大值或新增记录的特征值小于最小值,则确定比较结果满足预定条件。
可选的,上述第一信息表中的最大值和最小值,可以为次元信息表中与列存表中最后一组数据记录对应的最大值和最小值。
需要说明的是,由于在数据库列存表在新增数据时,可能会影响次元信息表中与列存表中最后一组数据记录对应的最大值和最小值,因此,需要将第一信息表中的最大值和最小值分别与新增记录的特征值进行比较。
在一种可选的实施例中,如果比较结果为新增记录的特征值大于最大值或新增记录的特征值小于最小值,则根据新增数据的特征值更新次元信息表的最大值或最小值,从而实现了有效更新次元信息表。
在一种可选的实施方式中,第一信息表存储了最大值103,最小值100,当新增记录的特征值是99时,第一信息表中的最小值需要更新为99,最大值则不需进行更新操作;当新增记录的特征值是105时,第一信息表中的最大值需要更新为105,最小值则不需进行更新操作。
由于数据库事务的实现是基于多版本并发控制(MVCC)的控制机制,因而,会出现新增数据和原始数据同时存在的问题,其中,原始数据已经不需要使用的情况下,会变成垃圾数据,这些垃圾数据无疑也会导致数据膨胀的问题。
为了解决上述技术问题,本申请提供了另外一种可选的实施方式,图6是根据本发明实施例的一种可选的数据库信息处理方法的步骤流程图,如图6所示,更新第一信息表存储的特征值之后,上述方法还包括如下步骤:
S602,检测第一信息表的大小;
S604,在第一信息表的大小大于第二预设值的情况下,删除第一信息表中设置有标记的特征值。
如图3所示,在检测到列存表中有新增数据记录,并更新次元信息表存储的特征值之后,可以对次元信息表的文件大小进行检测,以判断次元信息表是否出现了数据膨胀,在检测出次元信息表的文件大小大于或等于64M的情况下,表明当前次元信息表中可能存在垃圾数据过多,因此需要对次元信息表中的垃圾数据进行回收处理,以及时删除垃圾数据。
值得注意的是,由于在更新次元信息表存储的特征值时,保留和标记了次元信息表中与原始数据对应的特征值,因而,在检测到当前次元信息表存在数据膨胀现象时,可以删除该次元信息表中的带有标记的特征值。
需要说明的是,可以在每次更新次元信息表存储的特征值之后,检测该次元信息表的文件大小,可选的,还可以周期性的对该次元信息表的文件大小进行检测,或在收到指示检测该次元信息表的文件大小的检测指令后,对次元信息表的文件大小进行检测。
此外,还需要说明的是,关于上述第二预设值的大小,可以根据实际运行环境的需要或用户需求进行调整和设置,本申请所提供的技术方案可以实现即可,对此,本申请不进行具体的限定。
作为一种可选的实施方式,当接收到查询指令时,通过第二信息表存储的特征值判断第二信息表对应的记录中是否包含待查询记录,其中,查询指令中包含待查询记录;若第二信息表对应的记录中不包含待查询记录,根据第一信息表的状态查找待查询记录。
在一种可选的实施例中,数据库中的数据记录,可以以组为单位存储在列存表中,并且,列存表的数据记录与元信息表的特征值对应设置,因而可以通过元信息表来完成列存表中的数据记录查询。
作为一种可选的实施方式,在接到查询指令之后,首先根据主元信息表的存储的特征值,查询主元信息表对应的数据记录中是否包含待查询记录,在主元信息表对应的列存表的数据记录中不包含待查询记录的情况下,可以根据次元信息表的状态,对待查询记录进行查找。
在另一种可选的实施方式中,图7是根据本发明实施例的一种可选的数据库信息处理方法的步骤流程图,如图7所示,根据第一信息表的状态查找待查询记录,可以通过如下方法步骤实现:
S702,检测第一信息表是否为锁定状态;
S704,若第一信息表为锁定状态,在第一信息表对应的记录中查找待查询记录;
S706,若第一信息表不为锁定状态,通过第一信息表存储的特征值查找待查询记录。
可选的,如果次元信息表被数据库的垃圾回收机制锁定,则次元信息表处于锁定状态。
作为一种可选的实施方式,如果当前检测到次元信息表处于锁定状态,则不满一组的数据记录无法通过次元信息进行查询,而是直接访问查询列存表中不满一组的数据记录的每条数据记录,如果次元信息表没有处于锁定状态,则继续根据次元信息表存储的特征值进行查询。
在本申请实施例所提供的实施例中,数据库中的数据记录,可以以组为单位存储在列存表中,并且,列存表的数据记录与元信息表的特征值对应设置,因而可以通过元信息表来完成列存表中的数据记录查询。
如图8所示,本申请还提供了一种可选的数据库信息的查询方法,在一种可选的实施例中,用户可以发出查询指令对列存表中的数据记录进行查询,其中,1000条数据记录为一组,可以顺序对列存表中的多个数据组逐个进行查询,自第一数据组判断id=99是否在与该第一数据组对应的主元信息表存储的最大值和最小值区间内,如果判断得出id=99不在与该第一数据组对应的主元信息表存储的最大值和最小值区间内,则查询下一数据组;否则,则扫描列存表中第一数据组内的所有数据记录,依次类推,直至遍历完与主元信息表对应的列存表中所有的数据组。
需要说明的是,主元信息表存储的数据记录的特征值,并不是整个列存表的数据记录的特征值,不满一组的数据记录的特征值暂时存放在次元信息表中进行更新。
如图8所示,如果遍历完与主元信息表对应的列存表中所有的数据组,id=99均不在主元信息表的最大值和最小值区间内,则判断次元信息表的状态是否处于锁定状态,在次元信息表的状态处于锁定状态的情况下,强行扫描与该次元信息表对应的不满一组的数据组中的所有数据记录。
通过本申请上述可选实施例,可以达到对列存表中存储的数据记录进行查询的过程中,有效提高数据记录查询效率的目的,解决了现有技术中,采用一个元信息表频繁更新和查询,从而导致数据膨胀的技术问题。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
实施例3
根据本发明实施例,还提供了一种用于实施上述数据库信息处理方法的数据库信息处理装置,图9是根据本发明实施例的一种数据库信息处理装置的结构示意图,如图9所示,该装置包括:检测模块90和确定模块91,
其中,检测模块90,用于检测数据库是否有新增记录;确定模块91,用于当检测到新增记录时,根据新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;其中,多个信息表还包括第二信息表,第二信息表用于在第一信息表对应的记录数量超过第一预设值的情况下,存储第一信息表中的特征值。
此处需要说明的是,上述检测模块90和确定模块91对应于实施例1中的步骤S101至S102,该确定模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例中提供的计算机终端中。
容易注意到的是,由于可以设置多个不同的信息表来存储与列存表中对应的数据记录的元信息,其中,多个信息表中的主元信息表只存储所有满一组的数据记录的最大值和最小值,不进行最大值和最小值的新增和更新,在列存表中有新增数据时,由多个次元信息表来新增和更新数据记录的特征值,可以避免现有技术中,采用一个元信息表频繁更新特征值,会导致数据膨胀的问题。
通过本申请上述实施例所提供的方案,可以达到在新增和更新数据记录的特征值的过程中,避免元信息数据膨胀的目的,从而实现了优化采用列存储的数据库的性能的技术效果,进而解决了现有的需要频繁更新元信息而导致元信息数据膨胀的技术问题。
在一种可选的实施例中,如图9所示,上述确定模块91包括:读取模块911、比较模块913、第一执行模块915、第二执行模块917,其中,
读取模块911,用于从第一信息表中读取第一信息表存储的特征值;比较模块913,用于将第一信息表存储的特征值与新增记录的特征值进行比较,得到比较结果;第一执行模块915,用于在比较结果满足预定条件的情况下,更新第一信息表存储的特征值;第二执行模块917,用于在比较结果不满足预定条件的情况下,不更新第一信息表存储的特征值。
在一种可选的实施例中,第一执行模块915包括:标记模块,用于对第一信息表存储的特征值设置标记,并将新增记录的特征值写入第一信息表。
作为一种可选的实施方式,第一信息表存储的特征值包括最大值和最小值;其中,上述比较模块包括:比较子模块,用于将第一信息表中的最大值和最小值分别与新增记录的特征值进行比较;确定子模块,用于若比较结果为新增记录的特征值大于最大值或新增记录的特征值小于最小值,则确定比较结果满足预定条件。
在一种可选的实施例中,上述数据库信息处理装置还包括:第一检测模块,用于检测第一信息表的大小;删除模块,用于在第一信息表的大小大于第二预设值的情况下,删除第一信息表中设置有标记的特征值。
在一种可选的实施例中,上述数据库信息处理装置还包括:判断单元,用于当接收到查询指令时,通过第二信息表存储的特征值判断第二信息表对应的记录中是否包含待查询记录,其中,查询指令中包含待查询记录;查找单元,用于若第二信息表对应的记录中不包含待查询记录,根据第一信息表的状态查找待查询记录。
在一种可选的实施例中,查找单元包括:第二检测模块,用于检测第一信息表是否为锁定状态;第一查找子模块,用于若第一信息表为锁定状态,在第一信息表对应的记录中查找待查询记录;第二查找子模块,用于若第一信息表不为锁定状态,通过第一信息表存储的特征值查找待查询记录。
实施例4
本发明的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
图10示出了一种计算机终端的硬件结构框图。如图10所示,计算机终端12可以包括一个或多个(图中采用122a、122b,……,122n来示出)处理器122(处理器122可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器124、以及用于通信功能的传输装置126。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图10所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端12还可包括比图10中所示更多或者更少的组件,或者具有与图10所示不同的配置。
应当注意到的是上述一个或多个处理器122和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端12中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
处理器122可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:当检测到新增记录时,根据新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;其中,多个信息表还包括第二信息表,第二信息表用于在第一信息表对应的记录数量超过第一预设值的情况下,存储第一信息表中的特征值。
存储器124可用于存储应用软件的软件程序以及模块,如本申请实施例中的数据库信息处理方法对应的程序指令/数据存储装置,处理器122通过运行存储在存储器124内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据库信息处理方法。存储器124可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器124可进一步包括相对于处理器122远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端12。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置126用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端12的通信供应商提供的无线网络。在一个实例中,传输装置126包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置126可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端12的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图10所示的计算机终端12可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图10仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机终端12中的部件的类型。
在本实施例中,上述计算机终端可以执行数据库信息处理方法中以下步骤的程序代码:当检测到新增记录时,根据新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;其中,多个信息表还包括第二信息表,第二信息表用于在第一信息表对应的记录数量超过第一预设值的情况下,存储第一信息表中的特征值。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:当检测到新增记录时,根据新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;其中,多个信息表还包括第二信息表,第二信息表用于在第一信息表对应的记录数量超过第一预设值的情况下,存储第一信息表中的特征值。
可选的,上述处理器还可以执行如下步骤的程序代码:从第一信息表中读取第一信息表存储的特征值;将第一信息表存储的特征值与新增记录的特征值进行比较,得到比较结果;在比较结果满足预定条件的情况下,更新第一信息表存储的特征值;在比较结果不满足预定条件的情况下,不更新第一信息表存储的特征值。
可选的,上述处理器还可以执行如下步骤的程序代码:对第一信息表存储的特征值设置标记,并将新增记录的特征值写入第一信息表。
可选的,上述处理器还可以执行如下步骤的程序代码:第一信息表存储的特征值包括最大值和最小值;其中,将第一信息表存储的特征值与新增记录的特征值进行比较包括:将第一信息表中的最大值和最小值分别与新增记录的特征值进行比较;若比较结果为新增记录的特征值大于最大值或新增记录的特征值小于最小值,则确定比较结果满足预定条件。
可选的,上述处理器还可以执行如下步骤的程序代码:检测第一信息表的大小;在第一信息表的大小大于第二预设值的情况下,删除第一信息表中设置有标记的特征值。
可选的,上述处理器还可以执行如下步骤的程序代码:当接收到查询指令时,通过第二信息表存储的特征值判断第二信息表对应的记录中是否包含待查询记录,其中,查询指令中包含待查询记录;若第二信息表对应的记录中不包含待查询记录,根据第一信息表的状态查找待查询记录。
可选的,上述处理器还可以执行如下步骤的程序代码:检测第一信息表是否为锁定状态;若第一信息表为锁定状态,在第一信息表对应的记录中查找待查询记录;若第一信息表不为锁定状态,通过第一信息表存储的特征值查找待查询记录。
容易注意到,采用本发明实施例,提供了一种数据库信息处理方法的方案。通过当检测到新增记录时,根据新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;其中,多个信息表还包括第二信息表,第二信息表用于在第一信息表对应的记录数量超过第一预设值的情况下,存储第一信息表中的特征值,达到了在频繁更新特征值的过程中,避免信息数据膨胀的目的,从而实现了优化采用列存储的数据库的性能的技术效果,进而解决了现有的需要频繁更新元信息而导致元信息数据膨胀的技术问题。
本领域普通技术人员可以理解,图10所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图10其并不对上述电子装置的结构造成限定。例如,计算机终端12还可包括比图10中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图10所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例5
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例1所提供的数据库信息处理方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:当检测到新增记录时,根据新增记录确定是否更新与数据库相关的多个信息表中的第一信息表存储的特征值;其中,多个信息表还包括第二信息表,第二信息表用于在第一信息表对应的记录数量超过第一预设值的情况下,存储第一信息表中的特征值。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:从第一信息表中读取第一信息表存储的特征值;将第一信息表存储的特征值与新增记录的特征值进行比较,得到比较结果;在比较结果满足预定条件的情况下,更新第一信息表存储的特征值;在比较结果不满足预定条件的情况下,不更新第一信息表存储的特征值。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:对第一信息表存储的特征值设置标记,并将新增记录的特征值写入第一信息表。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:第一信息表存储的特征值包括最大值和最小值;其中,将第一信息表存储的特征值与新增记录的特征值进行比较包括:将第一信息表中的最大值和最小值分别与新增记录的特征值进行比较;若比较结果为新增记录的特征值大于最大值或新增记录的特征值小于最小值,则确定比较结果满足预定条件。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:检测第一信息表的大小;在第一信息表的大小大于第二预设值的情况下,删除第一信息表中设置有标记的特征值。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:当接收到查询指令时,通过第二信息表存储的特征值判断第二信息表对应的记录中是否包含待查询记录,其中,查询指令中包含待查询记录;若第二信息表对应的记录中不包含待查询记录,根据第一信息表的状态查找待查询记录。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:检测第一信息表是否为锁定状态;若第一信息表为锁定状态,在第一信息表对应的记录中查找待查询记录;若第一信息表不为锁定状态,通过第一信息表存储的特征值查找待查询记录。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。