CN106250567A - 分布式数据库系统中表连接数据分布方式的选择方法及装置 - Google Patents
分布式数据库系统中表连接数据分布方式的选择方法及装置 Download PDFInfo
- Publication number
- CN106250567A CN106250567A CN201610777673.7A CN201610777673A CN106250567A CN 106250567 A CN106250567 A CN 106250567A CN 201610777673 A CN201610777673 A CN 201610777673A CN 106250567 A CN106250567 A CN 106250567A
- Authority
- CN
- China
- Prior art keywords
- data
- selection
- assessment
- redistribution
- hash
- 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.)
- Pending
Links
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (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
本发明提供了一种分布式数据库系统中表连接数据分布方式的选择方法及装置。所述方法包括:判断表连接字段是否为hash分布列,如果为hash分布列,则直接下发至计算接单执行数据连接;如果不为hash分布列,则根据评估结果选择数据分布方式。通过对两种方式的运算量和响应时间的估算,从中选取最为合适的分布方式,用于提高表连接的性能。
Description
技术领域
本发明属于分布式数据库系统技术领域,尤其是涉及一种分布式数据库系统中表连接数据分布方式的选择方法及装置。
背景技术
分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
在分布式数据库系统中,表连接是常用的运算,分布式数据库一般都是采用多台机器存储数据,即将用户数据根据hash或者随机分布算法把数据分布到数据库的各个工作机器中,这样来减少单台数据库工作机器所存储的数据量,减少每一台机器的存储与计算压力。在分布式数据库系统中数据按照关系表进行组织,因此选择表中合适的分布列进行数据的分布将非常重要,这对后续SQL的执行优化都会起到重要的作用,一般选择表连接字段作为数据的分布列,在分布式数据库系统中表连接的运算如果能够做到运算的本地local性,则运算会在各个节点并行执行,性能将较好,例如SQL中的表连接字段是hash分布列,则表连接就能做到运算的本地local性,则运算会在各个节点并行执行,如果表连接字段是非hash分布列,则运算就不具有本地local性,该SQL就不可以直接在各个节点并行执行。目前有两种方式:来做到数据的本地local性,方式1:按照表连接字段进行数据的hash重分布,hash重分布后,重分布后的数据就具有了本地local性,这样基于新的重分布后的数据进行的表连接和数据分组聚合就能做到运算的本地local性,则运算会在各个节点并行执行了。方式2:是选择表连接中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表,然后表连接两端的表的数据也就具有了本地local性,后一步的运算就会在各个节点并行执行了,上述两种方式在不同的运用场景中具有不同的优势,如何选取更为合适的方式是当前急需解决的问题。
发明内容
本发明实施例提供了一种分布式数据库系统中表连接数据分布方式的选择方法及装置,以解决如何选取合适的表连接数据分布方式的技术问题。
一方面,本发明实施例提供了分布式数据库系统中表连接数据分布方式的选择方法,包括:
判断表连接字段是否为hash分布列,如果为hash分布列,则直接下发至计算接单执行数据连接;
如果不为hash分布列,则根据评估结果选择数据分布方式。
进一步的,所述评估结果包括:
表连接字段进行数据的hash重分布的时间或者表连接中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的时间。
进一步的,所述方法包括:
评估表连接的两表中按照单表条件过滤后表的行数和需要动态进行重分布的字段的总的字节数;和
评估表连接的中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的数据量。
进一步的,所述方法还包括:
评估表连接的两表中按照连接字段进行动态重分布后两表本地join的数据量;
或者评估表连接的选择两表中的选择较小的表按照拉复制表后执行两表本地join的数据量。
更进一步的,所述根据评估结果选择数据分布方式,包括:
按照重分布数据量和join数据量选取连接时间最短的数据分布方式。
另一方面,本发明实施例还提供了一种分布式数据库系统中表连接数据分布方式的选择装置,包括:
判断单元,用于判断表连接字段是否为hash分布列,如果为hash分布列,则直接下发至计算接单执行数据连接;
选择单元,用于如果不为hash分布列,则根据评估结果选择数据分布方式。
进一步的,所述评估结果包括:
表连接字段进行数据的hash重分布的时间或者表连接中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的时间。
进一步的,所述装置包括:
第一评估单元,用于评估表连接的两表中按照单表条件过滤后表的行数和需要动态进行重分布的字段的总的字节数;和
第二评估单元,用于评估表连接的中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的数据量。
进一步的,所述装置还包括:
第三评估单元,用于评估表连接的两表中按照连接字段进行动态重分布后两表本地join的数据量;和
第四评估单元,用于评估表连接的选择两表中的选择较小的表按照拉复制表后执行两表本地join的数据量。
更进一步的,所述选择单元,用于:
按照重分布数据量和join数据量选取连接时间最短的数据分布方式。
本发明实施例提供的分布式数据库系统中表连接数据分布方式的选择方法及装置,通过对两种方式的运算量和响应时间的估算,从中选取最为合适的分布方式,用于提高表连接的性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的分布式数据库系统中表连接数据分布方式的选择方法的流程示意图;
图2是本发明实施例二提供的分布式数据库系统中表连接数据分布方式的选择方法的流程示意图;
图3是本发明实施例三提供的分布式数据库系统中表连接数据分布方式的选择装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1为本发明实施例一提供的分布式数据库系统中表连接数据分布方式的选择方法的流程图,本实施例可适用于在分布式数据库中选择表连接数据分布方式的情况,该方法可以由布式数据库系统中表连接数据分布方式的选择装置来执行,该装置可由软件/硬件方式实现,并可集成于分布式数据库系统的管理节点中。
参见图1,所述分布式数据库系统中表连接数据分布方式的选择方法,包括:
S110,判断表连接字段是否为hash分布列,如果为hash分布列,则直接下发至计算接单执行数据连接。
分布式数据库系统首先根据业务系统中所有表连接的字段中使用最多的表连接字段选择作为数据的hash分布列,一种场景是SQL中的表连接字段是hash分布列,则该表连接能够做到运算的本地local性,运算会在各个节点并行执行。
S120,如果不为hash分布列,则根据评估结果选择数据分布方式。
如果表连接字段是非hash分布列,则运算就不具有本地local性,该SQL就不可以直接在各个节点并行执行,一种方式为按照表连接字段进行数据的hash重分布,hash重分布后,重分布后的数据就具有了本地local性,这样基于新的重分布后的数据进行的表连接就能做到运算的本地local性,则运算会在各个节点并行执行了,另一种方式为选择表连接中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表,然后表连接两端的表的数据也就具有了本地local性,后一步的运算就会在各个节点并行执行了。对上述两种方式进行评估,所述述评估结果包括:表连接字段进行数据的hash重分布的时间或者表连接中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的时间。根据评估结果选择最优的表连接数据分布方式。
本实施例提供的分布式数据库系统中表连接数据分布方式的选择方法及装置,通过对两种方式的运算量和响应时间的估算,从中选取最为合适的分布方式,用于提高表连接的性能。
实施例二
图2是本发明实施例二提供的分布式数据库系统中表连接数据分布方式的选择方法的流程示意图,本发明实施例以上述实施例为基础,进一步的,所述方法增加如下步骤:评估表连接的两表中按照单表条件过滤后表的行数和需要动态进行重分布的字段的总的字节数;和评估表连接的中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的数据量;及评估表连接的两表中按照连接字段进行动态重分布后两表本地join的数据量;或者评估表连接的选择两表中的选择较小的表按照拉复制表后执行两表本地join的数据量。并将根据评估结果选择数据分布方式,具体优化为:按照重分布数据量和join数据量选取连接时间最短的数据分布方式。
参见图2,所述分布式数据库系统中表连接数据分布方式的选择方法,包括:
S210,判断表连接字段是否为hash分布列,如果为hash分布列,则直接下发至计算接单执行数据连接。
S220,如果不为hash分布列,评估表连接的两表中按照单表条件过滤后表的行数和需要动态进行重分布的字段的总的字节数,和评估表连接的中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的数据量。
表连接字段是非hash分布列,当按照非人工配置方式而智能选择时首先评估按照表连接字段进行数据的hash重分布的时间或者表连接中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的时间,评估方式如下:方案1,评估表连接的两表中按照单表条件过滤后表的行数和需要动态进行重分布的字段的总的字节数,则重分布数据量的计算公式为:行数*字节数。如果表连接的两个连接字段都是非hash分布列,则两表都需要分别计算重分布数据量,表连接总的重分布的数据量是两者之和。如果表连接的其中一个表的连接字段是非hash分布列,则只需评估该表的需要重分布的数据量。方案2,评估表连接的中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的数据量,首先根据两表的单表条件过滤后表的行数和字段的总的字节数来计算需要拉表的数据量,计算公式为:行数*字节数。选择两表中拉表数据量较小的值作为该方案的评估结果。以上方案中重分布数据量或者拉表数据量越多,则认为执行时间越长,两者具有线性关系。
S230,评估表连接的两表中按照连接字段进行动态重分布后两表本地join的数据量,和评估表连接的选择两表中的选择较小的表按照拉复制表后执行两表本地join的数据量。
表连接字段是非hash分布列,当按照非人工配置方式而智能选择时按照表连接字段进行数据的hash重分布或者表连接中的其中一个表在分布式系统的所有节点中拉成全量数据的方案后节点上执行本地local数据连接的时间,评估方式如下:方案1.评估表连接的两表中按照连接字段进行动态重分布后两表本地join的数据量,则join的数据量的计算公式为:分布表1行数*分布表2行数*(join字段字节数+需要物化的projection字段的字节数)。方案2.评估表连接的选择两表中的选择较小的表按照拉复制表后执行两表本地join的数据量,则join的数据量的计算公式为:分布表1行数*复制表2行数*(join字段字节数+需要物化的projection字段的字节数)。以上方案中join的数据量越大,则认为节点上执行本地local数据join的时间越长,两者具有线性关系。
S240,按照重分布数据量和join数据量选取连接时间最短的数据分布方式。
示例性的,计算按照hash方式进行数据重分布的表连接的时间=(表连接的两表中按照单表条件过滤后表的行数和需要动态进行重分布的字段的总的重分布数据量+表连接的两表中按照连接字段进行动态重分布后两表本地join的数据量)*时间系数,按照小表拉复制表的方式进行数据分布的表连接的时间=(表连接的中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的重分布数据量+表连接的选择两表中的选择较小的表按照拉复制表后执行两表本地join的数据量)*时间系数,选择以上两种方式中表连接时间最短的为最优的方式。
由上述可以看出,当大表连接大表时,按照hash方式进行数据重分布的表连接方式一般最优,因为按照该种方式评估一般是join时间大于重分布的时间,因此把两个大表进行重分布后就减少了重分布数据后节点上两个分布表的行数,因此就减少了join时间,如果该种方式按照两个大表中选择相对较小的表拉复制表的方式执行,则不是最优,因为选择把一个表拉成复制表后,节点上两表的join就变成了一个分布表和一个大的复制表的join,join时间将增大,该种方案不优。当大表连接小表时按照小表拉成复制表进行表连接的方式一般最优,因为按照该种方式评估一般是对大表进行hash数据重分布时间大于把小表拉成复制表的时间,因为把小表拉成复制的时间一般小于把大表进行hash重分布的时间,因此在该场景下选择把小表拉成复制表的方案较优。
本实施例通过增加增加如下步骤:评估表连接的两表中按照单表条件过滤后表的行数和需要动态进行重分布的字段的总的字节数;和评估表连接的中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的数据量;及评估表连接的两表中按照连接字段进行动态重分布后两表本地join的数据量;或者评估表连接的选择两表中的选择较小的表按照拉复制表后执行两表本地join的数据量。并将根据评估结果选择数据分布方式,具体优化为:按照重分布数据量和join数据量选取连接时间最短的数据分布方式。可根据重分布的数据量和join的数据量选取连接时间最短的数据分布方式,可提高表连接的性能。
实施例三
图3是本发明实施例三提供的分布式数据库系统中表连接数据分布方式的选择装置的结构示意图,如图3所示,所述装置包括:
判断单元310,用于判断表连接字段是否为hash分布列,如果为hash分布列,则直接下发至计算接单执行数据连接;
选择单元320,用于如果不为hash分布列,则根据评估结果选择数据分布方式。
进一步的,所述评估结果包括:
表连接字段进行数据的hash重分布的时间或者表连接中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的时间。
进一步的,所述装置包括:
第一评估单元,用于评估表连接的两表中按照单表条件过滤后表的行数和需要动态进行重分布的字段的总的字节数;和
第二评估单元,用于评估表连接的中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的数据量。
进一步的,所述装置还包括:
第三评估单元,用于评估表连接的两表中按照连接字段进行动态重分布后两表本地join的数据量;和
第四评估单元,用于评估表连接的选择两表中的选择较小的表按照拉复制表后执行两表本地join的数据量。
更进一步的,所述选择单元,用于:
按照重分布数据量和join数据量选取连接时间最短的数据分布方式。
本发明实施例提供的分布式数据库系统中表连接数据分布方式的选择方法及装置,通过对两种方式的运算量和响应时间的估算,从中选取最为合适的分布方式,用于提高表连接的性能。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种分布式数据库系统中表连接数据分布方式的选择方法,其特征在于,包括:
判断表连接字段是否为hash分布列,如果为hash分布列,则直接下发至计算节点执行数据连接;
如果不为hash分布列,则根据评估结果选择数据分布方式。
2.根据权利要求1所述的方法,其特征在于,所述评估结果包括:
表连接字段进行数据的hash重分布的时间或者表连接中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的时间。
3.根据权利要求2所述的方法,其特征在于,所述方法包括:
评估表连接的两表中按照单表条件过滤后表的行数和需要动态进行重分布的字段的总的字节数;和
评估表连接的中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的数据量。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
评估表连接的两表中按照连接字段进行动态重分布后两表本地join的数据量;和
或者评估表连接的选择两表中的选择较小的表按照拉复制表后执行两表本地join的数据量。
5.根据权利要求4所述的方法,其特征在于,所述根据评估结果选择数据分布方式,包括:
按照重分布数据量和join数据量选取连接时间最短的数据分布方式。
6.一种分布式数据库系统中表连接数据分布方式的选择装置,其特征在于,所述方法包括:
判断单元,用于判断表连接字段是否为hash分布列,如果为hash分布列,则直接下发至计算接单执行数据连接;
选择单元,用于如果不为hash分布列,则根据评估结果选择数据分布方式。
7.根据权利要求6所述的装置,其特征在于,所述评估结果包括:
表连接字段进行数据的hash重分布的时间或者表连接中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的时间。
8.根据权利要求7所述的装置,其特征在于,所述装置包括:
第一评估单元,用于评估表连接的两表中按照单表条件过滤后表的行数和需要动态进行重分布的字段的总的字节数;和
第二评估单元,用于评估表连接的中的其中一个表在分布式系统的所有节点中拉成全量数据的复制表的数据量。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第三评估单元,用于评估表连接的两表中按照连接字段进行动态重分布后两表本地join的数据量;和
第四评估单元,用于评估表连接的选择两表中的选择较小的表按照拉复制表后执行两表本地join的数据量。
10.根据权利要求9所述的方装置,其特征在于,所述选择单元,用于:
按照重分布数据量和join数据量选取连接时间最短的数据分布方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610777673.7A CN106250567A (zh) | 2016-08-31 | 2016-08-31 | 分布式数据库系统中表连接数据分布方式的选择方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610777673.7A CN106250567A (zh) | 2016-08-31 | 2016-08-31 | 分布式数据库系统中表连接数据分布方式的选择方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106250567A true CN106250567A (zh) | 2016-12-21 |
Family
ID=58080941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610777673.7A Pending CN106250567A (zh) | 2016-08-31 | 2016-08-31 | 分布式数据库系统中表连接数据分布方式的选择方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106250567A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739398A (zh) * | 2008-11-11 | 2010-06-16 | 山东省标准化研究院 | 分布式数据库多连接查询优化算法 |
CN102201010A (zh) * | 2011-06-23 | 2011-09-28 | 清华大学 | 无共享架构的分布式数据库系统及其实现方法 |
CN102968420A (zh) * | 2011-08-31 | 2013-03-13 | 国际商业机器公司 | 数据库查询的方法和系统 |
CN103377236A (zh) * | 2012-04-26 | 2013-10-30 | 中兴通讯股份有限公司 | 一种用于分布式数据库的连接查询方法及系统 |
CN103927346A (zh) * | 2014-03-28 | 2014-07-16 | 浙江大学 | 基于数据量的查询连接方法 |
-
2016
- 2016-08-31 CN CN201610777673.7A patent/CN106250567A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739398A (zh) * | 2008-11-11 | 2010-06-16 | 山东省标准化研究院 | 分布式数据库多连接查询优化算法 |
CN102201010A (zh) * | 2011-06-23 | 2011-09-28 | 清华大学 | 无共享架构的分布式数据库系统及其实现方法 |
CN102968420A (zh) * | 2011-08-31 | 2013-03-13 | 国际商业机器公司 | 数据库查询的方法和系统 |
CN103377236A (zh) * | 2012-04-26 | 2013-10-30 | 中兴通讯股份有限公司 | 一种用于分布式数据库的连接查询方法及系统 |
CN103927346A (zh) * | 2014-03-28 | 2014-07-16 | 浙江大学 | 基于数据量的查询连接方法 |
Non-Patent Citations (1)
Title |
---|
XIAOCHUAN1225: ""20160512 GreenPlum11分布式的关联"", 《CSDN博客》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106104591B (zh) | 映射带键实体的属性 | |
CN104484480B (zh) | 基于重复数据删除的远程复制方法及装置 | |
US7472108B2 (en) | Statistics collection using path-value pairs for relational databases | |
EP2202658A2 (en) | Apparatus and method for processing queries using oriented query paths | |
CN103631924B (zh) | 一种分布式数据库平台的应用方法和系统 | |
CN107193813A (zh) | 数据表连接方式处理方法及装置 | |
CN103455534B (zh) | 对文档进行聚类的方法和装置 | |
CN110442580B (zh) | 一种区块链状态数据存储方法、设备和存储介质 | |
CN107562913A (zh) | 一种分布式文件系统的数据存储方法及装置 | |
US9524331B2 (en) | Method and system for representing OLAP queries using directed acyclic graph structures in a datagrid to support real-time analytical operations | |
EP3633519A1 (en) | Method for storing objects, and object store gateway | |
WO2023197864A1 (zh) | 一种调用拓扑图生成方法及装置 | |
CN109783467A (zh) | 一种分布式文件系统的嵌套目录文件个数配额设置方法 | |
CN105611079A (zh) | 一种快速充电方法及其系统 | |
US9117005B2 (en) | Statistics collection using path-value pairs for relational databases | |
CN103092916B (zh) | 修改数据结构的方法和装置 | |
CN112488708B (zh) | 区块链账户关联性查询方法及虚假交易筛选方法 | |
US8229924B2 (en) | Statistics collection using path-identifiers for relational databases | |
CN109189343A (zh) | 一种元数据落盘方法、装置、设备及计算机可读存储介质 | |
CN109165217A (zh) | 一种时序数据的高效存储方法 | |
CN106250567A (zh) | 分布式数据库系统中表连接数据分布方式的选择方法及装置 | |
CN112579709A (zh) | 一种数据表识别方法、装置、存储介质及电子设备 | |
CN106326295B (zh) | 语义数据的存储方法及装置 | |
CN110209708B (zh) | 一种基于数组存储的序列模式挖掘方法 | |
CN110333970A (zh) | 一种数据恢复方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161221 |
|
RJ01 | Rejection of invention patent application after publication |