存储数据对象的方法及装置与流程

文档序号:13236722阅读:176来源:国知局
本发明涉及数据存储
技术领域
:,更具体地讲,涉及一种存储数据对象的方法及装置。
背景技术
::现有数据库或文件系统中通常使用b/b+树、哈希表、跳表等作为其缓存管理的方式,数据通常以对象的形式与这些结构相关联。以b/b+树为例,各个数据对象将被分别存储在各个树节点中,在b+树中,数据信息被移至叶子节点,b+树的内部节点只被用来存储相关key值范围。由于数据节点较大,通常会占用很多内存,在进行大数据分析时,常常会导致内存不足,此时数据库或文件系统需根据相关置换算法(例如,lru(leastrecentlyused,近期最少使用)算法)废弃内存数据页面,在内存页被废弃之后,b树或b+树会根据废弃数据进行b树或b+树的调整,保证b树或b+树的平衡性。在新的数据被载入内存时,b树或b+树结构发生变化,此时也需要进行树的调整。哈希表和跳表中也存在类似的操作方式。即,现有的存储数据对象的方式,使得加载到缓存区的数据对象(例如:b/b+树的叶子节点)对缓存空间消耗过大,从而吞噬很大一部分内存,而内存不足则导致:数据检索出现较多的缓存缺失、页面被频繁地换入换出、内存结构被频繁地调整、系统花费大量cpu时间处理页面置换工作,使得客户请求及i/o请求无法得到及时处理。并且,还导致了需要数据库或文件系统在缓存管理上进行复杂耗时的操作,降低了数据库或文件系统的性能。技术实现要素:本发明的示例性实施例在于提供一种存储数据对象的方法及装置,其能够将数据对象的检索所需及访问频率较高的数据、与检索相关度较低的大数据块进行分离存储,从而便于仅将数据对象的检索所需、访问频率较高的数据加载到缓存区,能够在有效缩减各数据对象所占用的缓存空间的同时,保证数据检索的速度,从而解决因数据对象占用较多的内存所导致的各种问题。根据本发明的示例性实施例,提供一种存储数据对象的方法,包括:当接收到对数据对象的写请求时,将所述数据对象的数据拆分为第一部分数据和第二部分数据,其中,所述第一部分数据包括:所述数据对象的数据字段,所述第二部分数据包括:所述数据对象的元数据;将所述第一部分数据写入存储于第一外部存储设备的第一数据文件;将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入存储于第二外部存储设备的第二数据文件,其中,所述第一外部存储设备和所述第二外部存储设备为同一外部存储设备或不同的外部存储设备。可选地,所述第一部分数据包括的数据字段的长度大于预定阈值;所述第二部分数据还包括:所述数据对象中长度不大于预定阈值的数据字段。可选地,在将所述第一部分数据写入存储于第一外部存储设备的第一数据文件之后,且在将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入存储于第二外部存储设备的第二数据文件之前,所述方法还包括:将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入文件系统的日志文件;将所述日志文件存储到所述第一外部存储设备或所述第二外部存储设备。可选地,所述方法还包括:当接收到对所述数据对象的读请求时,将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据从所述第二外部存储设备加载到内存的缓存区。可选地,所述第一部分数据在所述第一外部存储设备中的位置信息为:所述第一部分数据的结构描述信息在所述第一外部存储设备中的位置信息,其中,所述结构描述信息包括:所述第一部分数据包括的各数据字段在所述第一数据文件中的位置信息和长度信息;或者,所述第一部分数据在所述第一外部存储设备中的位置信息为:所述第一部分数据包括的各数据字段分别在所述第一外部存储设备中的位置信息和长度信息。根据本发明的另一示例性实施例,提供一种存储数据对象的装置,包括:拆分单元,当接收到对数据对象的写请求时,将所述数据对象的数据拆分为第一部分数据和第二部分数据,其中,所述第一部分数据包括:所述数据对象的数据字段,所述第二部分数据包括:所述数据对象的元数据;第一写入单元,将所述第一部分数据写入存储于第一外部存储设备的第一数据文件;第二写入单元,将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入存储于第二外部存储设备的第二数据文件,其中,所述第一外部存储设备和所述第二外部存储设备为同一外部存储设备或不同的外部存储设备。可选地,所述第一部分数据包括的数据字段的长度大于预定阈值;所述第二部分数据还包括:所述数据对象中长度不大于预定阈值的数据字段。可选地,所述装置还包括:第三写入单元,在第一写入单元将所述第一部分数据写入存储于第一外部存储设备的第一数据文件之后,且在第二写入单元将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入存储于第二外部存储设备的第二数据文件之前,将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入文件系统的日志文件;日志文件存储单元,将所述日志文件存储到所述第一外部存储设备或所述第二外部存储设备。可选地,所述装置还包括:加载单元,当接收到对所述数据对象的读请求时,将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据从所述第二外部存储设备加载到内存的缓存区。可选地,所述第一部分数据在所述第一外部存储设备中的位置信息为:所述第一部分数据的结构描述信息在所述第一外部存储设备中的位置信息,其中,所述结构描述信息包括:所述第一部分数据包括的各数据字段在所述第一数据文件中的位置信息和长度信息;或者,所述第一部分数据在所述第一外部存储设备中的位置信息为:所述第一部分数据包括的各数据字段分别在所述第一外部存储设备中的位置信息和长度信息。根据本发明的另一示例性实施例,提供一种计算机可读存储介质,存储有计算机程序,其中,所述计算机程序被配置为使计算机的处理器执行下述步骤:当接收到对数据对象的写请求时,将所述数据对象的数据拆分为第一部分数据和第二部分数据,其中,所述第一部分数据包括:所述数据对象的数据字段,所述第二部分数据包括:所述数据对象的元数据;将所述第一部分数据写入存储于第一外部存储设备的第一数据文件;将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入存储于第二外部存储设备的第二数据文件,其中,所述第一外部存储设备和所述第二外部存储设备为同一外部存储设备或不同的外部存储设备。在根据本发明示例性实施例的存储数据对象的方法及装置中,提出数据对象的新的组织形式,将数据对象的检索所需及访问频率较高的数据、与检索相关度较低的大数据块进行分离存储。从而便于仅将数据对象的检索所需、访问频率较高的数据加载到缓存区,能够有效地缩减各数据对象所占用的缓存空间、提高内存缓存命中率、减少缓存换入换出操作、减少缓存结构的调整、便于系统及时处理客户请求及i/o请求、提升数据库和/或文件系统的整体性能。将在接下来的描述中部分阐述本发明总体构思另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本发明总体构思的实施而得知。附图说明通过下面结合示例性地示出实施例的附图进行的描述,本发明示例性实施例的上述和其他目的和特点将会变得更加清楚,其中:图1示出根据本发明示例性实施例的存储数据对象的方法的流程图;图2示出现有的存储数据对象的方法的示例;图3示出根据本发明示例性实施例的存储数据对象的方法的示例;图4示出根据本发明示例性实施例的查询数据对象的数据字段的方法的流程图;图5示出根据本发明示例性实施例的更新数据对象的数据字段的方法的流程图;图6示出根据本发明示例性实施例的删除数据对象的数据字段的方法的流程图;图7示出根据本发明示例性实施例的新增数据对象的数据字段的方法的流程图;图8示出根据本发明示例性实施例的存储数据对象的装置的框图。具体实施方式现将详细参照本发明的实施例,所述实施例的示例在附图中示出,其中,相同的标号始终指的是相同的部件。以下将通过参照附图来说明所述实施例,以便解释本发明。图1示出根据本发明示例性实施例的存储数据对象的方法的流程图。参照图1,在步骤s101,当接收到对数据对象的写请求时,将所述数据对象的数据拆分为第一部分数据和第二部分数据,其中,所述第一部分数据包括:所述数据对象的数据字段,所述第二部分数据包括:所述数据对象的元数据。这里,数据对象可理解为相互关联的一组数据或相互关联的数据的集合。例如,可将记录了关于一用户的至少一种属性信息的集合看作一个数据对象。数据对象可包括多个元数据和多个数据字段,每个数据字段可对应至少一个元数据。元数据用于描述数据,主要是描述数据属性的信息。作为示例,所述数据对象的元数据可包括:所述数据对象的索引字段及索引字段的描述信息、所述数据对象的各数据字段的描述信息。例如,数据字段的描述信息可以是数据字段的名称、类型等信息。索引字段的描述信息可以是索引字段的名称、类型等信息。例如,当一数据对象是记录了关于一用户的至少一种属性信息的集合时,该数据对象的索引字段的描述信息可以是:用户id;索引字段可以是:用户id的具体值;各数据字段的描述信息可以是:身份证号、电话号码、住址等名称或类型,相应地,各数据字段可以是:该用户的身份证号的具体值、该用户的电话号码的具体值、该用户的住址的具体值等。作为示例,所述第一部分数据可包括:所述数据对象中全部数据字段;所述第二部分数据可包括:所述数据对象中包括的元数据。作为另一示例,所述第一部分数据包括的数据字段的长度可大于预定阈值;所述第二部分数据还可包括:所述数据对象中长度不大于预定阈值的数据字段。换言之,所述第一部分数据可包括:所述数据对象中长度大于预定阈值的数据字段;所述第二部分数据可包括:所述数据对象中包括的元数据和所述数据对象中长度不大于预定阈值的数据字段。这里,应该理解,可根据具体的实际情况(例如,内存的大小等)来设置所述预定阈值的大小。在步骤s102,将所述第一部分数据写入存储于第一外部存储设备的第一数据文件。在步骤s103,将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入存储于第二外部存储设备的第二数据文件,其中,所述第一外部存储设备和所述第二外部存储设备为同一外部存储设备或不同的外部存储设备。换言之,将数据对象的检索所需及访问频率较高的数据、与占用空间较大的数据字段分开存储。应该理解,不同数据对象的第一部分数据也可写入同一第一数据文件中,不同数据对象的第一部分数据在第一外部存储设备中的位置信息和第二部分数据也可写入同一第二数据文件中。作为示例,第一外部存储设备可以是高速外部存储设备。作为优选示例,第一外部存储设备可以是固态硬盘(ssd,solidstatedrives)。例如,可以是satassd,nvmessd等。从而可利用固态硬盘的高宽带和低延迟的特性,快速地从其读取所需的数据字段。此外,还能够提高固态硬盘的利用率。作为示例,第二外部存储设备可以是高速外部存储设备(例如,固态硬盘等)、磁盘等。作为示例,所述第一部分数据在所述第一外部存储设备中的位置信息可为:所述第一部分数据的结构描述信息在所述第一外部存储设备中的位置信息。这里,所述第一部分数据的结构描述信息可理解为所述第一部分数据在第一数据文件中的具体组织形式的描述信息。作为示例,所述第一部分数据的结构描述信息可包括:所述第一部分数据包括的各数据字段在第一数据文件中的位置信息和长度信息。作为另一示例,所述第一部分数据在所述第一外部存储设备中的位置信息可为:所述第一部分数据包括的各数据字段分别在所述第一外部存储设备中的位置信息和长度信息。需要说明的是,在确定将所述第一部分数据写入第一数据文件中,且第一部分数据写入第一数据文件的具体位置后,对于系统来说第一数据文件的地址是可以获知的,即可获知第一部分数据在所述第一外部存储设备中的位置信息。获知第一部分数据在第一外部存储设备中的位置信息,对于本领域技术人员来说是公知技术,本申请在此不再赘述。此外,作为优选示例,可在第一部分数据已完全存储到第一外部存储设备(即,已全部落盘)之后,再执行步骤s103。此外,作为示例,根据本发明示例性实施例的存储数据对象的方法还可包括:在步骤s102之后,且在步骤s103之前,仅将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入文件系统的日志文件,并将所述日志文件存储到所述第一外部存储设备或所述第二外部存储设备。即,不将所述第一部分数据写入文件系统的日志文件。作为优选示例,可将所述日志文件存储到第二外部存储设备,即,将所述日志文件与所述第二数据文件存储于同一外部存储设备中。现有技术中通常将数据对象的所有数据均写入文件系统的日志文件,因此存在日志文件占用较多外部存储设备空间、致使数据写速度降低的问题,而根据本发明的上述示例性实施例,能够有效减小文件系统的日志文件所占用的外部存储设备空间、提高数据写速度。作为优选示例,根据本发明示例性实施例的存储数据对象的方法还可包括:当接收到对所述数据对象的数据字段的读请求时,将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据从所述第二外部存储设备加载到内存的缓存区。即,仅将数据对象的检索所需、访问频率较高的部分数据加载到缓存区,以在缩减各数据对象所占用的缓存空间的同时,保证大部分检索所需的信息能够从缓存获取,从而不影响数据检索速度。作为示例,在内存的缓存区中,可以b树、b+树、哈希表(hashtable)、跳表(skiplist)形式之一来管理所述加载到缓存区的数据对象的数据。下面以nosql数据库mongodb为例,mongodb之中数据对象以文档形式(类似json形式的可嵌套k-v对组)进行存储,文档内包含了一组key-value对。mongodb上的增删查改都以文档作为基本单位进行。如图2所示,在现有技术中,当数据库接收到对数据对象的写请求时,直接交由存储引擎将数据对象的所有数据一起存储到外部存储设备。根据本发明的示例性实施例,如图3所示,当数据库接收到对数据对象的写请求时,可拦截待写入的数据对象,将该数据对象的数据拆分为第一部分数据和第二部分数据,此时,文档中只保留其元数据(例如,包括:索引字段及其描述信息(_id:user123456789)、各数据字段的描述信息(field1、field2…))和值域较短的数据字段(即,该数据对象的第二部分数据),同时会在文档中的相应位置处增加该数据对象的第一部分数据在第一外部存储设备中的位置信息,例如,该数据对象的第一部分数据的结构描述信息在第一外部存储设备中的位置信息(例如,fdindex:2及header:40960,其中,前者指示第一数据文件的序号,后者指示该数据对象的第一部分数据的结构描述信息在第一数据文件中的偏移量)。然后,可将该数据对象的第一部分数据写入存储于第一外部存储设备的第一数据文件中,其中,第一数据文件中的描述信息数据块可存储该数据对象的第一部分数据的结构描述信息(即,第一部分数据包括的各数据字段在第一数据文件中的位置信息和长度信息)。优选地,可在该数据对象的第一部分数据完全落盘之后,再将重构过的文档继续交由存储引擎进行后续处理,例如,存储引擎可按照现有的方式将重构过的文档写入存储于第二外部存储设备的第二数据文件。图4示出根据本发明示例性实施例的查询数据对象的数据字段的方法的流程图。参照图4,在步骤s201,当接收到对数据对象中的至少一个数据字段的查询请求时,将数据对象的第一部分数据在第一外部存储设备中的位置信息和数据对象的第二部分数据从第二外部存储设备加载到内存的缓存区。在步骤s202,从内存的缓存区中读取与被查询的数据字段对应的元数据和被查询的数据字段在第一外部存储设备中的位置信息。例如,与被查询的数据字段对应的元数据可以是被查询的数据字段的描述信息(例如,名称、类型等)。在步骤s203,根据读取的位置信息从第一外部存储设备读取被查询的数据字段。具体地,作为示例,在数据对象的第一部分数据的位置信息为第一部分数据的结构描述信息在第一外部存储设备中的位置信息的情况下,在步骤s202,可读取数据对象的第一部分数据的结构描述信息在第一外部存储设备中的位置信息,然后在步骤s203,首先根据第一部分数据的结构描述信息的位置信息来读取第一部分数据的结构描述信息,然后从中读取被查询的数据字段在第一数据文件中的位置信息和长度信息,并根据该位置信息和长度信息读取被查询的数据字段。作为另一示例,在数据对象的第一部分数据的位置信息为第一部分数据包括的各数据字段分别在第一外部存储设备中的位置信息和长度信息的情况下,在步骤s202,可直接读取被查询的数据字段的位置信息和长度信息,并在步骤s203,可直接根据读取的位置信息从第一外部存储设备读取被查询的数据字段。在步骤s204,将读取的元数据和读取的数据字段进行重组并返回重组后的数据。例如,可将重组后的数据填入查询请求的返回列表,然后可调用返回函数完成数据的返回。作为示例,当数据对象的第一部分数据包括:数据对象中长度大于预定阈值的数据字段;数据对象的第二部分数据包括:数据对象中包括的元数据和数据对象中长度不大于预定阈值的数据字段时,步骤s202可包括:确定内存的缓存区中是否存储有被查询的数据字段,其中,当确定内存的缓存区中没有存储被查询的数据字段时,从内存的缓存区中读取与被查询的数据字段对应的元数据和被查询的数据字段在第一外部存储设备中的位置信息;当确定内存的缓存区中存储有被查询的数据字段时,从内存的缓存区中读取被查询的数据字段及与其对应的元数据,然后直接执行步骤s204。图5示出根据本发明示例性实施例的更新数据对象的数据字段的方法的流程图。参照图5,在步骤s301,当接收到对数据对象中的至少一个数据字段的更新请求时,将更新的数据字段写入存储于第一外部存储设备的第一数据文件。在步骤s302,从第一数据文件中删除旧的数据字段。即,采用数据顺序追加写入方式来进行更新,以此将数据的随机更新操作变换成顺序操作,以适合ssd的特性。在步骤s303,将旧的数据字段在第一外部存储设备中的位置信息替换为更新的数据字段在第一外部存储设备中的位置信息。具体地,作为示例,在数据对象的第一部分数据的位置信息为第一部分数据的结构描述信息在第一外部存储设备中的位置信息的情况下,在步骤s303,可在第一部分数据的结构描述信息中,将旧的数据字段在第一数据文件中的位置信息和长度信息替换为更新的数据字段在第一数据文件中的位置信息和长度信息。作为另一示例,在数据对象的第一部分数据的位置信息为第一部分数据包括的各数据字段分别在第一外部存储设备中的位置信息和长度信息的情况下,在步骤s303,可在第二数据文件中,将旧的数据字段在第一外部存储设备中的位置信息和长度信息替换为更新的数据字段在第一外部存储设备中的位置信息和长度信息。当数据对象的第一部分数据包括:数据对象中长度大于预定阈值的数据字段;数据对象的第二部分数据包括:数据对象中包括的元数据和数据对象中长度不大于预定阈值的数据字段时,上述示例性实施例的更新数据对象的数据字段的方法适用于旧的数据字段的长度和更新的数据字段的长度均大于所述预定阈值的情况。作为示例,当旧的数据字段的长度和更新的数据字段的长度均不大于预定阈值时,可在第二数据文件中将旧的数据字段替换为更新的数据字段。作为示例,当旧的数据字段的长度大于预定阈值,且更新的数据字段的长度不大于预定阈值时,可从第一数据文件中删除旧的数据字段、从第二数据文件中相应地删除其位置信息和长度信息,并将更新的数据字段写入第二数据文件。作为示例,当旧的数据字段的长度不大于预定阈值,且更新的数据字段的长度大于预定阈值时,可从第二数据文件中删除旧的数据字段、将更新的数据字段写入第一数据文件、并将更新的数据字段在第一外部存储设备中的位置信息和长度信息写入第二数据文件。图6示出根据本发明示例性实施例的删除数据对象的数据字段的方法的流程图。参照图6,在步骤s401,当接收到对数据对象中的至少一个数据字段的删除请求时,从第一数据文件中删除请求删除的数据字段。在步骤s402,删除请求删除的数据字段在第一外部存储设备中的位置信息和长度信息。具体地,作为示例,在数据对象的第一部分数据的位置信息为第一部分数据的结构描述信息在第一外部存储设备中的位置信息的情况下,在步骤s402,可从第一部分数据的结构描述信息中删除请求删除的数据字段在第一数据文件中的位置信息和长度信息。作为另一示例,在数据对象的第一部分数据的位置信息为第一部分数据包括的各数据字段分别在第一外部存储设备中的位置信息和长度信息的情况下,在步骤s402,可从第二数据文件中删除请求删除的数据字段在第一外部存储设备中的位置信息和长度信息。在步骤s403,从第二数据文件中删除与请求删除的数据字段对应的元数据。当数据对象的第一部分数据包括:数据对象中长度大于预定阈值的数据字段;数据对象的第二部分数据包括:数据对象中包括的元数据和数据对象中长度不大于预定阈值的数据字段时,上述示例性实施例的删除数据对象的数据字段的方法适用于被删除的数据字段的长度大于预定阈值的情况。此外,作为示例,当请求删除的数据字段的长度不大于预定阈值时,可直接从第二数据文件中删除请求删除的数据字段及与其对应的元数据。图7示出根据本发明示例性实施例的新增数据对象的数据字段的方法的流程图。参照图7,在步骤s501,当接收到对数据对象的至少一个数据字段的新增请求时,将新增的数据字段写入存储于第一外部存储设备的第一数据文件。在步骤s502,将与新增的数据字段对应的元数据写入存储于第二外部存储设备的第二数据文件。在步骤s503,存储新增的数据字段在第一外部存储设备中的位置信息和长度信息。具体说来,作为示例,在数据对象的第一部分数据的位置信息为第一部分数据的结构描述信息在第一外部存储设备中的位置信息的情况下,将新增的数据字段在第一数据文件中的位置信息和长度信息存储到数据对象的第一部分数据的结构描述信息中。作为另一示例,在数据对象的第一部分数据的位置信息为第一部分数据包括的各数据字段分别在第一外部存储设备中的位置信息和长度信息的情况下,将新增的数据字段在第一外部存储设备中的位置信息和长度信息写入第二数据文件。应该理解,当数据对象的第一部分数据包括:数据对象中长度大于预定阈值的数据字段;数据对象的第二部分数据包括:数据对象中包括的元数据和数据对象中长度不大于预定阈值的数据字段时,步骤s501可包括:当接收到对数据对象的至少一个数据字段的新增请求时,确定新增的数据字段的长度是否大于预定阈值,其中,当确定长度大于预定阈值时,将新增的数据字段写入存储于第一外部存储设备的第一数据文件;当确定长度不大于预定阈值时,可直接将新增的数据字段及与其对应的元数据写入存储于第二外部存储设备的第二数据文件。图8示出根据本发明示例性实施例的存储数据对象的装置的框图。如图8所示,根据本发明示例性实施例的存储数据对象的装置包括:拆分单元101、第一写入单元102和第二写入单元103。拆分单元101用于当接收到对数据对象的写请求时,将所述数据对象的数据拆分为第一部分数据和第二部分数据,其中,所述第一部分数据包括:所述数据对象的数据字段,所述第二部分数据包括:所述数据对象的元数据。作为示例,所述数据对象的元数据可包括:所述数据对象的索引字段及索引字段的描述信息、所述数据对象的各数据字段的描述信息。作为示例,所述第一部分数据可包括:所述数据对象中全部数据字段;所述第二部分数据可包括:所述数据对象中包括的元数据。作为另一示例,所述第一部分数据包括的数据字段的长度可大于预定阈值;所述第二部分数据还可包括:所述数据对象中长度不大于预定阈值的数据字段。换言之,所述第一部分数据可包括:所述数据对象中长度大于预定阈值的数据字段;所述第二部分数据可包括:所述数据对象中包括的元数据和所述数据对象中长度不大于预定阈值的数据字段。这里,应该理解,可根据具体的实际情况(例如,内存的大小等)来设置所述预定阈值的大小。第一写入单元102用于将所述第一部分数据写入存储于第一外部存储设备的第一数据文件。第二写入单元103用于将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入存储于第二外部存储设备的第二数据文件,其中,所述第一外部存储设备和所述第二外部存储设备为同一外部存储设备或不同的外部存储设备。作为示例,所述第一部分数据在所述第一外部存储设备中的位置信息可为:所述第一部分数据的结构描述信息在所述第一外部存储设备中的位置信息。这里,所述第一部分数据的结构描述信息可理解为所述第一部分数据在第一数据文件中的具体组织形式的描述信息。作为示例,所述第一部分数据的结构描述信息可包括:所述第一部分数据包括的各数据字段在第一数据文件中的位置信息和长度信息。作为另一示例,所述第一部分数据在所述第一外部存储设备中的位置信息可为:所述第一部分数据包括的各数据字段分别在所述第一外部存储设备中的位置信息和长度信息。作为示例,根据本发明示例性实施例的存储数据对象的装置还可包括:加载单元(未示出)。加载单元用于当接收到对所述数据对象的读请求时,将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据从所述第二外部存储设备加载到内存的缓存区。作为示例,根据本发明示例性实施例的存储数据对象的装置还可包括:第三写入单元(未示出)和日志文件存储单元(未示出)。第三写入单元用于在第一写入单元102将所述第一部分数据写入存储于第一外部存储设备的第一数据文件之后,且在第二写入单元103将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入存储于第二外部存储设备的第二数据文件之前,将所述第一部分数据在所述第一外部存储设备中的位置信息和所述第二部分数据写入文件系统的日志文件。日志文件存储单元用于将所述日志文件存储到所述第一外部存储设备或所述第二外部存储设备。作为示例,根据本发明示例性实施例的存储数据对象的装置还可包括:加载单元(未示出)、读取单元(未示出)和返回单元(未示出)。加载单元用于当对数据对象中的至少一个数据字段的查询请求被接收到时,将数据对象的第一部分数据在第一外部存储设备中的位置信息和数据对象的第二部分数据从第二外部存储设备加载到内存的缓存区。读取单元用于从内存的缓存区中读取与被查询的数据字段对应的元数据和被查询的数据字段在第一外部存储设备中的位置信息,并根据读取的位置信息从第一外部存储设备读取被查询的数据字段。返回单元用于将读取的元数据和读取的数据字段进行重组并返回重组后的数据。作为示例,根据本发明示例性实施例的存储数据对象的装置还可包括:字段删除单元(未示出)和位置信息更新单元(未示出)。作为示例,当对数据对象中的至少一个数据字段的更新请求被接收到时,第一写入单元102将更新的数据字段写入存储于第一外部存储设备的第一数据文件。字段删除单元用于从第一数据文件中删除旧的数据字段。位置信息更新单元用于将旧的数据字段在第一外部存储设备中的位置信息替换为更新的数据字段在第一外部存储设备中的位置信息。作为示例,根据本发明示例性实施例的存储数据对象的装置还可包括:字段删除单元(未示出)、位置信息更新单元(未示出)和元数据删除单元(未示出)。字段删除单元用于当对数据对象中的至少一个数据字段的删除请求被接收到时,从第一外部存储设备的第一数据文件中删除请求删除的数据字段。位置信息更新单元用于删除请求删除的数据字段在第一外部存储设备中的位置信息。元数据删除单元用于从第二外部存储设备的第二数据文件中删除与请求删除的数据字段对应的元数据。此外,作为示例,当对数据对象的至少一个数据字段的新增请求被接收到时,第一写入单元102可将新增的数据字段写入存储于第一外部存储设备的第一数据文件;在数据对象的第一部分数据的位置信息为第一部分数据的结构描述信息在第一外部存储设备中的位置信息的情况下,第一写入单元102可将新增的数据字段在第一数据文件中的位置信息和长度信息存储到数据对象的第一部分数据的结构描述信息中,并且,第二写入单元103可将与新增的数据字段对应的元数据写入存储于第二外部存储设备的第二数据文件;在数据对象的第一部分数据的位置信息为第一部分数据包括的各数据字段分别在第一外部存储设备中的位置信息和长度信息的情况下,第二写入单元103可将新增的数据字段在第一外部存储设备中的位置信息和与新增的数据字段对应的元数据写入第二数据文件。应该理解,根据本发明示例性实施例的存储数据对象的装置的具体实现方式可参照结合图1-图7描述的相关具体实现方式来实现,在此不再赘述。作为示例,根据本发明的示例性实施例还提供一种计算机可读存储介质,存储有计算机程序,其中,所述计算机程序可被配置为使计算机的处理器执行如上述示例性实施例所述的存储数据对象的方法。根据本发明示例性实施例的存储数据对象的方法及装置,提出数据对象的新的组织形式,将数据对象的检索所需及访问频率较高的数据、与检索相关度较低的大数据块进行分离存储,从而可在接收到对数据对象的读请求时,仅将数据对象的检索所需、访问频率较高的数据加载到缓存区,以能够有效地缩减各数据对象所占用的缓存空间,因此内存中可以存放更多的元数据,从而b树或哈希表等具有更完整的结构、因此不需要频繁地进行结构上的调整,处理器也将有更多的时间处理业务。并且,能够有效提高固态硬盘的利用率。此外,应该理解,根据本发明示例性实施例的存储数据对象的装置中的各个单元可被实现硬件组件和/或软件组件。本领域技术人员根据限定的各个单元所执行的处理,可以例如使用现场可编程门阵列(fpga)或专用集成电路(asic)来实现各个单元。此外,根据本发明示例性实施例的存储数据对象的方法可以被实现为计算机可读记录介质中的计算机代码。本领域技术人员可以根据对上述方法的描述来实现所述计算机代码。当所述计算机代码在计算机中被执行时实现本发明的上述方法。虽然已表示和描述了本发明的一些示例性实施例,但本领域技术人员应该理解,在不脱离由权利要求及其等同物限定其范围的本发明的原理和精神的情况下,可以对这些实施例进行修改。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1