用于改进数据结构存储的系统和方法与流程

文档序号:12481421阅读:264来源:国知局
本PCT申请要求于2014年5月1日提交的序列号为14/266,883的美国非临时申请的权益。
技术领域
:本公开总体上涉及用于将数据结构存储到数据库中的方法、系统和计算机可读介质。
背景技术
::传统的数据库方法利用数据库架构(databaseschema)与存储在数据库中的数据结构之间的直接映射。在这种方法中,可将给定的数据结构作为单行存储在数据库表中,数据库表中的列将需要对在数据结构内的数据类型进行匹配。例如,数据库可配置为存储包括字符串(string)数据类型和整数(integer)数据类型的数据结构。数据库将包括这样的表:即数据结构的每个实例作为行存储在表中。因此,该表将必须具有被配置为存储字符串的至少一列和被配置为存储整数的至少一列。该方法的问题在于:数据结构发生改变时数据库表也需要改变。例如,如果应用升级改变了字段在数据结构中的数据类型,则将需要对数据库进行更新,并且将与数据结构在更新之前的旧版本不再兼容。因此,数据库技术可受益于将数据结构存储在数据库中的改进技术。技术实现要素:本公开总体上涉及一种用于提供数据库技术和数据库技术的其它改进的方法、系统和计算机可读介质。本技术的实施方案涉及将数据结构存储在数据库中的方法。在某些实施例中,计算装置可接收用于将数据结构存储在数据库中的指令,其中,所述数据结构包括至少一个字段。计算装置可将条目添加到数据库的结构表中,所述条目可包括所述数据结构的唯一标识符。计算装置还可将条目添加到数据库的字段表中,其中,字段表与字段的数据类型对应,所述条目包括所述数据结构的唯一标识符和所述字段的值。本教导的实施方式涉及一种用于将数据结构存储在数据库中的计算机系统,所述系统包括:存储指令的一个或多个存储装置以及与所述一个或多个存储装置连接的一个或多个处理器。所述一个或多个处理器被配置为运行指令以执行方法和操作。所述方法和操作包括:接收将数据结构存储在数据库中的指令,其中,数据结构包括至少一个字段;将条目添加到数据库的结构表中,其中,所述条目包括所述数据结构的唯一标识符;将条目添加到数据库的字段表中,其中,字段表与字段的数据类型对应,所述条目包括所述数据结构的唯一标识符和字段的值。本教导的实施方式还涉及一种存储指令的计算机可读存储介质。所述指令使一个或多个处理器执行用于将数据结构存储在数据库中的方法和操作。所述方法和操作包括:接收将数据结构存储在数据库中的指令,其中,数据结构包括至少一个字段;将条目添加到数据库的结构表中,其中,所述条目包括所述数据结构的唯一标识符;将条目添加到数据库的字段表中,其中,字段表与字段的数据类型对应,所述条目包括所述数据结构的唯一标识符和字段的值。应当理解,前述
发明内容仅旨在介绍本公开的某些方面。在下文中将更全面地描述这些方面和其它方面。因此,本
发明内容不旨在限制权利要求。附图说明并入本说明书并构成说明书的一部分的附图示出了本公开的各种实施例,并且与说明书一起用于解释本公开的原理。在附图中:图1是描绘与某些公开实施例一致的示例性数据库的示意图;图2是示出与某些公开实施例一致的、保存新的数据结构的示例性方法的流程图;图3是示出与某些公开实施例一致的、读取存储在数据结构中的数据的示例性方法的流程图;图4是示出与某些公开实施例一致的、更新数据库中的数据结构的示例性方法的流程图;图5是描绘与某些公开实施例一致的示例性数据库的示意图;以及图6是示出与某些公开实施例一致的、用于将数据结构存储在数据库中的示例性硬件系统的框图。具体实施方式以下具体实施方式将参照附图。在附图和以下说明书中尽可能使用相同的附图标记来指示相同或相似的部分。虽然在此描述了本公开的若干示例性实施例和特征,但是在不脱离本公开的精神和范围的情况下,修改、调整和其它实施方式是可能的。因此,以下具体实施方式并非限制本公开。相反,本公开的合适范围由所附权利要求限定。图1是描绘与某些公开实施例一致的示例性数据库的示意图。具体来说,图1描绘了在某些实施例中可包括在单个数据库中的结构表100、字符串表110和整数表120。结构表100可包括关于存储在数据库中的每个数据结构的行。如在此所使用的,参照“数据结构”是指数据结构的具体类型的实例。例如,数据库可具有存储在其上的具体类型的数据结构(例如,LIMITENTRY)的多个实例,并且在某些实施例中,所述多个实例可包括该类型数据结构的不同版本。此外,针对每个数据结构,结构表100可包括ID列和名称(NAME)列。ID列可用于存储关于在数据库中所存储的每个数据结构和/或相同类型的数据结构的每个实例的唯一标识符。名称列可用于存储关于所存储的数据结构的类型的标识符。在图1所示出的示例中,单个数据结构被存储在结构表100中。该数据结构的类型是LIMITENTRY,该数据结构的唯一标识符是A64A3。另外,结构表100还可包括用于识别每个条目最后修改的日期和时间的时间戳的修改时间(MODIFIEDDATE)列。字符串表110可包括作为字符串数据类型存储在数据库中的每个字段的行。此外,针对每个字段,字符串表110可包括名称列、父系ID(PARENTID)列和值(VALUE)列。名称列可用于存储字段的标识符。父系ID列可用于存储与字段相关联的数据结构的唯一标识符。值列可用于存储字段的值。针对字符串表110,值列可被配置为存储字符串。在图1中示出的示例中,两个字段存储在字符串表110中。所存储的第一字段的标识符是ID,第一字段的值是字符串“F3848C”。所存储的第二字段的标识符是NAME,第二字段的值是字符串“Mytestlimit”。这两个字段均与和唯一标识符A64A3相关联的数据结构相关联,该数据结构是根据结构表100识别出的、LIMITENTRY类型的数据结构。此外,字符串表110还可包括(如果有的话)用于识别每个字段的数组位置(arrayposition)的数组索引(ARRAYINDEX)列。下面将进一步地对描绘数组索引列使用的示例进行详细描述。整数表120可包括作为整数数据类型存储在数据库中的每个字段的行。此外,针对每个字段,整数表120可包括名称列、父系ID列和值列。名称列可用于存储字段的标识符。父系ID列可用于存储与字段相关联的数据结构的唯一标识符。值列可用于存储字段的值。针对整数表120,值列可被配置为存储整数。在图1所示出的示例中,四个字段存储在整数表120中。第一字段的标识符是DELTAR,第一字段的值是整数“50”。第二字段的标识符是LLEAR,第二字段的值是整数“100”。第三字段的标识符是PPEAR,第三字段的值是整数“125”。第四字段的标识符是MINMOHM,第四字段的值是整数“10”。所有这四个字段均与和唯一标识符A64A3相关联的数据结构相关联,该数据结构是根据结构表100识别出的、LIMITENTRY类型的数据结构。此外,整数表120还可包括(如果有的话)用于识别每个字段的数组位置的数组索引列。图1中描绘的实例仅用于示意的目的,而非为了限制。例如,结构表可能不包括修改时间列和/或可能包括其它列。此外,列名称可能不同或可能不存储在数据库中。此外,字符串表110和整数表120表示与某些公开实施例一致的、可使用的字段表的示例,但这些示例不意图进行限制。在某些实施例中,可利用用于存储其它数据类型(诸如,字符串、布尔值、抽象数据类型、复合数据类型、对象类型等)的字段表。此外,每个字段表可包括相似列或可包括字段表特定的唯一列。图2是示出与某些公开实施例一致的、保存新的数据结构的示例性方法的流程图。在某些实施例中,图2中的步骤可由应用与数据库之间的接口来执行。因此,对应用的更新可以不影响数据库的操作/结构,并且对数据库的更新可以不影响应用的操作/结构。当计算装置接收到用于创建、存储和/或保存新的数据结构的指令时,该处理可在200开始。例如,可从同一计算设备上的应用或从远程计算设备接收指令。在某些实施例中,计算装置可额外地接收将与新的数据结构一起存储的字段,而在其它实施例中,计算装置可基于指令生成和/或检索这些字段。在210,计算装置可将新的行写入结构表。在某些实施例中,计算设备可为新的行生成唯一标识符,而在其它实施例中,计算装置可接收与指令一起的、与新的数据结构相关联的唯一标识符。此外,在某些实施例中,计算装置可接收与指令一起的、与数据结构相关联的名称,而在其它实施例中,计算装置可确定与数据结构相关联的名称。在某些实施方式中,数据结构的名称可与数据结构的数据结构类型对应。在220,计算装置可按列将唯一标识符和名称存储在结构表中的新行中。在230,计算装置可将第一数据类型的每一个字段存储在与第一数据类型相关联的表中。例如,如果与新的数据结构一起存储的字段包括一个或多个整数字段,则计算装置可将每个整数字段存储为整数表中的新行。字段的值可存储在被配置为存储整数的整数表的列中。在240,计算装置可将与新的数据结构相关联的唯一标识符存储在与第一数据类型相关联的表的列中。在250,如果存在要存储的其它数据类型的字段,则计算装置继续进行至230,将随后的每个数据类型的每个字段存储在与所述随后的数据类型相关联的表中。例如,如果将与新数据结构一起存储的字段包括字符字段、字符串字段、对象字段等,则计算装置可将每个字段存储为对应表中的新行。每个字段的值可存储在被配置为存储字段的数据类型的、相应表的列中。在240,计算装置可将与新的数据结构相关联的唯一标识符存储在与随后的每个数据类型相关联的表的列中。在250,如果不存在要存储的其它数据类型的字段,则所述处理在260终止。虽然图2中描绘的步骤已经被描述为按照特定顺序执行,但是所描述的顺序仅是示例性的,并且可执行与所公开的某些实施例一致的各种不同顺序的步骤。此外,仅为了说明的目的将这些步骤描述为不连续的步骤,在某些实施例中,可同时执行和/或作为单次计算的一部分执行多个步骤。此外,所描述的步骤不意图是详尽的或绝对的,并且可插入或移除各种步骤。图3是示出与某些公开实施例一致的、读取存储在数据结构中的数据的示例性方法的流程图。在某些实施例中,图3中的步骤可由在应用与数据库之间的接口来执行。因此,对应用的更新可以不影响数据库的操作/结构,并且对数据库的更新可以不影响应用的操作/结构。当计算装置生成对存储在数据结构中的一个或多个字段的搜索条件时,该处理可在300开始。在某些实施例中,搜索条件可由计算装置基于来自应用的读取请求而生成。例如,可从同一计算装置上的应用或从远程计算装置接收请求。应用可请求与具有指定值(例如,指定名称、指定整数等)的标识字段相关联的数据结构的一个或多个字段。如在此所用的,“标识字段”可表示用于在数据库中搜索数据结构的字段。生成的搜索条件可包括搜索的数据结构的类型(例如,LIMITENTRY)、标识字段的数据类型(例如,字符串)、标识字段的名称(例如,ID)、标识字段的值以及用于搜索的任何数据库指令。数据库指令可包括例如搜索等于、大于、小于等某值的指令和/或可包括任何其它类型的数据库命令。基于来自应用的请求,计算装置可生成从数据库中检索(在某些实施例中)整个数据结构或者(在某些实施例中)数据结构中的部分数据结构的搜索条件。在310,计算装置可将搜索条件与数据库中的字段相匹配。在某些实施例中,计算装置可使用标识字段的数据类型以识别合适的字段表,并通过将例如字段表中的字段的值和/或名称与标识字段匹配来搜索字段表中的字段表。一旦字段表中的字段与标识字段匹配,则在320,计算装置可确定与字段(例如,在父系ID列中)相关联的数据结构的唯一标识符。在330,计算装置在与第一数据类型相关联的第一表中搜索包括唯一标识符的字段。在某些实施例中,计算装置可搜索数据库中的每个字段表。在其它实施例中,计算装置可识别字段在数据结构中的数据类型并仅搜索与识别出的数据类型相关联的表。在其它实施例中,所述请求可包括字段和要搜索的字段的数据类型,计算装置可仅搜索与要搜索的字段的数据类型相关联的表。计算装置可在某些实施例中将识别出的字段返回至该应用,或者,在其它实施例中,计算装置可将每个识别出的字段添加到被格式化的数据结构的副本并可将其返回至该应用。在340,如果存在要搜索的其它字段表,则计算装置继续进行至330以搜索随后的表,该随后的表与包括唯一标识符的字段对应的随后的数据类型相关联。在330,计算装置可在每个随后的表中搜索字段,该字段与表中的唯一标识符相关联。计算装置可将识别出的字段返回至应用,或者将每个识别出的字段添加到被格式化的数据结构的副本并可将其返回至该应用。在340,如果不存在要搜索的其它字段表,这是因为在某些实施例中,每个表已被搜索,或者在其它实施例中,指定字段已被返回,则该处理可在350终止。例如,该处理可以通过将数据结构的副本返回到为应用格式化的应用而终止。虽然图3中描绘的步骤已经被描述为按照特定顺序执行,但是所描述的顺序仅是示例性的,并且可执行与所公开的某些实施例一致的、各种不同顺序的步骤。此外,仅为了说明的目的将步骤描述为不连续的步骤,在某些实施例中,可同时执行和/或作为单次计算的一部分执行多个步骤。此外,所描述的步骤不意图是详尽的或绝对的,并且可插入或移除各种步骤。图4是示出与某些公开实施例一致的、更新数据库中的数据结构的示例性方法的流程图。在某些实施例中,图4中的步骤可由应用与数据库之间的接口来执行。因此,对应用的更新可以不影响数据库的操作/结构,并且对数据库的更新可以不影响应用的操作/结构。当计算装置生成对存储在数据结构中的一个或多个字段的搜索条件时,该处理可在400开始。在某些实施例中,搜索条件可由计算装置基于来自应用的读取请求而生成。例如,可从同一计算装置上的应用或从远程计算装置接收请求。针对图4中描述的示例,可假设在发送读取请求之前已更新完应用。因此,应用可能需要与存储在数据库中的数据结构的格式不匹配的格式的数据结构。在410,计算装置可按照以上针对图3的描述通过从数据库中检索字段来创建数据结构的副本。在某些实施例中,由于应用所需的数据结构的格式与存储在数据库中的数据结构的格式不同,所以应用所需的数据结构的格式可包括未存储在数据库中的字段。因此,在420,应用可使用默认值填充任何缺失字段。默认值的示例可包括但不限于字符串和对象的空值;整数和其它数字数据类型的零值;布尔数据类型的false。在430,计算装置可根据需求进行格式化并将更新后的数据结构返回至应用。在440,计算装置可从应用接收更新后的数据结构。在某些实施例中,应用可能已经更新了一个或多个字段的值。在450,计算装置可将更新后的数据结构写入数据库。例如,计算装置可通过使用更新的数据结构的字段和值将新的数据结构保存在数据库中来写入更新后的数据结构。可按照关于图2所述来创建新的数据结构。在某些实施方式中,计算装置可不对旧的数据结构的字段执行动作。旧的字段的存在不会影响对更新后的数据结构的新的字段的使用。另外,如果在创建更新后的数据结构之后需要旧的数据结构,则仍然可使用旧的数据结构的唯一标识符来访问旧的数据结构的字段。在其它实施方式中,计算装置可找到并移除与旧的数据结构相关联的全部字段。此外,在某些实施例中,更新后的数据结构可被添加到数据库,在可选实施例中,可删除旧的数据结构的字段,而无需先将旧的数据结构以更新后的格式返回到应用。相反,可接收指令以用新的数据结构更新旧的数据结构,并且计算装置可将更新后的数据结构简单写入数据库,在可选的实施例中,计算装置可删除旧的数据结构。虽然图4中描绘的步骤已经被描述为按照特定顺序执行,但是所描述的顺序仅是示例性的,并且可执行与所公开的某些实施例一致的、各种不同顺序的步骤。此外,仅为了说明的目的将步骤描述为不连续的步骤,在某些实施例中,可同时执行和/或作为单次计算的一部分执行多个步骤。此外,所描述的步骤不意图是详尽的或绝对的,并且可插入或移除各种步骤。图5是描绘与某些公开实施例一致的示例性数据库的示意图。具体来说,图5描绘了在某些实施例中可包括在单个数据库中的结构表500、字符串表510和整数表520。结构表500可包括针对存储在数据库中的每个数据结构的行。此外,针对每个数据结构,结构表500可包括ID列和名称列。ID列可用于存储关于在数据库中所存储的每个数据结构的唯一标识符。名称列可用于存储关于所存储的数据结构的类型的标识符。在图5中示出的示例中,LIMITENTRY数据结构的第一实例存储在结构表500中。LIMITENTRY数据结构的第一实例的唯一标识符是A64A3。LIMITENTRY数据结构的第二实例也存储在结构表500中。LIMITENTRY数据结构的第二实例的唯一标识符是CC4AD。LIMITENTRY数据结构的第二实例可表示更新版本的LIMITENTRY数据结构。ARRAYENTRY数据结构也存储在结构表500中。ARRAYENTRY数据结构的唯一标识符是3DFEA。结构表500还可包括用于识别每个条目最后修改的日期和时间的时间戳的修改时间列。字符串表510可包括作为字符串数据类型存储在数据库中的每个字段的行。此外,针对每个字段,字符串表510可包括名称列、父系ID列和值列。名称列可用于存储字段的标识符。父系ID列可用于存储与字段相关联的数据结构的唯一标识符。值列可用于存储字段的值。针对字符串表510,值列可被配置为存储字符串。在图5所示出的示例中,六个字段存储在字符串表510中。第一字段的标识符是ID,第一字段的值是字符串“F3848C”。第二字段的标识符是名称,第二字段的值是字符串“Mytestlimit”。这两个字段均与和唯一标识符A64A3相关联的数据结构相关联,该数据结构是根据结构表500识别出的、LIMITENTRY类型的数据结构。第三字段的标识符是ID,第三字段的值是字符串“A249F”。第四字段的标识符是名称,第四字段的值是字符串“Secondlimitadded”。这两个字段均与和唯一标识符CC4AD相关联的数据结构相关联,该数据结构是根据结构表500识别出的、LIMITENTRY类型的数据结构。第五字段的标识符是ID,第五字段的值是字符串“D34FG”。第六字段的标识符是名称,第六字段的值是字符串“Myarray”。这两个字段均与和唯一标识符3DFEA相关联的数据结构相关联,该数据结构是根据结构表500识别出的、ARRAYENTRY类型的数据结构。字符串表510还可包括(如果有的话)用于识别每个字段的数组位置的数组索引列。整数表520可包括作为整数数据类型存储在数据库中的每个字段的行。此外,针对每个字段,整数表520可包括名称列、父系ID列和值列。名称列可用于存储字段的标识符。父系ID列可用于存储与字段相关联的数据结构的唯一标识符。值列可用于存储字段的值。针对整数表520,值列可被配置为存储整数。在图5所示出的示例中,十一个字段存储在整数表520中。第一字段的标识符是DELTAR,第一字段的值是整数“50”。第二字段的标识符是LLEAR,第二字段的值是整数“100”。第三字段的标识符是PPEAR,第三字段的值是整数“25”。第四字段的标识符是MINMOHM,第四字段的值是整数“10”。所有这四个字段均与和唯一标识符A64A3相关联的数据结构相关联,该数据结构是根据结构表500识别出的、LIMITENTRY类型的数据结构。第五字段的标识符是DELTAR,第五字段的值是整数“50”。第六字段的标识符是LLEAR,第六字段的值是整数“100”。第七字段的标识符是PPEAR,第七字段的值是整数“25”。第八字段的标识符是MAXMOHM,第八字段的值是整数“0”。所有这四个字段均与和唯一标识符CC4AD相关联的数据结构相关联,该数据结构是根据结构表500识别出的、LIMITENTRY类型的数据结构。应注意,CC4ADLIMITENTRY数据结构包括了没包括在A64A3LIMITENTRY数据结构中的字段。与CC4ADLIMITENTRY相关联的缺失字段可与不同版本的LIMITENTRY类型的数据结构对应。整数表520还可包括:用于识别可应用于第九字段、第十字段和第十一字段的每个字段的数组位置的数组索引列。第九字段的标识符是ARRAY,第九字段的值是整数“5”,第九字段的数组索引是0。第十字段的标识符是ARRAY,第十字段的值是整数“39”,第十字段的数组索引是1。第十一字段的标识符是ARRAY,第十一字段的值是整数“3”,第十一字段的数组索引是2。所有这三个字段与和唯一标识符3DFEA相关联的数据结构相关联,该数据结构是根据结构表500识别出的、ARRAYENTRY类型的数据结构。因此,整数的数组被存储为整数表520中的第九字段、第十字段和第十一字段。可使用字段的名称(ARRAY)、数据结构的唯一标识符(3DFEA)和数组位置来访问每个元素。图5中描绘的实例仅用于示意的目的,而非为了限制。例如,结构表可能不包括修改时间列和/或可包括其它列。此外,列名称可能不同或可能不存储在数据库中。此外,字符串表510和整数表520表示与某些公开实施例一致的、可使用的字段表的示例,但这些示例不意图进行限制。在某些实施例中,可利用用于存储其它数据类型(诸如,字符串、布尔值、抽象数据类型、复合数据类型、对象类型等)的字段表。此外,每个字段表可包括相似列或可包括字段表特定的唯一列。在测量环境下可使用前述方法中的任何方法的实施方式以给出在许多预期中的一个示例。例如,可从机器中的任何类型的传感器以任何速率测量数据。可使用以上讨论的数据结构和处理来存储所述测量结果,使得整数类型的数据存储在表的行中,浮点类型的数据可以存储在表的行中,字符(或字符串)数据类型的数据可以存储在表的行中,所述表是组织各种数据类型特定的子表(childtable)的父表(parenttable)。当更新执行方法的各方面的应用时,例如,当传感器数组改变时,应用可允许通过例如在运行中(on-the-fly)改变子表的行来更新数据库,而不需要对数据库进行完全重新格式化。图6是示出与某些公开实施例一致的、用于将数据结构存储在数据库中的示例性硬件系统的框图。计算装置600可表示任何类型的一个或多个计算装置。计算装置600可包括:例如改变核心配置和时钟频率的一个或多个微处理器610;改变物理尺寸和存储容量以存储由一个或多个微处理器610执行的数据(诸如,图像、文件和程序指令)的一个或多个存储装置或计算机可读介质620,诸如,闪存驱动器、硬盘驱动器、随机存取存储器等。一个或多个微处理器610和一个或多个存储装置或一个或多个存储装置620可以是图6中公开的单个装置中的部件,或者可被包含在多个装置内。本领域技术人员将理解,上述组件仅是示例性的,这是因为计算装置600可包括用于执行所公开的实施例的任何类型的硬件组件,包括任何必要的附带固件或软件。尽管已经参照本发明的示例性实施例描述了本教导,但是本领域技术人员将能够在不脱离真正精神和范围的情况下对所描述的实施例进行各种修改。这里使用的术语和描述仅为了说明而提出,并不意味着受限于此。具体来说,尽管已经通过示例描述了该方法,但是该方法的步骤能以与所示出的顺序不同的顺序执行或者同时地执行。此外,在具体实施例和权利要求书中使用术语“包括”、“具有”或其变体的范围内,这些术语意图包括与术语“包括”相同的含义。如在此所用,关于列表项的术语“…中的一个或多个”是指例如,A和B是指单独的A、单独的B或者A和B。本领域技术人员将认识到,这些和其它变化在权利要求及其等同物所限定的精神和范围内是可能的。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1