具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的数据存储的过程,具体包括以下步骤:
S101:确定待存储数据对应的标识。
在实际应用中,用户通常需要将一些数据存储在一些存储设备或软件中,方便日后对这些数据进行管理或处理,因此,在本申请实施例中,当用户想要存储一个数据时,可通过终端将该待存储数据发送至存储设备中,使得存储设备在接收到该待存储的数据后,可将该待存储数据进行存储。所述的存储设备既可以是终端本身,即,智能手机、电脑等设备,也可以是诸如服务器、数据库等在网络端能够存储数据的存储设备。
为了能够方便快速的获取到存储设备中所存储的数据,存储设备在对待存储设备进行存储时,需要先确定出该待存储数据对应的标识,从而在后续步骤S102~S105中,得到该标识与待存储数据在存储设备中的存储地址的一个对应关系,进而使得用户后续在获取该数据时,可依照这一对应关系,快速的获取到该数据。
需要说明的是,在实际应用中,存储设备和软件都具有数据存储的功能,而为了方便对本申请实施例进行详细说明,以下将仅以存储设备为例来对数据存储的方法进行说明。
S102:根据所述待存储数据中包含的属性,确定所述待存储数据所属的数据类型,以及所述待存储数据对应的索引摘要。
存储设备在确定出待存储数据对应的标识后,需要进一步判断该存储数据是否已经存储在该存储设备中,因此,存储设备可根据该待存储数据中包含的各属性以及预设的规则,确定出该待存储数据所属的数据类型,进而可根据该数据类型,确定出该待存储数据应该存储于存储设备的哪个存储空间中,之后,存储设备可进一步的根据待存储数据中包含的各属性,确定出该待存储数据对应的索引摘要,进而在后续步骤S103中,通过该索引摘要,判断该存储数据是否已经存储在该存储设备中。
具体的,为了避免存储设备存储了重复数据而造成资源浪费的问题,存储设备在对接收到的待存储设备进行存储之前,需要判断该待存储数据是否已经存储在该存储设备之中,进而确定是否对该待存储数据进行存储,而在实际应用中,存储设备中通常都将各数据存储在存储设备所包含的多个存储空间中,因此,存储设备判断该待存储数据是否已经存储在该存储设备中的过程实际上是在存储设备所包含的存储空间中来判断该待存储数据是否已经存在,而在本申请实施例中,一个存储空间中存储的数据通常都是具有共同特点的一类数据,即,存储设备中的各存储空间通常都是和数据类型相对应的,若存储设备能确定出待存储数据所属的数据类型,则可相应的确定出该待存储数据应该存储于哪个存储空间,因此,存储设备在对待存储数据进行存储时,可根据该待存储数据中包含的各属性以及预设的规则,确定出该待存储数据所属的数据类型,进而根据该数据类型,确定出该数据类型所对应的存储空间,即,确定出该待存储数据应该存储于存储设备的哪个存储空间中。
例如,假设存储设备接收到的待存储数据4如表1所示:
数据标识 |
属性1 |
属性2 |
属性3 |
4 |
name |
age |
weight |
表1
在数据4中包含有3个属性,存储设备可根据该数据4中包含的这3个属性以及预设的规则,确定出该数据4的数据类型为name,继而可根据该数据类型,确定出与数据类型name所对应的存储空间为No.1,即,确定出该数据4应该存储于存储设备中的No.1存储空间。
需要说明的是,存储设备在确定待存储数据的数据类型时,预设的规则没有明确的限定,即,预设的规则可以是将数据中的第一个属性确定为该待存储数据的数据类型,也可将待存储数据中的前两个属性一起确定为该待存储数据的数据类型。而在实际应用中,存储设备中通常包含有多个预设的规则,各预设的规则可以是根据不同数据的特征来确定的,因此,存储设备在确定待存储数据的数据类型时,可先根据该待存储数据中的各属性,选定出针对该类数据的一个预设的规则,进而再根据该待存储数据中的各属性以及预设的规则,确定出该待存储数据的数据类型。
存储设备中的各存储空间可以是预先设置好的,而为了避免存储空间浪费的问题,存储设备也可以在接收到一个类型的数据后,可针对该数据的数据类型,新建一个专门存储该数据类型的一个存储空间,而后,若存储设备后续再对这一类型的数据进行存储时,则可直接存储到该存储空间中。
而当存储设备确定出待存储数据所属的数据类型后,可根据预设的索引规则,从该待存储数据所包含的各属性中选择出指定的若干个属性,然后,再根据该索引规则以及选择出的指定的若干个属性,确定出该待存储数据对应的一个索引摘要。而存储空间中各数据的索引摘要则是在此之前,存储设备对各数据进行存储时通过相同的方法来确定出的。
例如,继续沿用上例,当存储设备确定出该待存储的数据4的数据类型name后,可根据预设的索引规则,从该数据4所包含的3个属性中选择出前两个属性,而后,存储设备可根据该索引规则以及选择出的数据4的前两个属性,确定出该数据4对应的索引摘要为name-age。
S103:判断所述数据类型对应的存储空间中是否存在所述索引摘要,若是,则执行步骤S104,若否,则执行步骤S105。
S104:比较所述存储空间中保存的所述索引摘要对应的数据和所述待存储数据,并根据比较结果确定是否对所述待存储数据进行存储。
S105:将所述索引摘要以及所述待存储数据存储在所述存储空间中,并返回所述待存储数据的存储地址,记录所述标识、所述数据类型以及所述存储地址的对应关系。
在实际应用中,由于各存储空间中往往都存有大量的数据,若将待存储数据依次与存储空间中存储的各数据进行比对,则可能会给存储设备的运行带来极大的负担。为了避免这一问题的发生,存储设备在将待存储数据与存储空间中存储的各数据进行比对时,通常情况下是将能够代表该待存储数据的一个特征信息与存储空间中的能代表各数据的各个特征信息进行比对的,因此,在本申请实施例中,存储设备在判断该待存储数据是否已经存储在相应的存储空间之前,可通过上述步骤S102来确定出对应该待存储数据的一个索引摘要,进而根据该索引摘要,来对该待存储数据是否存在于相应的存储空间中进行判断,其中,该索引摘要即为能够代表该待存储数据的一个特征信息。
当存储设备确定出待存储数据所属的数据类型以及对应的索引摘要后,可在该数据类型对应的存储空间中判断是否已经存在该索引摘要,若是,则存储设备需要进一步的对存储空间中保存的该索引摘要对应的数据与待存储数据进行比较,并根据得出的比较结果来确定是否对该待存储数据进行存储,若否,则存储设备可将该待存储数据以及确定出的索引摘要一并存储在存储空间中,并返回针对该待存储数据在存储空间中的一个存储地址,同时,存储设备还需要将确定出的待存储数据的标识、数据类型以及存储地址这三者的对应关系进行记录,方便后续对该数据的快速查找。
具体的,存储设备在对待存储数据进行存储之前,需要确定出该待存储数据是否已经存在于该存储设备中,因此,在确定出该待存储数据的数据类型以及索引摘要后,存储设备可将该索引摘要与该数据类型对应的存储空间中各数据的索引摘要进行比较,其中,当发现该索引摘要已经存在于该存储空间中时,则存储设备需要进一步的对存储空间中该索引摘要对应的数据与待存储数据进行保存,此举的目的在于,由于存储设备在确定各数据的索引摘要时,通常都是根据各数据所包含的属性中的一部分来确定的,相对于同类数据来说,各数据中所包含的各属性可能会有相同的部分,因此,针对同一数据类型的各数据来说,存储设备确定出的各数据的索引摘要也可能是相同的,而实际上,索引摘要相同的情况下,各数据也可能是不同的,若只根据索引摘要来确定出存储空间中已经存在该待存储数据,则可能会出现存储设备漏存数据的情况。
为了避免上述问题的发生,当存储设备判断出待存储数据对应的索引摘要已经在存储空间存在时,则存储设备可判断存储空间中该索引摘要对应的数据与该待存储数据是否相同,若是,则确定该待存储数据已经存在于该存储空间中,进而不对该待存储数据进行存储,同时,还需要返回该索引摘要对应的数据在该存储空间中的存储地址。
例如,假设有4个数据如表2所示:
表2
其中,数据1和数据2为已存储在存储设备相应的存储空间中的两个数据,而数据3和数据4为存储设备待存储的两个数据,并且,这4个数据中所包含的属性,属性名称相同的即为相同的属性,如数据1中的属性1与数据3中的属性1即为相同的两个属性。而存储设备在对这些数据进行存储时,采用的都是相同的规则,即,采用相同的规则,确定出各数据所属的数据类型,以及采用相同的索引规则,确定出各数据对应的索引摘要。存储设备在先前对数据1和数据2进行存储时,可根据预设的规则以及数据1和数据2所包含的各属性,将各数据中的前两个属性确定为数据1和数据2所属的数据类型,从表2中可以看出,由于数据1和数据2的前两个属性都是相同的,因此,存储设备采用相同的规则确定出的数据1和数据2所属的数据类型也应是相同的,进而,存储设备可根据该数据类型,确定出应该将数据1和数据2存储于存储设备的哪个存储空间中,而后,存储设备再采用相同的索引规则,分别确定出数据1和数据2的索引摘要,即,分别取数据1和数据2前3个属性按顺序进行组合,并将组合结果作为数据1和数据2的索引摘要,而存储设备在存储数据1和数据2之前,相应的存储空间中未存有任何的数据,因此,存储设备在判断出数据1和数据2的索引摘要不相同时,则分别将这两个数据存储在相应的存储空间中。
而当存储设备在对数据3和数据4进行存储之前,需采用与存储数据1和数据2时相同的规则,确定出数据3和数据4所属的数据类型,即,将数据3和数据4的前两个属性确定为数据3和数据4所属的数据类型,其中,数据3所属的数据类型与数据1和数据2相同,因此,存储设备可确定出应该将数据3存储于数据1和数据2相同的存储空间中,而数据4所属的数据类型与数据1和数据2不同,则存储设备可确定出应该将数据4存储在与数据4所属数据类型相符的存储空间中,即,不同于数据1和数据2的存储空间中。
当存储设备采用与数据1和数据2相同的索引规则,来确定出数据3对应的索引摘要时(即,将数据3前3个属性按顺序进行组合,将组合结果作为该数据3对应的索引摘要),发现数据3和数据1的索引摘要是相同的,因此,存储设备需要进一步的判断数据3和数据1所包含的数据内容是否是相同的,当判断出数据3和数据1所包含的数据内容也相同时,则确定这两个数据为相同的数据,进而不对数据3进行存储,并将数据1对应的存储地址也作为数据3的存储地址进行返回。这样不仅能够在存储设备中准确的获取到各数据标识所对应的各数据,同时,还节省存储设备的存储空间。
而当存储设备待存储数据对应的索引摘要未存在于相应的存储空间中时,则存储设备可将该索引摘要以及待存储数据进行存储,而与此同时,存储设备还需将该待存储数据对应的标识、确定出的该待存储数据所属的数据类型以及其对应的存储地址的对应关系进行记录,进而后续可通过这一对应关系,快速的获取到存储设备中存储的数据,其中,不同的索引摘要,其所对应的数据是不相同的,因此,当存储设备确定出待存储数据的索引摘要未存在于相应的存储空间中时,则该待存储数据也不存在于该存储空间中。
例如,继续沿用步骤S102所述的示例,当存储设备确定待存储的数据4对应的索引摘要未存在相应的存储空间中时,则存储设备可将该待存储的数据4以及其对应的索引摘要进行存储,而后,存储设备可将先前确定出的该待存储数据4的标识4、该待存储数据4所属的数据类型name以及确定出的存储地址13这三者的对应关系进行记录,使得在后续进行数据获取的过程中,可根据记录的这一关系,快速的获取到用户想要获取到的数据。
上述详细说明了存储设备对待存储数据进行存储的具体过程,从中可以看出,存储设备在对待存储数据进行存储时,可赋予针对该待存储数据的唯一的一个存储地址,这样,在后续进行数据获取的过程中,就可根据这一存储地址,直接获取到该数据,进而极大的提高了获取数据的效率。
需要说明的是,存储设备在对待存储数据进行存储时所确定出的该待存储数据对应的存储地址可以是随机分配的,而在实际应用中,若存储设备对待存储数据对应的存储地址进行随机分配,则可能会造成存储空间浪费的问题。例如,假设存储设备在对待存储数据1进行存储时,对该待存储数据1随机分配的存储地址为1008,即,分配到确定出的存储空间上的第1008个存储位置上,而实际上,该存储空间上只存储了很少的数据,远没有1008个这么多,因此,将会有大量的存储位置闲置,进而造成了存储空间浪费的问题。
为避免上述问题的发生,在图1中所示的步骤S105中,当存储设备对该待存储数据分配存储地址时,可根据确定出的存储空间中所存储的数据量,来决定待存储数据的存储地址,例如,假设存储设备在待存储数据2进行存储时,发现该待存储数据2所属的存储空间中已经存有15个数据,则存储设备可将存储地址16分配给该待存储数据2,即,将该待存储数据2存储在该存储空间上的第16个存储位置上,这样,可极大的节省存储空间,提高存储设备运行的效率。
基于上述说明的数据存储方法,下面将详细的介绍用户在进行数据获取时的具体过程。
图2为本申请实施例提供的数据获取的过程,具体包括以下步骤:
S201:确定待获取数据对应的标识。
在实际应用中,当用户想要在存储设备中获取某一具体数据时,通常是得到待获取数据的标识后,将标识输入到存储设备中,而存储设备在接收到该待获取数据的标识后,可根据该标识来对该待获取数据进行获取,因此,在本申请实施例中,用户在从存储设备中获取待获取的数据之前,存储设备需要先确定出待获取数据对应的标识,其中,具体的确定方式可以是将用户输入的标识确定为待获取数据对应的标识,也可以是先向用户显示出存储的数据对应的标识,然后当监测到用户对某一标识进行了选取后,则确定出待获取数据对应的标识,当然,还有其它确定待获取数据对应标识的方式,在这里不进行一一介绍。
S202:根据预先存储的所述标识与数据类型的对应关系,确定出所述待获取数据所属的数据类型。
存储设备在确定出待获取数据对应的标识后,可从存储设备预先记录的各标识与各数据类型的各对应关系中,确定出与该标识相匹配的数据类型,从而确定出该待获取数据所属的数据类型。
S203:根据预先存储的所述标识与存储地址的对应关系,确定出所述待获取数据对应的存储地址。
存储设备在确定出待获取数据所属的数据类型后,可从存储设备预先记录的各标识与各存储地址的对应关系中,确定出与该标识相匹配的存储地址,从而确定出该待获取数据对应的存储地址,而后,可根据该存储地址,在后续步骤S204中,确定出该待获取数据在存储设备中具体的存储位置,进而获取到该待获取数据。
S204:根据确定出的所述数据类型以及存储地址,获取所述待获取数据。
存储设备根据预先记录的标识、数据类型以及存储地址这三者的对应关系,确定出待获取数据对应标识所属的数据类型以及所对应的存储地址后,可先根据该数据类型,确定出待获取数据所属的存储空间,而后,在根据该存储地址,确定出待获取数据在该存储空间上具体的存储位置,进而可直接在该存储位置上获取到该待获取数据。
例如,继续沿用步骤S102所述的示例,当存储设备确定出待获取数据4的对应的标识4后,可从存储设备中预先存储的该标识4、数据类型name以及存储地址13这三者的对应关系,确定出待获取数据所属的数据类型为name,从而确定出该待获取数据所属的存储空间为数据类型name对应的存储空间No.1,而后,可根据确定出的该待获取数据对应的存储地址13,确定出该待获取数据处于存储空间No.1中第13个存储位置,进而存储设备即可直接在该存储位置上获取到该待获取数据4。
上述说明的数据获取方法,可根据先前记录的待获取数据与存储地址的对应关系,确定出待获取数据在存储设备中的唯一的存储位置,进而可直接在该存储位置来获取用户所需的待获取数据,相对于现有技术中需要将存储空间中存储的各标识与确定出的待获取数据对应的标识依次进行比对来对数据进行获取,极大的降低了数据获取的时间,提高了数据获取的效率。
另外,还需说明的是,在图1中所示的步骤S102中,当存储设备确定出待存储数据对应的标识后,也可采用诸如哈希函数、信息摘要算法5(Message-Digest Algorithm 5,MD5)等规则来确定出对应该待存储数据的一个存储空间值,从而可根据该存储空间值,确定出该待存储数据所属的存储空间。
例如,假设存储设备确定出待存储数据对应的标识为5后,可根据预先采用的规则(即,将标识除以2后得到的余数即为该待存储数据对应的存储空间值),确定出该待存储数据的存储空间值为1,则根据该存储空间值1,确定出该待存储数据在存储设备中所属的存储空间为第一个存储空间,进而可根据后续步骤S103~S105,对该待存储数据进行存储,并返回该存储数据对应的存储地址,同时记录该标识、存储空间值、存储地址三者的对应关系。
图1中所示的步骤S105中,存储设备也可将确定出的待存储数据对应的标识、确定出的该待存储数据所属的存储空间以及对应的存储地址进行记录,这样,存储设备获取用户所需数据的过程中,当确定出该待获取数据对应的标识后,即可根据存储设备预先记录的标识、存储空间、存储地址的对应关系,直接确定出该待获取数据所属的存储空间以及对应的存储地址,进而直接在存储空间中相应的存储位置上对待获取数据进行获取。
在实际应用中,存储设备可以是终端、服务器、数据库等具有存储功能的存储设备,而用户在对数据进行存储或获取时,有时需要通过所持有的终端从服务器中获取所需的数据,或是通过终端将待存储的数据发送至服务器或数据库中进行存储,因此,图1中所示的步骤S105中,当存储设备(这里的存储设备可以是服务器或数据库等网络端的存储设备)记录完待存储数据对应标识、所属数据类型以及存储地址的对应关系后,也可将该对应关系发送至用户终端,使得用户想要获取某一数据时,终端可先确定出待获取数据对应的标识,然后再根据存储设备发送过来的所述对应关系,确定出该待获取数据所属的数据类型以及对应的存储地址,进而根据该数据类型以及存储地址,从该存储设备中获取到相应的数据。
以上为本申请实施例提供的数据存储及获取的方法,基于同样的思路,本申请实施例还分别提供一种数据存储的装置以及一种数据获取的装置,如图3、4所示。
图3为本申请实施例提供的数据存储的装置结构示意图,具体包括:
确定标识模块301,用于确定待存储数据对应的标识;
确定摘要模块302,用于根据所述待存储数据中包含的属性,确定所述待存储数据所属的数据类型,以及所述待存储数据对应的索引摘要;
判断存储模块303,用于判断所述数据类型对应的存储空间中是否存在所述索引摘要,若是,则比较所述存储空间中保存的所述索引摘要对应的数据和所述待存储数据,并根据比较结果确定是否对所述待存储数据进行存储;若否,则将所述索引摘要以及所述待存储数据存储在所述存储空间中,并返回所述待存储数据的存储地址,记录所述标识、所述数据类型以及所述存储地址的对应关系。
所述确定摘要模块302具体用于,根据预设的索引规则,从所述待存储数据所包含的各属性中选择出指定的若干个属性;根据所述索引规则以及选择出的所述指定的若干个属性,确定出所述待存储数据对应的索引摘要。
所述判断存储模块303具体用于,判断所述存储空间中保存的所述索引摘要对应的数据与所述待存储数据是否相同;若是,则不对所述待存储数据进行存储,并返回所述索引摘要对应的数据在所述存储空间中的存储地址;若否,则对所述索引摘要以及待存储数据信息进行存储,并返回所述待存储数据的存储地址,记录所述标识、所述数据类型以及所述存储地址的对应关系。、
图4为本申请实施例提供的数据获取的装置结构示意图,具体包括:
确定标识模块401,用于确定待获取数据对应的标识;
确定类型模块402,用于根据预先存储的所述标识与数据类型的对应关系,确定出所述待获取数据所属的数据类型;
确定地址模块403,用于根据预先存储的所述标识与存储地址的对应关系,确定出所述待获取数据对应的存储地址;
获取模块404,用于根据确定出的所述数据类型以及存储地址,获取所述待获取数据。
所述获取模块404具体用于,根据确定出的所述数据类型,确定所述数据类型对应的存储空间;在确定出的所述存储空间中的所述存储地址上,获取所述待获取数据。
本申请实施例提供一种数据存储及获取方法及装置,该方法可在确定出待存储数据对应的标识后,根据该待存储数据中包含的属性,确定出该待存储数据所属的数据类型以及对应的索引摘要,并在该数据类型对应的存储空间中判断是否存在该索引摘要,若是,则不对该存储数据进行存储,若否,则对该待存储数据以及对应的索引摘要进行存储,同时,记录确定出的标识、数据类型以及存储地址的对应关系。上述方法由于记录了数据的标识和其存储地址的对应关系,因此在数据获取的过程中,无需将待获取数据对应的标识依次与存储空间中存储的各标识依次进行比对,可直接对应存储地址,获取到该待获取数据,有效减少了数据获取时所需的获取时间,提高了数据获取的效率。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。