数据库设备的制造方法_2

文档序号:9326877阅读:来源:国知局
)从数据库客户端2直接指定查询执行部件33的操作时,查询分析器31或执行计划部件32未被通过。
[0063]查询执行部件33具有根据执行计划部件32所产生的执行计划而执行数据操作命令的功能。而且,响应于从数据库客户端2所直接接收的数据操作命令(例如,通过使用API所编写的数据操作命令),查询执行部件33具有在模式管理数据存储区域34和用户数据存储区域35上执行查询的功能。因此,查询执行部件33等同于作为所谓的数据库执行器的部分。
[0064]图3是查询执行部件33的功能的示例。参考图3,查询执行部件33具有数据处理器331、分配条件估计部件332、数据分配器333和更新管理器334。
[0065]数据处理器331具有诸如查询执行的执行数据处理功能。在本示例性实施例中的列存储数据库管理系统3具有多个CPU核,并且被配置成通过使用多个CPU核执行多个线程。换言之,数据处理器331被配置成,在多个CPU核分别执行处理时,通过使用多个CPU核,能够执行并行处理。作为一个示例,下文将描述列存储数据库管理系统3包括四个CPU核的情况。然而,列存储数据库管理系统3可以包括两个或三个CPU核,或者可以包括五个或多个CPU核。
[0066]分配条件估计部件332具有根据在表列数据统计信息区域342中存储的下文将描述的统计信息和在表列数据存储区域352中所存储的排序数据,估计作为诸如更新的给定处理(查询)的目标的表列数据(更新数据)的各个记录中包含的元素值的分配条件的功能。在本示例性实施例中的元素值是不包括用于识别每个记录的信息的值,并且其是诸如更新的给定处理的目标。例如,分配条件估计部件332从表数据统计信息区域342获取作为查询目标的值的柱状图(统计信息)。然后,分配条件估计部件332使用获取的柱状图估计更新数据的数据分配。然后,分配条件估计部件332将估计结果传输到数据分配器333。数据分配估计部件332以下文所描述的更新模式操作。
[0067]数据分配器333具有基于分配条件估计部件332的估计结果,分配更新数据(表数据的各个记录)的功能,使得待由各个CPU核处理的更新数据的数目是一致的。例如,基于分配条件估计部件332的估计结果,数据分配器333设置分割规则,用于将数据按照并行处理的数目划分成应该使得各个CPU核的更新数目处理数目一致的范围。换言之,基于分配条件估计部件332的估计结果,数据分配器333设置传输目的地阈值(分配阈值),以改变更新数据的传输目的地。然后,基于设置的传输目的地阈值,数据分配器333将更新数据存储到与并行处理数目(CHJ核数目)相同的数目的更新部分区域3511中,这将在下文描述。随后,数据分配器333分配更新数据,例如,以便包含近似元素值的记录被同一数据处理器331处理,如下文所描述的。因此,数据分配器333具有基于更新数据的元素值的分配条件,将更新数据分配到各个更新部分区域3511的功能。而且,通过数据分配器333的分配,更新数据被一致地分配到由CPU核数目所确保的各个更新部分区域3511。数据分配器333以下文将描述的更新模式操作。
[0068]更新管理器334具有管理何时启动以及何时结束更新模式的功能。换言之,更新管理器334执行是否利用更新模式执行更新或者执行正常更新的管理。如上文所述,当数据库客户端2通知更新模式启动时,更新管理器334启动更新模式。当更新模式启动时,从那时起获取的更新数据被数据分配器333分配到各个更新部分区域3511。然后,分配的更新数据被汇集在各个更新部分区域3511中,直到更新模式结束。当数据库客户端2通知更新模式结束时,更新管理器334结束更新模式。当更新模式结束时,数据处理器331启动对于在更新部分区域3511中存储的更新数据的处理。下文将描述对更新数据的处理细节。
[0069]模式管理数据存储区域34是诸如存储器或硬盘的存储设备。模式管理数据存储区域34存储并管理数据库的模式定义信息。如上文所提及的,模式管理数据存储区域34具有表定义区域341和表列数据统计信息区域342。
[0070]表定义区域341存储信息,诸如表定义信息、索引等以及设备和其中存储数据的位置信息,其被保存在一般关系型数据库中。换言之,表定义区域341存储通常被称为系统表或系统目录的信息。
[0071]表列数据统计信息区域342存储关于用户的表列数据的统计信息。换言之,表列数据统计信息区域342存储与用于响应于在一般关系型数据库中的SQL查询而产生基于成本的执行计划的统计信息相同的信息。
[0072]用户数据存储区域35是诸如存储器或硬盘的存储设备。用户数据存储区域35存储诸如数据库数据和在数据处理执行过程中产生的临时数据的数据。如上文所提及的,用户数据存储区域35具有包括多个更新部分区域3511和表列数据存储区域352的临时区域351。
[0073]临时区域351存储由数据库查询发出的中间数据等。此外,如上文所述,临时区域351具有更新部分区域3511。在临时区域351中,确保与在列存储数据库管理系统3中安装的CPU的数目相同数目的更新部分区域3511。
[0074]更新部分区域3511是存储在使用更新模式的数据更新期间待由一个核处理的数据的区域。因此,如上文所述,产生了与CPU核的数目相对应的数目的更新部分区域3511。换言之,根据下文将描述的线程数目,产生更新部分区域3511。当更新模式启动时,更新数据被数据分配器333分配到更新部分区域3511。当更新模式结束时,通过使用在更新部分区域3511中存储的更新数据,执行通过数据处理器331 (CPU核)的处理。
[0075]表列数据存储区域352基于在表定义区域341中存储的定义,存储数据库的实际数据、索引数据等。
[0076]这就是在本示例性实施例中的数据库系统I的配置。此处,具体定义在图4中所示的表“产品表”,将描述由列存储数据库管理系统3所执行的处理细节。下文所示的产品表示可以由数据库系统I处理的表的示例。
[0077]参考图4,假定产品表包括,例如,“产品ID”列、“产品名称”列、“分类ID”列、“列表价格”列、“发布日期”列和“销售结束日期”列。
[0078]当这种产品表被加载到列存储数据库系统(例如,列存储数据库管理系统3)中时,例如,其内部结构如图5所示。参考图5,发现在列存储数据库管理系统3中,内部结构具有用于表(表列数据)的每列的列编号、值编号和值列表。
[0079]列编号示出了在列中的每个数据处于哪一行。在值编号中,写下了用于值列表的索引号码。在值列表中,消除了实际数据的重复,并且数据被以排序的形式布置。通过这种配置,列存储数据库管理系统3存储逻辑产品表。在图5中,位于相同位置的列编号和值编号是彼此对应的列编号和值编号(例如,在产品名称列中,在列编号中位于从上部第二行中的“2”对应于位于值编号中从上部第二行的“4”)。
[0080]例如,当在产品表的第二行中的列表价格在图5所示的列存储数据库的结构中被引用时,获取位于产品表中值编号的第二行中并且与列表价格列中列编号“2”处于相同位置的编号“4” (参见图5)。然后,基于获取的编号“4”,检查在列表价格列的值列表中第四行的值。因此,发现该值为“8800”。
[0081]在其中数据被排序并存储的列存储数据库的这种模型中,在数据检索等方面使用没有转换数据的二进制搜索是可能的。而且,仅通过比较关于待连接的列的排序的值列表并且检查其值列表编号之间的关系进行连接是可能的。因此,在其中数据被排序并且存储的列存储数据库的这种模型中,执行用于聚集和检索的快速处理是可能的。在下文中,这种列存储数据库的模型被描述为快速结构。
[0082]下文将描述通过使用该更新模式,利用图6中所示的数据来更新图4中所示的产品表的情形。在图6中,新的列编号被应用于插入的情形,然而,处理目标的列编号被写入更新和删除的情形。在更新的情形下,例如,列表价格变化如何被写入。当在更新模式期间作出对于相同列的多个更新命令时,仅最终的更新结果被存储在图6中所示的表中。而且,当在表4中所示的产品表上反应图6中所示的更新数据时,结果如图7中所示。
[0083]首先,下文将参考图8简要描述在本示例性实施例中通过列存储数据库管理系统并行执行每列的快速结构更新。
[0084]因为该系统是列存储类型,在列的基础上执行更新。因此,作为在列基础上执行的更新的一个示例,下文将描述产品表的列表价格列更新(以相同方式,对其他列执行更新)。此外,如上文所述,在本示例性实施例中的列存储数据库管理系统3包括四个CPU核。因此,并行地执行四个处理。
[0085]参考图8,当更新管理器334转入更新模式时,从那时起获取的更新数据通过数据分配器333被分配给各个更新部分区域3511。根据通过分配条件估计部件332估计的分配条件,执行分配。
[0086]例如,参考图8,基于从在表列数据统计信息区域342中存储的列表价格列的柱状图所估计的更新数据分配条件,数据分配器333将更新数据分配给四个:“6000或小于”、“6001至8000”、“8001至12000”以及“12000或大于”。换言之,数据分配器333分配更新数据,以便基于更新数据的分配条件,由同一数据处理器331处理包括近似值的更新数据。然后,分配的更新数据被汇集到各个更新部分区域3511中(例如,更新部分区域3511至3514),直到更新模式结束。
[0087]然后,当更新模式结束时,在各个部分区域3511中汇集的更新数据被转换成列存储数据(快速结构)。然后,转换成快速结构的更新数据与对应于更新数据的列表价格列中值的范围内的更新前列表价格列合并(参见图4)。然后,连接各个线程的处理结果。
[0088]这是对列存储数据库管理系统3的并行执行每列快速结构的更新的简要描述。接下来,将具体描述由列存储数据库管理系统3所执行的处理。参考图9,首先,在更新模式期间,具有4000列表价格值的记录和具有4500列表价格值的记录,这两条记录在列表价格列中具有“6000或小于”值,被分配给线程A(例如,对应于线程A的更新部分区域3511)。而且,具有7800的列表价格值的两个记录和具有列表价格值6800的一个记录,在列表价格列中的具有“6001至8000”值的所有记录,被分配给线程B (例如,对应于线程B的更新部分区域3512)。同样,具有列表价格值9800的记录和具有列表价格值9000的记录,这两条记录在列表价格列中具有“8001至12000”的值,被分配给线程C(例如,对应于线程C的更新部分区域3513)。然后,具有列表价格值34800的记录和具有列表价格值12800的记录,这两条记录在列表价格列中具有“ 12001或大于”的值,被分配给线程D (例如,对应于线程D的更新部分区域3514)。
[0089]更新数据被汇集在各个更新部分区域(3511至3514)中,直到更新模式结束。
[0090]然后,当更新模式结束时,系统进入对于实际表列数据存储区域352执行更新的阶段。首先,查询执行部件33的数据处理器331确保与在表列数据存储区域352中心产生的记录相同数目的区域以存储列编号和值列表。具体而言,数据处理器331保留数据区域数目与逻辑操作列编号的最大数目相同(在该情形下为13)。同样,数据处理器331在临时区域351中保
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1