[发明专利]一种分布式XML数据库的排序方法及装置在审
申请号: | 201410754323.X | 申请日: | 2014-12-10 |
公开(公告)号: | CN105740264A | 公开(公告)日: | 2016-07-06 |
发明(设计)人: | 刘雨洋;郑程光;孙伟丰;罗正海;李浩;刘慧娟 | 申请(专利权)人: | 北大方正集团有限公司;北大方正信息产业集团有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京银龙知识产权代理有限公司 11243 | 代理人: | 许静;黄灿 |
地址: | 100871 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 xml 数据库 排序 方法 装置 | ||
技术领域
本发明涉及一种排序方法,尤其涉及一种分布式XML数据库的排序方法及装置。
背景技术
在分布式XML数据库中包含两类节点:控制节点和计算节点,计算节点用于与控制节点交互,保存分片数据,完成局部查询和局部查询优化;控制节点用于对外提供查询接口,全局优化,结果合并。对于客户端来说,客户端不关心分布式XML数据库的数据分布情况和数据合并过程,只要拿到正确的查询结果即可,但是由于查询是在多个计算节点上同时展开的,控制节点需要合并所有的查询结果,对于非排序的用于XML数据查询的语言(XQuery)来说,控制节点只要把各个计算节点得到的数据简单合并起来即可;对于需要排序的XQuery来说,由于数据分布在不同的计算节点上,简单合并各个计算节点并不能得到全局的排序结果,需要在控制节点对数据进行排序操作。想要得到排序后的结果,控制节点需要对多个计算节点合并得到的结果进行排序。
因为结果集可能会超过内容的容量,所以控制节点需要采用外部排序。外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。
外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装人内存的部分,分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行归并排序。根据有限的内存资源将大文件分为L个段,然后依次将这L个段读入内存并利用高效的内部排序算法对每个段进行排序,排序后的结果即为初始有序归并段直接写入外存文件。内部排序时要选择合适的排序算法,并且要考虑到内部排序需要的辅助空间以及有限的内存空间来决定究竟要把大文件分为几个段。接下来选择合适的路数k对这L个归并段进行多路归并排序,每一趟归并使k个归并段变为1个较大归并段写入文件,反复几趟归并后得到整个有序的文件。上述算法中,根据内存限制,L和K的不同选择可能会涉及到多次IO操作。
发明内容
为了克服现有技术中存在的上述问题,本发明实施例提供了一种分布式XML数据库的排序方法及装置,减少了排序过程中的IO时间,增强了用户体验。
为了解决上述技术问题,本发明实施例采用如下技术方案:
依据本发明实施例的一个方面,提供了一种分布式XML数据库的排序方法,应用于XML数据库中的控制节点,所述方法包括:发送一查询请求至所述分布式XML数据库中的多个计算节点,所述查询请求携带有查询项、排序项和排序规则;接收各个计算节点根据所述排序项和排序规则对查询结果排序后返回的有序序列,所述查询结果是计算节点根据所述查询项对本计算节点处的数据查询后得到的;对接收到的各个计算节点返回的所述有序序列进行归并操作。
其中,所述对所述有序序列进行归并操作包括:
若进行归并操作的有序序列的数据量未超过内存上限,则将有序序列直接保存在内存中。
其中,所述对所述有序序列进行归并操作还包括:
若进行归并操作的有序序列的数据量超过内存上限,则将超过内存上限的有序序列保存在磁盘中,等待内存读取。
依据本发明实施例的又一个方面,还提供了一种分布式XML数据库的排序方法,应用于XML数据库中的计算节点,所述方法包括:接收XML数据库中的控制节点发送的一查询请求,所述查询请求携带有查询项、排序项和排序规则;根据所述查询项,对本计算节点处的数据进行查询,得到一查询结果,并根据所述排序项和排序规则,对查询结果进行排序,以得到一有序序列;发送所述有序序列至所述控制节点,以使控制节点对所述有序序列进行归并操作。
其中,在所述得到一有序序列的步骤之后,所述方法还包括:
将所述有序序列划分为多个子序列;
所述发送所述有序序列至所述控制节点包括:
分别将所述多个子序列依次发送至所述控制节点。
依据本发明实施例的另一个方面,还提供了一种分布式XML数据库的排序装置,应用于XML数据库中的控制节点,所述装置包括:
发送模块,用于发送一查询请求至所述分布式XML数据库中的多个计算节点,所述查询请求携带有查询项、排序项和排序规则;
接收模块,用于接收各个计算节点根据所述排序项和排序规则对查询结果排序后返回的有序序列,所述查询结果是计算节点根据所述查询项对本计算节点处的数据查询后得到的;
归并模块,用于对接收到的各个计算节点返回的所述有序序列进行归并操作。
其中,所述归并模块包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北大方正集团有限公司;北大方正信息产业集团有限公司,未经北大方正集团有限公司;北大方正信息产业集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410754323.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:科目数据筛选方法及系统
- 下一篇:基于众包模式的数据采集分享系统及方法