数据表储存、修改、查询和统计方法与流程

文档序号:15982671发布日期:2018-11-17 00:31阅读:326来源:国知局

本发明涉及数据控制领域,具体而言,涉及数据表储存方法、数据表修改方法、数据查询方法和数据统计方法。

背景技术

随着互联网技术的不断发展,目前基于各种云架构的产品层出不穷,云存储技术的载体是云端系统,具体的,云端系统包括公有云和私有云。私有云安全但不便于大规模调用,公有云的安全性从实际上和心理上都感觉会弱一些,但各种运算资源、存储资源和带宽资源都相对好的多。因此,很多用户都面临要将自己的数据存入公共网络而又面临安全问题的窘境。

比如现在的视频、音频、文本、数据库等数据,很多都是个人或公共机构的私有数据,如果单一地放在一家服务提供商,不管提供商如何加密,用户都认为是脱离了自己的控制范围,造成心理上的不安全感,目前全球采用的主要技术都是通过自身的加密手段将用户的数据保存加密,并在自身系统中分开存放。

可以预知的是,通过获取加密密码,或者使用暴力破解工具来反向计算出解密密码,便可以从储存在云端系统里的数据中获取想要得到的明文信息,以直接读取。其中,数据表作为数据的主要对象,数据表是其他对象的基础,如果数据表出现泄密现象,则数据库中的核心内容则会有泄密的风险。由此,需要出现一个方法,以解决云存储环境中的数据表泄密问题。



技术实现要素:

本发明的目的在于提供数据表储存方法、数据表修改方法、数据查询方法和数据统计方法,以解决上述的问题。

在本发明的实施例中提供了数据表储存方法,包括:

获取构建新数据表指令,所述构建新数据表指令包括多个所述新数据表之间的关联方式;

根据所述关联方式和预先获取的原数据表的类型,将一个所述原数据表中的字段进行拆分,以生成多个新数据表,使单独的所述新数据表无法表示所述原数据表的含义,且每种所述字段的拆分方式是唯一的;

分别将不同的所述新数据表按照预设的首次储存位置,储存至至少两个云端系统中。

优选的,若所述原数据表的类型为数字型,则所述根据所述关联方式和预先获取的原数据表的类型,将一个所述原数据表中的字段进行拆分,以生成多个新数据表包括:

将所述原数据表中的原字段进行拆分,以生成填充字段和平衡字段,所述填充字段和所述平衡字段分别组成所述新数据表,使所述填充字段和所述平衡字段的结合与所述原字段满足预设的函数关系。

优选的,所述原字段的数值分别与所述填充字段的数值和所述平衡字段的数值具有正相关性。

优选的,所述将所述原数据表中的原字段进行拆分,以生成填充字段和平衡字段包括:从预先获取的数字矩阵中获取所述填充字段,按照预设的函数关系,使用所述填充字段与所述原字段进行计算,以生成平衡字段。

优选的,所述数字矩阵为行与列均为奇数的方阵,且矩阵中同一行的数字按照由前至后的顺序依次增大,行数较大的行中的首位数字大于行数较小的行中末位数字,所述数字矩阵中的数字个数大于最大数,所述最大数是由所述原字段每个数位均由9替代后产生的数字的数值。

优选的,所述从预先获取的数字矩阵中获取所述填充字段包括:

根据所述原字段的位数,确定中间数的数值x,

计算所述原字段的数值与所述中间数的数位差值y;

根据所述数位差值和所述中间数的数值,在所述数字矩阵中获取所述填充字段,所述填充字段为数字矩阵中第x+y个元素的数值。

优选的,在所述填充字段和所述平衡字段分别组成所述新数据表后,还包括在所述新数据表内的相邻字段间增加填充字段,或在所述新数据表内的相邻记录值之间添加填充字段。

优选的,若所述原数据表的类型为字符型,则所述根据所述关联方式和预先获取的原数据表的类型,将一个所述原数据表中的字段进行拆分,以生成多个新数据表包括:

将所述原数据表中文字的字符编码进行拆分,以获得多组相互关联的已拆分字符编码;

将一组或多组相互关联的所述已拆分字符编码分别组成多个新数据表。

优选的,在所述将一组或多组相互关联的所述已拆分字符编码分别组成多个新数据表后还包括:将一个所述新数据表中相邻两个所述已拆分字符编码间添加填充编码,且每个字所对应的字符编码使用唯一的一种方式进行拆分。

优选的,若所述原数据表的类型为日期型,则所述根据所述关联方式和预先获取的原数据表的类型,将一个所述原数据表中的字段进行拆分,以生成多个新数据表包括:

根据原数据表中的未处理日期型字段生成多个相互关联的已拆分字段,且使多个所述已拆分字段与所述未处理日期型字段满足预设的函数关系,其中,所述已拆分字段包括日期型字段和,或数字型字段;将一个或多个所述已拆分日期型字段/上述已拆分数字型字段组成一个所述新数据表。

优选的,所述将一个未处理日期型字段生成多个相互关联的已处理日期型字段/数字型字段包括:

选择预定的日期型字段所显示的日期作为基准日期;

计算所述未处理日期型字段的日期与所述基准日期的天数差值;

按照预设的比例,将所述天数差值分为多个天数数值,使多个所述天数数值的结合与所述天数差值符合预设的函数关系;

将每个所述天数数值的字段组成新数据表。

优选的,在所述分别将不同的所述新数据表按照预设的首次储存位置,储存至至少两个云端系统中前还包括:

将所述构建新数据表指令、所述关联方式和所述首次储存位置储存在缓存中;

在所述分别将不同的所述新数据表按照预设的首次储存位置,储存至至少两个云端系统中后,还包括:

发出所述关联方式和所述首次储存位置,并删除缓存的所述构建新数据表指令、所述关联方式和所述首次储存位置。

优选的,所述分别将不同的所述新数据表按照预设的首次储存位置,储存至至少两个云端系统中包括,分别将不同的所述新数据表储存至至少一个公有储存系统和一个私有储存系统中。

优选的,所述分别将不同的所述新数据表按照预设的首次储存位置,储存至至少两个云端系统中包括:

分别将不同的所述新数据表按照预设的新数据表储存位置,储存至至少三个云端系统中,且每个所述新数据表存储至至少两个所述云端数据库中。

优选的,在所述根据所述关联方式和预先获取的原数据表的类型,将一个所述原数据表中的字段进行拆分前还包括:

获取所述原数据表所对应的身份信息;

判断所述原数据表的身份信息是否出现在预先获取的执行列表中,所述执行列表包括应当被储存的原数据表的身份信息;

若是,则执行所述拆分步骤。

优选的,所述分别将不同的所述新数据表按照预设的首次储存位置,储存至至少两个云端系统中包括:

将多个所述新数据表按照预定的储存比例储存至公有储存系统和私有储存系统中。

本发明实施例还提供了基于数据表储存方法的非还原数据表的数据表修改方法,包括:

获取待写入数据、写入位置和写入方式,所述写入方式包括删除、增加和替换;

根据所述写入位置和预先获取的储存位置,在云端数据库中查找待修改的新数据表,所述储存位置包括每个所述新数据表的储存地址;

若所述写入方式为删除,则按照写入位置和所述关联方式,将所述待修改的新数据表中与所述写入位置相对应的字段删除,以生成已修改数据表;

若所述写入方式为增加/替换,则将待写入数据按照其类型和所述关联方式进行拆分,将所述待修改的新数据表中与所述写入位置相对应的字段删除,并将拆分后的所述待写入数据按照所述写入位置加入所述待修改的新数据表,以生成多个已修改数据表。

本发明实施例还提供了基于数据表储存方法的还原数据表的数据表修改方法,包括:

获取待写入数据、写入位置和写入方式;

读取与所述写入位置相对应的多个所述新数据表;

根据所述关联方式将多个所述新数据表还原为原数据表,或根据所述关联方式将多个所述新数据表还原为部分原数据表;

根据所述写入位置、所述待写入方式和所述写入数据,对所述原数据表/部分原数据表进行修改,以生成已修改的原数据表;

根据所述关联方式,将所述已修改的原数据表按照其类型进行拆分;

按照预设的已修改数据表储存位置,将所述拆分后的原数据表储存至不同的云端系统中。

本发明实施例还提供了基于数据表储存方法的数据表的数据查询方法,包括:

获取查询关键字;

按照所述关联方式对所述关键字进行拆分,以获得多个新关键字;

在多个云端系统中查询与所述新关键字的相符合的关键数据表;

将多个所述关键数据表按照所述关联方式组合为原数据表,或组合为部分原数据表;

发出所述原数据表或所述部分原数据表。

本发明实施例还提供了基于数据表储存方法的数据统计方法,包括:

获取统计方式和查询关键字,所述统计方式中包括数据类型和计算方式;

按照所述关联方式对所述关键字进行拆分,以获得多个新关键字;

在多个云端系统中查询与所述新关键字相符合的关键数据表,并按照所述数据类型查询所述关键数据表中的多个关键数据;

获取所述关键数据,并将所述关键数据按照所述关联方式进行组合,以获得待统计数据;

按照所述计算方式计算所述待统计数据,以获得统计结果。

优选的,在获取关键数据,并将关键数据按照关联方式进行组合,以获得待统计数据前包括:将储存在同一个云端系统内的关键数据按照预设的合并方式进行计算,以生成关键数据。

本发明实施例提供的数据表储存方法,与现有技术中的通过将待储存的数据进行加密,再储存到数据库中,但通过获取加密密码,或者使用暴力破解工具来反向计算出解密密码,便可以从储存在云端系统里的数据中获取想要得到的明文信息,进而导致了数据的泄密相比,其通过将一个所述原数据表中的字段进行拆分,以生成多个新数据表,使单独的所述新数据表无法表示所述原数据表的含义,且每种所述字段的拆分方式是唯一的,即使被他人获取了一张新数据表,也无法根据新数据表还原出原数据表,也就不会导致原数据表中的内容被泄露,从而保证了数据表中内容的安全性,进而解决了现有技术中的不足。

附图说明

图1示出了本发明实施例的数据表储存方法的流程图;

图2示出了本发明实施例的非还原数据表的数据表修改方法的流程图;

图3示出了本发明实施例的还原数据表的数据表修改方法的流程图;

图4示出了本发明实施例的数据查询方法的流程图;

图5示出了本发明实施例的数据统计方法的流程图。

具体实施方式

下面通过具体的实施例子并结合附图对本发明做进一步的详细描述。本发明实施例1提供了数据表储存方法的基本方案,如图1所示,包括如下步骤:

s101,获取构建新数据表指令,构建新数据表指令包括多个新数据表之间的关联方式;

s102,根据关联方式和预先获取的原数据表的类型,将一个原数据表中的字段进行拆分,以生成多个新数据表,使单独的新数据表无法表示原数据表的含义,且每种字段的拆分方式是唯一的;

s103,分别将不同的新数据表按照预设的首次储存位置,储存至至少两个云端系统中。

具体的,步骤s101中,多个新数据表之间的关联关系的作用是,用于按照该关联关系将多个新数据表组成原数据表。关联关系可以指对原数据表进行拆分的过程;也可以指多个新数据表中对应的数据(将原数据表中一个字段,或一个记录值拆分为多个新字段,或新记录值,且多个新字段,或多个新记录值至用于组成原数据表中一个字段,或一个记录值,由原数据表中一个字段拆分出来的多个新字段被称为对应的数据,或由原数据表中一个记录值拆分出来的多个新记录值被称为对应的数据,其中字段是由一个或多个记录值组成的,此处的拆分可以理解为将数字或者代码按照数位的关系,或者大小的关系进行的拆分)与原数据表中对应数据的函数关系,也就是通过多个新数据表中对应的数据,能够计算/还原出原数据表中对应的数据。

步骤s102中,在获取了构建新数据表指令之后,还要根据原数据表(也可以被称为待拆分数据表)的类型对原数据表进行拆分。其中,原数据表的类型可以根据获取到的原数据表进行判断,也可以是从构建新数据表指令中获得的。数据表的类型包括:数字型、日期型和字符型。根据数据表中字段的类型不同对数据表中的字段进行拆分。使得单独的新数据表无法表达原数据表的含义,具体如原字段为数字55,可以将55拆分为50和60两个字段(不能拆分为55和0),那么50和60均无法反应原字段55的含义,这样便起到了将数据表中的字段的真实含义,同时通过50/2+60/2,便可以计算出55,这样以拆分的方式进行隐藏的功能;又如,可以将55拆分为5和11(不能拆分为55和1),5*11=55,也就还原出了原数据表中的55。“使单独的所述新数据表无法表示所述原数据表的含义”还可以理解为使单独的所述数据表无法被还原为原数据表,由于单独的新数据表无法被还原为原数据表,也就无法读取原数据表的真实含义。“使单独的所述新数据表无法表示所述原数据表的含义”还可以理解为:只有将多个新数据表中的对应字段经过合并和计算后,字段中的记录值才能与原数据表的字段的记录值完全相同。

需要说明的是,步骤s102中,对原数据表进行拆分后,可以是由拆分后得到的全部新数据表才能还原为原数据表,也可以是由拆分后得到的部分新数据表还原成原数据表。如将原数据表拆分为5个新数据表,那么可以最少由5个新数据表还原出原数据表,也可以最少由2-4个新数据表还原出原数据表。

另外,每种字段的拆分方式是唯一的,可以是,在对每一个终端(也可以按照数据表的大小、类型、来源、功能等能够对原数据表进行分类,并不局限于按照终端对数据表进行分类)所对应的原数据表进行拆分的时候,相同字段所拆分出来的结果是完全相同的(一一对应的),也就是a拆分后得出x1和x2,与a不相同的b拆分得出的为y1和y2,也有可能b拆分得出的是x1和y1,或者拆分得出的是x2和y1,但绝不会是x1和x2,以保证有效的区分度。

步骤s103,将原数据表拆分后得到的新数据表分别储存到不同的云端系统中(包括私有储存系统和公有储存系统),以使每个云端系统均无法获得能够还原为原数据表的足够多的新数据表。如步骤s102中,所描述的,如果通过拆分后得到的部分新数据表能够还原出原数据表,那么,就可以将这部分原数据表分别储存到不同的云端系统中。如,由原数据表拆分得到a、b、c、d和e,5个新数据表,其中,任意三个新数据表组合后便能够还原出原数据表,那么便可以在每个云端系统中最多储存两个新数据表,来防止某一个云端系统能够获得足够还原为原数据表的足够数量的新数据表,如将这5个新数据表分别储存在5个云端系统中,其储存方式可以是ab储存在一个云端系统中,bc储存在一个云端系统中,cd储存在一个云端系统中,de储存在一个云端系统中,ea储存在一个云端系统中。

即使将多个新数据表(也可以说是,能够还原出原数据表的足够多的新数据表)被储存到同一个云端系统中,该云端系统也并不清楚关联关系,也就无法将多个新数据表还原成原数据表,也就无法解读原数据表中字段的含义。为了更好的保证数据表的安全性,可以将关联关系只储存在“发出构建新数据表指令”的终端,也可以将关联关系只储存在私有储存系统中,或者经过验证的公有储存系统中。当然,为了储存、还原或使用新数据表的便利性,构建新数据表指令可以携带有储存位置,也就是首次储存位置,即使关联关系被获取,由于不清楚每个新数据表的储存位置,同样无法获取到能够还原为原数据表的,足够多的新数据表。进一步,储存位置和关联关系可以储存在不同的位置,以加强安全性,也可以是将储存位置和关联关系分别使用不同的加密方式进行加密,以提高安全性。储存位置可以是在构建新数据表指令中携带的,也可以是由本地生成的。

本发明实施例提供的数据表储存方法,其通过将一个所述原数据表中的字段进行拆分,以生成多个新数据表,使单独的所述新数据表无法表示所述原数据表的含义,且每种所述字段的拆分方式是唯一的,即使被他人获取了一张新数据表,也无法根据新数据表还原出原数据表,也就不会导致原数据表中的内容被泄露,从而保证了数据表中内容的安全性,进而解决了现有技术中的不足。

本发明实施例2提供了数据表储存方法的优化方案,在实施例1的基础上,数据表的类型包括数字型、日期型和字符型。

若所述原数据表的类型为数字型,则步骤s102中,所述根据所述关联方式和预先获取的原数据表的类型,将一个所述原数据表中的字段进行拆分,以生成多个新数据表包括:

将所述原数据表中的原字段进行拆分,以生成填充字段和平衡字段,所述填充字段和所述平衡字段分别组成所述新数据表,使所述填充字段和所述平衡字段的结合与所述原字段满足预设的函数关系。

如果原数据表的字段是数字型字段,则可以将原字段(也可以称为原数字)拆分为填充字段(也可以称为填充数字)和平衡字段(也可以称为平衡数字),使填充数字和平衡数字结合,且计算之后,才能组成原数字。当然,填充数字和平衡数字并不是指一个数字,填充数字和平衡数字所指的均是数字类型,填充数字指的是基础数字,也就是预先获得的任意一个数字;平衡数字,则是根据填充数字和原数字计算出来的。进一步,填充数字和平衡数字均可以是多个。具体如,原数字为40,那么取得填充数字为4,如果关联关系中是以乘法为计算原则,那么平衡数字可以是10,也可以是5和2。如,原数字为50,取得的填充数字为2和5,关联关系是以乘法为计算原则,那么平衡数字应是5。即5(平衡数字)=50(原数字)÷2(填充数字)÷5(填充数字);当然也可以是平衡数字=原数字*填充数字,如20(平衡数字)=5(原数字)*4(填充数字)。

具体的,所述原字段的数值分别与所述填充字段的数值和所述平衡字段的数值具有正相关性。在对数据表进行储存的时候,系统会自动将其排序,如果第一个原字段(原数字)的数值较大,第二个原字段(原数字)的数值较小,而第一个原字段产生的第一平衡字段和/或第一填充字段的数值较小,第二个原字段产生的第二平衡字段和/或第二填充字段的数值较大则可能会造成,排序混乱的问题,因此,为了保证拆分后,平衡字段和填充字段在排列时,具有和对应的原字段的排序位次相同,也就是原字段的数值分别与填充字段的数值和平衡字段的数值具有正相关性。,进而保证多个原字段在排序之后所形成的数据表被拆分后,所形成的携带有多个平衡字段,或携带有多个填充字段的新数据表中,与原字段对应的平衡字段和填充字段的排列位次不会发生变化,也就不会导致数据表统计时发生混乱。

如,生成两张新数据表的计算公式为:

因为a+b=x,所以x-b=a,

因为(a)+(b)=(x),所以(x)-(b)=(a),

同理,

因为a-b=x,所以x+b=a,

因为(a)-(b)=(x),所以(x)+(b)=(a)。

其中,a为原数据表中的字段,b为填充字段,x为平衡字段。

同理,生成多张表的计算公式为:

因为a+b+c=x,所以x-c-b=a,

因为(a)+(b)+(c)=(x),所以(x)-(c)-(b)=(a)

进一步,所述将所述原数据表中的原字段进行拆分,以生成填充字段和平衡字段包括:从预先获取的数字矩阵中获取所述填充数字,按照预设的函数关系,使用所述填充字段与所述原字段进行计算,以生成平衡字段。

从预先生成的数字矩阵中获取填充数字,能够加快获取填充数字的速度,并且能够使填充数字的获得更加具有规律性。进一步,可以按照某一种规律,来从数字矩阵中获取填充数字,以保证某一个类别(区间、范围)的原数字能够对应的取得某一个范围的填充数字,也就使填充数字的获取更有规律性。

具体的,所述数字矩阵为行与列均为奇数的方阵,且矩阵中同一行的数字按照由前至后的顺序依次增大,行数较大的行中的首位数字大于行数较小的行中末位数字,所述数字矩阵中的数字个数大于最大数,所述最大数是由所述原字段每个数位均由9替代后产生的数字的数值。

矩阵中表示每个元素位置,通常用an,m表示,其中n和m分别表示行和列。当矩阵中同一行的数字按照由前至后的顺序依次增大,行数较大的行中的首位数字大于行数较小的行中末位数字,也就使得矩阵中的每个元素的数值均按照列的顺序,逐列增大(一列中的任一元素均大于前一列中的任一元素),和按照行的顺序,逐行增大。

这样设置数字矩阵,能够使数字矩阵更加具有规律性,并且在获取填充字段的时候,可以按照如下的方式进行获取,所述从预先获取的数字矩阵中获取所述填充字段包括:

根据所述原字段的位数,确定中间数的数值x,

计算所述原字段的数值与所述中间数的数位差值y;

根据所述数位差值和所述中间数的数值,在所述数字矩阵中获取所述填充字段,所述填充字段为数字矩阵中第x+y个元素的数值。

通过此种获取填充字段的方式,能够保证,当原字段的数值较大时,获取的填充字段应出现在数字矩阵中靠后的位置,也可以按照预定的规律,使原字段较大时,获取的填充字段较大,原字段较小时,获取的填充字段较小。具体的,由于数字矩阵中的数字是按照由小到大依次排列的,并且数字矩阵中的元素的数量要大于最大数,也就是原字段每个数位均由9替代后产生的数字的数值。如,原字段为345,那么对应的最大数为999,原字段为23,对应的最大数为99.保证了数字矩阵中的元素数量大于最大数,也就保证了不同的原字段的数值均能够对应的获取到不同值的元素(每个元素的数值是不同的)。需要说明的是,文中提及的中间数、最大数均为整数,平衡字段、填充字段也可以为整数。

进一步,可以通过确定中间数的方式,来简化获取填充字段的过程。位数相同的数字的中间数是相同的,如23,56,78的最大数都是99,中间数都是50。那么数位差值=原字段的数值-中间数,那么,原字段为23时,中间数为50,23-50=-27,那么在数字矩阵中,找出第50个元素的位置,并且向前推27个,也就是第23个元素为要获取的填充字段。需要说明的是,第几个元素,是按照数字矩阵中,行与列的先后顺序排列得到的,后一行的第一个元素的前面一个元素是第一行的最后一个元素;同一行中,元素的位次是按照其所在列数的大小关系前后排列的。如,5*5的数字矩阵中(an,m,n为行数,m为列数),a2,3前面第二个元素是a2,1;a2,3前面第三个元素是a1,3。当然,中间数的计算方式可以并不要求其具体的方式,但相同位数的原数字,应具有相同的中间数,如中间数=最大数/b+a/b,其中a和b均为不为0的自然数。

通过此种获取填充字段的方式,能够保证每一个原字段均有,且仅有一个填充字段与该原数字相对应(数字矩阵中每个元素的数值均不相等),并且,通过预设的函数关系计算出的平衡字段也能够保证,平衡字段与原字段(原数字)具有正相关性。具体的,如原数字为5,填充字段为6,那么平衡字段可以是5+6=11;如使用计算规则,平衡字段=原数字+填充字段*x;平衡字段=原数字*填充字段*x;平衡字段=原数字*x+填充字段*y;平衡字段=原数字*x+填充字段/y,其中,x和y均可以是任意自然数,或者数轴上可表达的任意数字。以此来计算出的平衡字段也与原数字具有正相关性。并且,其是通过一个预先生成的数字矩阵中获取的,由此,可以简化和规范填充字段的获取过程。

为了增加填充字段和平衡字段的复杂性和难以还原性,在所述填充字段和所述平衡字段分别组成所述新数据表后,还包括在所述新数据表内的相邻字段间增加填充字段,或在所述新数据表内的相邻记录值之间添加填充字段。

在相邻字段间增加填充字段,或在所述新数据表内的相邻记录值之间添加填充字段能够破坏字段,或者记录的顺序。进而能够达到,方式非法获取数据表的人无法了解哪些是填充字段,哪些是数据表中应出现的数字(字段,或记录值),因而能够防止非法读取。需要说明的是,此处的填充字段可以与前文提及的填充字段是相同的,也可以是从数字矩阵中再次提取的,本段所提供的方法并不限制填充字段的数值和来源,能够起到填充作用的任意自然数均可。

还可以将数字以各种进制拆分,比如二进制、八进制、十进制、十六进制,

比如二进制数,11101011

可拆分成1110、1011,规则将记录他们的实际表示位数,如

11100000、00001011;

10101010、01000001。

上述对二进制数字进行拆分的方法是隔位拆分,或者被称为分组拆分。也就是将二进制、八进制、十进制、十六进制的数字,按照数位的不同进行拆分。将奇数数位的数字取出,并按照原数字的顺序组成第一新数字(新数据表中的字段)和将偶数数位的数字取出,并按照原数字的顺序组成第二新数字,为了保证在还原为原数字的时候,顺序不会出现错误,可以在新数字的相邻数位之间填充“0”,或者其他填充字符(如数字、英文字符、希腊字母等),以达到使用填充字符替代在第一新数字中未出现的偶数位的数字,或者在第二新数字中未出现的奇数位数字。那么,在将第一新数字和第二新数字还原为原数字的时候,便可以将填充字符去掉,再将另一新数字中的对应位置的数字(非填充字符的数字)对应的加入即可还原。如将11101011拆分为10101010和01000001。

隔位拆分不应限制于其拆分的位置,可以隔一位进行拆分,也可以隔两位进行拆分(将第一位、第四位、第七位、第十位等数位的数字拿出来组成一个数组,再将剩余数位的数字组成一个数组)等。

如16进制中的a、b、c等数值也可以采用同样的方法进行拆分。

除了进行奇数位和偶数位的拆分,还可以进行分组拆分,如将一个8位数进行拆分,便可以将前四位和后四位拆分以组成两组新数字,并且在拆分后,可以在被去掉的数位上添加填充字符,如将11101011拆分为11100000和00001011。也就是将相邻多个数位的数字组成一个新数字,并且由一个原数字拆分为多个新数字。

需要说明的是,在对数字型的字段进行拆分之后,可以对每个新字段(拆分后得到的字段)进行标记,以确定在将多个新字段(或者新数据表,新字段是存放在新数据表中的)还原为原字段(或者原数据表,原字段是存放在原数据表中的)的时候新字段处在原字段的什么位置。如,将11101011拆分为11100000和00001011,11100000标记为前四位有效,填充字符为“0”;00001011标记为后四位有效,填充字符为“0”,那么在还原的时候,可以简单的根据标记所带的含义对新数字进行还原。如有必要,还可以记录新数字的位置信息,以便于还原为原数字(原数据表)时使用。

除了将数字进行拆分,还可以在拆分的基础上,将新数字每个数位的数字统一进行运算,如将每个数位的数字统一“+1”,再将“+1”后的新数字进行储存。还原为原数据表的时候,只要统一进行“-1”的动作即可。

字段除了有数字型,还有字符型,若所述记录值的类型为字符型,则所述根据所述关联方式和预先获取的原数据表的类型,将一个所述原数据表中的字段进行拆分,以生成多个新数据表包括:

将所述原数据表中文字的字符编码进行拆分,以获得多组相互关联的已拆分字符编码;将一组或多组相互关联的所述已拆分字符编码分别组成多个新数据表。

在数据表中,是由一组按照预定顺序排列的字符串(代码串)来表示字符的。由此,可以将表示字符的字符串,或者代码串进行分解,如比如某字的utf-8编码是d4c64e91e4ba91,把字拆分为d4c64e91和e4ba91。如此,可以按照字符串中字符的先后顺序进行拆分,以拆分为多组字符串,单独的已经拆分的子字符串是无法表示原字符串的含义的,并且,由于具有子字符串(如e4ba91)的字符是有多个的,也就是可能有很多字符所对应的字符串包含这部分子字符串,因此,当一句话中包含多个字符时,并且每个字符还对应着一个完整的字符串,当每个字符串均被拆分后,也就很难从已经拆分的子字符串中获知未拆分的字符串所表示的含义(其难度在于,一个子字符串能够对应多个字符,假如有10个子字符串进行排列,也就是由2个子字符串组成一句话,每个子字符串对应着10个字符,那么可能的组合是102,随着一句话的字符串的数量增加,可能的排列组合是呈指数幂的数量级增长的,其可能的组合方式是无法有效被处理掉的)。

并且,除了将字符串按照先后顺序进行拆分,还能够将字符串进行隔位拆分,如某字的utf-8编码是d4c64e91e4ba91,那么,可以将该字符串的按照其奇偶数位的顺序进行拆分。如d4c6拆分为dc和c6,将4e91拆分为49和e1,将e4ba91拆分为eb9和4a1,如此各位拆分也同样能够起到隐含原字符含义的作用。进一步,除了上述提及的隔位拆分,还可以是按照预先设定的顺序进行拆分,如取每个字符串的首尾字符,d4c64e91e4ba91取得首尾字符也就是d(首字符)和1(尾字符),那么拆分出来的两个组合就是d1和4c64e91e4ba9。还可以是按照一定的数学规则进行拆分,如,按照斐波那契数列进行拆分,也就是取得一组字符串中1、1、2、3、5、8、13、21位置的数字,并且留下其他的数字,以将原字符串区分为两组子字符串,这种预先设定的顺序可以是关联方式中的一部分。

进一步,在所述将一组或多组相互关联的所述已拆分字符编码分别组成多个新数据表后还包括:将一个所述新数据表中相邻两个所述已拆分字符编码间添加填充编码,且每个字所对应的字符编码使用唯一的一种方式进行拆分。

同数字型数据表相同的,在拆分之后,在多个子字符串(已拆分字符编码)之间添加填充编码,同样能够起到破坏子字符串原有含义的作用。在添加填充编码的同时,也可以记录填充编码的样式,如填充编码可以为数字、英文和希腊字母等,能够区别字符串中字符编码的其他编码。

需要说明的是,在形成字符型的新数据表之后,可以将新数据表中的多个字段(或者说字符串)的位置信息进行记录(通常拆分之后的字段不会改变记录位置,但为了对应方便,可以记录新字段的每个字段所处的位置),以便于还原为原数据表。

若所述记录值的类型为日期型,则所述根据所述关联方式和预先获取的原数据表的类型,将一个所述原数据表中的字段进行拆分,以生成多个新数据表包括:

根据原数据表中的未处理日期型字段生成多个相互关联的已拆分字段,且使多个所述已拆分字段与所述未处理日期型字段满足预设的函数关系,其中,所述已拆分字段包括日期型字段和,或数字型字段;将一个或多个所述已拆分日期型字段/上述已拆分数字型字段组成一个所述新数据表。

具体的,日期型字段如1980/10/2(按照年/月/日进行排列),可以将1980、10和2分别按照数字型字段的方式进行拆分,再将拆分得到的新数字型字段按照原顺序组成新日期型字段,如将1980/10/2拆分为1000/8/1和980/2/1,那么1980(年)=1000+980,10(月)=8+2,2(日)=1+1。日期型字段可以按照前文中所描述的任意一种数字型字段的拆分方式进行拆分,再将拆分后的新字段组合为日期型的字段。那么在需要读取原字段信息的时候,将拆分后的两个(也可以是多个)新字段重新组合(如本段中的例子为相加,也可以进行其他种类的运算)后,便可以直接读取。

日期型的字段包括有数字型的字段,因此,在拆分的时候可以将日期型的字段生成为多个日期型的字段或者多个数字型的字段。具体可以使用如下的方式来拆分日期型的字段。所述将一个未处理日期型字段生成多个相互关联的已处理日期型字段/数字型字段包括:

选择预定的日期型字段所显示的日期作为基准日期;

计算所述未处理日期型字段的日期与所述基准日期的天数差值;

按照预设的比例,将所述天数差值分为多个天数数值,使多个所述天数数值的结合与所述天数差值符合预设的函数关系;

将每个所述天数数值的字段组成新数据表。

选择基准日期的方式,来统计不同的日期型字段能够加快系统的计算速度和提高系统的稳定性。

公式是将某年某月的某天作为起始数字1,原表中每多一天加一个数字,每少一天减一个数字,为了避免小数乘100,之后再乘两个或多个非对称的和为100%的百分数,得出各表中的结果,具体的,如1980/10/2,以1980/1/1日作为起始日期1,1980/10/2的数字就是276,在将276乘100,再乘非对称的随机百分数73%和27%,a表为20148,公式为276*100*73%=20148,b表为7452,公式为276*100*27%=7452,两表均能代表一个特定日期,但单独表不能反推回原日期的表示数字。

需要说明的是,不管数据表是数字型、字符型还是日期型,均可以再拆分后,对新数据表中的字段(字符型、数字型、日期型)进行加密,以提高其保密性。

在闪存系统中,除了对数据表要进行拆分,还要将储存在缓存中的数据进行删除,也就是在所述分别将不同的所述新数据表按照预设的首次储存位置,储存至至少两个云端系统中前还包括:

将所述构建新数据表指令、所述关联方式和所述首次储存位置储存在缓存中;

在所述分别将不同的所述新数据表按照预设的首次储存位置,储存至至少两个云端系统中后,还包括:

发出所述关联方式和所述首次储存位置,并删除缓存的所述构建新数据表指令、所述关联方式和所述首次储存位置。

通过删除缓存文件,能够减少闪存系统的工作负荷。闪存系统需要外界的操作系统先与闪存系统建立连接,才能够进行后续的操作(如向闪存系统发送数据和指令)。需要说明的是执行数据表拆分动作的模块可以储存在网络端也可以储存在发出构建新数据表指令的终端,通常终端是由使用者所控制的,将执行数据表拆分动作的模块放置在终端,能够提高使用者的安全性,由于网络安全具有不确定性,因此,在使用者对安全性要求较高的时候,可以将执行数据表拆分动作的模块储存在终端。当然,考虑到一个终端不会经常进行数据表拆分动作,也可以将执行数据表拆分动作的模块放置在网络端,以提高其使用效率,节约网络资源。

具体使用的时候,考虑到不同的使用者对数据的安全性理解是不同的,因此需要按照使用者的要求将新数据表存放在不同的储存系统中,如,

所述分别将不同的所述新数据表按照预设的首次储存位置,储存至至少两个云端系统中包括,分别将不同的所述新数据表储存至至少一个公有储存系统和一个私有储存系统中。

如,所述分别将不同的所述新数据表按照预设的首次储存位置,储存至至少两个云端系统中包括:

将多个所述新数据表按照预定的储存比例储存至公有储存系统和私有储存系统中。

需要说明的是,私有储存系统的安全性高,但接入的便捷性较差,相对的,公有储存系统的安全性低,但接入的便捷性较快,因此,可以根据待拆分的数据表的性质(强调数据表安全,还是强调接入、读取数据表的便捷性),来选择在公有储存系统,或私有储存系统的储存比例。其中,较好的是将多个新数据表存储在至少一个公有储存系统中和至少一个私有储存系统中。当然,可以根据使用者的需求的不同(要求数据表具有更高的安全性,还是更好的可读取性)可以将多个新数据表中的一部分储存在公有储存系统(可以是分别储存到多个公有储存系统中,以提高新数据表的安全性),并将另几个新数据表储存在私有储存系统(可以是分别储存到多个私有储存系统中,以提高新数据表的安全性),储存在公有储存系统和私有储存系统中的全部新数据表组合后,才能够还原为原数据表;也可以是多个新数据表中的一部分组合后,才能够还原为原数据表,其中这一部分(多个数据表中的几个数据表)也需要分别储存在至少一个公有储存系统和一个私有储存系统中。

为了保证已经储存的数据不会出现问题,所述分别将不同的所述新数据表按照预设的首次储存位置,储存至至少两个云端系统中包括:

分别将不同的所述新数据表按照预设的新数据表储存位置,储存至至少三个云端系统中,且每个所述新数据表存储至至少两个所述云端数据库中。

需要说明的是,在储存的时候,可能会遇到储存系统的损坏,进而导致已经储存的文件无法读取的问题,并且新数据表之间是相互关联的,由于一个新数据表的损坏,可能直接导致其他数据表均无法被读取。因此,可以将每个新数据表进行多次储存,也就是将每个新数据表分别储存到多个储存系统中,当某一个储存系统发生损坏的时候,还能够在其他储存系统中获取损坏的储存系统中的新数据表。进而保证了数据的完整性和可读性。

具体的,如原数据表被拆分为数据表a、b和c,只有将a、b、c组合后才能够还原为原数据表,云端系统为x、y和z。那么在储存的时候,可以在x中储存a和b,在y中储存b和c,在z中储存c和a。这样,如果x损坏,还可以通过分别储存y与z中的b、c和c、a还原出原数据表。

在所述根据所述关联方式和预先获取的原数据表的类型,将一个所述原数据表中的字段进行拆分前还包括:

获取所述原数据表所对应的身份信息;

判断所述原数据表的身份信息是否出现在预先获取的执行列表中,所述执行列表包括应当被储存的原数据表的身份信息;

若是,则执行所述拆分步骤。

系统中,通常会包含有身份验证的系统,以验证本地的系统是否需要执行终端系统所发出的指令,一种方式就是预先建立一个数据表,数据表中存储有授权执行拆分工作的终端系统的身份信息,每次接收到终端系统的身份信息(或者说获取所述原数据表所对应的身份信息),则需要验证该身份信息是否得到了授权,如果得到了授权(原数据表的身份信息出现在预先获取的执行列表中),才会执行后续的拆分和储存的步骤。

数据表修改方法又分为非还原数据表的数据表修改方法和还原数据表的数据表修改方法,本发明实施例3提供了基于数据表储存方法的非还原数据表的数据表修改方法,在实施例1的基础上,如图2所示,包括如下步骤:

s201,获取待写入数据、写入位置和写入方式;

s202,根据写入位置和预先获取的首次储存位置,在云端数据库中查找待修改的新数据表,储存位置包括每个新数据表的储存地址;

s203,若写入方式为删除,则按照写入位置和关联方式,将待修改的新数据表中与写入位置相对应的字段删除,以生成已修改数据表;

s204,若写入方式为增加/替换,则将待写入数据按照其类型和关联方式进行拆分,将待修改的新数据表中与写入位置相对应的字段删除,并将拆分后的待写入数据按照写入位置加入待修改的新数据表,以生成多个已修改数据表。

具体的,s201中,待写入数据可以是需要替换的数据,也可以是需要增加的数据,还可以为“空”,也就是写入方式为删除的时候,使用空的数据来替换掉原数据。写入方式包括增加,或替换,或删除。写入位置是指在原数据表的哪个位置进行写入,需要说明的是,写入位置可以有原数据表的关键词进行确定。如写入位置为:人名(王力)+标识(工资),那么对应的就可以根据该人名找出该人名所对应的工资数量,进而按照写入方式进行修改。也可以查找在关键词a和关键词b之间的字段。写入位置也可以按照长度,或者其他计量单位进行描述,如关键词a之后的x长度个)的字段需要修改。

s202中,在已经储存到云端系统的多个新数据表中查找需要修改的新数据表,如前一段的描述,可以按照关键词的方式进行查找。需要说明的是,由实施例1可知每种数字、日期、字符被拆分的结果是相同的,那么,对应的不同种类的关键词的拆分方式是不同的,也就是拆分的结果是不同的,可以现将关键词进行拆分,再使用拆分后的关键词在云端数据库中进行检索,以确定写入位置所对应的新数据表。预先获取的储存位置指明了数据表的储存地址,可以通过地址的查找来确定每个新数据表所存储的地址,进而再使用写入位置来确定需要修改哪个新数据表。

s203中,如果写入方式为删除,那么便可以将新数据表中与写入位置相对应的字段删除,以完成修改。前文已经说明,写入方式可以根据关键词进行查找,每种关键词所对应的拆分后的新关键词是唯一的,那么就可以明确关键词所对应的位置是哪。进而将写入位置所对应的字段进行删除,以生成已修改数据表,之后可以将已修改数据表进行储存,具体的储存位置可以按照原位置,以替换的方式进行储存,也可以储存到其他的位置,而不改变原始数据表。

s204,与修改相同的,如写入方式为增加,或者替换,那么,在删除的基础上,还要将写入数据按照关联方式进行拆分,前文已经说明,每种关键词(字段)的拆分方式是唯一的,那么将每种待写入数据进行拆分的方式也是唯一的,在将待写入数据拆分后,对应的添加如两个,或者多个新数据表中,并将新数据表中与写入位置对应的字段删除,就完成了写入方式为增加,或者替换的修改。

本发明实施例4提供了基于数据表储存方法的还原数据表的数据表修改方法,在实施例1的基础上,如图3所示,包括:

s301,获取待写入数据、写入位置和写入方式;

s302,读取与写入位置相对应的多个新数据表;

s303,根据关联方式将多个新数据表还原为原数据表,或根据关联方式将多个新数据表还原为部分原数据表;

s304,根据写入位置、待写入方式和写入数据,对原数据表部分原数据表进行修改,以生成已修改的原数据表;

s305,根据关联方式,将已修改的原数据表按照其类型进行拆分;

s306,按照预设的已修改数据表储存位置,将拆分后的原数据表储存至不同的云端系统中。

与非还原数据表的修改方式相似的,均需要获取待写入数据、写入位置和写入方式,待写入数据、写入位置和写入方式与非还原数据表的修改方式中的待写入数据、写入位置和写入方式是相同的。步骤s302中,同样需要读取与写入位置相对应的多个新数据表,写入位置可以是由关键词组成的,用以确定需要对哪个新数据表进行修改。并且,步骤s303中,将与写入位置相对应的多个新数据表还原为原数据表,此处的原数据表是需要修改的部分,由于修改的部分可能不会是全部原数据表,所以,有些时候只需要将部分原数据表进行还原即可。步骤s304中,与非还原数据表的修改方式相类似的,可以根据写入位置的关键词来确定,需要修改哪个部分。如写入位置标识了两个关键词,需要修改的内容是两个关键词中间的字段,那么便可以将待写入数据以替换或者增加的方式加入原数据表中(如写入方式为删除,则可以使用为“空”的待写入数据对原数据表中的字段进行替换)。如写入位置还可以为:人名(王力)+标识(工资),那么对应的就可以根据该人名找出该人名所对应的工资数量,进而按照写入方式进行修改。也可以查找在关键词a和关键词b之间的字段。写入位置也可以按照长度,或者其他计量单位进行描述,如关键词a之后的x长度个)的字段需要修改。

步骤s305中,与数据表储存方式相类似的,均需要对数据表进行二次的拆分,其拆分的过程可以与实施例1中的描述相同,在此,不再赘述。并且,步骤s306中,在拆分后需要将拆分后的原数据表再次进行储存。其储存的过程与步骤s103相同,再次不再赘述。

本发明实施例5提供了基于数据表储存方法的数据查询方法,在实施例1的基础上,如图4所示,包括:

s401,获取查询关键字;

s402,按照关联方式对关键字进行拆分,以获得多个新关键字;

s403,在多个云端系统中查询与新关键字的相符合的关键数据表;

s404,将多个关键数据表按照关联方式组合为原数据表,或组合为部分原数据表;

s405,发出原数据表或部分原数据表。

当需要查询包含有指定关键词的数据表时,便需要对已经获取到的关键词(或者称为,关键字)进行拆分,如前文所述,每种关键词的拆分方式是唯一的,那么根据拆分后的关键词所查询到的新数据表也是相对应的。并且将查询到的关键数据表按照关联方式进行组合,以组成原数据表,或者部分原数据表(可能需要的数据只是一部分,那么便没有必要组成一个完整的原数据表),并且将原数据表发给指定的终端。

本发明实施例6提供了基于数据表储存方法的数据统计方法,在实施例1的基础上,如图5所示,包括:

s501,获取统计方式和查询关键字,统计方式中包括数据类型和计算方式;

s502,按照关联方式对关键字进行拆分,以获得多个新关键字;

s503,在多个云端系统中查询与新关键字相符合的关键数据表,并按照数据类型查询关键数据表中的多个关键数据;

s504,获取关键数据,并将关键数据按照关联方式进行组合,以获得待统计数据;

s505,按照计算方式计算待统计数据,以获得统计结果。

具体的,步骤s501中的查询关键字(也可以成为,查询关键词)与实施例5中的关键词是相同的,进一步,步骤s502中获得的多个关键字与步骤s402中的多个关键字也是相同的,每种关键词所对应拆分出来的多个新关键字是唯一的。

步骤s503中,在多个云端系统中查询与新关键字相符合的关键数据表,此处的新关键字应理解为每个新关键字。并且按照数据类型查询关键数据表中的多个关键数据。此处所至的数据类型如工资、年龄等,也就是说数据类型描述的被查询客体的某种属性,也就是关键数据。由于关键数据已经是经过拆分后的了,所以为了能够直接读取,需要将相关联的多个关键数据全部获取到,并且按照关联方式进行组合,使多个关键数据(如工资、年龄等)组合为待统计数据(关键数据有可能是多组,也就是多个人的工资、或者年龄),那么在按照计算方式中所列提供的方式来计算待统计数据,以获得统计结果,最后,可以将统计结果发送到指定的终端,以完成数据统计。

在获取关键数据,并将关键数据按照关联方式进行组合,以获得待统计数据前包括:将储存在同一个云端系统内的关键数据按照预设的合并方式进行计算,以生成关键数据。

也就是,可以将数据统计分成两次进行,先将储存在云端系统的已经被拆分的数据进行合并,此处需要说明,合并的方式应是预先获取的,比如所有的原数据均是按照加法的方式进行拆分,原数据a=b+c,原数据d=e+f;当需要统计a与d的值时,则可以直接将拆分后得到的b、c、e、相加,进一步,b和e是储存在一个云端系统中,c和f是储存在另一个云端系统中,那么在统计的时候,则可以先将b和e求和,c和f求和,最后再将两个求和的结果相加。但此处需要a与d的拆分方式相同,也就是都是求和,或者都是减法、乘法、除法等运算方式。当然也可以是预先知道了云端的方式,直接针对性的计算,如原数据a=b+c,原数据d=e-f,b和e储存在一个云端系统中,c和f储存在另一个云端系统中,那么计算a与b的和时,就可以b+e求和,c-f求差值(一次计算),在将两个算式得到的结果求和(二次计算)。这样分两次对数据进行统计能够减少出错的概率,也可以由云端系统完成第一次的计算,再由终端完成第二次的计算,以减少数据泄漏的问题。

显然,本领域的技术人员应该明白,上述的本发明的各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1