[发明专利]一种提供有序数据的系统和方法有效
申请号: | 201510250580.4 | 申请日: | 2015-05-18 |
公开(公告)号: | CN104850618B | 公开(公告)日: | 2018-06-01 |
发明(设计)人: | 张成远;田琪;季锡强 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 张焕生;谢丽娜 |
地址: | 100080 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种提供有序数据的系统和方法,该系统包括:客户端,用于生成带有排序要求的查询请求;多个数据源,所述多个数据源的每个根据相应的查询子请求产生排序的数据记录并传递到对应的连接;连接部分,用于管理和分配到各数据源的连接;排序机构,用于通过相应连接处理来自各数据源的局部排序的数据记录以向客户端提供全局排序的数据记录。排序机构利用与各连接对应的缓冲区的界限标志来控制内存的使用,并且通过反复对各连接做堆排序来完成数据的全局排序。 | ||
搜索关键词: | 排序 数据源 数据记录 排序机构 客户端提供 缓冲区 查询请求 界限标志 连接处理 客户端 子请求 内存 全局 查询 传递 分配 管理 | ||
【主权项】:
1.一种提供有序数据的方法,包括步骤:从客户端接收带有排序要求的查询请求,并解析所述查询请求以产生对应于各数据源的子查询请求;获取各数据源对应的连接,建立与各连接对应的缓冲区并清空且标记为未满,并且把产生的各子查询请求通过相应连接发送给相应的数据源,其中所述数据源通过相应连接返回有序的数据记录;按照预定的规则来轮询各连接以确定哪个连接有数据可读取,其中,当确定一连接有数据可读取并且该连接对应的内存缓冲区未满,则读取该连接中所有可读的数据记录并存储到该连接对应的内存缓冲区中,当该缓冲区中的数据量超过预定阈值时把该缓冲区标记为已满,并且当确定需要通过该连接读取的数据全部读取完毕时把该连接标记为读取结束;执行所有连接的堆排序;当堆顶的连接对应的内存缓冲区非空时,从该内存缓冲区中取出第一个记录发送给客户端,并且,重复所有连接的堆排序并把堆顶的连接对应的内存缓冲区中的第一个记录取出发送给客户端,直到堆顶的连接对应的内存缓冲区为空,其中在从堆顶对应的内存缓冲区中取出第一个记录发送给客户端之后要判断该内存缓冲区是否未满,当未满时,取消该内存缓冲区的已满标记;当堆顶的连接对应的内存缓冲区为空并且堆顶的该连接被标记读取结束,则标记该连接处理完毕,否则继续所述的轮询;当所有的连接都已经处理完毕,则把结束标志发送给客户端,否则继续所述轮询,其中,所述连接按照如下规则取值:如果该连接被标记为处理完毕,对升序排序该连接取值无限大,对降序排序该连接的取值无限小;如果该连接未被标记为处理完毕且该连接对应的缓冲区为空,对升序排序该连接的取值无限小,对降序排序该连接的取值无限大;如果不是上述两种情况,该连接的值是该连接对应的缓冲区中第一个记录的排序字段值。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510250580.4/,转载请声明来源钻瓜专利网。