CN104915298B - 关系链处理方法及装置 - Google Patents
关系链处理方法及装置 Download PDFInfo
- Publication number
- CN104915298B CN104915298B CN201410094014.4A CN201410094014A CN104915298B CN 104915298 B CN104915298 B CN 104915298B CN 201410094014 A CN201410094014 A CN 201410094014A CN 104915298 B CN104915298 B CN 104915298B
- Authority
- CN
- China
- Prior art keywords
- relation chain
- metadata
- storage
- memory space
- subspace
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种关系链处理方法及装置,属于数据存储领域。所述方法包括:接收操作请求,操作请求包含元数据以及关系链标识;获取预存的与关系链标识对应的关系链的存储类型;查询与存储类型对应的存储空间,根据存储空间中的该关系链对元数据进行处理。本发明通过关系链存储类型所对应的存储空间中的该关系链,对操作请求中携带的元数据进行处理;解决了现有技术中使用全内存存储长度达到几千万的超长关系链,会导致成本过高的问题;达到了可以降低存储占用的存储成本。
Description
技术领域
本发明涉及数据存储领域,特别涉及一种关系链处理方法及装置。
背景技术
关系链是社交类应用的基础数据,关系链通常由至少一个元数据组成,元数据可以为用户标识或用户名等。
随着社交类应用的普及,用户对应的关系链也越复杂,因此对于关系链的存储也成为一个难题。在传统的存储关系链的过程中,通常将关系链存储在内存中,以满足社交类应用对关系链快速读取的要求。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:使用全内存存储长度达到几千万的超长关系链,会导致成本过高。
发明内容
为了解决现有技术中使用全内存存储长度达到几千万的超长关系链,会导致成本过高的问题,本发明实施例提供了一种关系链处理方法及装置。所述技术方案如下:
第一方面,提供了一种关系链处理方法,所述方法包括:
接收操作请求,所述操作请求包含元数据以及关系链标识;
获取预存的与所述关系链标识对应的关系链的存储类型;
查询与所述存储类型对应的存储空间,根据所述存储空间中的所述关系链对所述元数据进行处理。
第二方面,提供了一种关系链处理装置,所述装置包括:
接收模块,用于接收操作请求,所述操作请求包含元数据以及关系链标识;
获取模块,用于获取预存的与所述关系链标识对应的关系链的存储类型;
处理模块,用于查询与所述存储类型对应的存储空间,根据所述存储空间中的所述关系链对所述元数据进行处理。
本发明实施例提供的技术方案带来的有益效果是:
通过关系链的存储类型,确定对应的存储空间,根据该存储空间中的关系链对操作请求中携带的元数据进行处理;解决了现有技术中使用全内存存储长度达到几千万的超长关系链,会导致成本过高的问题;在写入元数据时,可根据关系链的存储类型选择将元数据写入内存或硬盘,由于硬盘成本比较低,因此达到了可以降低存储占用的存储成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例中提供的关系链处理方法所涉及的实施环境示意图;
图2是本发明一个实施例中提供的关系链处理方法的方法流程图;
图3是本发明另一个实施例中提供的关系链处理方法的方法流程图;
图4A是本发明再一个实施例中提供的关系链处理方法的方法流程图;
图4B是本发明部分实施例中提供的不同存储类型的示意图;
图4C是本发明部分实施例中提供的元数据迁移时的示意图;
图4D是本发明部分实施例中提供的在图4C所示的元数据迁移之后进行下一步迁移的示意图;
图5是本发明一个实施例中提供的关系链处理装置的结构示意图;
图6是本发明另一个实施例中提供的关系链处理装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参见图1所示,其示出了本发明一个实施例中提供的关系链处理方法所涉及的实施环境示意图。该实施环境可以包括服务器120和至少一个终端140,服务器120通过有线网络方式或无线网络方式分别与各个终端140连接。
服务器120可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。该服务器120可以存储有关系链,且可以对关系链进行相应操作。
终端140可以是运行有社交类应用程序的客户端的电子设备,该电子设备可以是智能手机、平板电脑、智能电视、电子书阅读器、MP3播放器(MovingPicture Experts GroupAudio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture ExpertsGroup Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
请参见图2所示,其示出了本发明一个实施例中提供的关系链处理方法的方法流程图,该关系链处理方法主要应用于图1所示实施环境中的服务器120中。该关系链处理方法可以包括:
201,接收操作请求,操作请求包含元数据以及关系链标识;
202,获取预存的与关系链标识对应的关系链的存储类型;
203,查询与存储类型对应的存储空间,根据存储空间中的关系链对元数据进行处理。
综上所述,本发明实施例提供的关系链处理方法,通过关系链的存储类型,确定对应的存储空间,根据该存储空间中的关系链对操作请求中携带的元数据进行处理;解决了现有技术中使用全内存存储长度达到几千万的超长关系链,会导致成本过高的问题;在写入元数据时,可根据关系链的存储类型选择将元数据写入内存或硬盘,由于硬盘成本比较低,因此达到了可以降低存储占用的存储成本。
请参见图3所示,其示出了本发明另一个实施例中提供的关系链处理方法,该关系链处理方法主要应用于图1所示实施环境中的服务器120中。该关系链处理方法可以包括:
301,接收操作请求,操作请求包含元数据以及关系链标识;
302,获取预存的与关系链标识对应的关系链的存储类型;
303,查询该存储类型对应的存储空间;
不同的存储类型所对应的存储空间不同,比如,第一类存储类型所对应的存储空间为内存,第二类存储类型所对应的存储空间为硬盘、磁盘或其他可外接存储设备。
304,当操作请求为写入请求时,将该元数据写入存储空间中的该关系链;
写入请求用于指示将元数据写入关系链。写入请求可以写到元数据以及关系链标识。
当操作请求为写入请求,则在存储类型所对应的存储空间中查找具有写入请求中所携带的关系链标识的关系链,将写入请求中携带的元数据写入该关系链中。
305,当操作请求为读取请求时,从存储空间中的该关系链中读取该元数据。
读取请求用于指示从关系链中读取元数据。读取请求可以写到元数据以及关系链标识。
当操作请求为读取请求,则在存储类型所对应的存储空间中查找具有读取请求中所携带的关系链标识的关系链,从该关系链中读取出该读取请求中携带的元数据。
综上所述,本发明实施例提供的关系链处理方法,通过关系链的存储类型,确定对应的存储空间,根据该存储空间中的关系链对操作请求中携带的元数据进行写入或读取;解决了现有技术中使用全内存存储长度达到几千万的超长关系链,会导致成本过高的问题;在写入元数据时,可根据关系链的存储类型选择将元数据写入内存或硬盘,由于硬盘成本比较低,因此达到了可以降低存储占用的存储成本。
在实际应用中,当向第一存储空间中的一个短关系链不断写入数据时,由于受到第一存储空间对允许的关系链长度的限定,当该短关系链的长度达到第一存储空间允许的关系链的最大长度时,则需要对该短关系链进行迁移,具体可以参见以下对图4A的描述。
请参见图4A所示,其示出了本发明再一个实施例中提供的关系链处理方法,该关系链处理方法可以包括:
401,接收操作请求,操作请求包含元数据以及关系链标识;
402,获取预存的与该关系链标识对应的关系链的存储类型;
关系链的存储类型可以包含第一存储类型和第二存储类型,比如,当关系链为短关系链时,其所对应的存储类型即为第一存储类型,当关系链为长关系链时,其所对应的存储类型即为第二存储类型。其中,短关系链是指所含有的元数据的个数小于预定阈值的关系链,长关系链是指所含有的元数据的个数大于该预定阈值的关系链。这里所讲的预定阈值可以根据实际情况进行设定,比如可以为3800,还可以为5200等数值。
403,查询与该存储类型对应的存储空间;
通常,第一存储类型对应于第一存储空间,第二存储类型对应于第二存储空间,且第二存储空间还可以包含第一存储子空间和第二存储子空间。第一存储空间和第一存储子空间可以位于第一类型的存储介质中,第二存储子空间可以位于第二类型的存储介质中。由此可知,第一存储空间中存储的关系链均为短关系链,而第二存储空间中存储的关系链均为长关系链。
为了保证关系链快速读取,第一存储空间和第一存储子空间所位于的第一类型的存储介质可以为内存或缓存;为了降低存储成本,第二存储子空间所位于的第二类型的存储介质可以为硬盘、光盘或其他可外接的存储设备。请参见图4B所示,其示出了本发明部分实施例中提供的不同存储类型的示意图,其中,第一存储空间和第一存储子空间为内存,第二存储子空间为硬盘中的文件DB,第一存储类型的关系链(即短关系链,也即全量短关系链)被存储在第一存储空间中,第二存储类型的关系链(即长关系链,也即全量长关系链)被存储在第二存储空间中。
通常来讲,第一存储空间所允许关系链携带的元数据的个数大于第一存储子空间所允许关系链携带的元数据的个数。比如,第一存储空间允许关系链可含有的元数据的个数最大可以为4000个,而第一存储子空间允许关系链可含有的元数据的个数最大可以为800个。由此可知,虽然第一存储子空间中存储的关系链为长关系链,但其长度往往小于第一存储空间中存储的短关系链的长度。
404,当操作请求为写入请求且存储类型为第一存储类型时,查询第一存储空间,将元数据写入第一存储空间中的该关系链中;
第一存储空间中通常保存有至少一条短关系链,当操作请求为写入请求且存储类型为第一存储类型,即需要将指定的元数据写入短关系链中时,则查询用于存储短关系链的第一存储空间(也即用于存储短关系链的内存),将该元数据写入该第一存储空间的该短关系链中。
405,当操作请求为写入请求且存储类型为第二存储类型时,查询第二存储空间,将元数据写入第二存储空间中的该关系链中;
第二存储空间中的第一存储子空间通常保存有至少一条完整关系链中的部分元数据组成的关系链,第二存储空间中的第二存储子空间中通常保存有至少一条长关系链,第一存储子空间中所保存的每个关系链均为第二存储子空间所保存的对应关系链的一部分。也就是说,一个长关系链会被全量保存在第二存储子空间中,且该长关系链的一部分会被保存在第一存储子空间中(可将第一存储子空间中由部分元数据组成的关系链也看作是长关系链)。在具体应用中,第一存储子空间是为了保证对长关系链进行读取或写入时的操作速度,第二存储子空间是为了保证长关系链存储的完整性,且可以降低存储成本。
在当操作请求为写入请求且存储类型为第二存储类型,即需要将指定的元数据写入长关系链中时,则查询用于存储长关系链的第二存储空间(也即用于存储长关系链的内存以及长关系链的硬盘等存储设备),将元数据同时写入第二存储空间的第一存储子空间和第二存储子空间中的该关系链中。
在实际应用中,当向短关系链(即保存在第一存储空间中的关系链)不断写入元数据时,随着短关系链中元数据的增加,所占用的内存也越来越多,为了减少对内存的占用、降低存储成本,当短关系链的长度达到一定长度的时候,通常会将该短关系链进行迁移,即将该短关系链从第一存储空间迁移至第二存储空间。该迁移过程可以详见如下步骤406至步骤409中的描述。
406,对第一存储空间中的该关系链中的元数据进行计数,得到计数值;
每当将一个元数据写入第一存储空间的关系链中之后,均会对该关系链中的元数据进行计数,以得到计数值。
407,当计数值大于迁移阀值时,将该关系链中的元数据从第一存储空间迁移到第二存储空间;
检测该计数值是否大于迁移阀值,若检测结果为大于迁移阀值,则将该关系链中的元数据从第一存储空间迁移到第二存储空间。
这里所讲的迁移阀值可以根据实际内存容量、读写操作时所要求的效率以及存储成本来等因素来设定,比如可以设定为3800等值。
在实际应用中,在将该关系链中的元数据从第一存储空间迁移到第二存储空间时,可以包括如下步骤:
第一,从第一存储空间中读取该关系链的各个元数据;
第二,依次将各个元数据同时写入第二存储空间的第一存储子空间和第二存储子空间中,分别形成位于第一存储子空间的关系链以及位于第二存储子空间的关系链。
比如,将第一个元数据同时写入第一存储子空间和第二存储子空间中,以该元数据形成位于第一存储子空间的关系链以及位于第二存储子空间的关系链,即位于第一存储子空间的该关系链以及位于第二存储子空间的该关系链此时均包含一个元数据;然后将读取出的第二个元数据同时写入第一存储子空间的对应关系链(即包含有第一个元数据的关系链)和第二存储子空间的对应关系链(即包含有第一个元数据的关系链)中。
请参见图4C所示,其示出了本发明部分实施例中提供的元数据迁移时的示意图,其中,从第一存储空间中读取出的关系链A的元数据包括元数据1、元数据2、元数据3和元数据4,将元数据1写入至第一存储子空间以及第二存储子空间中,此时,可以先在第一存储子空间以及第二存储子空间分别建立一个空的关系链,将元数据1写入第一存储子空间中的该空关系链中,并同时将元数据1写入第二存储子空间中的该空关系链中。这样,第一存储子空间中的该空关系链即形成为包含有元数据1的关系链B,第二存储子空间中的该空关系链即形成为包含有元数据1的关系链C。由此可知,关系链A为短关系链,关系链B和关系链C为长关系链。
再请参见图4D所示,其示出了本发明部分实施例中提供的在图4C所示的元数据迁移之后进行下一步迁移的示意图,其中,依次再将元数据2同时写入关系链B和关系链C中。此时,关系链B中包含有元数据1和元数据2,关系链C中包含有元数据1和元数据2。
通常来讲,第一存储空间中允许的关系链的长度大于第一存储子空间中允许的关系链的长度,而通常需要保存在第二存储空间中的关系链的长度都比较大,即大于第一存储空间中允许的关系链的长度,因此在迁移的过程中,当第一存储子空间中迁移后的关系链的长度达到被允许存储的最大长度时,若此时还需要继续迁移,此时则需要删除第一存储子空间中迁移后的该关系链中一部分更新时刻比较早的元数据。
也即,在执行依次将各个元数据同时写入第二存储空间的第一存储子空间和第二存储子空间中,分别形成位于第一存储子空间的关系链以及位于第二存储子空间的关系链的步骤时,还可以包括:
对于读取出的每个元数据,当第一存储子空间中该关系链中的元数据的个数小于删除阈值时,则将元数据同时写入第一存储子空间和第二存储子空间中迁移时形成的关系链中;当第一存储子空间中该关系链中的元数据的个数大于删除阈值时,则删除第一存储子空间中对应关系链中更新时刻最小的元数据,将读取出的元数据同时写入第一存储子空间和第二存储子空间中迁移时形成的关系链中。
举例来讲,由于第一存储子空间所允许的关系链的长度(比如800)小于第一存储空间所允许的关系链的长度(比如3800),因此在关系链A从第一存储空间迁移到第一存储子空间以及第二存储子空间的过程中,关系链A中的第801个元数据在将要写入第一存储子空间的关系链B(第一存储子空间在关系链A被迁移时形成的关系链)之前,先删除关系链B中更新时刻最早的元数据,然后将该第801个元数据同时写入到关系链B以及第一存储子空间的关系链C中(第二存储子空间在关系链A被迁移时形成的关系链)。
408,将预存的关系链的存储类型更改为第二存储类型,记录更改时刻;
当第一存储空间中的关系链中的元数据均被写入到第二存储空间之后,为了保证后续的操作过程中,能直接路由到第二存储空间中,此时还需要将该关系链的存储类型更改为第二存储类型,即通过第二存储空间存储该关系链,并记录下更改时刻。
409,删除第一存储空间中该关系链的各个元数据;
当迁移完成之后,由于该关系链中的各个元数据均被迁移到第二存储空间且该关系链被路由到第二存储空间,因此第一存储空间中的该关系链将不再被使用,此时为了减少对内存的占用,可以删除第一存储空间中该关系链的各个元数据,即删除第一存储空间中的该关系链。
在实际应用中,在对第一存储空间中的该关系链进行迁移的过程中,可能还会接收到客户端发送的修改或删除该关系链中的元数据的请求,且均被路由到第一存储空间的该关系链上以便于对这些请求进行响应,因此为了保证数据的一致性,还需要在步骤409之前,对该关系链中的元数据进行验证,验证方法可以包括如下两种:
第一种,对于该关系链中的每个元数据,若元数据在第一存储空间中的更新时刻大于在第二存储空间中的更新时刻,则利用第一存储空间中该元数据更新第二存储空间中的该元数据;
通常来讲,当元数据在第一存储空间中的更新时刻大于该元数据在第二存储空间中的更新时刻时,则表明在该关系链在迁移的过程中,当一个元数据被写入到第二存储空间之后,服务器接收到客户端发送的对该元数据进行修改的修改请求,由于此时该关系链的存储类型还为第一存储类型,因此服务器会将第一存储空间中该关系链中的该元数据进行修改。但第二存储空间中仍旧存储的是修改的元数据,因此为了保证数据的一致性,需要利用第一存储空间中该元数据更新第二存储空间中迁移时形成的关系链中的该元数据。
第二种,对于该关系链中的每个元数据,若元数据仅存在于第二存储空间中且该元数据的更新时刻小于更改时刻,则删除第二存储空间中的该元数据。
通常来讲,当元数据不存在于第一存储空间而仅存在于第二存储空间,且该元数据的更新时刻小于该关系链的存储类型被更改为第二存储类型的更改时刻时,则表明该关系链在迁移的过程中,当一个元数据被写入到第二存储空间之后,服务器接收到客户端发送的对该元数据进行删除的修改请求,由于此时该关系链的存储类型还为第一存储类型,因此服务器会将第一存储空间中该关系链中的该元数据进行删除。但第二存储空间中仍旧存储的有该元数据,因此为了保证数据的一致性,需要删除第二存储空间中迁移时形成的关系链中的该元数据。
需要补充说明的是,上述的写操作、迁移操作可以是不同的进程,比如进行写操作的写进程,进行迁移操作的迁移进程;当然,上述的写操作、迁移操作也可以在同一个进程中实现。上述关系链的数据结构可是为链表或数组等,本发明对此不作限定。此外,第一存储空间以及第一存储子空间中的数据存储方案可以为memcache、redis等,本发明对此不作限定;第二存储子空间中的数据存储方案可以为mysql、sqlserver等,本发明对此不作限定。
还需要补充说明的是,当服务器是由多个服务器组成的云服务器时,也即多个服务器共用存储的关系链时,当一个服务器在完成迁移操作之后,还需要将关系链在迁移后被修改的存储类型通知给其他服务器,以便其他服务器在接收到与该关系链相关的请求之后,可以根据最新的存储类型路由到该关系链。
还需要补充说明的是,在实际应用中的,当客户端发送的操作请求中所携带的关系链标识所对应的关系链为长关系链时,则可以根据操作请求的实际需求选择从第一存储子空间中读取该关系链或选择从第二存储子空间中读取该关系链。
综上所述,本发明实施例中提供的关系链处理方法,在短关系链达到第一存储空间所允许的关系链的最大长度时,将该短关系链迁移到第二存储空间中,形成长关系链;解决了现有技术中使用全内存存储长度达到几千万的超长关系链,会导致成本过高的问题;当短关系链中的元数据比较多时,则将其迁移至第二存储空间,形成长关系链,由于第二存储空间中的第二存储子空间通常为硬盘等外接存储设备,这些外接存储设备的成本比较低,因此达到了可以降低存储占用的存储成本。
请参见图5所示,其示出了本发明一个实施例中提供的关系链处理装置的结构示意图,该关系链处理装置主要以应用于图1所示实施环境中的服务器120中进行举例说明。该关系链处理装置可以包括:接收模块502、获取模块504和处理模块506。
接收模块502,可以用于接收操作请求,操作请求包含元数据以及关系链标识;
获取模块504,可以用于获取预存的与关系链标识对应的关系链的存储类型;
处理模块506,可以用于查询与存储类型对应的存储空间,根据存储空间中的关系链对元数据进行处理。
综上所述,本发明实施例中提供的关系链处理装置,通过关系链的存储类型,确定对应的存储空间,根据该存储空间中的关系链对操作请求中携带的元数据进行处理;解决了现有技术中使用全内存存储长度达到几千万的超长关系链,会导致成本过高的问题;在写入元数据时,可根据关系链的存储类型选择将元数据写入内存或硬盘,由于硬盘成本比较低,因此达到了可以降低存储占用的存储成本。
请参见图6所示,其示出了本发明另一个实施例中提供的关系链处理装置的结构示意图,该关系链处理装置主要以应用于图1所示实施环境中的服务器120中进行举例说明。该关系链处理装置可以包括:接收模块602、获取模块604和处理模块606。
接收模块602,可以用于接收操作请求,操作请求包含元数据以及关系链标识;
获取模块604,可以用于获取预存的与关系链标识对应的关系链的存储类型;
处理模块606,可以用于查询与存储类型对应的存储空间,根据存储空间中的关系链对元数据进行处理。
在图6所示实施例中的第一种可能的实现方式中,处理模块606可以包括:第一写入单元606a和第一读取单元606b。
第一写入单元606a,可以用于当操作请求为写入请求时,将元数据写入存储空间中的关系链;
第一读取单元606b,可以用于当操作请求为读取请求时,从存储空间中的关系链中读取元数据。
在图6所示实施例中的第二种可能的实现方式中,第一写入单元606a包括:第一写入子单元606a1和第二写入子单元606a2。
第一写入子单元606a1,用于当存储类型为第一存储类型时,查询第一存储空间,将元数据写入第一存储空间中的关系链中;
第二写入子单元606a2,用于当存储类型为第二存储类型时,查询第二存储空间,将元数据写入第二存储空间中的关系链中,
其中,第二存储空间包括第一存储子空间和第二存储子空间,第一存储空间以及第一存储子空间位于第一类型的存储介质中,第二存储子空间位于第二类型的存储介质中。
在图6所示实施例中的第三种可能的实现方式中,该关系链处理装置还可以包括:计数模块608和迁移模块610。
计数模块608,用于对第一存储空间中的关系链中的元数据进行计数,得到计数值;
迁移模块610,用于当计数模块608计数得到的计数值大于迁移阀值时,将关系链中的元数据从第一存储空间迁移到第二存储空间。
在图6所示实施例中的第四种可能的实现方式中,迁移模块610可以包括:第二读取单元610a和第二写入单元610b。
第二读取单元610a,可以用于从第一存储空间中读取关系链的各个元数据;
第二写入单元610b,可以用于依次将各个元数据同时写入第二存储空间的第一存储子空间和第二存储子空间中,分别形成位于第一存储子空间的关系链以及位于第二存储子空间的关系链。
在图6所示实施例中的第五种可能的实现方式中,第二写入单元610b可以包括:第三写入子单元610b1和第四写入子单元610b2。
第三写入子单元610b1,可以用于对于读取出的每个元数据,当第一存储子空间中关系链中的元数据的个数小于删除阈值时,则将元数据同时写入第一存储子空间和第二存储子空间中迁移时形成的关系链中;
第四写入子单元610b2,可以用于当第一存储子空间中关系链中的元数据的个数大于删除阈值时,则删除第一存储子空间中关系链中更新时刻最小的元数据,将读取出的元数据同时写入第一存储子空间和第二存储子空间中迁移时形成的关系链中。
在图6所示实施例中的第六种可能的实现方式中,该关系链处理装置还可以包括:更改模块612和第一删除模块614。
更改模块612,可以用于将预存的关系链的存储类型更改为第二存储类型,记录更改时刻;
第一删除模块614,可以用于删除第一存储空间中关系链的各个元数据。
在图6所示实施例中的第七种可能的实现方式中,该关系链处理装置还可以包括:更新模块616和第二删除模块618。
更新模块616,可以用于对于关系链中的每个元数据,若元数据在第一存储空间中的更新时刻大于在第二存储空间中的更新时刻,则利用第一存储空间中元数据更新第二存储空间中的元数据;
第二删除模块618,可以用于对于关系链中的每个元数据,若元数据仅存在于第二存储空间中且元数据的更新时刻小于更改时刻,则删除第二存储空间中的元数据。
综上所述,本发明实施例中提供的关系链处理装置,在短关系链达到第一存储空间所允许的关系链的最大长度时,将该短关系链迁移到第二存储空间中,形成长关系链;解决了现有技术中使用全内存存储长度达到几千万的超长关系链,会导致成本过高的问题;当短关系链中的元数据比较多时,则将其迁移至第二存储空间,形成长关系链,由于第二存储空间中的第二存储子空间通常为硬盘等外接存储设备,这些外接存储设备的成本比较低,因此达到了可以降低存储占用的存储成本。
需要说明的是:上述实施例中提供的关系链处理装置在对关系链进行处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的关系链处理装置与关系链处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种关系链处理方法,其特征在于,所述方法包括:
接收操作请求,所述操作请求包含元数据以及关系链标识;
获取预存的与所述关系链标识对应的关系链的存储类型;
查询与所述存储类型对应的存储空间;
当所述操作请求为写入请求且所述存储类型为第一存储类型时,查询第一存储空间,将所述元数据写入所述第一存储空间的关系链中;
当所述操作请求为所述写入请求且所述存储类型为第二存储类型时,查询第二存储空间,将所述元数据写入所述第二存储空间中的所述关系链中,其中,所述第二存储空间包括第一存储子空间和第二存储子空间;
对所述第一存储空间中的所述关系链中的元数据进行计数,得到计数值;
当所述计数值大于迁移阀值时,从所述第一存储空间中读取所述关系链的各个元数据;
依次将所述各个元数据同时写入所述第二存储空间的所述第一存储子空间和所述第二存储子空间中,分别形成位于所述第一存储子空间的所述关系链以及位于所述第二存储子空间的所述关系链。
2.根据权利要求1所述的方法,其特征在于,所述第一存储空间以及所述第一存储子空间位于第一类型的存储介质中,所述第二存储子空间位于第二类型的存储介质中。
3.根据权利要求1所述的方法,其特征在于,所述依次将所述各个元数据同时写入所述第二存储空间的第一存储子空间和第二存储子空间中,分别形成位于所述第一存储子空间的所述关系链以及位于所述第二存储子空间的所述关系链,包括:
对于读取出的每个元数据,当所述第一存储子空间中所述关系链中的元数据的个数小于删除阈值时,则将所述元数据同时写入所述第一存储子空间和所述第二存储子空间中迁移时形成的关系链中;
当所述第一存储子空间中所述关系链中的元数据的个数大于所述删除阈值时,则删除所述第一存储子空间中所述关系链中更新时刻最小的元数据,将读取出的所述元数据同时写入所述第一存储子空间和所述第二存储子空间中的迁移时形成的关系链中。
4.根据权利要求1至3任一所述的方法,其特征在于,在将所述关系链中的元数据从所述第一存储空间迁移到所述第二存储空间之后,还包括:
将预存的所述关系链的存储类型更改为所述第二存储类型,记录更改时刻;
删除所述第一存储空间中所述关系链的各个元数据。
5.根据权利要求4所述的方法,其特征在于,在所述删除所述第一存储空间中所述关系链的各个元数据之前,还包括:
对于所述关系链中的每个元数据,若所述元数据在所述第一存储空间中的更新时刻大于在所述第二存储空间中的更新时刻,则利用所述第一存储空间中所述元数据更新所述第二存储空间中的所述元数据;
若所述元数据仅存在于所述第二存储空间中且所述元数据的更新时刻小于所述更改时刻,则删除所述第二存储空间中的所述元数据。
6.一种关系链处理装置,其特征在于,所述装置包括:
接收模块,用于接收操作请求,所述操作请求包含元数据以及关系链标识;
获取模块,用于获取预存的与所述关系链标识对应的关系链的存储类型;
处理模块,用于查询与所述存储类型对应的存储空间;
第一写入子单元,用于当所述操作请求为写入请求且所述存储类型为第一存储类型时,查询第一存储空间,将所述元数据写入所述第一存储空间的关系链中;
第二写入子单元,用于当所述操作请求为所述写入请求且所述存储类型为第二存储类型时,查询第二存储空间,将所述元数据写入所述第二存储空间中的所述关系链中,其中,所述第二存储空间包括第一存储子空间和第二存储子空间;
计数模块,用于对所述第一存储空间中的所述关系链中的元数据进行计数,得到计数值;
第二读取单元,用于当所述计数值大于迁移阀值时,从所述第一存储空间中读取所述关系链的各个元数据;
第二写入单元,用于依次将所述各个元数据同时写入所述第二存储空间的所述第一存储子空间和所述第二存储子空间中,分别形成位于所述第一存储子空间的所述关系链以及位于所述第二存储子空间的所述关系链。
7.根据权利要求6所述的装置,其特征在于,所述第一存储空间以及所述第一存储子空间位于第一类型的存储介质中,所述第二存储子空间位于第二类型的存储介质中。
8.根据权利要求6所述的装置,其特征在于,所述第二写入单元包括:
第三写入子单元,用于对于读取出的每个元数据,当所述第一存储子空间中所述关系链中的元数据的个数小于删除阈值时,则将所述元数据同时写入所述第一存储子空间和所述第二存储子空间中迁移时形成的关系链中;
第四写入子单元,用于当所述第一存储子空间中所述关系链中的元数据的个数大于所述删除阈值时,则删除所述第一存储子空间中所述关系链中更新时刻最小的元数据,将读取出的所述元数据同时写入所述第一存储子空间和所述第二存储子空间中迁移时形成的关系链中。
9.根据权利要求6至8任一所述的装置,其特征在于,所述装置还包括:
更改模块,用于将预存的所述关系链的存储类型更改为所述第二存储类型,记录更改时刻;
第一删除模块,用于删除所述第一存储空间中所述关系链的各个元数据。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
更新模块,用于对于所述关系链中的每个元数据,若所述元数据在所述第一存储空间中的更新时刻大于在所述第二存储空间中的更新时刻,则利用所述第一存储空间中所述元数据更新所述第二存储空间中的所述元数据;
第二删除模块,用于对于所述关系链中的每个元数据,若所述元数据仅存在于所述第二存储空间中且所述元数据的更新时刻小于所述更改时刻,则删除所述第二存储空间中的所述元数据。
11.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至5任一所述的关系链处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410094014.4A CN104915298B (zh) | 2014-03-13 | 2014-03-13 | 关系链处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410094014.4A CN104915298B (zh) | 2014-03-13 | 2014-03-13 | 关系链处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104915298A CN104915298A (zh) | 2015-09-16 |
CN104915298B true CN104915298B (zh) | 2019-02-12 |
Family
ID=54084376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410094014.4A Active CN104915298B (zh) | 2014-03-13 | 2014-03-13 | 关系链处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104915298B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309235B (zh) * | 2019-06-28 | 2022-01-07 | 京东科技控股股份有限公司 | 一种数据处理方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673192A (zh) * | 2009-10-26 | 2010-03-17 | 北京世纪互联宽带数据中心有限公司 | 时序化的数据处理方法、装置及系统 |
CN102955781A (zh) * | 2011-08-19 | 2013-03-06 | 腾讯科技(深圳)有限公司 | 一种人物搜索方法及装置 |
CN103399713A (zh) * | 2013-08-02 | 2013-11-20 | 浙江大学 | 平衡多级存储性能与固态硬盘寿命的数据缓冲方法 |
CN103400598A (zh) * | 2007-08-14 | 2013-11-20 | 三星电子株式会社 | 固态存储器、包含其的计算机系统和操作其的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8719523B2 (en) * | 2011-10-03 | 2014-05-06 | International Business Machines Corporation | Maintaining multiple target copies |
-
2014
- 2014-03-13 CN CN201410094014.4A patent/CN104915298B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103400598A (zh) * | 2007-08-14 | 2013-11-20 | 三星电子株式会社 | 固态存储器、包含其的计算机系统和操作其的方法 |
CN101673192A (zh) * | 2009-10-26 | 2010-03-17 | 北京世纪互联宽带数据中心有限公司 | 时序化的数据处理方法、装置及系统 |
CN102955781A (zh) * | 2011-08-19 | 2013-03-06 | 腾讯科技(深圳)有限公司 | 一种人物搜索方法及装置 |
CN103399713A (zh) * | 2013-08-02 | 2013-11-20 | 浙江大学 | 平衡多级存储性能与固态硬盘寿命的数据缓冲方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104915298A (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103064639B (zh) | 数据存储方法及装置 | |
CN110825324B (zh) | 混合存储的控制方法及混合存储系统 | |
CN106294352B (zh) | 一种文件处理方法、装置和文件系统 | |
CN103324533B (zh) | 分布式数据处理方法、装置及系统 | |
CN108319654A (zh) | 计算系统、冷热数据分离方法及装置、计算机可读存储介质 | |
US9852180B2 (en) | Systems and methods of accessing distributed data | |
CN107633045A (zh) | 一种云存储服务中租户数据容量的统计方法及其系统 | |
CN104657435A (zh) | 一种应用数据的存储管理方法和网络管理系统 | |
CN109032533A (zh) | 一种数据存储方法、装置和设备 | |
CN111159176A (zh) | 一种海量流数据的存储和读取的方法和系统 | |
CN109460406A (zh) | 一种数据处理方法及装置 | |
CN108304142A (zh) | 一种数据管理方法和装置 | |
CN106330759B (zh) | 一种调整acl表项的方法及装置 | |
CN112711564B (zh) | 合并处理方法以及相关设备 | |
CN106302634A (zh) | 一种数据迁移方法和系统 | |
CN104915298B (zh) | 关系链处理方法及装置 | |
CN102929798B (zh) | 存储介质的层次组织结构 | |
US10303687B2 (en) | Concurrent processing of data sources | |
WO2024001025A1 (zh) | 一种预执行缓存数据清理方法和区块链节点 | |
WO2017172377A1 (en) | File system support for file-level ghosting | |
CN104850548B (zh) | 一种实现大数据平台输入/输出处理的方法及系统 | |
CN111752941A (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
CN110413724A (zh) | 一种数据检索方法和装置 | |
CN104537023A (zh) | 一种反向索引记录的存储方法及装置 | |
US20100077147A1 (en) | Methods for caching directory structure of a file system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |