一种计算机实现的、提供高效、有序、节省空间的多维数据的表示的数据库和方法。以一种对例如空间利用和/或访问速度有益的方式-如以压缩的形式和/或排序次序,存储每个属性的数据值。属性的每个数据值的实例由实例元素标识,其中每个实例元素与一个数据值关联。为每个实例提供将每个属性元素唯一地与另一个属性的数据值的特定实例相关联的连接信息。(*该技术在2019年保护过期,可自由使用*)
【技术实现步骤摘要】
本专利技术总体涉及计算机实现的数据库,特别是涉及一种的多维数据的高效、有序、节省空间的表示。现有技术水平的数据库管理系统(DBMS),像它们历史上所出自并在其上面成长的基础性数据文件一样,继续以密切反映用户的数据观的方式存储和处理数据。用户一般将数据视为一系列的记录(或“元组”),每个记录逻辑上由固定数量的、含有关于该记录所描述的实体的特定内容的“字段”(或“属性”)组成。这个观点自然地由一种逻辑表(或“关系”)结构(本文称之为“基于记录的表”)-诸如直线网格-来代表,其中的行代表记录,列代表字段。在没有普遍认同的缺点的情况下,基于记录的表和它们与传统性用户观的一致长期存在,这致使它们被近乎普遍地接受为是数据库的主要基础性内部表示。然而基于记录的表含有关键的结构性弱点,包括传统上被视为不可避免的高度的无序性和冗余性。例如,可以将这种表可以按最多一个准则(根据列值或者列值或多重列值的某个函数)进行排序或分组(即相同值的邻接定位)。这个限制使按这个特权标准以外的所有其它准则进行的诸如查询和更新的基本数据库功能拙苯且过分耗费资源。以上缺陷是基于记录的表结构的根本属性中固有的,特别是要求使每个字段的定位与同一记录中所有其它字段共线(co-linear)这个缺陷。在基于记录的表结构中对字段的这种随意定位,排斥所有其它安排。它因此使由更有序、紧凑和高效的数据安排所揭示的自然和可利用的潜在数据关系模糊不清。此外,基于记录的表缺乏有效地对数据分组和排序的能力,这导致现有技术水平的数据库管理系统具有负面特点,诸如无序、冗余、不方便、算法低效和性能不稳。数据库研究提供了减轻这些问题的手段,但是不能揭示和解决它们的根本原因(即对基于记录的表结构的依赖)。例如,由于不能在基于记录的表结构内表示自然、多维的组合而导致了基于索引的数据结构。这些辅助性结构固有地并经常大规模地冗余,但是它们能建立用常规的表不能直接表现的组合和排序。基于索引的结构一般增长得过分冗长、迂回,不方便于维护、优化,尤其不方便于更新。常见索引的例子是b-树、t-树、星-索引(star-indexes)和各种位图。现有技术中开发的其它辅助性结构都有不同的缺点。例如,散列表能提供对个别数据项的快速查询,但由于它们缺乏排序次序,不适合范围查询或要求以特定次序返回数据的任何其它操作。用灵活的排序和/或分组准则维护一个有序、不冗余的多维数据集合的能力,对数据库管理极其有用。排序的数据通过例如二进制检索算法和插入排序,使快速检索和更新成为可能。分组的数据使得能够进行减少空间需求并进一步提高例如检索和更新的速度的压缩。因此极其需要这样一种数据存储系统,在该系统中,数据表的大多数或全部的列能以分组的和/或排序的次序存储。以前的研究调查过“完全倒置数据库”,该数据库通过传统方法索引每个列,保留了记录和索引的所有不足。此外,为容纳完整的索引所需的膨胀的存储条件会使全倒置数据库不实用-特别是(但不仅仅是)在主存储器数据库中。因此本专利技术的一个目的是提供一种没有如上所述的现有技术的缺陷特点的、全部或部分有序的(即分组和/或排序的)数据库。简而言之,本专利技术不是将数据库构造成像以前的数据库那样的表的形式-表中的每个行是一个记录,每个列含有该记录中的字段,而是置换(permute)或是修改各列,以提供例如在空间利用和/或存取速度方面的益处,使得各行不再必须对应于各记录。例如,一种这样的修改是通过去除冗余值来压缩列(这减少存储器的占用);另一个修改是对列排定次序,保证值组将总是以某特定次序出现(这能大大地缩短检索有特定值的列所需的时间);还有另一个修改是对列既压缩又排序。其它具有其它优点的排列和修改也是可能的。排列/修改过的值的表在本文中被称作“值表”。逻辑上,尽管未必物理上,单独的数据结构提供重构数据库中的“记录”所需的信息。特别地,它们提供“实例”和“连接”信息,实例信息标识记录内字段中每个值的实例,连接信息将每个实例与至少在另一个字段中的值的特定实例相关联。在本专利技术的一个实施例中,实例和连接信息二者都在一个本文称作“实例表”的表中提供。实例表中每个列对应于数据库中记录的一个属性,并与值表中含有该属性(以及可能的其它属性)的值的列相关联。实例表中的每个单元(行/列位置)有一个位置(在本专利技术一个实施例中,是其行号)和一个实例值(单元的内容)。值表中相关列中的相关单元是从各个单元的位置导出的。属于相同记录的实例表的另一个列中的相关实例单元也是从每个实例单元的实例值导出的。所以在本实施例中,实例单元的位置标识该单元是其一个实例的值,实例单元的内容提供将该实例与另一个字段中的另一个实例单元相关联的连接信息。然后就可以从实例表中某单元开始,通过从该单元的位置、值表中相关的值单元以及该单元的实例值导出相关实例单元的位置,重构一个记录,并在相关实例单元重复这个过程等等-在一个实施例中,链中的最后单元提供起始单元的对应位置。如果值表的一列被排序,但是没有被压缩,则该值表列和实例表中的相关列-在本专利技术的一个实施例中-由相同的行数。在这一个实施例中,实例单元的相关值单元是相关值表列中与实例单元有相同行号的值单元。实例单元的相关实例单元(即属于同一记录的实例表的另一列)是具有由实例单元的实例值给出的行号的特定列。在一个实施例中,该特定列是实例表中的下一列,其中最后一列指回到第一列。例如,如果值表的列1是未压缩的,排列后,值表的列1、行2和列2、行5属于同一个记录,并且列2、行5的一个实例位于实例表的列2、行5,则实例表就在列1、行2含有数字5(指出下一列的行5属于同一个记录)。如果值表列是压缩了的,则在该列与与其关联的实例表列之间一般没有一对一的对应。在这种情况下,提供一个本文中称作“位移表”的表,在本专利技术的一个实施例中,该表有对应每个与一个压缩值表列相关联的实例表列的列,并规定值表列的每行相关联的实例表行号的范围。与实例单元相关联的值单元然后由相应的位移表列根据该实例单元的位置(行号)确定。在一个实施例中,一个位移表列有与相关的值表列相同的行数,位移表中的每个单元提供与相应的值单元相关的实例表行号范围内的第一行号。或者,位移表中的每个单元例如也可以提供实例表行号范围内最后行号,该范围的总行数,或者有可能由其导出与每个值单元相关的实例表行号(即每个值的实例)的范围的某个其它值。上述的位移表的一个缺点是,如上所述,在位移表中检索对应某实例单元的值单元,降低记录重构的速度。这个缺点在本专利技术的另一个实施例中被解决,在该实施例中,将相关实例单元位于一个有位移列的列中的实例单元的实例值设置在与该相关实例单元相关的值单元的位置(而不是如上述实施例中那样在该相关实例单元本身的位置)。于是不检索位移表就能直接获得相关实例单元的值。在本实施例中,一个本文称作“出现表”(occurrence table)的表提供用于确定相关实例单元的信息。在出现表的一个实施例中,实例表中每个有具有上述实例值的单元的列在出现表中有一个有相同行数的相关列。在本实施例中,出现表中的单元根据其位置与实例表中的单元相关联,并规定一个位移量。将该偏移量加上与值单元相关的实例表行号的范围中的第一行号,就到达相关的实例单元。第一行号是根据实本文档来自技高网...
【技术保护点】
一种计算机实现的数据库,包含:a. 一个或多个数据值元素集合,每个数据值元素有一个在该一个或多个数据值元素集合的其中之一中的位置和一个数据值;b. 至少一个第一和一个第二实例元素集合,每个实例元素有一个在其相应实例元素集合中的位置和 一个数据值,并且每个实例元素集合对应于一个属性;c. 其中对于第一实例元素集合中的第一个实例元素来说,(i)该一个或多个数据值元素集合中的第一个相关数据值元素是由该第一实例元素的位置导出的,并且(ii)第二实例元素集合中的、其在 第二实例元素集合中位置不同于第一个实例元素在第一实例元素集合中位置的单一一个第二实例元素,是由第一实例元素的实例值导出的,并且d. 另外其中(i)将该一个或多个数据值元素集合中的第二个相关数据值元素与第二实例元素和第二实例元素集合中 的至少一个其它元素相关联,并且(ii)第一个实例元素能独立于第一实例元素的值地由第二实例元素导出。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:SA塔林,
申请(专利权)人:必需技术公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。