CN110321388A - 一种基于Greenplum的快速排序查询方法及系统 - Google Patents
一种基于Greenplum的快速排序查询方法及系统 Download PDFInfo
- Publication number
- CN110321388A CN110321388A CN201910141280.0A CN201910141280A CN110321388A CN 110321388 A CN110321388 A CN 110321388A CN 201910141280 A CN201910141280 A CN 201910141280A CN 110321388 A CN110321388 A CN 110321388A
- Authority
- CN
- China
- Prior art keywords
- subregion
- greenplum
- segment
- limitnode
- node
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于大数据查询技术领域,公开了一种基于Greenplum的快速排序查询方法及系统,由Greenplum接收并解析SQL请求并生成相应的抽象语法树,根据所述语法树生成查询执行计划树,通过修改执行计划树,新增LimitNode,把Limit操作下发到Segment上执行;对分区按分区键值进行排序;按顺序依次扫描分区的记录数,达到Limit限制的记录数时直接返回。本发明通过预先对分区的排序,在查询时由邻近的分区开始查询,只对少量几个需要排序的分区进行排序和查询,减少大量不必要的分区数据读取,大幅提升条件查询的性能。
Description
技术领域
本发明属于大数据查询技术领域,尤其涉及一种基于Greenplum的快速排 序查询方法及系统。
背景技术
目前,业内常用的现有技术是这样的:
Greenplum是一个关系型数据库集群,它实际上是由多个独立的数据库服务 组合成的逻辑数据库。与Oracle RAC的Shared-Everything架构不同,Greenplum 采用Shared-Nothing架构,整个集群由多个数据节点(Segment Host)和控制 节点(Master Host)组成,其中每个数据节点上可以运行多个数据库,也称为 多个实例。
控制节点(Master Host)接收并解析SQL请求并生成相应的抽象语法树, 根据该语法树生成执行计划树,并把执行计划树下发到各个数据节点(Segment Host)上,由数据节点的每个数据库实例来遍历执行计划树并执行相应操作, 最后把结果返回并汇总到控制节点上,再控制节点把结果返回给SQL客户端。
当表数据按时间分区时,用户执行一条order by+limit查询,Greenplum 会将符合条件的分区列出并读取这些分区中的数据,分部读取完成后再统一进 行排序,最终返回排序后的第一页数据。
综上所述,现有技术存在的问题是:
现有技术在执行基于Greenplum分区键值的Order by加Limit的查询时,Greenplum原始的计划方式在实际生产环境中查询效率低,对已经分区键未能有 效利用,总数n个分区在实际环境中第一个分区往往已经满足了limit条件, 其余n-1个分区的数据并不需要读取。
解决上述技术问题的难度和意义:
难度上:源码量大(总代码量两百六十多万行),架构复杂,文档稀少。
意义:本发明提升查询效率,提高生产力。
发明内容
针对现有技术存在的问题,本发明提供了一种基于Greenplum的快速排序 查询方法及系统。本发明通过预先按分区键值对分区进行排序,排除多数不必 要的分区,减少对大量冗余记录的查询和排序操作,实现数据的快速查询。
本发明是这样实现的,一种基于Greenplum的快速排序查询方法,所述基 于Greenplum的快速排序查询方法包括:
由Greenplum接收并解析SQL请求并生成相应的抽象语法树,根据所述语 法树生成查询执行计划树,通过修改执行计划树,新增LimitNode,把Limit操 作下发到Segment上执行;
进行修改PartitionSelectorNode,对分区按分区键值进行排序;
进行修改DynamicTableScanNode,按顺序依次扫描分区的记录数,达到 Limit限制的记录数时直接返回。
进一步,所述基于Greenplum的快速排序查询方法具体包括:
步骤一、Greenplum接收并解析SQL请求并生成相应的执行计划树,判断执 行计划树的根节点是否是LimitNode,如果是LimitNode的话就复制该节点并把 复制后的LimitNode插入到MotionNode下,MotionNode下的执行计划子树被 下发到Segment上执行;
步骤二、在Master节点上把分区的键值信息保存到执行计划状态 PlannedStmt结构体中,Segment节点上没有分区的键值信息,保存到 PlannedStmt结构体下发给Segment节点;
步骤三、Segment节点从Master下发的PlannedStmt结构体获取分区键值 信息被保存到运行时状态EState结构体上,EState被所有执行计划树的子节 点访问到;
步骤四、Segment在执行LimitNode的初始化时,保存Limit的个数到EState 结构体上;
步骤五、Segment在执行SortNode的初始化时,保存排序的键值和排序方 式到EState结构体上;
步骤六、Segment在执行PartitionSelectorNode时,通过EState结构体 上的Limit的个数判断是否有进行Limit操作;如果有,再判断EState结构体 中的分区键值和排序键值是否一致;如果一致,对分区按照EState保存的排序 方式进行排序,再将有序的分区列表返回DynamicTableScanNode节点;
步骤七、DynamicTableScanNode接收PartitionSelectorNode返回的有序 的分区列表,依次对分区进行扫描;
步骤八、执行SortNode,把DynamicTableScanNode返回的节点进行排序 并传入下一个LimitNode;
步骤九、执行LimitNode,读取SortNode排序后的前Limit个数个节点作为Segment的查询结果返回给Master节点;
步骤十、在Master上执行MotionNode对Segment返回的记录进行汇聚, 然后再执行LimitNode,读取限制的前几条记录并返回给查询客户端。
进一步,步骤七,进一步包括:设置一个统计变量count,每扫描一条记录 则count加一,当扫描完一个分区时,比较count是否大于保存在EState的Limit 个数,如果小于Limit个数,继续扫描下一个分区并统计;如果大于或等于Limit 个数,则直接返回扫描的记录数给SortNode,不再扫描剩余的分区。
本发明的另一目的在于提供一种计算机程序,所述计算机程序用于实现所 述的基于Greenplum的快速排序查询方法的计算机程序。
本发明的另一目的在于提供一种终端,所述终端至少搭载所述基于Greenplum的快速排序查询方法的控制器。
本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在 计算机上运行时,使得计算机执行所述的基于Greenplum的快速排序查询方法。
本发明的另一目的在于提供一种实现所述基于Greenplum的快速排序查询 方法的基于Greenplum的快速排序查询系统,所述基于Greenplum的快速排序 查询系统包括:
执行计划树判断模块,用于Greenplum接收并解析SQL请求并生成相应的 执行计划树,判断执行计划树的根节点是否是LimitNode,如果是LimitNode的 话就复制该节点并把复制后的LimitNode插入到MotionNode下,MotionNode 下的执行计划子树被下发到Segment上执行;
执行计划状态PlannedStmt结构体保存模块,用于在Master节点上把分区 的键值信息保存到执行计划状态PlannedStmt结构体中,Segment节点上没有 分区的键值信息,保存到PlannedStmt结构体下发给Segment节点;
运行时状态EState结构体保存模块,用于Segment节点从Master下发的PlannedStmt结构体获取分区键值信息被保存到运行时状态EState结构体上, EState被所有执行计划树的子节点访问到;
LimitNode初始化模块,用于Segment在执行LimitNode的初始化时,保存 Limit的个数到EState结构体上;
SortNode的初始化模块,用于Segment在执行SortNode的初始化时,保存排 序的键值和排序方式到EState结构体上;
Limit操作模块,用于Segment在执行PartitionSelectorNode时,通过 EState结构体上的Limit的个数判断是否有进行Limit操作;如果有,再判断 EState结构体中的分区键值和排序键值是否一致;如果一致,对分区按照EState 保存的排序方式进行排序,再将有序的分区列表返回DynamicTableScanNode节 点;
分区扫描模块,用于DynamicTableScanNode接收PartitionSelectorNode 返回的有序的分区列表,依次对分区进行扫描;
SortNode执行模块,用于执行SortNode,把DynamicTableScanNode返回 的节点进行排序并传入下一个LimitNode;
LimitNode执行模块,用于执行LimitNode,读取SortNode排序后的前Limit 个数个节点作为Segment的查询结果返回给Master节点;
记录和汇聚模块,用于在Master上执行MotionNode对Segment返回的记 录进行汇聚,然后再执行LimitNode,读取限制的前几条记录并返回给查询客户 端;
查询客户端,用于显示排序查询结果。
本发明的另一目的在于提供一种大数据查询平台,所述大数据查询平台至 少搭载所述的基于Greenplum的快速排序查询系统。
本发明的另一目的在于提供一种金融行业大数据查询设备,所述金融行业 大数据查询设备至少搭载所述的基于Greenplum的快速排序查询系统。
本发明的另一目的在于提供一种股市行业大数据查询设备,所述股市行业 大数据查询设备至少搭载所述的基于Greenplum的快速排序查询系统。
综上所述,本发明的优点及积极效果为:
本发明通过预先对分区的排序,在查询时由邻近的分区开始查询,只对少量 几个需要排序的分区进行排序和查询,减少大量不必要的分区数据读取,大幅 提升条件查询的性能。
本发明由Greenplum接收并解析SQL请求并生成相应的抽象语法树,根据 该语法树生成查询执行计划树,通过修改执行计划树,新增LimitNode,把Limit 操作下发到Segment上执行,修改PartitionSelectorNode,对分区按分区键值 进行排序,修改DynamicTableScanNode,按顺序依次扫描分区的记录数,达到 Limit限制的记录数时就直接返回,从而达到减少对大量冗余记录的查询和排序 操作,实现数据的快速查询。
在仿真实验中,本发明创建一张分区表ebike_pass_redord,表中除其它数 据列外有时间类型字段pass_time,以pass_time为分区的键值按时间2017年1 月1日至2017年12月31日分为365个分区,向表中插入3千万条记录,分布 在365个分区中,其中落在2017年1月1日这个分区上的记录数为1万条。执 行查询:select id,pass_time from ebike_pass_redord order by pass_time limit 10。
以下是在实际环境中执行的效果,查询耗时用红框标出。
原版:耗时18秒
优化后:耗时0.1秒
从实际测试使用的结果可看出,例中的查询语句只需读取最近的第一个分 区中的数据即可返回给用户,查询效率提升180倍。
附图说明
图1是本发明实施例提供的基于Greenplum的快速排序查询方法流程图。
图2是本发明实施例提供的基于Greenplum的快速排序查询系统示意图。
图中:1、执行计划树判断模块;2、执行计划状态PlannedStmt结构体保 存模块;3、运行时状态EState结构体保存模块;4、LimitNode初始化模块;5、 SortNode的初始化模块;6、Limit操作模块;7、分区扫描模块;8、SortNode 执行模块;9、LimitNode执行模块;10、记录和汇聚模块;11、查询客户端。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例, 对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以 解释本发明,并不用于限定本发明。
本发明通过Greenplum接收并解析SQL请求生成相应的查询计划,通过预 先按分区键值对分区进行排序,排除多数不必要的分区,减少对大量冗余记录 的查询和排序操作,实现数据的快速查询。
图1,本发明实施例提供的基于Greenplum的快速排序查询方法,为一种基 于Greenplum分区键值的Order by加Limit的快速查询方法,由Greenplum接 收并解析SQL请求并生成相应的抽象语法树,根据该语法树生成查询执行计划 树,通过修改执行计划树,新增LimitNode,把Limit操作下发到Segment上执 行,修改PartitionSelectorNode,对分区按分区键值进行排序,修改 DynamicTableScanNode,按顺序依次扫描分区的记录数,达到Limit限制的记 录数时就直接返回。
具体包括以下步骤:
步骤1、Greenplum接收并解析SQL请求并生成相应的执行计划树,判断执 行计划树的根节点是否是LimitNode,如果是LimitNode的话就复制该节点并把 复制后的LimitNode插入到MotionNode下,因为MotionNode下的执行计划子 树才会被下发到Segment上执行;
步骤2、在Master节点上把分区的键值信息保存到执行计划状态 PlannedStmt结构体中,因为Segment节点上是没有分区的键值信息,所以要保 存到PlannedStmt结构体下发给Segment节点;
步骤3、Segment节点从Master下发的PlannedStmt结构体获取分区键值 信息被保存到运行时状态EState结构体上,因为EState可以被所有执行计划 树的子节点访问到。
步骤4、Segment在执行LimitNode的初始化的时候,保存Limit的个数到 EState结构体上。
步骤5、Segment在执行SortNode的初始化的时候,保存排序的键值和排 序方式(升序或降序)到EState结构体上。
步骤6、Segment在执行PartitionSelectorNode的时候,首先通过EState 结构体上的Limit的个数判断是否有进行Limit操作,如果有的话再判断EState 结构体中的分区键值和排序键值是否一致。如果一致的话就对分区按照EState 保存的排序方式进行排序,然后将有序的分区列表返回DynamicTableScanNode 节点。
步骤7、DynamicTableScanNode接收PartitionSelectorNode返回的有序 的分区列表,依次对分区进行扫描,本发明设置一个统计变量count,每扫描一 条记录则count加一,当扫描完一个分区的时候本发明比较一下count是否大 于保存在EState的Limit个数,如果小于Limit个数本发明就继续扫描下一个 分区并统计,如果大于或等于Limit个数则本发明直接返回扫描的记录数给 SortNode,不再扫描剩余的分区。
步骤8、执行SortNode,把DynamicTableScanNode返回的节点进行排序 并传入下一个LimitNode。
步骤9、执行LimitNode,读取SortNode排序后的前Limit个数个节点作为 Segment的查询结果返回给Master节点。
步骤10、在Master上执行MotionNode对Segment返回的记过进行汇聚, 然后再执行LimitNode,读取限制的前几条记录并返回给查询客户端。
如图2,本发明实施例提供的基于Greenplum的快速排序查询系统包括:
执行计划树判断模块1,用于Greenplum接收并解析SQL请求并生成相应的 执行计划树,判断执行计划树的根节点是否是LimitNode,如果是LimitNode的 话就复制该节点并把复制后的LimitNode插入到MotionNode下,MotionNode 下的执行计划子树被下发到Segment上执行。
执行计划状态PlannedStmt结构体保存模块2,用于在Master节点上把分 区的键值信息保存到执行计划状态PlannedStmt结构体中,Segment节点上没 有分区的键值信息,保存到PlannedStmt结构体下发给Segment节点。
运行时状态EState结构体保存模块3,用于Segment节点从Master下发的PlannedStmt结构体获取分区键值信息被保存到运行时状态EState结构体上, EState被所有执行计划树的子节点访问到。
LimitNode初始化模块4,用于Segment在执行LimitNode的初始化时,保 存Limit的个数到EState结构体上。
SortNode的初始化模块5,用于Segment在执行SortNode的初始化时,保存 排序的键值和排序方式到EState结构体上。
Limit操作模块6,用于Segment在执行PartitionSelectorNode时,通过 EState结构体上的Limit的个数判断是否有进行Limit操作;如果有,再判断 EState结构体中的分区键值和排序键值是否一致;如果一致,对分区按照EState 保存的排序方式进行排序,再将有序的分区列表返回DynamicTableScanNode节 点。
分区扫描模块7,用于DynamicTableScanNode接收PartitionSelectorNode 返回的有序的分区列表,依次对分区进行扫描;。
SortNode执行模块8,用于执行SortNode,把DynamicTableScanNode返回的节 点进行排序并传入下一个LimitNode。
LimitNode执行模块9,用于执行LimitNode,读取SortNode排序后的前 Limit个数个节点作为Segment的查询结果返回给Master节点。
记录和汇聚模块10,用于在Master上执行MotionNode对Segment返回的 记录进行汇聚,然后再执行LimitNode,读取限制的前几条记录并返回给查询客 户端。
查询客户端11,用于显示排序查询结果。
下面结合具体实施例对本发明作进一步描述。
实施例:
假设有一张分区表test,表中有2列,列名分别为id和create_date,以create_date为分区的键值按时间2017年1月1日至2017年12月31日分为 365个分区,向表中插入3千万条记录,分布在365个分区中,其中落在2017年 1月1日这个分区上的记录数为1万条。
当本发明执行以下SQL语句时,优化的查询流程将取代原流程:
select*from test order by create_date limit 10;
具体处理流程的比较如图1所示,本发明揭示了一种基于Greenplum分区 键值的Order by加Limit的快速查询方法,其包括以下步骤:
步骤1、用户提交SQL请求到Master节点,Master节点生成执行计划树并 下发给Segment节点执行;
步骤2、Segment从执行计划树的叶子节点开始遍历执行。所以从PartitionSelectorNode开始执行,先选择满足条件的分区,然后对满足条件的 分区进行排序,由于本例中本发明没有限制条件,所有会对365个分区都进行 排序并返回给DynamicTableScanNode。
步骤3、执行DynamicTableScanNode、按照分区顺序依次扫描分区的记录 数,每次扫描完分区后统计扫描的记录数,如果累计扫描的记录数超过Limit 限制的记录数,则不继续扫描,直接返回累计扫描的记录。因为落在第一个分 区2017年1月1日的记录数基友1万条,所以只扫描第一个分区就停止扫描并 返回1万条记录给SortNode进行排序,原来的处理流程中这里要返回3千万条 记录给SortNode进行排序,相差巨大。
步骤4、执行SortNode对1万条记录进行排序,并返回1万条有序记录给LimitNode。
步骤5、执行LimitNode,对返回的1万条记录进行Limit操作,这里segment 只返回排序的前10条记录给Master。
步骤6、在Master上执行MotionNode,从每个segment获取10条有序记 录,汇聚成有序的记录返传入LimitNode;
步骤7、在Master上执行LimitNode,对传入的segment数量乘以10条有 序记录进行Limit操作,返回前10条记录给查询用户。
本发明由Greenplum接收并解析SQL请求并生成相应的抽象语法树,根据 该语法树生成查询执行计划树,通过修改执行计划树,新增LimitNode,把Limit 操作下发到Segment上执行,修改PartitionSelectorNode,对分区按分区键值 进行排序,修改DynamicTableScanNode,按顺序依次扫描分区的记录数,达到 Limit限制的记录数时就直接返回,从而达到减少对大量冗余记录的查询和排序 操作,实现数据的快速查询。
下面结合仿真实验对本发明作进一步描述。
创建一张分区表ebike_pass_redord,表中除其它数据列外有时间类型字段pass_time,以pass_time为分区的键值按时间2017年1月1日至2017年12月 31日分为365个分区,向表中插入3千万条记录,分布在365个分区中,其中落 在2017年1月1日这个分区上的记录数为1万条。执行查询:
select id,pass_time from ebike_pass_redord order by pass_time limit10;
以下是在实际环境中执行的效果,查询耗时用红框标出。
原版:耗时18秒
优化后:耗时0.1秒
从实际测试使用的结果可看出,例中的查询语句只需读取最近的第一个分 区中的数据即可返回给用户,查询效率提升180倍。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组 合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程 序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指 令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可 以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算 机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向 另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、 计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或 无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据 中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用 介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。 所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、 或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明 的保护范围之内。
Claims (10)
1.一种基于Greenplum的快速排序查询方法,其特征在于,所述基于Greenplum的快速排序查询方法包括:
由Greenplum接收并解析SQL请求并生成相应的抽象语法树,根据所述语法树生成查询执行计划树,通过修改执行计划树,新增LimitNode,把Limit操作下发到Segment上执行;
进行修改PartitionSelectorNode,对分区按分区键值进行排序;
进行修改DynamicTableScanNode,按顺序依次扫描分区的记录数,达到Limit限制的记录数时直接返回。
2.如权利要求1所述的基于Greenplum的快速排序查询方法,其特征在于,所述基于Greenplum的快速排序查询方法具体包括:
步骤一、Greenplum接收并解析SQL请求并生成相应的执行计划树,判断执行计划树的根节点是否是LimitNode,如果是LimitNode的话就复制该节点并把复制后的LimitNode插入到MotionNode下,MotionNode下的执行计划子树被下发到Segment上执行;
步骤二、在Master节点上把分区的键值信息保存到执行计划状态PlannedStmt结构体中,Segment节点上没有分区的键值信息,保存到PlannedStmt结构体下发给Segment节点;
步骤三、Segment节点从Master下发的PlannedStmt结构体获取分区键值信息被保存到运行时状态EState结构体上,EState被所有执行计划树的子节点访问到;
步骤四、Segment在执行LimitNode的初始化时,保存Limit的个数到EState结构体上;
步骤五、Segment在执行SortNode的初始化时,保存排序的键值和排序方式到EState结构体上;
步骤六、Segment在执行PartitionSelectorNode时,通过EState结构体上的Limit的个数判断是否有进行Limit操作;如果有,再判断EState结构体中的分区键值和排序键值是否一致;如果一致,对分区按照EState保存的排序方式进行排序,再将有序的分区列表返回DynamicTableScanNode节点;
步骤七、DynamicTableScanNode接收PartitionSelectorNode返回的有序的分区列表,依次对分区进行扫描;
步骤八、执行SortNode,把DynamicTableScanNode返回的节点进行排序并传入下一个LimitNode;
步骤九、执行LimitNode,读取SortNode排序后的前Limit个数个节点作为Segment的查询结果返回给Master节点;
步骤十、在Master上执行MotionNode对Segment返回的记录进行汇聚,然后再执行LimitNode,读取限制的前几条记录并返回给查询客户端。
3.如权利要求2所述的基于Greenplum的快速排序查询方法,其特征在于,
步骤七,进一步包括:设置一个统计变量count,每扫描一条记录则count加一,当扫描完一个分区时,比较count是否大于保存在EState的Limit个数,如果小于Limit个数,继续扫描下一个分区并统计;如果大于或等于Limit个数,则直接返回扫描的记录数给SortNode,不再扫描剩余的分区。
4.一种计算机程序,其特征在于,所述计算机程序用于实现权利要求1~3任意一项所述的基于Greenplum的快速排序查询方法的计算机程序。
5.一种终端,其特征在于,所述终端至少搭载实现权利要求1~3任意一项所述基于Greenplum的快速排序查询方法的控制器。
6.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-3任意一项所述的基于Greenplum的快速排序查询方法。
7.一种实现权利要求1所述基于Greenplum的快速排序查询方法的基于Greenplum的快速排序查询系统,其特征在于,所述基于Greenplum的快速排序查询系统包括:
执行计划树判断模块,用于Greenplum接收并解析SQL请求并生成相应的执行计划树,判断执行计划树的根节点是否是LimitNode,如果是LimitNode的话就复制该节点并把复制后的LimitNode插入到MotionNode下,MotionNode下的执行计划子树被下发到Segment上执行;
执行计划状态PlannedStmt结构体保存模块,用于在Master节点上把分区的键值信息保存到执行计划状态PlannedStmt结构体中,Segment节点上没有分区的键值信息,保存到PlannedStmt结构体下发给Segment节点;
运行时状态EState结构体保存模块,用于Segment节点从Master下发的PlannedStmt结构体获取分区键值信息被保存到运行时状态EState结构体上,EState被所有执行计划树的子节点访问到;
LimitNode初始化模块,用于Segment在执行LimitNode的初始化时,保存Limit的个数到EState结构体上;
SortNode的初始化模块,用于Segment在执行SortNode的初始化时,保存排序的键值和排序方式到EState结构体上;
Limit操作模块,用于Segment在执行PartitionSelectorNode时,通过EState结构体上的Limit的个数判断是否有进行Limit操作;如果有,再判断EState结构体中的分区键值和排序键值是否一致;如果一致,对分区按照EState保存的排序方式进行排序,再将有序的分区列表返回DynamicTableScanNode节点;
分区扫描模块,用于DynamicTableScanNode接收PartitionSelectorNode返回的有序的分区列表,依次对分区进行扫描;
SortNode执行模块,用于执行SortNode,把DynamicTableScanNode返回的节点进行排序并传入下一个LimitNode;
LimitNode执行模块,用于执行LimitNode,读取SortNode排序后的前Limit个数个节点作为Segment的查询结果返回给Master节点;
记录和汇聚模块,用于在Master上执行MotionNode对Segment返回的记录进行汇聚,然后再执行LimitNode,读取限制的前几条记录并返回给查询客户端;
查询客户端,用于显示排序查询结果。
8.一种大数据查询平台,其特征在于,所述大数据查询平台至少搭载权利要求7所述的基于Greenplum的快速排序查询系统。
9.一种金融行业大数据查询设备,其特征在于,所述金融行业大数据查询设备至少搭载权利要求7所述的基于Greenplum的快速排序查询系统。
10.一种股市行业大数据查询设备,其特征在于,所述股市行业大数据查询设备至少搭载权利要求7所述的基于Greenplum的快速排序查询系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910141280.0A CN110321388B (zh) | 2019-02-26 | 2019-02-26 | 一种基于Greenplum的快速排序查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910141280.0A CN110321388B (zh) | 2019-02-26 | 2019-02-26 | 一种基于Greenplum的快速排序查询方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110321388A true CN110321388A (zh) | 2019-10-11 |
CN110321388B CN110321388B (zh) | 2021-07-02 |
Family
ID=68112718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910141280.0A Active CN110321388B (zh) | 2019-02-26 | 2019-02-26 | 一种基于Greenplum的快速排序查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110321388B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597201A (zh) * | 2020-04-23 | 2020-08-28 | 南京聚力云成电子科技有限公司 | 一种基于Greenplum大规模并行处理数据库的内容快速压缩方法 |
CN114745251A (zh) * | 2022-03-16 | 2022-07-12 | 岳阳职业技术学院 | 一种计算机网络智能组网与优化系统和方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533406A (zh) * | 2009-04-10 | 2009-09-16 | 北京锐安科技有限公司 | 一种海量数据查询方法 |
CN102521406A (zh) * | 2011-12-26 | 2012-06-27 | 中国科学院计算技术研究所 | 海量结构化数据复杂查询任务的分布式查询方法和系统 |
CN102521405A (zh) * | 2011-12-26 | 2012-06-27 | 中国科学院计算技术研究所 | 支持高速加载的海量结构化数据存储、查询方法和系统 |
CN103761080A (zh) * | 2013-12-25 | 2014-04-30 | 中国农业大学 | 一种基于SQL的MapReduce作业生成方法及系统 |
CN104361049A (zh) * | 2014-10-29 | 2015-02-18 | 中国建设银行股份有限公司 | 一种快速展现数据库数据的方法和系统 |
CN105302909A (zh) * | 2015-11-06 | 2016-02-03 | 西安交大捷普网络科技有限公司 | 基于分区偏移计算的网络安全日志系统大数据检索方法 |
EP3093781A1 (en) * | 2015-05-14 | 2016-11-16 | Daniel Greenfield | System and method for transforming and compressing genomics data |
CN107133342A (zh) * | 2017-05-16 | 2017-09-05 | 广州舜飞信息科技有限公司 | 一种IndexR实时数据分析库 |
CN107748766A (zh) * | 2017-09-28 | 2018-03-02 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据快速查询方法 |
CN108170860A (zh) * | 2018-01-22 | 2018-06-15 | 北京小度信息科技有限公司 | 数据查询方法、装置、电子设备及计算机可读存储介质 |
US20190026759A1 (en) * | 2017-07-18 | 2019-01-24 | Jpmorgan Chase Bank, N.A. | System and method for universal data modeling |
-
2019
- 2019-02-26 CN CN201910141280.0A patent/CN110321388B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533406A (zh) * | 2009-04-10 | 2009-09-16 | 北京锐安科技有限公司 | 一种海量数据查询方法 |
CN102521406A (zh) * | 2011-12-26 | 2012-06-27 | 中国科学院计算技术研究所 | 海量结构化数据复杂查询任务的分布式查询方法和系统 |
CN102521405A (zh) * | 2011-12-26 | 2012-06-27 | 中国科学院计算技术研究所 | 支持高速加载的海量结构化数据存储、查询方法和系统 |
CN103761080A (zh) * | 2013-12-25 | 2014-04-30 | 中国农业大学 | 一种基于SQL的MapReduce作业生成方法及系统 |
CN104361049A (zh) * | 2014-10-29 | 2015-02-18 | 中国建设银行股份有限公司 | 一种快速展现数据库数据的方法和系统 |
EP3093781A1 (en) * | 2015-05-14 | 2016-11-16 | Daniel Greenfield | System and method for transforming and compressing genomics data |
CN105302909A (zh) * | 2015-11-06 | 2016-02-03 | 西安交大捷普网络科技有限公司 | 基于分区偏移计算的网络安全日志系统大数据检索方法 |
CN107133342A (zh) * | 2017-05-16 | 2017-09-05 | 广州舜飞信息科技有限公司 | 一种IndexR实时数据分析库 |
US20190026759A1 (en) * | 2017-07-18 | 2019-01-24 | Jpmorgan Chase Bank, N.A. | System and method for universal data modeling |
CN107748766A (zh) * | 2017-09-28 | 2018-03-02 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据快速查询方法 |
CN108170860A (zh) * | 2018-01-22 | 2018-06-15 | 北京小度信息科技有限公司 | 数据查询方法、装置、电子设备及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
吴佩: "分布式数据库查询任务调度方法研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597201A (zh) * | 2020-04-23 | 2020-08-28 | 南京聚力云成电子科技有限公司 | 一种基于Greenplum大规模并行处理数据库的内容快速压缩方法 |
CN114745251A (zh) * | 2022-03-16 | 2022-07-12 | 岳阳职业技术学院 | 一种计算机网络智能组网与优化系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110321388B (zh) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200057672A1 (en) | Dynamic tree determination for data processing | |
CA2562281C (en) | Partial query caching | |
US6609131B1 (en) | Parallel partition-wise joins | |
US6370522B1 (en) | Method and mechanism for extending native optimization in a database system | |
US9996593B1 (en) | Parallel processing framework | |
US8065323B2 (en) | Offline validation of data in a database system for foreign key constraints | |
US8620888B2 (en) | Partitioning in virtual columns | |
EP3014488B1 (en) | Incremental maintenance of range-partitioned statistics for query optimization | |
US7761455B2 (en) | Loading data from a vertical database table into a horizontal database table | |
US9946752B2 (en) | Low-latency query processor | |
US20130318123A1 (en) | Mechanism for co-located data placement in a parallel elastic database management system | |
US20020194157A1 (en) | Partition pruning with composite partitioning | |
US11386086B2 (en) | Permutation-based machine learning for database query optimization | |
US8352476B2 (en) | Frequent itemset counting using clustered prefixes and index support | |
CN114631088A (zh) | 自主分区数据库表 | |
CN110321388A (zh) | 一种基于Greenplum的快速排序查询方法及系统 | |
CN111078705A (zh) | 基于Spark平台建立数据索引方法及数据查询方法 | |
US8229946B1 (en) | Business rules application parallel processing system | |
US8655911B2 (en) | Expressing frequent itemset counting operations | |
US8280869B1 (en) | Sharing intermediate results | |
US9135302B2 (en) | Query rewrite with a nested materialized view | |
US7720790B2 (en) | Dynamic selection of frequent itemset counting technique | |
EP3436988B1 (en) | "methods and systems for database optimisation" | |
Thapa | Optimizing MongoDB performance with indexing: practices of indexing in MongoDB | |
CN116975098A (zh) | 查询计划构建方法、装置、电子设备和存储介质 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230808 Address after: Room 05, 9th Floor, Building 3, Zone 4, No. 186 South Fourth Ring West Road, Fengtai District, Beijing, 100071 Patentee after: Nanwei North Technology Group Co.,Ltd. Address before: No.2 Building, Nanwei Building, Fenghai Road, Fengze District, Quanzhou City, Fujian Province, 362000 Patentee before: LINEWELL SOFTWARE Co.,Ltd. |
|
TR01 | Transfer of patent right |