POI数据存储

  POI数据存储是指在整个数据处理过程产生的结果数据和中间数据的记录和存储,在这个过程中不同的数据存储的目的也不尽相同。

  为了描述方便,我们这里将数据接入的poI称为pp,融合后产生的结果称为poi

  按照目的不同,我们将数据存储分为若干类:

  1. 数据输出:计算流程的结果,也就是POI数据,是最重要的数据。

  2. 数据计算:计算流程的中间结果,例如每个已接入的pp数据的规范化输出(我们输出的POI是若干判定为相同pp融合产生的POI,那么每个接入pp规范化的结果在每次融合的时候都会用到)

  3. 历史追踪:或者说问题排查或者数据变更分析,历史POI的历史是如何变更的,如在高德地图搜索古北水镇,返回结果包含了古北水镇的位置,电话,售票信息以及评论,这些数据可能来自多个数据源,我们假设古北水镇的位置信息来源于高德自己的数据生产,售票信息来自飞猪等平台数据,评论来自大众点评等平台,而这三个源的pp分别接入,那么该poi的数据就会由最开始的基础信息,逐步增加售票信息和评论信息,该数据与关联的原始poi数据是对应的,以此来发现分析问题。

  不同目的的数据,可能存储的数据是相同的,例如poi,数据输出给用户或者业务方的融合后结果数据,而此数据在数据计算过程中也会用到,在历史追踪过程中对poi的变化也就是记录每次poi融合的结果数据。对于数据输出根据输出方式不同,存储方式也会不同,如用户需要实时查询那么比较适合的方式应该是kv数据库,当然关系型数据库满足性能情况下也是可以的,但是当数据需要批量输出时候,尤其是涉及到全国poi数据时候(当期高德、百度地图、腾讯地图的poi总量均达到7千万左右)数据库显然不能满足需求,这个时候最好通过hive进行数据输出;而历史关系数据因为需要根据id查询多个历史版本,这时候比较好的方式应该是hbase或者高性价比的kv数据库。

  在这个过程中,数据输出和数据计算是必须满足稳定且高效的性能要求,是最紧迫的需求,相反的历史追踪功能,不会影响当前线上服务,不那么紧迫,而其数据存储量远远超过1,2需求,因此可以牺牲部分性能要求去实现。

上一篇:双端红包扫雷系统开发新模式源码出售


下一篇:【2020HBU天梯赛训练】7-33 抢红包