一种不确定数据的数据存储方法转让专利

申请号 : CN201510181050.9

文献号 : CN104750860B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 宋杰郭昆张一川张莉

申请人 : 东北大学

摘要 :

一种不确定数据的数据存储方法,该方法在进行不确定数据记录存储时,根据每条记录的不确定情况创建记录级不确定性元组,将记录中包含的所有不确定数据项按属性名称划分,根据属性名称分别创建该属性名称的属性单元,组成属性单元集合,根据属性单元集合中各个属性单元的属性名称创建属性包含单元,为每条记录创建行键,将所有记录的记录级不确定性元组、属性单元集合、属性包含单元与行键整合不确定数据逻辑模型,将不确定数据逻辑模型及对应的数据进行存储,对不确定数据逻辑模型以属性名称为索引项建立属性索引树,根据不确定数据记录间的生成规则创建生成规则矩阵,查询时,根据查询语句的条件属性,利用不确定数据逻辑模型进行查询操作。

权利要求 :

1.一种不确定数据的数据存储方法,其特征在于,包括以下步骤:

步骤1:根据待存储的每条不确定数据记录的不确定情况创建该记录的记录级不确定性元组;

步骤2:将每条不确定数据记录中包含的所有不确定数据项按属性名称划分,根据属性名称分别创建该属性名称的属性单元,组成每条不确定数据记录的属性单元集合,其中,各属性单元包含与该属性名称相关的所有不确定数据项;

步骤3:根据属性单元集合中各个属性单元的属性名称创建属性包含单元,属性包含单元记录当前记录中包含的所有属性名称;

步骤4:为每条不确定数据记录创建行键;

步骤5:将每条不确定数据记录的记录级不确定性元组、属性单元集合、属性包含单元与行键整合为一条完整的不确定数据记录的逻辑表示;

步骤6:重复步骤1至步骤5,将所有不确定数据记录的逻辑表示整合为不确定数据逻辑模型;

步骤7:将不确定数据逻辑模型及对应的每条不确定数据记录的记录级不确定性元组、属性单元集合、属性包含单元与行键进行存储,并对不确定数据逻辑模型以属性名称为索引项建立属性索引树:属性索引树的节点对应属性名称的集合,一个叶子节点对应一个属性名称,叶子节点为行键的集合,行键的集合记录着不确定数据逻辑模型中所有含有该叶子节点对应属性名称的不确定数据记录;

步骤8:遍历不确定数据逻辑模型中的所有不确定数据记录,根据不确定数据记录间的生成规则创建生成规则矩阵Matrixrules;

步骤9:当查询不确定数据时,根据查询语句的条件属性,利用不确定数据逻辑模型进行查询操作;

步骤9.1:在不确定数据逻辑模型的属性索引树中查找包含该条件属性的叶子节点对应的所有不确定数据记录作为候选记录集合Setcandidate;

步骤9.2:根据查询语句的限制条件查找候选记录集合Seteandidate中的记录,获得中间结果集Setmiddle,根据生成规则矩阵Matrixrules,对中间结果集Setmiddle中的各条记录进行筛选,完成查询操作。

2.根据权利要求1所述的不确定数据的数据存储方法,其特征在于,所述的步骤8包括以下步骤:步骤8.1:遍历不确定数据逻辑模型中的所有不确定数据记录,查找不确定数据记录间的生成规则,若两条记录中存在多种生成规则的整合为一种新的生成规则,放入生成规则集合Srules中;

步骤8.2:根据不确定数据记录间的生成规则创建生成规则矩阵Matrixrules:将生成规则集合Srules中的行键作为行值和列值,生成规则作为其对应的内容,创建生成规则矩阵Matrixrules。

说明书 :

一种不确定数据的数据存储方法

技术领域

[0001] 本发明属于数据存储技术领域,具体涉及一种不确定数据的数据存储方法。

背景技术

[0002] 近些年,随着互联网的迅猛发展与数据采集技术的不断提高,人们可获得的数据量越来越大,这为大数据环境下特定信息的查询与管理带来了新的挑战。与此同时,由于数据感知设备的误差或对敏感信息的隐私保护,军事、物流、金融等领域所获得的数据往往不能准确描述数据的特征,即所获得数据具有不确定性。不确定数据是指真实获得的、不精确的、没有确定取值的数据,如GPS定位数据、全国人口总数数据等。相比于确定性数据,不确定数据最大的特点在于同一个数据对应多个可能的取值,对于同类型的数据,不确定数据规模远大于确定性数据规模。以移动通信运营商记录用户3G上网情况为例,用户每次连接3G网络直至断开为一次上网记录,每条记录中都需要记录用户的姓名、手机号码、连接时间、结束时间、所用流量、连接网络时用户坐标、断开网络时用户坐标、连接网络期间用户移动路径等信息,而由于硬件设备的局限以及对个人隐私信息的保护,获得的用户地理位置信息存在着不确定性,每条记录中每个用户位置信息都可能对应一个甚至多个可能的坐标值,这为对用户行为的分析带来了巨大挑战。
[0003] 为解决迅速增长的海量不确定数据的存储问题,相关学者提出了不确定数据模型的概念,在已经成熟的关系型数据模型基础上提供对不确定数据存储的支持。现有不确定数据存储多采取类关系型的键值对数据结构存储不确定数据。这种存储方式虽在模型实现、操作层面上具有简单、便捷的特点,但其仅适用于单一类型的不确定数据,对于不同级别不确定数据并存的情况,如属性级不确定数据与记录级不确定数据并存,现有模型未能提供有效的应对策略,导致存储模型结构单一、僵化,可扩展性不足。同时,由于现有数据存储结构低效,没有高效合理的索引结构辅助数据查询过程,现有模型不能以较低的空间与时间开销实现从已有确定数据向不确定数据的转换,难以满足大数据环境下不确定数据查询与分析情景的应用需求。

发明内容

[0004] 针对现有技术的不足,本发明提出一种不确定数据的数据存储方法。
[0005] 本发明技术方案如下:
[0006] 一种不确定数据的数据存储方法,包括以下步骤:
[0007] 步骤1:根据待存储的每条不确定数据记录的不确定情况创建该记录的记录级不确定性元组;
[0008] 步骤2:将每条不确定数据记录中包含的所有不确定数据项按属性名称划分,根据属性名称分别创建该属性名称的属性单元,组成每条不确定数据记录的属性单元集合,其中,各属性单元包含与该属性名称相关的所有不确定数据项;
[0009] 步骤3:根据属性单元集合中各个属性单元的属性名称创建属性包含单元,属性包含单元记录当前记录中包含的所有属性名称;
[0010] 步骤4:为每条不确定数据记录创建行键;
[0011] 步骤5:将每条不确定数据记录的记录级不确定性元组、属性单元集合、属性包含单元与行键整合为一条完整的不确定数据记录的逻辑表示;
[0012] 步骤6:重复步骤1至步骤5,将所有不确定数据记录的逻辑表示整合为不确定数据逻辑模型;
[0013] 步骤7:将不确定数据逻辑模型及对应的每条不确定数据记录的记录级不确定性元组、属性单元集合、属性包含单元与行键进行存储,并对不确定数据逻辑模型以属性名称为索引项建立属性索引树:属性索引树的节点对应属性名称的集合,一个叶子节点对应一个属性名称,叶子节点为行键的集合,行键的集合记录着不确定数据逻辑模型中所有含有该叶子节点对应属性名称的不确定数据记录;
[0014] 步骤8:遍历不确定数据逻辑模型中的所有不确定数据记录,根据不确定数据记录间的生成规则创建生成规则矩阵Matrixrules;
[0015] 步骤8.1:遍历不确定数据逻辑模型中的所有不确定数据记录,查找不确定数据记录间的生成规则,若两条记录中存在多种生成规则的整合为一种新的生成规则,放入生成规则集合Srules中;
[0016] 步骤8.2:根据不确定数据记录间的生成规则创建生成规则矩阵Matrixrules:将生成规则集合Srules中的行键作为行值和列值,生成规则作为其对应的内容,创建生成规则矩阵Matrixrules;
[0017] 步骤9:当查询不确定数据时,根据查询语句的条件属性,利用不确定数据逻辑模型进行查询操作;
[0018] 步骤9.1:在不确定数据逻辑模型的属性索引树中查找包含该条件属性的叶子节点对应的所有不确定数据记录作为候选记录集合Setcandidate;
[0019] 步骤9.2:根据查询语句的限制条件查找候选记录集合Setcandidate中的记录,获得中间结果集Setmiddle,根据生成规则矩阵Matrixrules,对中间结果集Setmiddle中的各条记录进行筛选,完成查询操作。
[0020] 本发明的有益效果:
[0021] 本发明提出了一种不确定数据的数据存储方法,在大规模属性数量情况下,本发明提出的存储方法一方面对不确定数据记录内的不确定数据进行了整合,根据属性划分不确定数据并进行存储,提高了读取不确定数据的效率,另一方面,对所有属性构建了属性索引树,大大减低了模型检索各属性数据的时间。同时,该方法通过添加记录级不确定性元组,提供了对不同级别不确定性数据的支持,使得模型应用场景更加广泛,具有高可用性与高扩展性,很好地达到了优化不确定数据存储的效果。

附图说明

[0022] 图1为本发明具体实施方式中的不确定数据的数据存储方法的流程图;
[0023] 图2为本发明具体实施方式中的不确定数据的属性单元的示意图;
[0024] 图3为本发明具体实施方式中的不确定数据的不确定数据逻辑模型的示意图;
[0025] 图4为本发明具体实施方式中的不确定数据的属性索引树结构图;
[0026] 图5为本发明具体实施方式中的不确定数据的生成规则矩阵与不确定数据逻辑模型的关系示意图。

具体实施方式

[0027] 下面结合附图对本发明具体实施方式加以详细的说明。
[0028] 以移动通信运营商记录用户3G上网情况为例,用户每次连接3G网络直至断开为一次上网记录,若每条记录除用户姓名、手机号码、连接时间、结束时间、所用流量等基本信息外,每隔一定时间还记录用户的地理位置,如一分钟或三十秒,考虑到用户连接网络的时间一般较长,记录中用户不同时刻的地理位置数据数量随时间线性增长,又由于硬件设备的局限以及对个人隐私信息的保护,获得的用户地理位置信息存在着不确定性,每条记录中每个用户位置信息都可能对应一个甚至多个可能的坐标值。当基于这些记录进行数据分析或执行特定查询时,整个操作的时间开销极大,通过本发明提出的基于不确定数据的数据存储方法对用户上网记录数据的存储进行优化。
[0029] 一种不确定数据的数据存储方法,如图1所示,包括以下步骤:
[0030] 步骤1:根据待存储的每条不确定数据记录的不确定情况创建该记录的记录级不确定性元组。
[0031] 记录级不确定性元组的数据以<记录不确定概率Prow,最新修改时间Trow>结构存储,其中,记录不确定概率Prow表示当前整条不确定数据记录的不确定性,以浮点数类型表示,其概率值Prow∈[0,1]。当Prow=0时,表示当前记录完全不可信,当Prow=1时,表示当前记录完全可信,Prow值越大表示当前记录确定性越大。最新修改时间Trow表示当前记录中记录级不确定性元组创建时间或最近修改时间的时间戳,即创建时间或最近修改时间距离格林威治标准时间(1970年1月1日00:00:000)的毫秒偏移量。
[0032] 本实施方式中,由于延迟,系统可能对同一用户的上网情况创建多条上网记录,每条记录都有一个不确定性概率,表示该记录为真正的用户上网记录的可能性,如<0.4,1416290242>,其中0.4表示当前整条记录的不确定性,则这条用户上网记录是真实数据的可能性为0.4,1416290242表示当前记录中记录级不确定性元组创建时间或最近修改时间距离格林威治标准时间(1970年1月1日00:00:000)的毫秒偏移量。
[0033] 步骤2:将每条不确定数据记录中包含的所有不确定数据项按属性名称划分,根据属性名称分别创建该属性名称的属性单元,组成每条不确定数据记录的属性单元集合,其中,各属性单元包含与该属性名称相关的所有不确定数据项。
[0034] 如图2所示,各个不确定数据项均以<属性取值V,属性取值概率P,最新修改时间T>的结构存储,其中,属性取值V表示所描述的属性K的一个可能取值,属性取值概率P表示当前记录中属性K取值为V时的概率,以浮点数类型表示,属性取值概率的概率值P∈[0,1]。当P=0时,表示当前记录中属性K不可能取值为V,当P=1时,当前记录中属性K一定取值为V,P值越大表示当前属性单元属性取值为V的可能性越大,最新修改时间T表示该数据项创建或修改时间的时间戳,即创建或修改时间距离格林威治标准时间(1970年1月1日00:00:000)的毫秒偏移量。每条记录中的所有属性单元构成本条记录的属性单元集合。
[0035] 本实施方式中,由于每条用户上网记录都包含很多属性,每个属性又可能包含多个不确定的取值,为加快数据的检索速度,为每条记录中的每个属性创建一个不确定数据集合,即属性单元,将这个属性对应的所有可能的取值情况都放入这个属性单元中,以连接时间start为例,记录中包含两个start属性可能的取值,此时,为连接时间属性start创建一个属性单元,在这个属性单元中放入与start相关的两个不确定数据:<20141101 00:00:000,0.65,1416290242>和<20141101 00:01:234,0.35,1416290242>,这两个<属性取值,属性取值概率,最新修改时间>结构数据表示此条用户上网记录可能开始于20141101 00:00:
000,也可能开始于20141101 00:01:234,前者发生的概率为0.65而后者发生的概率为
0.35,这两个关于属性start的不确定数据项记录时间距离格林威治标准时间(1970年1月1日00:00:000)的毫秒偏移量都为1416290242。
[0036] 步骤3:根据属性单元集合中各个属性单元的属性名称创建属性包含单元,属性包含单元记录当前记录中包含的所有属性名称。
[0037] 属性包含单元是对当前不确定数据记录的简要概括,当进行数据查询时,通过首先检查属性包含单元是否包含指定查询的条件属性,若未找到待查询属性,则说明当前记录不包含待查询属性,可跳过当前记录直接处理下一条记录,进而避免了逐条逐项地检查模型中每条数据记录所包含数据项导致的巨大开销,大大缩短查询时间,提高查询效率。
[0038] 本实施方式中,由于每条用户上网记录中记录的属性数量可能较多,需要额外创建一个属性包含单元以记录本条记录中包含的所有属性,若记录中记录用户姓名、手机号码、连接时间、结束时间、所用流量等属性,则该记录对应的属性包含单元为{name,phonenumber,start,end,all}。
[0039] 步骤4:为每条不确定数据记录创建行键RowKey。
[0040] 为每条不确定数据记录创建行键RowKey,以唯一地识别每条不确定数据记录,行键RowKey类型为整型。行键RowKey的作用在于区分不确定数据记录并为实现基于索引的快速检索不确定记录或数据提供支持。行键RowKey默认从1开始,依次累加,若模型中含有10条数据,则各记录的行键依次为1,2,…,9,10。
[0041] 步骤5:将每条不确定数据记录的记录级不确定性元组、属性单元集合、属性包含单元与行键整合为一条完整的不确定数据记录的逻辑表示。
[0042] 步骤6:重复步骤1至步骤5,将所有不确定数据记录的逻辑表示整合为不确定数据逻辑模型,如图3所示。
[0043] 步骤7:将不确定数据逻辑模型及对应的每条不确定数据记录的记录级不确定性元组、属性单元集合、属性包含单元与行键进行存储,并对不确定数据逻辑模型以属性名称为索引项建立属性索引树:属性索引树的节点对应属性名称的集合,一个叶子节点对应一个属性名称,叶子节点为行键的集合,行键的集合记录着不确定数据逻辑模型中所有含有该叶子节点对应属性名称的不确定数据记录,如图4所示。
[0044] 本实施方式中,对不确定数据逻辑模型以属性名称为索引项建立属性索引树通过B+树结构实现,设当前仅含有10条用户上网记录,则属性{name,phonenumber,start,end,all}均对应于属性索引树中的一个叶子节点,对于属性name,属性索引树中存在一个叶子节点对应属性name,并且这个叶子节点对应一个含有10个行键的集合。
[0045] 步骤8:遍历不确定数据逻辑模型中的所有不确定数据记录,根据不确定数据记录间的生成规则创建生成规则矩阵Matrixrules。
[0046] 如图5所示,根据不确定数据记录间的生成规则创建生成规则矩阵Matrixrules,其作用在于为不确定数据模型提供快速检索记录间生成规则的结构支持。生成规则矩阵Matrixrules的行、列均为不确定数据记录的行键RowKey,
[0047] 本实施方式中,假设当前仅含有10条用户上网记录,则生成规则矩阵Matrixrules是一个10×10规模的矩阵共有10行10列。
[0048] 步骤8.1:遍历不确定数据逻辑模型中的所有不确定数据记录,查找不确定数据记录间的生成规则,若两条记录中存在多种生成规则的整合为一种新的生成规则,放入生成规则集合Srules中。
[0049] 生成规则以数据结构的形式放入生成规则集合Srules中,其中结构表示行键为RowKey1、RowKey2的不确定数据记录间存在生成规则Rule,即RowKey1Rule RowKey2。生成规则是指不确定数据记录间共存、互斥、依赖等相互关系,如≡、 等,其作用域是两行不同的不确定数据记录。
[0050] 若两条记录中存在多种生成规则的整合为一种新的生成规则,如 为减少生成规则的数量并提高检索任两条不确定数据记录间生成规则的效率,则
[0051] 本实施方式中,若其行键RowKey1、RowKey2分别为5、9,则用 表示该生成规则,并将其放入Srules中,习惯地把较小的行键放在结构中RowKey1的位置。用户的上网行为可能被重复记录,对于两条用户上网记录,其行键分别为1、3,若在生成规则集合Srules中有 和 即记录1所记录的用户上网时
间包含在记录3中,同时记录3所记录的用户上网时间包含在记录1中,此时我们可以将记录
1、3间的这两种生成规则 与 合并为一种新的生成规则=,表示为<1,3,=>。对其他存在相同情况的生成规则进行合并,使任两条记录间仅存在一种生成规则。
[0052] 步骤8.2:根据不确定数据记录间的生成规则创建生成规则矩阵Matrixrules:将生成规则集合Srules中的行键作为行值和列值,生成规则作为其对应的内容,创建生成规则矩阵Matrixrules。
[0053] 将生成规则集合Srules中的行键RowKey1、RowKey2作为行值和列值,将生成规则Rule作为其对应的内容,进而保证在生成规则矩阵Matrixrules中,任意两记录间若存在依赖,则仅存在一种生成规则表示。
[0054] 步骤9:当查询不确定数据时,根据查询语句的条件属性,利用不确定数据逻辑模型进行查询操作。
[0055] 步骤9.1:在不确定数据逻辑模型的属性索引树中查找包含该条件属性的叶子节点对应的所有不确定数据记录作为候选记录集合Setcandidate。
[0056] 本实施方式中,以查询联网1小时后位于地点A的用户为例,根据要求查询含有条件属性one_hour且其值为A的用户上网记录,在不确定数据逻辑模型的属性索引树中查找包含条件属性one_hour的叶子节点对应的所有不确定数据记录作为候选记录集合Setcandidate,
[0057] 步骤9.2:根据查询语句的限制条件查找候选记录集合Setcandidate中的记录,获得中间结果集Setmiddle,根据生成规则矩阵Matrixrules,对中间结果集Setmiddle中的各条记录进行筛选,完成查询操作。
[0058] 本实施方式中,根据查询语句中对属性one_hour取值为A的约束,查找候选记录集合Setone_hour中的各条记录,去除属性one_hour不取值为A的用户上网记录,获得中间结果集Setmiddle,根据生成规则矩阵Matrixrules,对中间结果集Setmiddle中的各条记录进行进一步筛选,如去除生成规则为互斥的多条记录中记录级不确定性较小的用户上网记录、保留存在等价生成规则的多条记录中的一条等,完成查询操作,将筛选后的符合条件的用户上网记录返回。