列存储数据库管理系统的利记博彩app
【专利摘要】本发明公开了一种列存储数据库管理系统。列存储数据库管理系统包括存储预定的数据结构的存储单元以及数据管理单元。数据结构对应于表达成包括每个字段的字段值的记录数据的表格式数据,并且针对每个字段都包括字段中的字段值被存储成对应于唯一指定字段值的字段值编号的值列表以及包括以记录顺序指定字段值的信息的值编号阵列。存储单元存储第一数据结构,该第一数据结构对应于第一表格式数据并且包括第一字段的值列表以及值编号阵列。当数据库管理单元从第二表格式数据生成第二数据结构时,其使用第一数据结构的第一字段的值列表来生成第二数据结构的第一字段的值列表。
【专利说明】列存储数据库管理系统
[0001]通过引用并入
[0002]本发明是基于并且要求于2015年3月17日提交的日本专利申请N0.2015-053201的优先权权益,其全部公开内容通过弓I用并入本文中。
[0003]技术领字段
[0004]本发明涉及列存储数据库管理系统、数据加载方法和程序。
【背景技术】
[0005]关系数据库管理系统(RDBMS)是下述类型的数据库系统:其中,信息被存储为由一些字段(field)组成的记录集合的表。字段、记录和表也分别被称为列、行和表。关系数据库管理系统包括典型的面向行的关系数据库管理系统以及称为列存储数据库管理系统的面向列的关系数据库管理系统。前者典型的关系数据库管理系统在行方向上将数据作为整体进行处理。这样,其适合于涉及到添加、更新和删除的在线交易。另一方面,由于后者列存储数据库管理系统在列方向上处理数据,所以其适合于提取列以被操作的制表处理和搜索。本发明涉及后者列存储数据库管理系统的改进。
[0006]在列方向上将数据作为整体进行处理的列存储数据库管理系统采用在针对每列消除重复数据的同时保持数据的数据结构。例如,对于表格式数据的每个字段,称作FAST结构的数据结构包括值列表和值编号阵列,在值列表中,字段中的字段值与唯一指定字段值的字段值编号相对应地被存储;在值编号阵列中,存储以记录顺序指定字段值编号的信息(例如参阅JP 3581831 B(专利文献I))。
[0007]图19示出了表格式数据以及与之相对应的FAST结构数据的示例。在该示例中的表格式数据被表达为记录(行)的阵列,包括关于相应字段(相应列)的字段值,诸如学生ID号、姓名、出生日期和性别。此外,FAST结构数据由示出行号的顺序集合以及每一列的一对值列表和值编号阵列组成。在字段的值列表中,与唯一指定字段中存在的字段值的字段值编号相对应地存储字段中的字段值。例如,在根据性别字段的值列表中,与字段值编号O和I相对应地存储字段值,男和女。此外,在根据字段的值编号阵列中,存储以记录顺序指定字段值编号的信息。例如,在根据性别字段的值编号阵列中,存储以记录顺序指定字段值编号I,0,0,0,1,1,0,0,1,0的信息。
[0008]专利文件1:JP3581831 B
[0009]在使用FAST结构的列存储数据管理系统中,当新的表格式数据被加载到存储单元时,必须将表格式数据转换为具有FAST结构。为了将表格式数据转换为具有FAST结构,有必要针对表格式数据的每个字段生成值列表和值编号阵列。通过利用诸如归并排序(mergesort)的典型排序方法来消除重复,可以通过根据字段排序所有字段值,来生成值列表。此夕卜,可以通过将字段中的相应字段值与字段的值列表进行匹配来生成值编号阵列。然而,尽管生成值编号所需要的计算量级O是n,但是生成值列表所需要的计算量级O是nXlogn。在此,η表示表格式数据的行数。这样,用于将表格式数据转换为具有FAST结构所需要的计算量级是nXlogn。这样,关于具有大的行数η的表格式数据,需要长的时间来针对每个字段生成值列表。因此,存在的问题在于,难以高速地加载新的表格式数据。
【发明内容】
[0010]本发明的示例性目的是提供一种列存储数据库管理系统,该列存储数据库管理系统解决了上述问题,即难以高速地加载新的表格式数据的问题。
[0011]根据本发明的示例性实施例的列存储数据库管理系统是包括存储单元以及与存储单元连接的数据库管理单元的列存储数据库管理系统。存储单元存储与表达为包括关于每个字段的字段值的记录阵列的表格式数据相对应的数据结构。对于每个字段,数据结构包括值列表和值编号阵列,在所述值列表中,与唯一指定字段值的字段值编号相对应地存储所述字段中的字段值,在所述值编号阵列中,存储以记录顺序指定所述字段值编号的信息。存储单元存储第一数据结构,该第一数据结构对应于第一表格式数据,并且包括根据第一字段的值列表以及值编号阵列。数据库管理单元包括数据结构生成单元,该数据结构生成单元从所输入的第二表格式数据生成用于存储在所述存储单元中的第二数据结构。数据结构生成单元利用根据第一数据结构的第一字段的值列表来生成根据第二数据结构的第一字段的值列表。
[0012]根据本发明的另一示例性实施例的数据加载方法是一种列存储数据库管理系统中的数据加载方法,该列存储数据库管理系统包括存储单元以及与存储单元连接的数据库管理单元。存储单元存储与表达为包括关于每个字段的字段值的记录阵列的表格式数据相对应的数据结构。对于每个字段,数据结构包括值列表和值编号阵列,在所述值列表中,与唯一指定字段值的字段值编号相对应地存储所述字段中的字段值,在所述值编号阵列中,存储以记录顺序指定所述字段值编号的信息。该方法包括:由存储单元存储第一数据结构,该第一数据结构对应于第一表格式数据,并且包括根据第一字段的值列表以及值编号阵列;以及通过数据库管理单元从所输入的第二表格式数据生成用于存储在所述存储单元中的第二数据结构。当生成第二数据结构时,数据库管理单元利用根据第一数据结构的第一字段的值列表来生成根据第二数据结构的第一字段的值列表。
[0013]根据本发明的另一示例性实施例的存储程序的非瞬时计算机可读介质,计算机构成列存储数据管理系统中的数据库管理单元,该列存储数据管理系统包括存储单元以及与存储单元连接的数据库管理单元,存储单元存储与表达为包括关于每个字段的字段值的记录阵列的表格式数据相对应的数据结构,对于每个字段,数据结构包括值列表和值编号阵列,所述值列表被配置为使得所述字段中的字段值与唯一指定字段值的字段值编号相对应地被存储,所述值编号阵列被配置为使得以记录顺序指定所述字段值编号的信息被存储,存储单元存储第一数据结构,该第一数据结构对应于第一表格式数据并且包括根据第一字段的值列表以及值编号阵列,所述非瞬时计算机可读介质使得所述计算机用作:
[0014]数据结构生成单元,该数据结构生成单元从所输入的第二表格式数据生成用于存储在存储单元中的第二数据结构,并且当生成时,利用根据第一数据结构的第一字段的值列表来生成根据第二数据结构的第一字段的值列表。
[0015]由于本发明具有上述配置,所以能够实现表格式数据的高速加载。
【附图说明】
[0016]图1是根据本发明的第一示例性实施例的列存储数据库管理系统的框图;
[0017]图2示出了在根据本发明的第二示例性实施例的列存储数据库管理系统中使用第一数据组的列的VL来生成第二数据组的列的VL和VNo的过程;
[0018]图3是根据本发明的第二示例性实施例的数据库管理系统的框图;
[0019]图4是根据本发明的第二示例性实施例的用于生成要分割的时间序列数据的表的示例性查询;
[0020]图5示出了本发明的第二示例性实施例中的继承列定义单元的示例性内容;
[0021 ]图6示出了本发明的第二示例性实施例中的要输入的CSV文件的示例性内容;
[0022]图7是示出本发明的第二示例性实施例中的加载过程的流程图;
[0023]图8示出了在本发明的第二示例性实施例中通过在第二数据组中逐个顺序地检查数据并且将其与第一数据组中的VL中的数据进行匹配来提取新的数据的过程的具体示例;
[0024]图9示出了在本发明的第二示例性实施例中的生成第二数据组的VNo的过程的具体示例。
[0025]图10是根据本发明的第三示例性实施例的数据库管理系统的框图;
[0026]图11示出了本发明的第三示例性实施例中的继承列历史信息单元的示例性内容;
[0027]图12示出了在本发明的第三示例性实施例中的针对每个继承列设置阈值的示例性查询以及基于该查询所生成的继承列定义的示例;
[0028]图13是根据本发明的第四示例性实施例的数据库管理系统的框图;
[0029]图14示出了本发明的第四示例性实施例中的VL—致率信息单元的示例性内容;
[0030]图15示出了本发明的第四示例性实施例中的继承列定义单元的示例性内容;
[0031 ]图16是根据本发明的第五示例性实施例的数据库管理系统的框图;
[0032]图17示出了本发明的第五示例性实施例中的销售表的示例性定义;
[0033]图18示出了根据本发明的第五示例性实施例的主列定义单元的示例性内容;
[0034]图19示出了表格式数据和与之对应的FAST结构数据的示例;以及
[0035]图20是用于实现数据库管理系统的信息处理设备的框图。
【具体实施方式】
[0036]下面参照附图来具体描述本发明的实施例。
[0037][第一示例性实施例]
[0038]参照图1,根据本发明的第一示例性实施例的列存储数据库管理系统100包括存储单元110以及与存储单元100连接的数据库管理单元120。
[0039]存储单元110具有存储对应于表格式数据的数据结构的功能。表格式数据被表达为包括与相应字段相关的字段值的记录的阵列。同时,数据结构被配置为,对于每个字段,包括值列表(在下文中称为VL)和值编号阵列(在下文中称为VNo),在值列表(在下文中称为VL)中,与唯一指定字段值的字段值编号相对应地存储字段中的字段值,在值编号阵列(在下文中称为VNo)中,存储以记录顺序指定字段值编号的信息。
[0040]数据库管理单元120包括数据结构生成单元121,该数据结构生成单元接收表格式数据并且生成数据结构,以将其存储在存储单元110中。数据结构生成单元121具有以下功能:利用根据已经存储在存储单元110中的数据结构的字段的VL,来生成根据用于将其新存储在存储单元110中的数据结构的字段的VL。
[0041 ]例如,存储单元110被配置有存储设备,诸如计算机的存储器和硬盘。此外,数据库管理单元120被配置有例如构成计算机的算术处理单元的微计算机以及在其上执行的程序。具体地,如图20中所示,列存储数据库管理系统100例如通过信息处理设备540和程序543来实现,信息处理设备540包括诸如微处理器的至少一个算术处理单元541以及用作存储单元110等的存储单元542,诸如存储器和硬盘。程序543是在信息处理设备540的启动时从外部计算机可读记录介质被读取到存储器,并且控制算术处理单元541的操作,以由此在算术处理单元541上实现数据库管理单元120。如下所述,列存储数据库管理系统200、300、400和500也能够以类似的方式通过信息处理设备540和程序543来实现。
[0042]下面将描述本实施例的操作。
[0043]作为初始状态,将在第二表格式数据130加载之前已经加载的第一表格式数据的数据结构111存储在存储单元110中。数据结构111包括根据字段112以及根据字段i的VNo 113ο
[0044]当输入第二表格式数据130时,数据库管理单元120的数据结构生成单元121生成用于将其存储在存储单元110中的第二表格式数据的数据结构114。此时,数据结构生成单元121通过使用根据第一表格式数据的数据结构111的字段112,来生成根据第二表格式数据的数据结构114的字段115。例如,数据结构生成单元121从第二表格式数据130的记录的字段i中提取在第一表格式数据的数据结构111的字段i中不存在的新的字段值,并且将对所提取的新的字段值进行排序的结果与VL 112合并,以由此生成VL 115。此夕卜,从所生成的VL 115和第二表格式数据130的字段i的字段值,数据结构生成单元121生成根据第二表格式数据的数据结构114的字段U^VNo 116。然后,数据结构生成单元121将所生成的数据结构114存储在存储单元110中。
[0045]如上所述,根据本实施例,能够以高速加载第二表格式数据130。
[0046]这是因为,数据结构生成单元121通过使用根据第一表格式数据的数据结构111的字段112,来生成根据第二表格式数据的数据结构114的字段115。例如,如果第二表格式数据130的记录的字段i中的全部字段值都存在于根据第一表格式数据的数据结构111的字段112中,则VL 112可以按原样用作VL 115。尽管这是极端示例,但由于在第二表格式数据130的记录的字段i中的字段值与第一表格式数据的记录的字段i中的字段值之间的重复度较高,所以要提取的新的字段值的数目较少。这样,与通过使用第二表格式数据130的记录的字段i中的字段值来从头开始生成VL 115的情况相比,能够显著减少计铃舁里。
[0047]在下文中,将给出对另一个实施例的描述,其中更具体地描述了第一示例性实施例。
[0048][第二示例性施例]
[0049]下面将描述本发明的第二示例性实施例。在本实施例中,在列存储数据库中,通过参考另一列或者过去的信息来减少用于加载具有与过去数据的高重复度的数据所需要的处理时间。
[0050]〈本实施例要解决的问题〉
[0051]作为数据库操作方法,通常存在下述情况:批量加载数据组,诸如一个月的销售数据或者产品继承表的切换。在如FAST结构的列存储数据库中,其中数据被存储为使得针对表的每一列来分解组成部分,当批量加载这样的数据组时,VL(和VNo)从头开始被生成并被保持。用于生成VL(和VNo)的处理随着数据尺寸越大而需要越长的时间。
[0052]本实施例的目的在于,当批量加载新的数据组时,通过使用FAST结构中数据组的列的VL,来减少用于生成新加载的数据组的VL(和VNo)所需要的时间,在FAST结构中,大量数据类型可能与新的数据组的那些重叠。在下文中,为了区分,已经处于FAST结构的数据组被称为第一数据组,并且新加载的数据组被称为第二数据组。
[0053]〈本实施例的概述〉
[0054]图2示出了在本实施例中通过使用第一数据组的列的VL来生成第二数据组的列的VL和VNo的过程。在本实施例中,要使用的第一数据组的VL(在下文中被称为继承VL,并且其列被称为继承列)中存在的数据已经被应用了重复删除(deduplicat1n)并且以排序的形式被存储。这样,首先搜索要被新加载的数据组(N个单位),并且提取在继承VL的数据(X个单位)中不存在的新的独特数据(Y个单位)(过程I)。然后,对所提取的数据(Y个单位)应用重复删除并进行存储(过程2)。由此,获得部分VL数据(Z个单位)。然后,部分VL数据(Z个单位)和继承VL被合并,以由此生成第二数据组的列的VL(X+Z个单位)(过程3)。这样,与通过对第二数据组的列的数据(N个单位)应用重复删除并对其进行排序来生成VL的方法相比,能够减少处理时间。当继承VL中的数据和第二数据组具有较大量共同之处(一致率较高)时,效果较大。最后,在将第二数据组的数据(N个单位)与在过程3中所生成的VL(X+Z个单位)进行匹配时,生成第二组数据的列的VNo(过程4)。
[0055]可以考虑选择要使用的继承列的多种方法。下面将对此进行描述。
[0056]〈本实施例的配置〉
[0057]图3是示出根据本实施例的数据库管理系统200的总体配置的框图。参照图3,数据库管理系统200从客户端应用210接收查询,对其进行分析和处理,并且将结果返回到客户端应用210。作为主要功能单元,数据库管理系统200包括查询分析单元201、查询处理单元202、数据存储单元203、继承列定义单元204、VL继承控制单元205以及数据结构生成单元206。能够通过构成数据库管理系统200的计算机以及可在其上操作的程序来实现这些单元201至206。
[0058]在数据库管理系统200中,查询分析单元201分析查询,并且查询处理单元202处理该查询。查询处理单元202在适当时读取并且更新存储在数据存储单元203中的FAST结构的数据。继承列定义单元204保持关于哪个表的哪一列被定义为继承列的定义信息。VL继承控制单元205具有确定在加载数据中的多个列当中的哪一列使用继承列的继承VL的功能。数据结构生成单元206具有生成新的加载数据的VNo和VL的功能。
[0059]下面将描述本实施例的操作。在下文中,将描述在VL匹配现有VL的概率高的情况下,采取分割方法的情况,其中在将逻辑表划分成多个物理表的同时存储该逻辑表。更具体地,在该情况下,将新的分区数据加载到通过分割以特定分区来被划分的表。应当注意,由于本发明可以在列之间的VL—致率高时被执行,所以其应用不限于分割。
[0060]通常的情况是,在一个表中管理长期数据,诸如销售数据。在该情况下,随着数据量的增加,出现搜索和制表处理劣化并且管理变得复杂的问题。作为对这样的问题的对策,采取通过分割来划分表的动作。作为示例,将会考虑完全删除一个月内最旧记录的情况。如果不采取这样的动作,则需要针对对象分区的记录来搜索全部销售数据,并且将其删除。同时,如果已经采取了上述动作,则由于将一个月内的数据设定为单元,所以仅需删除该单
J L ο
[0061]在该情况下,由于表的定义是相同的,所以前一分区的继承列的VL很可能是有效的继承VL,因为存在例如前一个月中销售的产品的类型与新一个月中销售的产品的类型类似的倾向。然而,因为根据劣的特性而可能不是有效的,所以当定义表时,要求用户明确地指定可以被用作继承列的列。
[0062]首先,从客户端应用210发出用于生成要分割的时间序列数据的表的查询。此时,还一起指定继承列。图4示出了其示例性查询。该查询示出了生成销售表,并且根据日期列的值按2014年的月份来分割数据。部分“p2014XX” (XX表示OI至12中的任一个)是分割名称。该查询是伪查询,并且实际语法取决于DBMS。到目前为止的定义是一般定义。在本实施例中,为了指示用作继承列的列,将关键字“INHERITANCE(继承)”添加到列名称和数据类型。查询分析单元201读取该查询,并且如图5中所示,将继承列和表的信息存储在继承列定义单元204中。存储方法可以使用外部文件、专用表等。
[0063]在图4中,对于“产品名”、“数量”和“金额”的列指定继承列,而对于其他列,即“销售id”、“用户名”和“日期”不指定继承列。尽管以下描述了将这些列从继承列的指定中排除的理由,但这些理由是作为示例给出,并且可以根据数据特性而改变。
[0064]“销售id”:通常使用升序的序号。对前一分区和新的分区给予完全不同的值,并且其中似乎没有重复。
[0065]“用户名”:认为尽管这取决于产品或者用户的数目,但是存在一定数目的用户,他们的产品购买间隔超过一个月,因此预期在前一分区和新的分区之间的重复用户的数目不会很大。
[0066]“日期”:由于分区是按月进行划分的,所以在前一分区与新的区段之间的日期从不重复。
[0067]在此,将考虑将一个月的数据新加载到销售表中的情况。通过从客户端应用210向数据库管理系统200发出专用于加载的查询来执行加载,在该专用于加载的查询中指定CSV格式等的外部文件。图6示出了 CSV文件的示例性内容。该示例示出了 2014年11月的数据。
[0068]图7是示出加载过程的流程图。在数据库管理系统200中,查询处理单元202确定前一个月的数据是否存在(步骤S201),并且如果不存在,则数据结构生成单元206使用常规方法来生成每一列的VNo和VL(步骤S202)。另一方面,如果数据存在,则VL继承控制单元205顺序地检查列的定义(步骤S203) ο关于没有对其给予关键字“INHERITANCE”的列,数据结构生成单元206使用常规方法来生成该列的VNo和VL(步骤S205)。同时,关于对其给予了关键字“INHERITANCE”的列,数据结构生成单元206使用继承VL来生成该列的VNo和VL(步骤S206)。VL继承控制单元205确定是否已生成了全部列的VNo和VL。如果没有,则处理返回至步骤S203,并且重复与上述相同的处理。如果已经完成,则图7的处理结束。
[0069]下面将描述在步骤S206处利用继承列的继承VL来生成VL和VNo的过程(图2中的过程I至4)的细节。
[0070]假定在十月的“产品名”列的继承VL中的数据的单位数是10000,并且十一月数据的单位数是1000000,并且利用四个CPU核来对“产品列”执行处理。
[0071]过程I的细节
[0072]首先,如图8中所示,十一月数据被划分成四个,由此每一组包含250000个单位,并且相应地将所划分的数据单位分配给CPU核。每个CPU核从头开始逐个检查250000个单位的数据,以查看其是否被包括在十月的继承VL中。如果没有被包括(即在十月中完全没有销售该产品),则将其提取为十一月的新数据。最后,假定提取了总共8000个单位的十一月的新数据(由CPU核I提取的2100个单位、由CPU核2所提取的1900个单位、由CPU核3所提取的1800个单位和由CPU核4所提取的2200个单位的总数)(参见图8)。
[0073]过程2的细节
[0074]下面,8000个单位的数据在进行重复删除的同时被排序,由此生成十一月的新数据VL(部分VL)。可以通过使用诸如归并排序的典型排序方法来消除重复数据来执行该处理。通过该处理,假定十一月的新数据VL包含100个单位。
[0075]过程3的细节
[0076]因为在过程2中生成的部分VL是仅与十一月中新出现的数据相关的VL,所以将其与也出现在十月中出现的1000个单位的数据(继承VL)合并。因为两种VL已经被排序,所以能够简单地通过从头开始顺序地比较两个VL来对其进行合并。结果,获得尺寸为10100(10000+100)个单位的^^一月的VL。
[0077]然而,应当注意,VL包含“在十月中销售但在十一月中没有销售的产品的数据”,这是不必要的。此时没有删除不必要的数据。然而,因为每当新月份的数据被加载时都累积数据,所以期望用户考虑操作情形并周期性地替换VNo和VL(例如一年一次),并且在那时将其删除。使用常规方法来执行VNo和VL的替换。
[0078]过程4的细节
[0079]最后,使用十一月的VL来生成十一月的VNo。如图9所示,十一月的数据单位被划分成四个,使得每一组包含250000个单位,并且相应地将其分配给CPU核。然后,一个CPU核从头开始逐个检查250000个单位的数据,以找出其存在的^^一月的VL的附标(subscript),并且将所找出的附标确定为VNo数据的值。
[0080]〈效果的描述〉
[0081]如上所述,根据本实施例,因为在继承VL与新生成的VL之间的一致性程度较高,所以应用重复删除和排序的范围小于常规方法的范围。这样,减少了用于生成VL(和VNo)的处理时间。因此,减少了用于批量加载新的数据组的处理时间。
[0082][第三示例性实施例]
[0083]下面将描述本发明的第三示例性实施例。本实施例的数据库管理系统具有将在过去的加载执行时的VL数据一致率保持作为历史的功能,并且对于VL数据一致率低而使得改进效果不如预期的列,允许用户容易地确定是否取消继承列的指定。此外,本实施例的数据库管理系统具有以下功能:如果VL数据一致率变得小于阈值,则向用户提供这样的信息或者自动取消继承列的指定。
[0084]用户在考虑前一分区的数据与新的分区的数据之间的VL—致率是否是高的同时,执行继承列的指定。然而,作为连续实际操作的结果,可能存在下述情况:前一分区的VL数据与新的分区的VL数据并没有非常匹配,并且继承列的指定并不有效。这样,在本实施例中,过去的继承列的VL数据被存储为历史,以允许用户容易地确定是否取消继承列的指定。此外,如果存在一致率低于所设定的阈值的列,则在加载时可以向用户通知这样的事实,或者可以自动取消继承列的指定。
[0085]图10是根据本实施例的数据库管理系统300的框图。本实施例的数据管理系统300与第二示例性实施例的数据库管理系统200的不同之处在于,数据库管理系统300包括继承列历史信息单元301。
[0086]继承列历史信息单元301具有存储每个月的加载中的继承列的VL数据一致率的功能。每当执行加载时,对继承列历史信息单元301添加新的数据。作为继承列历史信息单元301,可以使用存储器中的表。也可以使用另一个存储区域,诸如外部文件。
[0087]图11示出了继承列历史信息单元301的示例性内容。在该示例中,以表的格式示出了在过去五个月中、作为销售表中存在的继承列的产品名、数量和金额的加载中的VL—致率的历史。例如,表的第三列的第三行示出了,当加载2014年的数据时,在数量列中,{(一月的继承VL的数目)/(二月的VL的数目)} X 100 =百分之99.00的VL匹配。例如,VL—致率通过数据结构生成单元206来生成,并且被存储在继承列历史信息单元301中。可以从客户端应用210自由地参考继承列历史信息。
[0088]在此,假定在加载三月数据之后,用户查看继承列历史信息,并且注意到金额列的VL—致率低于阈值(例如95%)。然后,假定用户发出用于改变继承列定义单元204的信息的查询(诸如ALTER TABLE),以由从继承列中删除该金额列。在该情况下,数据结构生成单元206在生成四月之后的金额列的VNo和VL时,不使用继承VL。此外,当四月之后更新继承列历史信息单元301时,数据结构生成单元206将空(NULL)置于金额列的相应部分中,如图11中所示。
[0089]数据结构生成单元206可以被配置为使得如果任何列的一致率变得低于特定阈值(例如99 % ),则可以在批量加载时,向用户呈现这样的事实。同时,如果任何列的一致率变得低于特定阈值(例如99%),则数据结构生成单元206可以终止使用用于该列的继承来生成VL的处理。具体地,数据结构生成单元206可以自动取消继承列的定义,并且通过常规方法来生成VNo和VL。在通过常规方法来执行的情况下,从继承列定义单元204中删除对应的继承列的定义。
[0090]同时,可以由用户为每个列设定阈值。图12示出了用于为每个继承列设定阈值的查询的示例、以及基于该查询所生成的继承列定义的示例。对于图12中所示的查询和继承列定义,与图4中所示的查询和图5中所示的继承列定义相比,增加了括号中的99、95和95的阈值。
[0091]根据本实施例,用户能够通过参考继承列历史信息单元301的内容,来检查对其指定继承列的每个列的最新VL数据一致率。这样,用户能够基于该最新的信息来确定他/她使用何种方法,即,使用继承VL的方法或不使用继承VL的方法,来生成对应列的VNo或VL ο然后,对于VL数据一致率低而使得高的改进效果不如预期的继承列,通过执行取消继承列指定的操作,能够选择需要更短处理时间的方法。由此,能够减少用于分配加载所需要的总处理时间。
[0092]此外,根据本实施例,如果任何列的一致率变得低于特定阈值(例如99%),则能够自动终止使用用于该列的继承列来生成VL的处理。
[0093][第四示例性实施例]
[0094]下面将描述本发明的第四示例性实施例。根据本实施例的数据库管理系统可以被配置为针对在任意时间VL—致率可能很高的列来搜索表,存储结果,并且将其呈现给用户,以由此允许用户确定是否指定继承列,或者可以被配置为搜索在任意时间VL—致率超过阈值的表的列,存储检测结果并且将其呈现给用户,以由此允许用户确定是否指定继承列。否贝IJ,数据库管理系统可以被配置为搜索在任意时间VL—致率超过阈值的表的列,并且将其自动指定成为继承列。
[0095]即使对于没有指定成为继承列的列,也可以存在能够用作继承VL的另一列。例如,尽管在第二示例性实施例中,将销售表中的用户名的列排除在继承列之外,但作为除了构成逻辑表的物理表的另一表,用户名的主表在大多数情况下应当存在,并且所有用户都应当被包括在其用户名的列中。这样,如果主表的用户名的列的VL被用作继承VL,则VL—致率将是100%。
[0096]图13是根据本实施例的数据库管理系统400的框图。本实施例的数据管理系统400与第二示例性实施例的数据库管理系统200的不同之处在于,数据库管理系统400包括VL—致率扫描单元401以及VL—致率信息单元402。
[0097]VL—致率扫描单元401具有下述功能:定期地(例如当系统负载低时的夜间期间)自动搜索可能具有与在继承列定义单元204中定义表名的表的列(在下文中称为对象列,在图5的示例中是销售表的列)的高VL—致率的另一表的列。例如,类似于第三示例性实施例,VL—致率扫描单元401搜索完全满足与对象列相同的模式、相同的列名以及相同的数据类型的条件的列集合,将每个列的VL与对象列的VL作比较,并且计算VL—致率。VL—致率扫描单元401将计算结果写入VL—致率信息单元402 JL—致率信息单元402可以是存储器上的表格。还可以使用另一存储区域,诸如外部文件。
[0098]图14示出了VL—致率信息单元402的示例性内容。该示例的VL—致率信息单元402存储多个记录,并且每个记录具有字段,诸如主侧表名、对象表名、列名、VL—致率以及检测数据。例如,在第二行上的条目示出了在2014年I月3日检测到销售表中的用户名相对于用户主表中的用户名的VL—致率为100%。能够从客户端应用210自由地参考VL—致率信息单元402。如果用户查看该信息并且发现用户名的一致率高,则当用户在下次及以后执行销售表的数据加载时,用户可以使用用户主表中的销售列的VL作为继承VL,以生成用户名的列的VNo和VL,来执行加载。
[0099]图15示出本实施例中的继承列定义单元204的示例性内容。为了使用另一表中的列作为继承VL,定义继承侧表名以及列名。为了生成这样的继承列定义,例如,可以考虑在查询中进行的指定继承侧表名和列的方法,其中执行批量加载。
[0100]VL—致率扫描单元401可以被配置为,如果检测到的VL—致率超过特定阈值(例如,99% ),则在批量加载时向用户呈现该事实,或者将继承列定义单元204的内容自动重写成图15中所示的。否则,VL—致率信息单元402可以具有继承列定义单元204的功能。例如,如由图14中的虚线所示,继承标记字段(初始值为“假(False)”)被添加到VL—致率信息单元402,并且如果检测到的VL—致率超过预定阈值(例如,99 % ),则VL—致率扫描单元401将继承标记的值从假改变为真(True)。关于在VL—致率信息单元402中将继承标记的值改变为真的条目中所描述的销售表的列,VL继承控制单元205进行控制使得在这样的条目的主侧表名中描述的表中的列被用作继承VL。
[0101]如上所述,根据本实施例,由于搜索具有与要加载的对象表的列的VL—致率高的列的另一表并且将其呈现给用户,所以用户能够从大范围的表组中找到继承VL。因此,能够减少用于批量加载的整体处理时间。
[0102]此外,根据本实施例,数据库管理系统能够被配置为,检测具有与要加载的对象表的列的VL—致率高的列的另一表,并且将其自动用作继承VL。因此,能够减少用于批量加载的整体处理时间。
[0103][第五示例性实施例]
[0104]下面将描述本发明的第五示例性实施例。在本发明的第五示例性实施例中,如果存在包括要新加载到另一表中的列的所有数据类型的列,则这样的列的VL被用作要新加载的列的VL,以由此显著消除用于生成新VL的处理。在下文中,将使用在第二示例性实施例中所述的产品表中的产品名的列作为示例给出描述。
[0105]在第二示例性实施例中,产品名的列被定义为继承列,并且执行图2的过程I至4,以由此生成十一月的VNo和VL。在四个过程当中,过程I至3是用于生成十一月的VL的处理。在此,考虑到列的特性,除了销售表之外,通常存在包括所有产品名的产品主表的产品名的列。通过将产品主表的产品名的列的VL直接用作十一月的产品名的列的VL,通过从过程4开始处理而省略过程I至3的处理,来完成用于生成VNo和VL的处理。在下文中,产品主表的产品名的列被称作主列。在该情况下,必要的是,产品主表的产品名的列应当成为从在十月中的加载销售表时直至在十一月中的新加载时的最新一个。
[0106]图16是根据本实施例的数据库管理系统500的框图。本实施例的数据管理系统500与第二示例性实施例的数据库管理系统200的不同之处在于,数据库管理系统500包括主列定义单元501。
[0107]主列定义单元501存储定义将哪个表的哪一列被用作主列的信息。
[0108]图17示出了销售表的示例性定义。如图17中所示,在产品名的列的定义之后提供描述“MASTER[产品主.产品名(product master.product name)]”。该描述定义了,将产品主表的产品名的列用作主列,并且将其VL用作销售表的产品名的列的VL。查询分析单元201分析销售表的定义,并且将如图18所示的主列定义写入主列定义单元501。
[0109]过程如下:在加载销售表的数据之前,将新的产品数据加载道产品主表,并且更新主列的VL,并且然后,批量加载十一月销售数据。
[0110]当生成产品名的列的VNo和VL时,使用产品主表的产品名的列的VL来执行过程4,而省略过程I至3,以由此生成VNo。
[0111]与第二示例性实施例相比,因为省略了过程I至3的处理,所以用于生成列的VNo和VL的处理被执行得更快。这并不意味着,可以关于所有列都省略过程I至3的处理。
[0112]首先,关于诸如数量和金额的非特定数值列,因为几乎不存在用作主(master)的列,所以无法使用上述方法。
[0113]第二,如果主VL的尺寸在很大程度上偏离要新加载的数据的类型数目,则产生性能问题。例如,假定产品主表中的产品名的类型数目是100000,而在十一月中销售的产品的类型数目是5000。如果使用第二示例性实施例的方法而不是本实施例的方法,则十一月产品名的列的VL包含几乎5000个单位的数据,而如果使用本发明的方法,则其包含100000个单位的数据。100000个单位主要包括在十一月中没有销售的产品的数据。这样,例如当执行搜索处理时,要扫描的VL数据的单位数目浪费地变多,这产生性能的劣化。
[0114]最后,存在数据一致性的问题。从客户端应用210传送的数据并非总是正确的。可能混合不必要浪费的数据,或者必要数据有时可能不足。考虑到这样的问题,还考虑到意执行过程I至3。例如,将考虑下述情况:当将新的产品数据加载到产品主表时,应当加载的新产品的数据可能遗漏,并且此外,在十一月中销售了一件或多件新产品。在执行过程I至3的情况下,在执行用于提取十一月的新数据的处理时,能够提取遗漏的新产品数据,并且将其置于十一月VL中。然而,在本实施例的方法中,因为在生成VNo时,新的产品数据没有被包括在VL中,所以无法生成VNo,由此数据不一致性发生。在该情况下,使用本实施例的方法的处理被终止,并且再次从一开始使用第二示例性实施例的方法来执行处理。
[0115]如上所述,根据本实施例,由于过程I至3中提取新VL数据的处理可以被省略,所以能够相应地减少用于生成列的VNo和VL的处理时间。
[0116]尽管已经参照上述一些示例性实施例描述了本发明,但本发明不限于上述实施例,并且能够对其作出各种增加和改变。
[0117]工业实用性
[0118]本发明可应用于使用FAST结构的列存储数据库管理系统。具体地,本发明批量加载数据集合时确定可允许处理时间(例如,确定从何时到何时是维护时间的情况)并且在可允许时间内没有完成加载的情况下是有效。这意味着,通过使用本发明,能够减少加载时间以在可允许时间内完成加载。
【主权项】
1.一种列存储数据库管理系统,包括: 存储单元,所述存储单元存储对应于表格式数据的数据结构,所述表格式数据被表达为包括与每个字段相关的字段值的记录的阵列,所述数据结构针对每个字段包括值列表和值编号阵列,所述值列表被配置为使得所述字段中的字段值与唯一指定所述字段值的字段值编号相对应地被存储,所述值编号阵列被配置为使得以记录顺序指定所述字段值编号的信息被存储;以及 数据库管理单元,所述数据库管理单元与所述存储单元连接,其中, 所述存储单元被配置为存储第一数据结构,所述第一数据结构对应于第一表格式,数据并且包括根据第一字段的所述值列表和所述值编号阵列, 所述数据库管理单元包括数据结构生成单元,所述数据结构生成单元从所输入的第二表格式数据生成用于存储在所述存储单元中的第二数据结构,并且 所述数据结构生成单元被配置为利用根据所述第一数据结构的所述第一字段的所述值列表,来生成根据所述第二数据结构的第一字段的所述值列表。2.根据权利要求1所述的列存储数据库管理系统,其中, 所述数据库管理单元从所述第二表格式数据的记录的所述第一字段中提取在所述第一数据结构的所述第一字段中不存在的新的字段值,并且 为了生成根据所述第二数据结构的所述第一字段的所述值列表,所述数据库管理单元被配置为,将所述新的字段值的排序结果与根据所述第一数据结构的所述第一字段的所述值列表合并。3.根据权利要求1所述的列存储数据库管理系统,其中, 所述数据库管理单元包括继承控制单元,所述继承控制单元基于继承列定义来控制所述数据结构生成单元,所述继承列定义针对所述第二表格式数据的记录的每个字段,定义是否通过使用根据所述第一表格式数据的相应字段的所述值列表来生成根据所述字段的所述值列表。4.根据权利要求1所述的列存储数据库管理系统,其中, 所述数据库管理单元包括用户能够参考的继承列历史信息单元,并且 所述数据结构生成单元被配置为,计算在根据所述第二数据结构的所述第一字段的所述值列表与根据所述第一数据结构的所述第一字段的所述值列表之间的一致度,并且将计算的一致度存储在所述继承列历史信息单元中。5.根据权利要求1所述的列存储数据库管理系统,其中, 所述数据库管理单元包括用户能够参考的一致率信息单元以及一致率检测单元,所述一致率检测单元被配置为从除了所述第一数据结构以外的表格式数据的数据结构检测下述字段并且将检测结果存储在所述一致率信息单元中:在该字段中,与除了所述第二数据结构的所述第一字段以外的字段的字段值的一致率不低于阈值。6.根据权利要求1所述的列存储数据库管理系统,其中, 所述数据结构生成单元被配置为使得如果根据所述第一数据结构的所述第一字段的所述值列表是根据具有在所述第二表格式数据的记录的所述第一字段中存在的所有字段值的主表的值列表,则所述数据结构生成单元使用根据所述第一数据结构的所述第一字段的所述值列表本身,作为根据所述第二数据结构的所述第一字段的所述值列表。7.根据权利要求1所述的列存储数据库管理系统,其中, 所述数据结构生成单元被配置为从根据所述第二数据结构的所述第一字段的所述值列表以及所述第二表格式数据的所示第一字段的所述字段值,生成根据所述第二数据结构的所述第一字段的所述值编号阵列。8.一种列存储数据库管理系统中的数据加载方法,所述列存储数据库管理系统包括存储单元以及与所述存储单元连接的数据库管理单元,所述存储单元存储对应于表格式数据的数据结构,所述表格式数据被表达为包括与每个字段相关的字段值的记录的阵列,所述数据结构针对每个字段包括值列表和值编号阵列,所述值列表被配置为使得所述字段中的字段值与唯一指定所述字段值的字段值编号相对应地被存储,所述值编号阵列被配置为使得以记录顺序指定所述字段值编号的信息被存储;所述方法包括: 通过所述存储单元,存储第一数据结构,所述第一数据结构对应于第一表格式数据,并且包括根据第一字段的所述值列表以及所述值编号阵列; 通过所述数据库管理单元,从所输入的第二表格式数据生成用于存储在所述存储单元中的第二数据结构,其中, 在生成所述第二数据结构中,所述数据库管理单元利用根据所述第一数据结构的所述第一字段的所述值列表,来生成根据所述第二数据结构的第一字段的所述值列表。9.根据权利要求8所述的数据加载方法,其中, 所述数据库管理单元从所述第二表格式数据的记录的所述第一字段中提取在所述第一数据结构的所述第一字段中不存在的新的字段值,并且 为了生成根据所述第二数据结构的所述第一字段的所述值列表,所述数据库管理单元将所述新的字段值的排序结果与根据所述第一数据结构的所述第一字段的所述值列表合并。10.根据权利要求8所述的数据加载方法,其中, 所述数据库管理单元基于继承列定义来生成所述第二数据结构,所述继承列定义针对所述第二表格式数据的记录的每个字段,定义是否通过使用根据所述第一表格式数据的相应字段的所述值列表来生成根据所述字段的所述值列表。11.根据权利要求8所述的数据加载方法,其中, 所述数据库管理单元计算在根据所述第二数据结构的所述第一字段的所述值列表与根据所述第一数据结构的所述第一字段的所述值列表之间的一致度。12.根据权利要求8所述的数据加载方法,其中, 所述数据库管理单元从除了所述第一数据结构以外的表格式数据的数据结构检测下述字段:在该字段中,与除了所述第二数据结构的所述第一字段以外的字段的字段值的一致率不低于阈值。13.根据权利要求8所述的数据加载方法,其中, 如果根据所述第一数据结构的所述第一字段的所述值列表是根据具有在所述第二表格式数据的记录的所述第一字段中存在的所有字段值的主表的值列表,则所述数据库管理单元使用根据所述第一数据结构的所述第一字段的所述值列表本身,作为根据所述第二数据结构的所述第一字段的所述值列表。14.根据权利要求8所述的数据加载方法,其中, 所述数据库管理单元从根据所述第二数据结构的所述第一字段的所述值列表以及所述第二表格式数据的所示第一字段的所述字段值,生成根据所述第二数据结构的所述第一字段的所述值编号阵列。15.—种存储包括指令的程序的非瞬时计算机可读介质,计算机构成列存储数据管理系统中的数据库管理单元,所述列存储数据管理系统包括存储单元以及与所述存储单元连接的所述数据库管理单元,所述存储单元存储对应于表格式数据的数据结构,所述表格式数据被表达为包括与每个字段相关的字段值的记录的阵列,所述数据结构针对每个字段包括值列表和值编号阵列,所述值列表被配置为使得所述字段中的字段值与唯一指定所述字段值的字段值编号相对应地被存储,所述值编号阵列被配置为使得以记录顺序指定所述字段值编号的信息被存储,所述存储单元存储第一数据结构,所述第一数据结构对应于第一表格式数据,并且包括根据第一字段的所述值列表以及所述值编号阵列,所述指令用于使得所述计算机用作: 数据结构生成单元,所述数据结构生成单元从第二表格式数据输入生成用于存储在所述存储单元中的第二数据结构,并且在所述生成中,利用根据所述第一数据结构的所述第一字段的所述值列表来生成根据所述第二数据结构的第一字段的所述值列表。
【文档编号】G06F17/30GK105989192SQ201610152878
【公开日】2016年10月5日
【申请日】2016年3月17日
【发明人】浅利俊之
【申请人】日本电气株式会社