用于存储与数据库实体成员关联的数据的方法与流程

文档序号:37124223发布日期:2024-02-22 21:33阅读:23来源:国知局
用于存储与数据库实体成员关联的数据的方法与流程

本发明涉及一种用于存储数据的方法,其中每个值与数据库中定义的实体的多个成员相关联。本发明还涉及一种用于访问存储的数据的方法。本发明还涉及一种用于通过电子装置、特别是计算机化装置存储和访问前述数据的系统。


背景技术:

1、存在用于在数据库中存储与各个实体的成员相关联的数据的已知方法。例如,数据库可以是由表组成的关系数据库。每个表都设置为存储大量行,并且每行都与一个唯一的id相关联。每个表a还包括一列或多列,每一列与特定实体相关联。

2、作为示例,并且为了帮助理解,考虑数据库中的简单表a,其可以包括分别与实体“月份”、“客户”和“产品”相关联的三列。

3、该示例不是限制性的,并且填充有更多列的数据库中的表b可以包括实体“月份”、“公司账户”、“公司”、“成本中心”、“控制”、“活动”、“产品”、“目的地”、“来源”、“场景”、“版本”和“行项目”。因此,在第二个示例中,表b包括十二个实体。

4、表a或表b中的行被设置为存储列中每个实体的成员。换句话说,表a中的一行存储了一个id,例如id1,并且包含成员“一月”、“客户a”、“产品100”。显然,表a中可以存储大量行,如下例所示。

5、表a

6、id1,“一月”,“客户a”,“产品100”,10

7、id2,“一月”,“客户b”,“产品101”,12

8、id3,“一月”,“客户a”,“产品102”,20

9、id4,“一月”,“客户a”,“产品103”,22

10、id5,“一月”,“客户b”,“产品100”,21

11、id6,“二月”,“客户a”,“产品100”,20

12、id7,“二月”,“客户a”,“产品101”,10

13、id8,“一月”,“客户a”,“产品106”,20

14、上面所示的“产品”后面的数值例如存储在表a的第四列中,并且表示客户x在给定月份购买的产品数量。idx表示每行的唯一id,并且为了简单起见,上面仅使用字母数字字符而不是数字字符来表示。

15、继续该示例,表b可以包含以下行(每行以id开头):

16、id1,“一月”,“公司账户1”,“公司a”,“成本中心1”,“控制ctr1”,“活动act1”,“产品100”,“目的地dest1”,“来源src”,“场景snr”,“版本1.0”,“行项目line1”,10

17、id2,“一月”,“企业账户1”,“公司a”,“成本中心2”,“控制ctr1”,“活动act1”,“产品200”,“目的地dest1”,“来源src”,“场景snr”,“版本1.0”,“行项目line1”,12

18、id3,“一月”,“企业账户2”,“公司a”,“成本中心3”,“控制ctr1”,“活动act1”,“产品200”,“目的地dest1”,“来源src”,“场景snr”,“版本2.0”,“行项目line1”,20

19、id4,“一月”,“企业账户2”,“公司a”,“成本中心3”,“控制ctr1”,“活动act1”,“产品200”,“目的地dest1”,“来源src”,“场景snr”,“版本2.0”,“行项目line2”,50

20、id5,“一月”,“企业账户1”,“公司a”,“成本中心3”,“控制ctr2”,“活动act1”,“产品100”,“目的地dest1”,“来源src”,“场景snr”,“版本2.0”,“行项目line2”,30

21、id6,“二月”,“企业账户1”,“公司a”,“成本中心3”,“控制ctr2”,“活动act1”,“产品100”,“目的地dest1”,“来源src”,“场景snr”,“版本1.0”,“行项目line2”,70

22、id7,“二月”,“企业账户1”,“公司a”,“成本中心3”,“控制ctr2”,“活动act1”,“产品200”,“目的地dest1”,“来源src”,“场景snr”,“版本1.0”,“行项目line2”,25

23、id8,“二月”,“企业账户1”,“公司a”,“成本中心3”,“控制ctr2”,“活动act1”,“产品200”,“目的地dest1”,“来源src”,“场景snr”,“版本2.0”,“行项目line2”,7

24、当需要访问一行时,上面的数据结构相当有效,这通常发生在事务系统中。然而,在需要批量查询的应用程序中,它们有相当大的缺点,例如在商业智能系统的情况下,不仅需要访问一行,还需要访问多行。上述数据结构和相应的管理系统也受到影响,因为它们的正确操作依赖于存储新记录(行)后对表进行重新索引。

25、关键情况的一个例子是,当表b在上面表示的八行之前或之后或放置在它们之间包括数十亿行(或更多行)时,查询表b只涉及提取一行或行的子集。例如,在简单的表a中,查询可以要求确定客户a在1月份购买了多少单位的产品100,或者在更复杂的表b中,在场景snr中,公司a购买了多少单位的版本2.0的产品a,目的地为dest 1,来源为src。

26、在上面的示例中,该查询将涉及更高的响应时间和硬件资源,这些资源并非微不足道。

27、本发明的技术问题是设计一种在存储空间和时间以及响应时间方面更有效的数据存储方法和数据访问方法,基本上克服了迄今为止影响已知系统和方法的问题。


技术实现思路

1、总之,在不穷举的情况下(提供后续描述),本发明背后的思想是创建一种用于组织数据的方法,该方法从通常在关系系统中发现的已知表格结构开始,将每一行编码为第一和第二宏编号,并将这些宏编号存储在配置结构(conf)中。然后从配置结构捕获预映射,其中第二宏编号被存储在具有段si的预映射结构(pre)中而不重复,其中每段si具有k个第二宏编号。第一宏编号通过具有k位的位图指向第二宏编号,由此,只有当配置结构(conf)中的第一宏编号与第二宏编号相关联地存储,并且第二宏编号在预映射结构(pre)的段si中时,位图map i才被分配给第一宏编号。

2、如前所述,该方法在下文中进行全面描述,特别是关于配置和预映射阶段。

3、根据本发明的方法,存储在关系系统中的表的行和列中的数据被组织成行中的成员的第一子集和行中的成员的第二子集。

4、该行中的成员的第一子集被编码为第一宏编号m1,并且该行中的成员的第二子集被编码为第二宏编号m2。

5、该行中的某个成员未编码,并在下面指示为值val。

6、第一宏编号m1和第二宏编号m2存储在行结构conf中,也称为配置结构,其中每一行包括第一宏编号m1、第二宏编号m2和值val。

7、配置结构conf用于(第一和第二宏编号的)数据预映射,如下所述。

8、第二宏编号m2不重复地存储在预映射结构pre中。预映射结构pre被划分为段si(i=0,…,n),其中每段包括k个(例如2400个)第二宏编号m2的集合。

9、每个第一宏编号m1可以指向位图map,每个位图map包括k位的集合,与第二宏编号m2的段si中的k个第二宏编号m2的集合相对应。

10、位图map用于跟踪与配置结构conf中的第一宏编号m1相关联的第二宏编号m2的段si中的位置。

11、仅当配置结构conf中的第一宏编号m1与第二宏编号m2相关联地存储,并且第二宏编号m2在预映射结构pre的段si中时,位图map i被分配为使得第一宏编号m2指向它。在下面的描述中提供了一个示例。

12、在这种情况下,位图map i的位置k(其中k=0,…,k)中的位被设置为指示与第一宏编号m1相关联的第二宏编号m2的段si中的位置k。

13、此外,与第一宏编号m1和第二宏编号m2相关联的值val与位图map i相关联地存储。

14、位图map i中的值val被连续存储,而不必在k个集合设置位置处提供或分配存储空间,从而指定预映射数据结构pre,该预映射数据结构被划分为第二宏编号m2的段si而不重复,并且第一宏编号m1指向位图map,其中仅在上面概述的特定条件下分配用于第一宏编号m1的位图map i。

15、用于查询以这种方式组织的数据结构的方法如下。

16、查询包括确定满足某些条件的值val,这些值val例如与编码在第二宏编号m2内的成员sub2和编码在第一宏编号m1内的成员sub1相关联。该成员sub2是初始表格结构的一个或多个成员的编码。

17、在这种情况下,在预映射结构pre中搜索第二宏编号m2中的数字sub2,以确定包含包括数字sub2的第二宏编号m2的所有段si。

18、通过以这种方式确定的段的索引i,可以仅访问由包括数字sub1的第一宏编号m1所指向的位图map i。

19、然后读取位图map i中的值val。这些值val构成查询的结果或目标。

20、下面的描述具有一些实施例示例,这些示例在以表格格式存储的数据的第一宏编号m1和第二宏编号m2中使用数学编码公式,例如在关系数据库的表中。

21、然而,该数学公式不是限制性的,因为它可以被另一个公式代替,目的是将成员映射到第一和第二宏编号中。

22、因此,下面的描述纯粹是说明性示例并且不限制本发明。

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