CN108090224B - 一种级联连接方法及设备 - Google Patents
一种级联连接方法及设备 Download PDFInfo
- Publication number
- CN108090224B CN108090224B CN201810011679.2A CN201810011679A CN108090224B CN 108090224 B CN108090224 B CN 108090224B CN 201810011679 A CN201810011679 A CN 201810011679A CN 108090224 B CN108090224 B CN 108090224B
- Authority
- CN
- China
- Prior art keywords
- dimension
- filtering
- fact
- row
- rows
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的目的是提供一种级联连接方法,本申请通过分别确定与事实表级联连接的至少一个维度表的过滤率,以得到与事实表级联连接的每个维度表的过滤率;基于每个维度表的过滤率,分别得到至少一个维度表对应的连接顺序和事实表的过滤条件,使得基于每个维度表得到的事实表的过滤条件更准确高效;依序基于过滤条件及连接顺序依序对应的每个维度表,对事实表中的所有行进行过滤,得到事实表中的过滤后的至少一行;最后,再将事实表中的过滤后的每一行,按照连接顺序,分别与对应的每个维度表中的匹配行进行连接后,生成级联连接结果,避免了在级联接连的过程中生成额外的中间连接结果,进而提高数据库中的事实表与维度表之间的级联连接的性能。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种级联连接方法及设备。
背景技术
现有技术中,在对数据库进行设计时,通常将数据库中的所有表分为两类:事实表和维度表。一般情况下,事实表比较大,维度表比较小,且事实表的维度远远大于维度表的维度。在数据库中,事实表和维度表之间的连接操作是数据库系统中常用的操作之一,其连接操作是指将事实表的每一行,与维度表的行进行匹配,匹配成功的两行会被连接在一起,生成新的一行。一般情况下,一个事实表会与多个维度表进行连接如图1所示,每个连接操作都会生成中间连接结果,导致生成和传递中间连接结果会产生额外的开销,例如,事实表的一行和维度表1匹配的行连接后生成中间连接结果1,接着将中间连接结果1作为下一个连接操作的输入,与维度表2匹配的行连接生成中间连接结果2等直至连接结束或连接失败。事实表本身也存在过滤操作,不满足过滤条件的行会被提前过滤掉,不进行后面的连接操作,由于现有技术中的事实表的过滤条件无法对事实表的行进行有效过滤,使得后续在连接操作过程中会存在连接不上的行导致连接失败,且由于没有对事实表的行进行有效的过滤完全,也将使后续需要与维度表进行过滤的行所导致的过滤操作繁多,使得在这过滤及连接操作的过程中,会产生了大量的中间连接结果,增加了额外的开销,降低了级联连接效率。
发明内容
本申请的一个目的是提供一种级联连接方法及设备,以解决现有技术中级联连接过程中导致的额外的中间连接结果及过滤条件有效性低的问题。
根据本申请的一个方面,提供了一种级联连接方法,该方法包括:
分别确定与事实表级联连接的至少一个维度表的过滤率;
基于每个所述维度表的过滤率,分别得到所述至少一个维度表对应的连接顺序和所述事实表的过滤条件;
依序基于所述过滤条件及所述连接顺序依序对应的每个维度表,对所述事实表中的所有行进行过滤,得到所述事实表中的过滤后的至少一行;
将所述事实表中的过滤后的每一行,按照所述连接顺序,分别与对应的每个维度表中的匹配行进行连接后,生成级联连接结果。
进一步地,上述级联连接方法中,所述分别确定与事实表级联连接的至少一个维度表的过滤率之前,还包括:
将事实表与其级联连接的维度表之间的至少两个节点,合并为一个目标节点,其中,所述节点包括过滤节点和连接节点。
进一步地,上述级联连接方法中,所述分别确定与事实表级联连接的至少一个维度表的过滤率,包括:
通过广播的方式获取每个所述维度表的所有行及其总行数;
基于用户需求分别对每个所述维度表中的所有行进行过滤,得到每个维度表用于实际连接的行的实际连接行数;
基于每个所述维度表的总行数和实际连接行数,得到每个所述维度表的过滤率。
进一步地,上述级联连接方法中,所述维度表的过滤率为:
(维度表的总行数-维度表的实际连接行数)/维度表的总行数。
进一步地,上述级联连接方法中,所述基于每个所述维度表的过滤率,分别得到所述至少一个维度表对应的连接顺序和所述事实表的过滤条件,包括:
按照所述过滤率从大到小的顺序,对与所述事实表级联连接的至少一个维度表进行排序,并将得到的排序顺序确定为所述连接顺序;
基于所述至少一个维度表的过滤率,生成所述事实表的过滤条件。
进一步地,上述级联连接方法中,所述基于所述至少一个维度表的过滤率,生成所述事实表的过滤条件,包括:
获取每个所述维度表的键值相关信息;
基于所述至少一个维度表的过滤率和所述键值相关信息,生成所述事实表的过滤条件。
进一步地,上述级联连接方法中,所述键值相关信息包括:
键值的类型、键值最大值、键值最小值及键值的个数。
进一步地,上述级联连接方法中,所述依序基于所述过滤条件及所述连接顺序依序对应的每个维度表,对所述事实表中的所有行进行过滤,得到所述事实表中的过滤后的至少一行,包括:
从所述事实表中的所有行中任意选取一行作为目标行;
判断所述目标行是否满足所述过滤条件,
若是,则按照所述连接顺序,在所述连接顺序依序对应的每个维度表中,判断是否均存在至少一个与所述目标行匹配的匹配行;
若是,则将所述目标行确定为所述事实表中的过滤后的行;
重复上述步骤,直至遍历完所述事实表中的所有行,得到所述事实表中的过滤后的至少一行。
根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述级联连接方法。
根据本申请的另一方面,还提供了一种用于级联连接的设备,其中,所述设备包括:
一个或多个处理器;
非易失性存储介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述级联连接方法。
与现有技术相比,本申请通过首先分别确定与事实表级联连接的至少一个维度表的过滤率,以得到与事实表级联连接的每个维度表的过滤率;接着,基于每个所述维度表的过滤率,分别得到所述至少一个维度表对应的连接顺序和所述事实表的过滤条件,使得基于每个维度表得到的事实表的过滤条件更准确高效;之后,依序基于所述过滤条件及所述连接顺序依序对应的每个维度表,对所述事实表中的所有行进行过滤,得到所述事实表中的过滤后的至少一行;最后,再将所述事实表中的过滤后的每一行,按照所述连接顺序,分别与对应的每个维度表中的匹配行进行连接后,生成级联连接结果,实现了先实现对基于得到的过滤条件和每个维度表对事实表中的行进行过滤、匹配,才将事实表中的过滤后的每一行分别与按连接顺序依序对应的每个维度表中匹配的匹配行进行连接,在与每个维度表的匹配行进行连接之后,才一次性生成事实表与其级联连接的维度表之间的级联连接结果,避免了在级联接连的过程中生成额外的中间连接结果,进而提高数据库中的事实表与维度表之间的级联连接的性能。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出现有技术中的事实表与其连接的维度表之间的连接示意图;
图2示出本申请一实施例中的级联连接方法的流程示意图;
图3示出本申请一实施例中的事实表与其连接的维度表之间的级联连接的转换示意图;
图4示出现有技术和本申请中通过过滤条件和维度表对事实表中的所有行进行过滤和连接操作的对照示意图;
图5示出本申请一实施例中的事实表与其级联连接的维度表之间的级联连接过程的整体流程示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如图2所示,本申请一实施例中提供的一种级联连接方法,应用于数据库中的事实表与其级联连接的至少一个维度表之间的级联连接过程中,该方法包括步骤S11、步骤S12、步骤S13和步骤S14,其中,具体包括:
所述步骤S11,分别确定与事实表级联连接的至少一个维度表的过滤率,以得到与事实表级联连接的每个维度表的过滤率,在数据库中,一个事实表既可以与一个维度表进行连接,也可以与多个维度表进行级联连接,且每个维度表都有其自身对应的过滤率,以体现该维度表中的所有行实际被选择连接的情况;
在此,所述维度表既可以是数据库中的一个真正的维度表,也可以是经过行过滤后的、所包含的行数较少的事实表,还可以是经过连接/聚合/过滤后的维度表,只要在连接过程中选择将该维度表广播出去,其他或今后可能出现的维度表如看可适用于本申请,也应包含在本申请保护范围以内,并在此以引用的方式包含于此。
所述步骤S12,基于每个所述维度表的过滤率,分别得到所述至少一个维度表对应的连接顺序和所述事实表的过滤条件,在此,综合每个维度表的过滤率,可以更简单地计算并生成事实表的过滤条件且该事实表的过滤条件更准确高效;
在此,所述步骤S12中基于每个维度表的过滤率,按照其过滤率的高低,可以仅选择一个过滤率最高的维度表或者从所有维度表中优先选择过滤率的值排在最前面的几个维度表生成其对应的过滤条件。若仅选择一个维度表进行过滤条件的生成,则基于过滤率最高的维度表的过滤率生成的过滤条件即为所述事实表的过滤条件;若优先从所有的维度表中选择过滤率的值排在最前面的维度表,基于过滤率的值排在最前面的几个维度表的过滤率,分别得到的过滤条件通过“且”的逻辑关系确定为事实表的过滤条件(即事实表的过滤条件为通过“且”逻辑关系将多个维度表分别对应生成的过滤条件连接起来得到的),以保证通过精确度高的过滤率来生成并得到事实表的过滤条件。此处,所述步骤S12中从所有的维度表中选择一个还是多个维度表(具体哪几个维度表)来生成事实表的过滤条件的依据:可以是根据用户的实际需求而进行设置(例如,可以通过用户设置的不同的需求参数来进行控制),使得得到的事实表的过滤条件更加符合用户实际需求,进而得到的过滤条件更准确有效。所述步骤S13,依序基于所述过滤条件及所述连接顺序依序对应的每个维度表,对所述事实表中的所有行进行过滤,得到所述事实表中的过滤后的至少一行;在此,将事实表中的每一行,先通过过滤条件来判断该事实表的行是否满足该过滤条件,若是的话,则继续将满足该过滤条件的行,在按照连接顺序依序对应的每个维度表中进行匹配,若在所有的维度表中都能匹配到与满足该过滤条件的行对应的匹配行,则将该满足过滤条件及每个维度表的行确定为事实表中的过滤后的行,实现对针对过滤条件和每个维度表对事实表中的所有行进行过滤、匹配,以得到满足过滤条件和每个维度表对应的所述事实表中的过滤后的至少一行;
所述步骤S14,将所述事实表中的过滤后的每一行,按照所述连接顺序,分别与对应的每个维度表中的匹配行进行连接后,生成级联连接结果,实现了先实现对基于得到的过滤条件和每个维度表对事实表中的行进行过滤、匹配,才将事实表中的过滤后的每一行分别与按连接顺序依序对应的每个维度表中匹配的匹配行进行连接,在与每个维度表的匹配行进行连接之后,才一次性生成事实表与其级联连接的维度表之间的级联连接结果,避免了在级联接连的过程中生成额外的中间连接结果,进而提高数据库中的事实表与维度表之间的级联连接的性能。
由于现有技术中按照如图1所示的事实表与维度表之间级联连接方式,使得事实表与每个维度表在每个节点进行行的过滤和连接之后,都会生成中间连接结果(例如,在当前节点对应的事实表的输入的行,输出的行,具体哪些行与维度表中的匹配行进行连接等),导产生的大量的中间连接结果及这些中间连接结果在后续节点之间的传递,增加了额外的资源开销,会降低级联连接的性能,故在本实施例中,所述步骤S11分别确定与事实表级联连接的至少一个维度表的过滤率之前,还包括:
将事实表与其级联连接的维度表之间的至少两个节点,合并为一个目标节点,以便后续在该目标节点内能够基于过滤条件及每个维度表对事实表中的所有行进行过滤,并将事实表中的过滤后的行与每个维度表分别进行连接,从而可以在该目标节点一次性生成事实表与维度表之间级联连接产生的级联连接结果,避免了中间连接结果的生成和传递;在此,所述节点包括过滤节点和连接节点,其中,过滤节点用于基于事实表的过滤条件来对事实表中的所有行进行初步过滤,并基于按序的维度表对初步过滤后的行进行再次匹配,以得到事实表中的既满足过滤条件又在每个维度表中存在匹配行的行,来作为事实表中的过滤后的行,连接节点用于将事实表中的满足过滤条件的且在维度表中存在匹配行的行,与该维度表中的匹配行进行连接。
例如,如图3所示,将事实表与其级联连接的维度表1、维度表2、……、维度表N之间的(N+1)层级联连接(包括一个过滤节点和N个连接节点,其中N为大于等于1的正整数),通过合并,合并为一个新的目标节点M(对应图3中的转换后对一个的新的节点)。并在该目标节点中对事实表中的所有行进行过滤和连接的操作,可以对满足过滤条件和在每个维度表中存在匹配行的行,与每个维度表分别进行连接之后,一次性生成对应的级联连接结果,避免了在经过过滤节点和连接节点的过程中生成的中间连接结果,进一步避免了中间连接结果的存储和传递导致的资源开销,使得事实表与其级联连接的维度表之间进行级联连接的高效性。
如图4所示为现有技术与本申请中的事实表中的所有行与每个维度表之间的过滤和连接转换对比图。经过过滤节点生成的是事实表中的过滤后的行,如果不满足过滤条件,则再获取事实表中的下一行;事实表中的过滤后的行经过连接节点1,如果查维度表1发现有可以匹配的匹配行,则和可以匹配的匹配行分别进行连接生成中间结果,再传递给连接节点2,如果没有匹配的行则返回至获取事实表的下一行;以此类推,如果有一行,可以通过最后一个连接节点N,才生成事实表与维度表之间用于表示级联连接最终的级联接连结果,可先用技术中中间连接结果的额外生成和传递,导致过多资源开销,故本申请实施例中将事实表与其级联连接的维度表之间的至少两个节点,合并为一个目标节点后的流程图如图4中的转换后,对于事实表中的所有行,随机获取事实表的一行后,会分别依次进行N+1次判断:过滤条件,查维度表1,查维度表2,...,查维度表N,只有满足上述过滤条件,且在每个维度表中均存在匹配的匹配行之后的行,才会和每个维度表中匹配的匹配行分别进行连接,在该目标节点中一次性生成事实表与维度表之间用于表示级联连接最终的级联接连结果,可见本申请实施例中的事实表与维度表之间的级联连接过程并没有生成过滤和连接的中间连接结果,自然也没有中间结果的传输,不仅避免了用于中间连接结果的存储和传递的资源开销,还提高了数据库中的事实表与维度表之间的级联连接等数据库产品的性能。
由于现有技术中对维度表的过滤率的计算通常有如下两种估算方法:静态统计和动态采样。静态统计中,在执行数据库查询语句之前,可以统计出维度表的静态信息,例如维度表的总行数/最大值/最小值等,但难以估算维度表实际上会被选择的行数,随着操作内容(比如过滤条件)的不同以及维度表的内容的不同,维度表会被选择的行数波动范围非常大,导致估算得到的维度表的过滤率不够准确;动态采样是在执行数据库查询语句的时候,通过采样维度表实际选择的行数,来推算出一个较准确的过滤率,但由于需要在维度表调整连接顺序前,额外进行采样来估算维度表的过滤率,导致估算开销较大,故在本申请一实施例中,所述步骤S11分别确定与事实表级联连接的至少一个维度表的过滤率,包括:
通过广播的方式获取每个所述维度表的所有行及其总行数;基于用户需求分别对每个所述维度表中的所有行进行过滤,得到每个维度表用于实际连接的行的实际连接行数;基于每个所述维度表的总行数和实际连接行数,得到每个所述维度表的过滤率,使得不仅可以精确地计算得到每个维度表的过滤率,还避免了额外的估算开销。
例如,将事实表与维度表之间的至少两个节点合并为一个目标节点之后,由于维度表可以广播到该目标节点,使得在该目标节点中通过广播的形式可以获取到每个维度表的所有行及其总行数,并可以根据用户需求分别对每个维度表中的所有行进行过滤,在此,用户对每个维度表的用户需求可能存在不同,即,每个维度表对应用户的一个用户需求,或多个维度表对应用户的一个需求等,使得通过用户需求对每个维度表中的所有行进行过滤之后,可以得到每个维度表用于实际需求连接的行的实际连接行数;然后针对每个维度表,根据其对应的所有行的总行数和实际连接行数,精确计算得到维度表的过滤率,其中,每个维度表的过滤率计算公式为:(维度表的总行数-维度表的实际连接行数)/维度表的总行数。针对每个维度表,针对其对应的所有行的总行数和实际连接函数计算得到维度表的过滤率,保证了精确计算得到的维度表的过滤率的精确度,以便后续根据每个维度表的高精确度的过滤率,能够计算得到更精确的事实表的过滤条件。
在本申请一实施例中,所述步骤S12基于每个所述维度表的过滤率,分别得到所述至少一个维度表对应的连接顺序和所述事实表的过滤条件,包括:
按照所述过滤率从大到小的顺序,对与所述事实表级联连接的至少一个维度表进行排序,并将得到的排序顺序确定为所述连接顺序;
基于所述至少一个维度表的过滤率,生成所述事实表的过滤条件。
本实施例中,为了得到精确的所述事实表的过滤条件,先按照上述步骤S11中通过精确计算得到的每个维度表的过滤率,对每个维度表的过滤率进行按照从大到小的排序,得到事实表对应的级联连接的至少一个维度表的连接顺序,若,与该事实表对应级联连接的至少一个维度表为维度表1、维度表2、……、维度表N,按照过滤率的从大到小的顺序对所有维度表进行排序,得到与事实表对应的N个维度表的排序顺序为:维度表a、维度表b、…….、维度表X,其中,排序后的任一维度表(维度表a、维度表b、……、维度表X)均与排序前的某一维度表对应;将排序后得到的排序顺序确定为事实表与其级联连接的维度表之间的连接顺序:维度表a、维度表b、…….、维度表X,以便后续进行过滤连接时,按照过滤率从大到小的连接顺序,能够使事实表先与过滤高的维度表进行过滤,从而能够优先排除掉尽可能多的行,从而减少后续与其他维度表的过滤和连接操作需要处理的数据量,从而提高性能。
例如,若与事实表连接的维度表为3个,其中,维度表2的过滤率为90%,维度表3的过滤率为80%及维度表1的过滤率为50%,且若事实表所有行的总行数为100行,则事实表先与维度表2进行过滤,可知事实表中有100*90%=90行被维度表1过滤率掉,则事实表中存在10行能够与维度表中对应匹配的匹配行进行连接,之后通过维度表3,事实表经维度表1过滤后的10行中存在8行被维度表2过滤掉,则事实表中存在2行能够与维度表中对应匹配的匹配行进行连接,之后通过维度表1,事实表经维度表2过滤后的2行中存在1行被维度表3过滤率掉,则经过维度表1、维度表2和维度表3之后,事实表中存在1行分别与维度表1、维度表2及维度表3中的每个维度表均连接,基于过滤率不仅实现了事实表中的过滤后的行与其级联连接的每个维度表中的匹配的行进行的连接,还减少过滤和连接操作的后续数据量,进而提高了性能。
接着本实施例,所述步骤S12在通过每个维度表的过滤率得到与之级联来接的每个维度表之间的连接顺序之后,还可以基于与事实表级联连接的每个维度表的过滤率来生成该事实表的过滤条件,使得后续能够基于该过滤条件对事实表中的所有行进行初步过滤。具体地,在本实施例中,所述步骤S12中的基于所述至少一个维度表的过滤率,生成所述事实表的过滤条件,包括:
获取每个所述维度表的键值相关信息,在此,所述键值相关信息包括:
键值的类型、键值最大值、键值最小值及键值的个数;
基于所述至少一个维度表的过滤率和所述键值相关信息,生成所述事实表的过滤条件,可以通过与事实表级联的至少一个维度表中的一个或多个维度表的过滤率及键值相关信息(例如键值的类型、键值最大值、键值最小值及键值的个数等)等因素,生成不同类型的过滤条件。
例如,事实表的过滤条件可以是最大值最小值的过滤条件,也可以是精确匹配的过滤条件,亦可以是布隆过滤条件(Bloom Filter)。当维度表中的键值是比较连续的数值时,可以相应生成最大值最小值的过滤条件,例如,与事实表级联连接的一个维度表c与该事实表之间匹配的行的关系为{(维度表c.k0=事实表.id0)AND(维度表c.k1=事实表.id1)},表示事实表中的id0列和id01列在维度表c中存在匹配行,且分别为维度表的k0列和k1列,且需要满足事实表的id0列的键值与维度表c的k0列的键值相等,事实表的id1列的键值与维度表c的k1列的键值相等,可见,事实表中的id0列和id1列分别与维度表中的k0列和k1列相匹配。在此,若维度表c中的键值相关信息(例如k0列和k1列中的键值的最大值和最小值,分别设为min0/max0和min1/max1),事实表中的、与该维度表中的k0列和k1列匹配的id0列和id01列中的键值需要满足对应生成的最大值最小值的过滤条件F1:{(min0<=Vid0<=max0)AND(min1<=Vid1<=max1)},其中,Vid0和Vid1分别为事实表中的id0列和id01列中的每一行的键值,在事实表中,不满足该过滤条件的行会被过滤掉,导致连接不成功;当然,若维度表b对事实表而言生成了过滤条件F2,则对于事实表来说,事实表的最终的过滤条件为{F1ANDF2},就需要满足这两个过滤条件的事实表中的行才能分别与维度表b和维度表c中的匹配行进行连接成功。以上事实表与其级联连接的维度表之间的匹配的关系及存在的过滤条件仅为举例说明,其他可以提现并满足事实表与其级联连接的维度表之间的匹配的关系及过滤条件均可适用于本申请,也应包含在本申请保护范围以内,并在此以引用的方式包含于此。
当维度表中的键值较分散时,最大值最小值的过滤条件的过滤效果不好,则可以根据维度表中的键值生成精确匹配的过滤条件{col in{val0,val1,…...,valN}},其中,val0,val1…...,valN分别表示维度表的键值,当事实表中的行的键值不在上述过滤条件对应的集合内,则将键值对应的行过滤掉,从而连接也一定会失败,只有满足该过滤条件的事实表中的行才能与维度表中匹配的匹配行连接成功。当维度表的键值较分散且键值的个数较多时,生成的精确匹配的过滤条件占用空间大且过滤过程中查询时间长,此时,则可以采用布隆过滤的方式来优化生成对应的布隆过滤条件,以提高空间效率和查询时间。
进一步地,上述级联连接方法中,所述步骤S13依序基于所述过滤条件及所述连接顺序依序对应的每个维度表,对所述事实表中的所有行进行过滤,得到所述事实表中的过滤后的至少一行,包括:
从所述事实表中的所有行中任意选取一行作为目标行;
判断所述目标行是否满足所述过滤条件,
若是,则按照所述连接顺序,在所述连接顺序依序对应的每个维度表中,判断是否均存在至少一个与所述目标行匹配的匹配行;
若是,则将所述目标行确定为所述事实表中的过滤后的行;
重复上述步骤,直至遍历完所述事实表中的所有行,得到所述事实表中的过滤后的至少一行。
例如,如图5中所示,在计算得到了事实表对应的过滤条件,及与其级联连接的所有维度表之间的连接顺序之后,则需要按照调整的连接顺序对事实表中的所有行进行过滤。若事实表中存在M行,第一步:从事实表中任选一行作为目标行,第二步:判断该目标行是否满足生成的事实表的过滤条件,若不满足,则返回第一步,重新在事实表中选择一行作为新的目标行,在第二步中,在本申请的目标节点中进行过滤条件的判断,其中,该过滤节点由事实表对应的原过滤节点和连接节点进行合并之后得到的(即,将图1中的原过滤节点和连接节点合并之后得到图3中对应的新的节点);当合并后的目标节点中包括该原过滤节点,由于原过滤节点内存在一个自身过滤条件,为了对事实表中的所有行进行完整精确过滤,故事实表的过滤条件不仅包括原过滤节点对应的自身过滤条件,还包括基于维度表的过滤率生成的过滤条件,使得能够有效的提前过滤掉很多会导致连接失败的行,减少后续在连接操作过程中要处理的数据,以实现对事实表中的行进行有效准确地过滤。若满足,则进行第三步:按照事实表与其级联连接的维度表之间的连接顺序:维度表a、维度表b、……、维度表X,依序在每个维度表中判断是否存在至少一个与该目标行匹配的匹配行,例如,先判断该目标行在维度表a中是否存在匹配的匹配行,若不存在,则返回第一步,若存在,则继续判断目标行在维度表b中是否存在匹配的匹配行,若不存在,则返回第一步,若存在,组继续判断该目标行在维度表c中是否存在匹配的匹配行,重复上述第一步至第三步,直至遍历完事实表中的所有行,以得到事实表中的、经过过滤条件、按连接顺序对事实表中的行进行过滤后的行(过滤后的行可以是一行或多行),实现对事实表中的行进行过滤的操作。
在本实施例中,在目标节点中对事实表中的所有行进行过滤后,在所述步骤S14中,亦通过该目标节点将所述事实表中的过滤后的每一行,按照所述连接顺序,分别与对应的每个维度表中的匹配行进行连接后,一次性生成事实表与维度表之间用于表示级联连接最终的级联连接结果,可见本申请实施例中的事实表与维度表之间的级联连接过程并没有生成过滤和连接的中间连接结果,自然也没有中间结果的传输,不仅避免了用于中间连接结果的存储和传递的资源开销,还提高了数据库中的事实表与维度表之间的级联连接等数据库产品的性能。
根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述级联连接方法。
根据本申请的另一方面,还提供了一种用于级联连接的设备,其中,所述设备包括:
一个或多个处理器;
非易失性存储介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述级联连接方法。
在此,所述用于级联连接的设备中的各实施例的详细内容,具体可参见该用于级联连接的设备端的方法实施例的对应部分,在此,不再赘述。
综上所述,本申请通过首先分别确定与事实表级联连接的至少一个维度表的过滤率,以得到与事实表级联连接的每个维度表的过滤率;接着,基于每个所述维度表的过滤率,分别得到所述至少一个维度表对应的连接顺序和所述事实表的过滤条件,使得基于每个维度表得到的事实表的过滤条件更准确高效;之后,依序基于所述过滤条件及所述连接顺序依序对应的每个维度表,对所述事实表中的所有行进行过滤,得到所述事实表中的过滤后的至少一行;最后,再将所述事实表中的过滤后的每一行,按照所述连接顺序,分别与对应的每个维度表中的匹配行进行连接后,生成级联连接结果,实现了先实现对基于得到的过滤条件和每个维度表对事实表中的行进行过滤、匹配,才将事实表中的过滤后的每一行分别与按连接顺序依序对应的每个维度表中匹配的匹配行进行连接,在与每个维度表的匹配行进行连接之后,才一次性生成事实表与其级联连接的维度表之间的级联连接结果,避免了在级联接连的过程中生成额外的中间连接结果,进而提高数据库中的事实表与维度表之间的级联连接的性能。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (7)
1.一种级联连接方法,其中,所述方法包括:
分别确定与事实表级联连接的多个维度表的过滤率,包括:
通过广播的方式获取每个所述维度表的所有行及其总行数;基于用户需求分别对每个所述维度表中的所有行进行过滤,得到每个维度表用于实际连接的行的实际连接行数;基于每个所述维度表的总行数和实际连接行数,得到每个所述维度表的过滤率,其中,所述维度表的过滤率为:(维度表的总行数-维度表的实际连接行数)/维度表的总行数;
基于每个所述维度表的过滤率,分别得到所述多个维度表对应的连接顺序和所述事实表的过滤条件,包括:
按照所述过滤率从大到小的顺序,对与所述事实表级联连接的多个维度表进行排序,并将得到的排序顺序确定为所述连接顺序,基于所述多个维度表的过滤率,生成所述事实表的过滤条件;
基于所述过滤条件和所述维度表,按照所述连接顺序,对所述事实表中的所有行进行过滤,得到所述事实表中的过滤后的至少一行;
将所述事实表中的过滤后的每一行,按照所述连接顺序,分别与对应的每个维度表中的匹配行进行连接后,生成级联连接结果。
2.根据权利要求1所述的方法,其中,所述分别确定与事实表级联连接的多个维度表的过滤率之前,还包括:
将事实表与其级联连接的维度表之间的至少两个节点,合并为一个目标节点,其中,所述节点包括过滤节点和连接节点。
3.根据权利要求1所述的方法,其中,所述基于所述多个维度表的过滤率,生成所述事实表的过滤条件,包括:
获取每个所述维度表的键值相关信息;
基于所述多个维度表的过滤率和所述键值相关信息,生成所述事实表的过滤条件。
4.根据权利要求3所述的方法,其中,所述键值相关信息包括:
键值的类型、键值最大值、键值最小值及键值的个数。
5.根据权利要求2所述的方法,其中,所述基于所述过滤条件和所述维度表,按照所述连接顺序,对所述事实表中的所有行进行过滤,得到所述事实表中的过滤后的至少一行,包括:
从所述事实表中的所有行中任意选取一行作为目标行;
判断所述目标行是否满足所述过滤条件,
若是,则按照所述连接顺序,在所述连接顺序依序对应的每个维度表中,判断是否均存在至少一个与所述目标行匹配的匹配行;
若是,则将所述目标行确定为所述事实表中的过滤后的行;
重复上述步骤,直至遍历完所述事实表中的所有行,得到所述事实表中的过滤后的至少一行。
6.一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如权利要求1至5中任一项所述的方法。
7.一种用于级联连接的设备,其中,所述设备包括:
一个或多个处理器;
非易失性存储介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810011679.2A CN108090224B (zh) | 2018-01-05 | 2018-01-05 | 一种级联连接方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810011679.2A CN108090224B (zh) | 2018-01-05 | 2018-01-05 | 一种级联连接方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108090224A CN108090224A (zh) | 2018-05-29 |
CN108090224B true CN108090224B (zh) | 2020-05-08 |
Family
ID=62181578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810011679.2A Active CN108090224B (zh) | 2018-01-05 | 2018-01-05 | 一种级联连接方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108090224B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11269887B2 (en) * | 2019-05-01 | 2022-03-08 | Sigma Computing, Inc. | Maintaining cardinality of rows while joining worksheets from a database |
CN114817310A (zh) * | 2021-01-27 | 2022-07-29 | 华为技术有限公司 | 一种数据查询方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609493A (zh) * | 2012-01-20 | 2012-07-25 | 东华大学 | 一种基于列存储模型的连接顺序查询优化方法 |
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
CN106933927A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表的连接方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10810200B2 (en) * | 2015-01-07 | 2020-10-20 | International Business Machines Corporation | Technology for join processing |
-
2018
- 2018-01-05 CN CN201810011679.2A patent/CN108090224B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609493A (zh) * | 2012-01-20 | 2012-07-25 | 东华大学 | 一种基于列存储模型的连接顺序查询优化方法 |
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
CN106933927A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表的连接方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108090224A (zh) | 2018-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019218B (zh) | 数据存储与查询方法及设备 | |
CN106293892B (zh) | 分布式流计算系统、方法和装置 | |
CN107885865B (zh) | 一种代价优化器与代价估计的方法及其设备 | |
EP3432157B1 (en) | Data table joining mode processing method and apparatus | |
US7536432B2 (en) | Parallel merge/sort processing device, method, and program for sorting data strings | |
CN108090224B (zh) | 一种级联连接方法及设备 | |
CN107451204B (zh) | 一种数据查询方法、装置及设备 | |
CN112199935A (zh) | 数据的比对方法、装置、电子设备及计算机可读存储介质 | |
CN114861579A (zh) | 集成电路中时序瓶颈节点分析和时序优化方法及系统 | |
CN112037003B (zh) | 文件对账处理方法及装置 | |
CN116628274B (zh) | 一种针对图数据库的数据写入方法、设备及介质 | |
CN111459937B (zh) | 数据表关联方法、装置、服务器及存储介质 | |
CN112612832A (zh) | 节点分析方法、装置、设备及存储介质 | |
CN113590623B (zh) | 一种用于数据深分页查询的方法、装置及设备 | |
CN111694816B (zh) | 用于优化数据库表的处理方法和装置 | |
CN107203550B (zh) | 一种数据处理方法和数据库服务器 | |
CN110334909B (zh) | 一种风险管控方法、装置及设备 | |
CN113077344B (zh) | 基于区块链的交易方法、装置、电子设备及存储介质 | |
CN108737522B (zh) | 一种消息的处理方法、装置和系统 | |
CN114513469A (zh) | 分布式系统的流量整形方法、装置和存储介质 | |
CN110991643A (zh) | 一种模型部署方法、装置、电子设备及存储介质 | |
WO2020211719A1 (zh) | 一种数据获取方法、装置及设备 | |
JP5410155B2 (ja) | データ分割システム及びデータ分割方法 | |
CN111046012B (zh) | 巡检日志的抽取方法、装置、存储介质和电子设备 | |
US11132225B2 (en) | System and method for management of processing task across plurality of processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 200233 11-12 / F, building B, 88 Hongcao Road, Xuhui District, Shanghai Patentee after: Star link information technology (Shanghai) Co.,Ltd. Address before: 200233 11-12 / F, building B, 88 Hongcao Road, Xuhui District, Shanghai Patentee before: TRANSWARP TECHNOLOGY (SHANGHAI) Co.,Ltd. |