酒店的数据库的更新方法和更新系统的制作方法_2

文档序号:9597954阅读:来源:国知局
包 括每一酒店内的每一房型在所述第一 0ΤΑ上和所述第二0ΤΑ上对应的第一状态和第二状态 之间的对应关系;
[0044] 所述ID对比模块用于将当前时刻的所述匹配关系数据表的主键ID全量存储到集 合A中,并与缓存中存储的所述匹配关系数据表的主键ID对比;
[0045] 所述匹配关系数据缓存模块用于将不同的主键ID对应的匹配关系数据更新至所 述缓存中。
[0046] 较佳地,所述匹配关系数据缓存模块还用于将缓存中存储有但当前时刻集合A未 存储的主键ID所对应匹配关系数据从所述缓存中删除,将缓存中未存储有但当前时刻集 合A存储的主键ID所对应匹配关系数据增加至所述缓存中。
[0047] 本发明的积极进步效果在于:本发明以多线程的方式并行执行,能够避免产生对 比任务的积压,缩短了对比任务的执行时长,能够保持实时的对比速度以及时更新房态对 比数据,且仅对状态产生变化的酒店内的房型在数据库里更新,减少了对数据库的10消 耗。
【附图说明】
[0048] 图1为本发明实施例1在硬件配置上的结构示意图。
[0049] 图2为本发明实施例1的酒店的数据库的更新方法流程图。
[0050] 图3为本发明实施例2中分布式缓存的形成方法的流程图。
[0051] 图4为本发明实施例3的酒店的数据库的更新方法流程图。
[0052] 图5为本发明实施例4的酒店的数据库的更新系统采用实施例1的更新方法的结 构示意图。
[0053] 图6为本发明实施例4的酒店的数据库的更新系统采用实施例2的更新方法的结 构示意图。
[0054] 图7为本发明实施例4的酒店的数据库的更新系统采用实施例3的更新方法的结 构示意图。
【具体实施方式】
[0055] 下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实 施例范围之中。
[0056] 实施例1
[0057] 本实施例提供一种酒店的数据库的更新方法,所述更新方法以多线程方式执行, 每一酒店的房态在一第一 0ΤΑ上的状态为第一状态,每一酒店的房态在一第二0ΤΑ上的状 态为第二状态,所述第一状态和所述第二状态均包括酒店内的房型的数量、酒店内的房型 的价格和酒店内的房型的服务,针对酒店内的房型的价格,可做更细的划分,如包括最低 价,最高价,预付的价格或现付的价格等,本实施例仅以一个价格做举例说明。
[0058] 本实施例的房型的服务包括酒店内的住房是否提供早餐,酒店内的住房是否赠送 礼盒,酒店内的住房的支付类型是否支持到店付款,而酒店内的房型的服务可针对所有房 型所附带的服务,也可针对某一房型所附带的服务,本实施例以所有房型所附带的服务举 例。
[0059] 以一酒店和一日期作为一个对比任务,该日期可为具体某一天,也可为某一天的 具体时间点,所述对比任务的数量为N,N大于或等于1,本实施例的N取为10000。本实施 例的多个对比任务是以多个酒店内的住房在一个日期内的状态的数据对比,而10000家酒 店可以是相同名称的酒店位于不同的地理位置,也可以是不同名称的酒店位于不同的地理 位置,所形成的总的酒店数量。
[0060] 在硬件上的配置可为:四台服务器,分别以Serverl,Server2,Server3,Server4 表示,Serverl至Server4上总共执行10000家酒店内的住房的状态数据的对比。Serverl 上执行的2500个对比任务表示为T1-T2500, Server2上执行的2500个对比任务表示为 T2501-T5000, Server3 执行的 2500 个对比任务表示为 T5001-T7500, Server4 执行的 2500 个对比任务表示为T7500-T10000。如图1所示,10000个对比任务进入对比任务队列,并 通过任务调度器调度分配至各服务器以多线程方式执行,Serverl,Serverf,Served和 Server4构成服务器集群,Serverl,Server2,Server3,Server4执行并行加载、判断的操 作,并将结果提交至数据库中。
[0061 ] 以其中一酒店名称为布丁酒店为例,该酒店内的房型包括单床房(用B1表示)、大 床房(用B2表示)和标准房(用B3表示)三个房型,本实施例的第一 0ΤΑ以携程网为例, 第二0ΤΑ以去哪儿网为例,以布丁酒店在携程网上日期为2015-10-20售卖的住房的状态为 第一状态,以布丁酒店在去哪儿网上日期为2015-10-20售卖的住房的状态为第二状态。
[0062] 如图2所示,所述更新方法包括:
[0063] 步骤101、并行加载N个对比任务内的每一酒店在所述日期中的第一状态和第二 状态,并将N个对比任务内的每一酒店在所述日期中的第一状态和第二状态作为一房态对 比数据;
[0064] 具体地,从分布式缓存中并行加载10000个对比任务内的每一酒店在所述日期中 的第一状态,从爬虫数据库中并行加载10000个对比任务内的每一酒店在所述日期中的第 二状态;也即,将Serverl,Server2, Server3和Server4上各自分配的2500个对比任务分 别拆分成25组数据,每组负责100个酒店的数据的加载,开启多个线程来并行加载各自分 配的25组数据,线程数的多少可通过参数进行配置。
[0065] 其中,分布式缓存是指由一个服务端实现管理和控制,由多个客户端节点存储数 据,可以进一步提高数据的读取速率。通过将数据源存储至分布式缓存中,在读取数据时直 接读取分布式缓存中的数据,一方面减少了读取存储数据源的数据库的次数,另一方面,也 提高了读取数据源的速度。而爬虫数据库是通过爬虫的方式从网页上抓取数据,并将抓取 到的数据存储至数据库中而形成的数据库,为了保证对比数据的及时性和准确性,本实施 例可定时或周期性地抓取去哪儿网上的数据以作对比。
[0066] 将每一酒店的第一状态和第二状态存储至本地,并将10000个对比任务内的每 一酒店在所述日期中的第一状态和第二状态作为房态对比数据。针对布丁酒店在日期为 2015-10-20的房态对比数据如表1所示:
[0067] 表1布丁酒店在携程网和去哪儿网上的房态对比数据
[0069] 则本实施例将会加载10000条如表1所示的房态对比数据。而为了使得房态对比 数据及时更新,在日期为2015-10-20中取多个时刻点来监测房态对比数据的更新,以保证 一天中的房态对比数据是及时有效的。因此,假设表1中加载的数据是2015-10-20号上午 7:00时加载的数据。
[0070] 步骤102、并行判断所述房态对比数据是否与一数据库中存储的房态对比数据不 同,并在所述第一状态发生变化,和/或,所述第二状态发生变化时执行步骤103 ;
[0071] 同理,将Serverl,Server2, Server3和Server4上各自分配的2500个对比任务分 别拆分成25组数据,每组负责100个酒店的数据的加载,开启多个线程来并行判断各自分 配的25组数据。其中,第一状态的变化可为携程网内部对布丁酒店内的住房的售卖信息做 的调整,第二状态的变化可为去哪儿网内部对布丁酒店内的住房的售卖信息做的调整,第 一状态和第二状态的变化还可为布丁酒店的官方网站上的住房的售卖信息的变化而推送 至第一 0ΤΑ(即携程网)和第二0ΤΑ(即去哪儿网)上所产生的变化。
[0072] 假设该数据库中刚开始存储的内容为空,则上午7:00中加载的10000条房态对比 数据会直接写入所述数据库中。之后,在下午19:00时再监测一次房态对比数据,由于布丁 酒店官网推送的酒店的信息取消了单床房(即B1)的售卖,同时增加了房型为商务房(用 B4表示)的售卖,价格为400,而去哪儿网内部调整了布丁酒店的大床房(即B2)的价格, 调整为500。因此,针对布丁酒店在日期为2015-10-20下午19:00时的房态对比数据如表 2所示:
[0073] 表2布丁酒店在2015-10-20下午19:00时携程网和去哪儿网形成的房态对比数 据
[0075] 与所述数据库中存储的房态对比数据进行对比时,可将数据库中存储的上一次更 新了的房态对比数据也加载到本地中,以在本地进行对比,并仅将异同数据在数据库里更 新,以进一步减少对原有数据库的10消耗。对于一个房态对比数据的异同判断,则为表2的 数据与表1的房态对比数据进行对比,而本实施例中执行的1000条房态对比数据的对比, 则是通过不断拆分的多个线程来并行对比的。在对比后,发现在房型的数量上,下午19:00 时的房型为82,83,84,82的价格在第二0^上
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1