一种数据查询方法及系统的制作方法

文档序号:6489760阅读:142来源:国知局
一种数据查询方法及系统的制作方法
【专利摘要】本发明公开了一种数据查询系统,所述系统包括:代理服务器和至少一个代理客户端,其中,所述代理服务器设置于作为数据提供方的服务端,用于为所述代理客户端提供数据下发服务;所述代理客户端设置于作为数据使用方的客户端,用于从代理服务器获取数据并保存,以及提供数据查询服务。相应的,本发明还公开了一种数据查询方法,不仅结构简单,而且数据更新快、部署成本低、节省带宽资源和服务性能高。
【专利说明】一种数据查询方法及系统
【技术领域】
[0001]本发明涉及数据查询技术,尤其涉及一种数据查询方法及系统。
【背景技术】
[0002]现有技术中,客户端进行IP数据查询主要通过如图1所示的网络结构实现,其中,包含有IP库推送系统和客户端,所述IP库推送系统可以包括由多个查询服务器组成的查询服务器机群、用于控制和管理各查询服务器的查询控制机、由多个接口服务器组成的接口服务器机群和用于控制和管理各接口服务器的接口控制机。
[0003]现有用于IP数据查询的IP库推送系统和IP数据查询方法,存在如下缺陷:
[0004]第一,IP库推送系统中,一次IP数据查询需要通过接口服务器和数据查询服务器来共同完成,并且还需要配置用于控制各查询服务器的查询控制机和用于控制各接口服务器的接口控制机,结构复杂,此外,由于每台查询服务器的单机数据查找能力(表示一台服务器对外提供的每秒查询次数)有限,因此,需要部署大量的服务器才能提供海量的数据查询服务,部署成本高,而且业务开发中需要大量时间进行协议调试,服务性能低下;
[0005]第二,现有的IP数据查询中,一次IP数据查询中需要进行大量查询请求和查询结果的传输,需要消耗大量带宽资源;缺乏回滚机制:如果计算系统发生错误,推送了错误数据,应用方会直接应用错误数据,无法回滚。
[0006]第三,客户端进行IP数据查询时,需要本地开发相应的查询工具和用于将IP库推送系统返回的查询结果中IP数据导入本地数据库的工具,需要进行大量的重复性开发,不仅会造成资源浪费,而且会增加IP数据查询的部署成本。

【发明内容】

[0007]有鉴于此,本发明的主要目的在于提供一种数据查询方法及系统,以解决现有IP数据查询中系统结构复杂、部署成本高、服务性能低下以及消耗大量资源的问题。
[0008]为达到上述目的,本发明的技术方案是这样实现的:
[0009]一种数据查询系统,所述系统包括:代理服务器和至少一个代理客户端,其中,
[0010]所述代理服务器设置于作为数据提供方的服务端,用于为所述代理客户端提供数据下发服务;
[0011]所述代理客户端设置于作为数据使用方的客户端,用于从代理服务器获取数据并保存,以及提供数据查询服务。
[0012]所述代理服务器包括:数据下载模块、数据服务模块和第一共享内存;其中,
[0013]数据下载模块,用于从外部获取数据文件,并将所述数据文件中的数据写入所述
第一共享内存;
[0014]所述数据服务模块,用于接收所述代理客户端发起的数据获取请求,根据所述数据获取请求从所述第一共享内存中查询指定的数据,并通过网络将所述指定的数据返回给所述代理客户端;[0015]所述第一共享内存,用于存储所述数据下载模块写入的数据,并供所述数据服务模块查询。
[0016]所述代理客户端包括:数据获取模块、数据查询模块和第二共享内存;其中,
[0017]数据获取模块,用于向所述代理服务器发起用于获取指定数据的数据获取请求,接收所述代理服务器返回的指定数据,并将所述指定数据写入所述第二共享内存;
[0018]数据查询模块,用于从所述第二共享内存中查询应用方指定的数据并返回给所述应用方;
[0019]所述第二共享内存,用于存储所述数据获取模块写入的数据,并供所述数据查询模块查询。
[0020]所述数据查询模块,用于通过用户数据报协议UDP包查询方式和/或应用程序编程接口 API调用方式从所述第二共享内存中查询应用方指定的数据并返回给所述应用方。
[0021]所述数据查询模块包括第一数据查询子模块和/或第二数据查询子模块,其中,
[0022]第一数据查询子模块,用于接收应用方通过网络发送过来的UDP查询包,根据所述UDP查询包从所述第二共享内存中查找相应的数据,得到查询结果,并通过UDP包将所述查询结果返回给应用方;
[0023]第二数据查询子模块,用于接受应用方对自身的调用,根据应用方提供的查询条件从第二共享内存中查询相应的数据,生成查询结果并返回给所述应用方。
[0024]所述第二共享内存均包含索引段和数据段,所述索引段用于保存数据的版本信息和索引号;所述数据段用于保存数据,以及采用数据键值共享的数据压缩技术对所保存的数据进行压缩处理。
[0025]所述数据获取模块,用于向所述代理服务器发起数据获取请求,并在所述数据获取请求中指示请求获取最新版本的全量数据;以及,接收所述数据服务模块返回的全量数据,并将所述全量数据写入所述第二共享内存;
[0026]所述数据服务模块,用于根据所述指示请求获取最新版本全量数据的数据获取请求,从所述第一共享内存中查询最新版本的全量数据,并将所述全量数据返回给所述数据获取模块。
[0027]所述数据获取模块,用于向所述代理服务器发起数据获取请求,并在所述数据获取请求中携带需获取数据的索引号范围和需获取数据在第二共享内存中的版本信息;以及,接收所述数据服务模块返回的增量数据或全量数据,将所述全量数据直接写入所述第二共享内存,或将所述增量数据与第二共享内存中相应的全量数据合并,生成最新版本的全量数据,并将所述最新版本的全量数据写入所述第二共享内存;
[0028]所述数据服务模块,用于接收所述数据获取请求,查询所述数据获取请求的索引号范围中的数据在所述第一共享内存中的版本信息,判断所述数据获取请求中的版本信息与从第一共享内存查询到的版本信息之间的时间差是否大于预设的版本阈值,如果不是,则从所述第一共享内存中查询版本信息不低于所述数据获取请求中版本信息、且索引号在所述索引号范围中的增量数据,并返回给所述数据获取模块,如果是,则从所述第一共享内存中查询最新版本的全量数据并返回给所述数据获取模块。
[0029]所述代理服务器的数据服务模块,还用于向所述代理客户端发送指示强制更新数据的数据重置消息,通知所述代理客户端更新全量数据;以及,根据所述指示请求获取最新版本全量数据的数据获取请求,从所述第一共享内存中查询最新版本的全量数据,并将所述全量数据返回给所述代理客户端;
[0030]所述代理客户端的数据获取模块,还用于接收所述指示强制更新数据的数据重置消息,向所述代理服务器发起数据获取请求,并在所述数据获取请求中指示请求获取最新版本的全量数据;以及,接收所述代理服务器返回的全量数据,并将所述全量数据写入所述
第二共享内存。
[0031]所述数据为表示IP地址到地理信息之间映射关系的IP数据、或表示媒体访问介质MAC地址到地理信息之间映射关系的MAC数据、或表示手机号码到地理信息之间映射关系的手机号码数据、或GPS定位数据。
[0032]所述代理服务器与代理客户端之间通过通用数据请求(Ask)协议通信。
[0033]一种数据查询方法,所述数据查询方法通过如下的数据查询系统来实现;
[0034]所述数据查询系统包括:代理服务器和至少一个代理客户端,其中,
[0035]所述代理服务器设置于作为数据提供方的服务端,为所述代理客户端提供数据下发服务;
[0036]所述代理客户端设置于作为数据使用方的客户端,从代理服务器获取数据并保存,以及提供数据查询服务。
[0037]所述方法包括:代理客户端的数据获取模块向所述代理服务器发起用于获取指定数据的数据获取请求,接收所述代理服务器返回的指定数据,并将所述指定数据写入所述第二共享内存;代理客户端的数据查询模块从所述第二共享内存中查询应用方指定的数据并返回给所述应用方。
[0038]所述代理客户端的数据查询模块通过用户数据报协议UDP包查询方式和/或应用程序编程接口 API调用方式从所述第二共享内存中查询应用方指定的数据并返回给所述应用方。
[0039]所述数据查询模块接收应用方通过网络发送过来的UDP查询包,根据所述UDP查询包从所述第二共享内存中查找相应的数据,得到查询结果,并通过m)P包将所述查询结果返回给应用方;
[0040]和/或,所述数据查询模块接受应用方对自身的调用,根据应用方提供的查询条件从第二共享内存中查询相应的数据,生成查询结果并返回给所述应用方。
[0041]所述方法包括:代理服务器的数据下载模块从外部获取数据文件,并将所述数据文件中的数据写入第一共享内存;代理服务器的数据服务模块接收所述代理客户端发起的数据获取请求,根据所述数据获取请求从所述第一共享内存中查询指定的数据,并通过网络将所述指定的数据返回给所述代理客户端。
[0042]所述代理客户端的数据获取模块向所述代理服务器发起数据获取请求,并在所述数据获取请求中指示请求获取最新版本的全量数据;
[0043]所述代理服务器的数据服务模块根据所述指示请求获取最新版本全量数据的数据获取请求,从所述第一共享内存中查询最新版本的全量数据,并将所述全量数据返回给所述代理客户端;
[0044]所述代理客户端的数据获取模块接收所述代理服务器返回的全量数据,并将所述全量数据写入所述第二共享内存。[0045]所述代理客户端的数据获取模块向所述代理服务器发起数据获取请求,并在所述数据获取请求中携带需获取数据的索引号范围和需获取数据在第二共享内存中的版本信息;
[0046]所述代理服务器的数据服务模块接收所述数据获取请求,查询所述数据获取请求的索引号范围中的数据在所述第一共享内存中的版本信息,判断所述数据获取请求中的版本信息与从第一共享内存查询到的版本信息之间的时间差是否大于预设的版本阈值,如果不是,则从所述第一共享内存中查询版本信息不低于所述数据获取请求中版本信息、且索引号在所述索引号范围中的增量数据,并返回给所述数据获取模块,如果是,则从所述第一共享内存中查询最新版本的全量数据并返回给所述代理客户端;
[0047]所述代理客户端的数据获取模块接收所述代理服务器返回的增量数据或全量数据,将所述全量数据直接写入所述第二共享内存,或将所述增量数据与第二共享内存中相应的全量数据合并,生成最新版本的全量数据,并将所述最新版本的全量数据写入所述第二共享内存。
[0048]所述代理服务器的数据服务模块向所述代理客户端发送指示强制更新数据的数据重置消息,通知所述代理客户端更新全量数据;
[0049]所述代理客户端的数据获取模块接收所述指示强制更新数据的数据重置消息,向所述代理服务器发起数据获取请求,并在所述数据获取请求中指示请求获取最新版本的全量数据;
[0050]所述代理服务器的数据服务模块根据所述指示请求获取最新版本全量数据的数据获取请求,从所述第一共享内存中查询最新版本的全量数据,并将所述全量数据返回给所述代理客户端;
[0051]所述代理客户端的数据获取模块接收所述代理服务器返回的全量数据,并将所述全量数据写入所述第二共享内存。
[0052]所述数据为表示IP地址到地理信息之间映射关系的IP数据、或表示MAC地址到地理信息之间映射关系的MAC数据、或表示手机号码到地理信息之间映射关系的手机号码数据、或GPS数据。
[0053]本发明的数据查询系统及方法,在作为数据提供方设置代理服务器,在作为数据使用方的客户端设置至少一个代理客户端,代理服务器为所述代理客户端提供数据下发服务,所述代理客户端从代理服务器获取数据并保存,以及提供数据查询服务。本发明的数据查询系统只需要代理服务器和代理客户端,且代理客户端可以与代理服务器直接交互数据,不仅结构简单,而且数据更新快;本发明中,客户端的应用方需要查询数据时,只需要通过代理客户端查询本地保存的数据即可,因此,可以避免网络异常和网络带宽对数据查询的影响和数据传输过程中的带宽浪费,节省带宽资源,并能突破网络带宽的瓶颈限制;而且,不需要在应用方再开发新的查询服务工具,部署成本低;本发明中代理服务器和代理客户端之间可以交互海量数据,服务性能高。
[0054]此外,本发明的数据查询系统还具备数据回滚功能,能够在数据发生错误时及时更新客户端的数据,避免应用方查询和应用错误的数据。
【专利附图】

【附图说明】[0055]图1为现有技术中IP数据查询的网络结构示意图;
[0056]图2为本发明数据查询系统的组成结构示意图;
[0057]图3为本发明数据查询系统的具体组成结构示意图;
[0058]图4为本发明数据查询方法的流程图;
[0059]图5为本发明查询方法应用于IP数据查询的实现过程的流程图。
【具体实施方式】
[0060]本发明的基本思想是:提供一种数据查询系统,该系统包括代理服务器和至少一个代理客户端,代理服务器位于作为提供方的服务器端,用于提供数据下发等服务,代理客户端位于作为应用方的客户端侧,用于向代理服务器获取指定数据并向应用方提供数据查询服务。
[0061]本发明的一种数据查询系统,其组成结构如图2所示,主要可以包括:代理服务器和至少一个代理客户端,所述代理服务器设置于作为数据提供方的服务端,用于为所述代理客户端提供数据下发服务;所述代理客户端设置于作为数据使用方的客户端,用于从代理服务器获取数据并保存,以及提供数据查询服务。这里,所述代理服务器与代理客户端之间通过通用数据请求(Ask)协议交互数据。
[0062]具体地,如图3所示,所述代理服务器可以包括:数据下载(load_data)模块、数据服务模块和第一共享内存,所述数据下载模块用于从外部(如IP数据计算系统等能够得到数据文件的数据计算系统)获取数据文件,并将所述数据文件中的数据写入所述第一共享内存,所述第一共享内存用于存储所述数据下载模块写入的数据,并供所述数据服务模块查询;数据服务模块用于接收代理客户端发起的数据获取请求,并根据所述数据获取请求从所述第一共享内存中读取指定的数据,再通过网络将所述指定的数据发送给代理客户端。
[0063]其中,第一共享内存包含索引段和数据段两部分,所述索引段用于保存数据的版本信息和索引号(Seq),所述数据段用于保存数据。这里,数据下载模块从数据计算系统获取到数据文件后,根据所述数据文件的版本信息和索引号(Seq)改写第一共享内存中的索引段,并将所述数据文件中的数据写入到所述第一共享内存的数据段中。
[0064]实际应用中,数据下载模块可以主动从数据计算系统中读取数据文件,或者可以由数据计算系统主动下发数据文件给数据下载模块。
[0065]具体地,如图3所示,所述代理客户端可以包括:数据查询模块、数据获取模块和第二共享内存,其中,数据获取模块用于向所述代理服务器发起用于获取指定数据的数据获取请求,接收所述代理服务器返回的指定数据,并将所述指定数据写入所述第二共享内存;数据查询模块,用于从所述第二共享内存中查询应用方指定的数据并返回给所述应用方;所述第二共享内存,用于存储所述数据获取模块写入的数据,并供所述数据查询模块查询。
[0066]这里,所述第二共享内存与所述第一共享内存相同,也包含索引段和数据段两部分,索引段用于保存数据的版本信息和索引号,数据段用于保存数据。第二共享内存还可以通过数据键值共享的数据压缩技术对所保存的数据进行压缩处理,例如,对于IP数据,可以将对应同一地理信息的多条IP数据合并为一个IP段,如果IPl、IP2、IP3连续的且对应相同的地理信息则可以合并为一条IP1_IP3的IP段;对于地理信息,可以通过将地理信息ID化保存,例如,中国可以保存为代码“1”,美国可以保存代码“2”等。这样,压缩后,数据量可以压缩至原始数据的10%,不仅能够降低对客户端内存的使用成本,而且能够实现海量数据在客户端的存储。这里,数据获取模块将指定数据写入到所述第二共享内存的过程可以包括:根据所述指定数据的版本信息和索引号改写第二共享内存中的索引段,并将所述指定数据写入到所述第二共享内存的数据段中。
[0067]这里,所述数据获取模块与所述数据服务模块可以通过Ask协议交互数据。这里,Ask协议是基于用户数据报协议(UDP,User Datagram Protocol)的应用层私有协议,用于数据请求,主要分重置(reset)、请求(ask)、数据(data)三种包,Reset用来强制客户端获取指定版本的数据,ask用来说明客户端请求的数据版本和索引号,Data是服务端下发的具体数据,客户端和服务端之间的心跳通过ask包进行。实际应用中,数据获取模块可以在线模式和离线模式下工作,具体地,数据获取模块通过一次心跳联系从数据服务模块获取数据之后,保持为在线模块,通过Ask协议定时与数据服务模块之间进行心跳联系,通过该心跳联系定时从数据服务模块获取最新版本的数据;数据获取模块通过一次心跳联系从数据服务模块获取数据之后,置为离线模式,不再与数据服务模块保持心跳联系,在需要时调整为在线模块再从数据服务模块获取数据。
[0068]实际应用中,如果是第一次获取数据,则数据获取模块向所述代理服务器发起数据获取请求,并在所述数据获取请求中指示请求获取最新版本的全量数据;以及,接收所述数据服务模块返回的全量数据,并将所述全量数据写入所述第二共享内存;相应的,数据服务模块根据所述指示请求获取最新版本全量数据的数据获取请求,从所述第一共享内存中查询最新版本的全量数据,并将所述全量数据返回给所述数据获取模块;
[0069]如果是第二次获取数据,则数据获取模块向所述代理服务器发起数据获取请求,并在所述数据获取请求中携带需获取数据的索引号范围和需获取数据在第二共享内存中的版本信息;以及,接收所述数据服务模块返回的增量数据或全量数据,将所述增量数据与所述第二共享内存中相应的全量数据合并(这里的相应全量数据为数据获取模块所携带版本信息对应的全量数据),生成最新版本的全量数据,再将所述最新版本的全量数据写入到第二共享内存中,对于全量数据,或者可以直接将所述数据服务模块返回的全量数据写入到第二共享内存中;相应的,数据服务模块接收所述数据获取请求,查询所述数据获取请求的索引号范围中的数据在所述第一共享内存中的版本信息,判断所述数据获取请求中的版本信息与从第一共享内存查询到的版本信息之间的时间差是否大于预设的版本阈值,如果不是,则从所述第一共享内存中查询版本信息不低于所述数据获取请求中版本信息、且索引号在所述索引号范围中的增量数据,并返回给所述数据获取模块,如果是,则从所述第一共享内存中查询最新版本的全量数据并返回给所述数据获取模块。例如,如果数据服务模块判断所述数据获取请求中的版本信息与本地最新的版本信息之间的时间差超过一个月,则查询最新版本的全量数据并返回给所述数据获取模块,如果数据服务模块判断所述数据获取请求中的版本信息与本地最新的版本信息之间的时间差不超过一个月,则查询版本信息不低于所述数据获取请求中版本信息的增量数据并返回给所述数据获取模块。其中,增量数据表示更新前的全量数据与更新后的全量数据相比所变化的数据。
[0070]这里,本发明还可以实现强制数据回滚。具体地,在数据提供方发现数据有错误时,由代理服务器的数据服务模块向所述代理客户端发送指示强制更新数据的数据重置消息(reset消息),通知所述代理客户端更新全量数据;所述代理客户端的数据获取模块接收所述指示强制更新数据的数据重置消息,向所述代理服务器发起数据获取请求,并在所述数据获取请求中指示请求获取最新版本的全量数据;然后,代理服务器的数据服务模块再根据所述指示请求获取最新版本全量数据的数据获取请求,从所述第一共享内存中查询最新版本的全量数据,并将所述全量数据返回给所述代理客户端;最后,代理客户端的数据获取模块接收所述代理服务器返回的全量数据,并将所述全量数据写入所述第二共享内存。如此,在发现数据错误(如数据计算系统发生错误或者传输了错误数据)时,可以及时进行数据的全量回滚,从而立即恢复客户端的数据到最新版本的全量数据,避免应用方查询和使用了错误的数据。其中,所述指示强制更新数据的数据重置消息中可以包含需更新数据的版本信息和索引号范围。
[0071]具体地,数据查询模块具体用于通过UDP包查询方式或API调用方式从第二共享内存中查询应用方指定的数据并返回给应用方。这样,通过客户端本地的内存访问,就能实现数据查询,能够突破网络带宽的瓶颈限制,数据查询能力也能够提高一个数量级,并且当客户端与服务端之间的网络不可用时,客户端依然能够正常获取稳定高效的查询服务。
[0072]这里,所述数据查询模块可以包括第一数据查询子模块和/或第二数据查询子模块,第一数据查询子模块用于向应用方提供UDP包查询服务,即接收应用方通过网络发送过来的m)P查询包(如查询IP包),并根据所述查询包从所述第二共享内存中查找相应的数据(如包含IP地址和地理信息之间映射关系的IP数据),得到查询结果,并通过UDP包将所述查询结果返回给应用方;第二数据查询子模块,用于向应用方提供应用程序编程接口(API)调用的查询服务,即接受应用方对自身的调用,根据应用方提供的查询条件从第二共享内存中查询相应的数据,生成查询结果并返回给所述应用方。
[0073]实际应用中,第二数据查询子模块具体可以是一个用于向第二共享内存查询指定数据的API函数,应用方可以在代码中调用该API函数,来查询所需数据,这样可以为应用方提供高频、低延时的数据访问,效率比传统的网络模式高一个量级。
[0074]实际应用中,所述代理服务器可以是安装在服务端一台硬件设备(如服务器)上的软件,所述代理客户端是安装在客户端一台硬件设备(如服务器、PC机等)上的软件,在客户端的应用方需要数据查询服务时,只需要在客户端上安装所述代理客户端,便能够与服务端交互数据获取数据并进行数据查询。
[0075]相应的,本发明还提供了一种通过上述数据查询系统实现的数据查询方法,如图4所示,所述方法主要可以包括如下步骤:
[0076]步骤401:代理客户端的数据获取模块向代理服务器发起用于获取指定数据的数据获取请求,接收所述代理服务器返回的指定数据,并将所述指定数据写入所述第二共享内存;
[0077]步骤402:代理客户端的数据查询模块从所述第二共享内存中查询应用方指定的数据并返回给所述应用方。
[0078]在步骤401之前,所述方法还可以包括:代理服务器的数据下载模块从外部获取数据文件,并将所述数据文件中的数据写入第一共享内存;代理服务器的数据服务模块接收所述代理客户端发起的数据获取请求,根据所述数据获取请求从所述第一共享内存中查询指定的数据,并通过网络将所述指定的数据返回给所述代理客户端。
[0079]如图5所示,通过本发明的数据查询系统,实现IP数据(即IP地址到地理信息的映射数据)查询的过程具体可以包括如下步骤:
[0080]步骤501:代理服务器的数据下载模块从外部的IP数据计算系统中获取到数据文件,并将所述数据文件中的数据写入第一共享内存;
[0081]具体地,IP数据计算系统计算得到包含有IP数据的数据文件后,代理服务器的数据下载模块访问所述IP数据计算系统,从所述IP数据计算系统中获取所述数据文件,并将所述数据文件中的IP数据写入到所述第一共享内存的数据段区域中,将所述数据文件的版本信息和各IP数据的索引号写入所述第一共享内存的索引段区域中。
[0082]步骤502:代理客户端的数据获取模块向所述代理服务器发起数据获取请求,请求获取指定的数据;
[0083]具体地,如果代理客户端是第一次请求获取数据,则所述数据获取请求指示请求获取指定索引号范围内的全量数据;如果代理客户端不是第一次请求获取数据,则向所述代理服务器发起的数据获取请求中携带需获取数据的索引号范围和版本信息。
[0084]步骤503:代理服务器的数据服务模块接收所述数据获取请求,从所述第一共享内存中查询所述数据获取请求所指定的IP数据,读取查询到的IP数据并通过网络返回给所述代理客户端;
[0085]具体地,如果所述数据获取请求指示请求获取指定索引号范围内的全量IP数据,则数据服务模块从所述第一共享内存中查询指定索引号范围内的最新版本全量IP数据,读取所述最新版本全量IP数据并返回给所述代理客户端;如果所述数据获取请求中携带需获取IP数据的索引号范围和版本信息,则数据服务模块需获取IP数据的索引号范围从第一共享内存中查询到相应的版本信息,判断所述数据获取请求中的版本信息和查询到的版本信息之间的时间差是否在预设的版本阈值内,如果是,数据服务模块从所述第一共享内存中查询版本信息不低于所述数据获取请求中版本信息、且索引号在所述索引号范围中的增量IP数据,读取查询到的增量IP数据并返回给所述代理客户端,如果不是,则从所述第一共享内存中查询所述数据获取请求中索引号范围内最新版本的全量IP数据,读取查询到的全量IP数据并返回给所述代理客户端。
[0086]步骤504:代理客户端的数据获取模块接收所述代理服务器返回的IP数据,并将所述IP数据写入第二共享内存;
[0087]具体地,代理客户端的数据获取模块将所述IP数据写入到所述第二共享内存的数据段区域中,将所述IP数据的版本信息和索引号写入所述第二共享内存的索引段区域中。
[0088]这里,如果代理服务器返回的是全量IP数据,则代理客户端直接将所述全量IP数据写入到第二共享内存中,并更新其版本信息和索引号;如果代理服务器返回的是增量IP数据,则代理客户端将所述增量IP数据与第二共享内存中相应的全量IP数据合并,生成最新版本的全量IP数据,再将该全量IP数据写入到第二共享内存中,并更新其版本信息和索引号。
[0089]步骤505:代理客户端的数据查询模块接收应用方发起的查询请求,根据所述查询请求从第二共享内存中查询相应的IP数据,读取查询到的IP数据并将所述IP数据返回给所述应用方。
[0090]具体地,代理客户端的数据查询模块接收应用方发起的查询请求,通过UDP包查询方式和/或应用程序编程接口 API调用方式从所述第二共享内存中查询应用方指定的数据并返回给所述应用方。
[0091]在接收到应用方通过网络发送过来的UDP查询包时,根据所述UDP查询包从所述第二共享内存中查找相应的IP数据,得到包含有所查询到IP数据的查询结果,并通过m)P包将所述查询结果返回给应用方。
[0092]应用方在代码中输入查询条件(即查询请求后),接受应用方对自身的调用,根据应用方提供的查询条件从第二共享内存中查询相应的IP数据,生成包含有所查询到IP数据的查询结果并返回给所述应用方。
[0093]这里,如果发现错误数据,在上述IP数据的查询流程中还可以包括如下数据回滚的流程,具体可以包括如下步骤(未在图5中示出):
[0094]步骤al:所述代理服务器的数据服务模块向所述代理客户端发送指示强制更新数据的数据重置消息,通知所述代理客户端更新全量数据;
[0095]步骤a2:所述代理客户端的数据获取模块接收所述指示强制更新数据的数据重置消息,向所述代理服务器发起数据获取请求,并在所述数据获取请求中指示请求获取最新版本的全量数据;
[0096]步骤a3:所述代理服务器的数据服务模块根据所述指示请求获取最新版本全量数据的数据获取请求,从所述第一共享内存中查询最新版本的全量数据,读取所述全量数据并将所述全量数据返回给所述代理客户端;
[0097]步骤a4:所述代理客户端的数据获取模块接收所述代理服务器返回的全量数据,并将所述全量数据写入所述第二共享内存。
[0098]需要说明的是,本发明的上述数据查询系统及数据查询方法可以应用于媒体接入控制(MAC,Media Access Control)数据(表示MAC地址到地理信息之间映射关系)、全球定位系统(GPS, Global Positioning System)数据和手机号码数据(表示手机号码到地理信息之间映射关系)等数据查询中,例如,可以应用于GPS定位、手机归属地查询等业务中。
[0099]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
【权利要求】
1.一种数据查询系统,其特征在于,所述系统包括:代理服务器和至少一个代理客户端,其中, 所述代理服务器设置于作为数据提供方的服务端,用于为所述代理客户端提供数据下发服务; 所述代理客户端设置于作为数据使用方的客户端,用于从代理服务器获取数据并保存,以及提供数据查询服务。
2.根据权利要求1所述的数据查询系统,其特征在于,所述代理服务器包括:数据下载模块、数据服务模块和第一共享内存;其中, 数据下载模块, 用于从外部获取数据文件,并将所述数据文件中的数据写入所述第一共享内存; 所述数据服务模块,用于接收所述代理客户端发起的数据获取请求,根据所述数据获取请求从所述第一共享内存中查询指定的数据,并通过网络将所述指定的数据返回给所述代理客户端; 所述第一共享内存,用于存储所述数据下载模块写入的数据,并供所述数据服务模块查询。
3.根据权利要求1所述的数据查询系统,其特征在于,所述代理客户端包括:数据获取模块、数据查询模块和第二共享内存;其中, 数据获取模块,用于向所述代理服务器发起用于获取指定数据的数据获取请求,接收所述代理服务器返回的指定数据,并将所述指定数据写入所述第二共享内存; 数据查询模块,用于从所述第二共享内存中查询应用方指定的数据并返回给所述应用方; 所述第二共享内存,用于存储所述数据获取模块写入的数据,并供所述数据查询模块查询。
4.根据权利要求3所述的数据查询系统,其特征在于,所述数据查询模块,用于通过用户数据报协议UDP包查询方式和/或应用程序编程接口 API调用方式从所述第二共享内存中查询应用方指定的数据并返回给所述应用方。
5.根据权利要求4所述的数据查询系统,其特征在于,所述数据查询模块包括第一数据查询子模块和/或第二数据查询子模块,其中, 第一数据查询子模块,用于接收应用方通过网络发送过来的UDP查询包,根据所述UDP查询包从所述第二共享内存中查找相应的数据,得到查询结果,并通过m)P包将所述查询结果返回给应用方; 第二数据查询子模块,用于接受应用方对自身的调用,根据应用方提供的查询条件从第二共享内存中查询相应的数据,生成查询结果并返回给所述应用方。
6.根据权利要求2或3所述的数据查询系统,其特征在于,所述第二共享内存均包含索引段和数据段,所述索引段用于保存数据的版本信息和索引号;所述数据段用于保存数据,以及采用数据键值共享的数据压缩技术对所保存的数据进行压缩处理。
7.根据权利要求6所述的数据查询系统,其特征在于, 所述数据获取模块,用于向所述代理服务器发起数据获取请求,并在所述数据获取请求中指示请求获取最新版本的全量数据;以及,接收所述数据服务模块返回的全量数据,并将所述全量数据写入所述第二共享内存; 所述数据服务模块,用于根据所述指示请求获取最新版本全量数据的数据获取请求,从所述第一共享内存中查询最新版本的全量数据,并将所述全量数据返回给所述数据获取模块。
8.根据权利要求6所述的数据查询系统,其特征在于, 所述数据获取模块,用于向所述代理服务器发起数据获取请求,并在所述数据获取请求中携带需获取数据的索引号范围和需获取数据在第二共享内存中的版本信息;以及,接收所述数据服务模块返回的增量数据或全量数据,将所述全量数据直接写入所述第二共享内存,或将所述增量数据与第二共享内存中相应的全量数据合并,生成最新版本的全量数据,并将所述最新版本的全量数据写入所述第二共享内存; 所述数据服务模块,用于接收所述数据获取请求,查询所述数据获取请求的索引号范围中的数据在所述第一共享内存中的版本信息,判断所述数据获取请求中的版本信息与从第一共享内存查询到的版本信息之间的时间差是否大于预设的版本阈值,如果不是,则从所述第一共享内存中查询版本信息不低于所述数据获取请求中版本信息、且索引号在所述索引号范围中的增量数据,并返回给所述数据获取模块,如果是,则从所述第一共享内存中查询最新版本的全量数据并返回给所述数据获取模块。
9.根据权利要求6所述的数据查询系统,其特征在于, 所述代理服务器的数据服务模块,还用于向所述代理客户端发送指示强制更新数据的数据重置消息,通知所述代理客户端更新全量数据;以及,根据所述指示请求获取最新版本全量数据的数据获取请求,从所述第一共享内存中查询最新版本的全量数据,并将所述全量数据返回给所述代理客户端; 所述代理客户端的数据获取模块,还用于接收所述指示强制更新数据的数据重置消息,向所述代理服务器发起数据获取请求,并在所述数据获取请求中指示请求获取最新版本的全量数据;以及,接收所述代理`服务器返回的全量数据,并将所述全量数据写入所述第二共享内存。
10.根据权利要求1至5任一项所述的数据查询系统,其特征在于,所述数据为表示IP地址到地理信息之间映射关系的IP数据、或表示媒体访问介质MAC地址到地理信息之间映射关系的MAC数据、或表示手机号码到地理信息之间映射关系的手机号码数据、或GPS定位数据。
11.根据权利要求1至5任一项所述的数据查询系统,其特征在于,所述代理服务器与代理客户端之间通过通用数据请求(Ask)协议通信。
12.—种数据查询方法,其特征在于,所述数据查询方法通过如下的数据查询系统来实现; 所述数据查询系统包括:代理服务器和至少一个代理客户端,其中, 所述代理服务器设置于作为数据提供方的服务端,为所述代理客户端提供数据下发服务; 所述代理客户端设置于作为数据使用方的客户端,从代理服务器获取数据并保存,以及提供数据查询服务。
13.根据权利要求12所述的数据查询方法,其特征在于,所述方法包括:代理客户端的数据获取模块向所述代理服务器发起用于获取指定数据的数据获取请求,接收所述代理服务器返回的指定数据,并将所述指定数据写入所述第二共享内存; 代理客户端的数据查询模块从所述第二共享内存中查询应用方指定的数据并返回给所述应用方。
14.根据权利要求13所述的数据查询方法,其特征在于,所述代理客户端的数据查询模块通过用户数据报协议UDP包查询方式和/或应用程序编程接口 API调用方式从所述第二共享内存中查询应用方指定的数据并返回给所述应用方。
15.根据权利要求14所述的数据查询方法,其特征在于, 所述数据查询模块接收应用方通过网络发送过来的UDP查询包,根据所述UDP查询包从所述第二共享内存中查找相应的数据,得到查询结果,并通过UDP包将所述查询结果返回给应用方; 和/或,所述数据查询模块接受应用方对自身的调用,根据应用方提供的查询条件从第二共享内存中查询相应的数据,生成查询结果并返回给所述应用方。
16.根据权利要求12所述的数据查询方法,其特征在于,所述方法包括: 代理服务器的数据 下载模块从外部获取数据文件,并将所述数据文件中的数据写入第一共享内存; 代理服务器的数据服务模块接收所述代理客户端发起的数据获取请求,根据所述数据获取请求从所述第一共享内存中查询指定的数据,并通过网络将所述指定的数据返回给所述代理客户端。
17.根据权利要求12至16任一项所述的数据查询方法,其特征在于, 所述代理客户端的数据获取模块向所述代理服务器发起数据获取请求,并在所述数据获取请求中指示请求获取最新版本的全量数据; 所述代理服务器的数据服务模块根据所述指示请求获取最新版本全量数据的数据获取请求,从所述第一共享内存中查询最新版本的全量数据,并将所述全量数据返回给所述代理客户端; 所述代理客户端的数据获取模块接收所述代理服务器返回的全量数据,并将所述全量数据写入所述第二共享内存。
18.根据权利要求12至16任一项所述的数据查询方法,其特征在于, 所述代理客户端的数据获取模块向所述代理服务器发起数据获取请求,并在所述数据获取请求中携带需获取数据的索引号范围和需获取数据在第二共享内存中的版本信息; 所述代理服务器的数据服务模块接收所述数据获取请求,查询所述数据获取请求的索引号范围中的数据在所述第一共享内存中的版本信息,判断所述数据获取请求中的版本信息与从第一共享内存查询到的版本信息之间的时间差是否大于预设的版本阈值,如果不是,则从所述第一共享内存中查询版本信息不低于所述数据获取请求中版本信息、且索引号在所述索引号范围中的增量数据,并返回给所述数据获取模块,如果是,则从所述第一共享内存中查询最新版本的全量数据并返回给所述代理客户端; 所述代理客户端的数据获取模块接收所述代理服务器返回的增量数据或全量数据,将所述全量数据直接写入所述第二共享内存,或将所述增量数据与第二共享内存中相应的全量数据合并,生成最新版本的全量数据,并将所述最新版本的全量数据写入所述第二共享内存。
19.根据权利要求12至16任一项所述的数据查询方法,其特征在于, 所述代理服务器的数据服务模块向所述代理客户端发送指示强制更新数据的数据重置消息,通知所述代理客户端更新全量数据; 所述代理客户端的数据获取模块接收所述指示强制更新数据的数据重置消息,向所述代理服务器发起数据获取请求,并在所述数据获取请求中指示请求获取最新版本的全量数据; 所述代理服务器的数据服务模块根据所述指示请求获取最新版本全量数据的数据获取请求,从所述第一共享内存中查询最新版本的全量数据,并将所述全量数据返回给所述代理客户端; 所述代理客户端的数据获取模块接收所述代理服务器返回的全量数据,并将所述全量数据写入所述第二共享内存。
20.根据权利要求12至16任一项所述的数据查询方法,其特征在于, 所述数据为表示IP地址到地理信息之间映射关系的IP数据、或表示MAC地址到地理信息之间映射关系的MAC数据、或表示手机号码到地理信息之间映射关系的手机号码数据、或GPS数据。`
【文档编号】G06F17/30GK103731447SQ201210384514
【公开日】2014年4月16日 申请日期:2012年10月11日 优先权日:2012年10月11日
【发明者】聂晶, 胡勇, 贺鹏, 黄敏豪 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1