一次线上应用使用单机mongodb升级为分片mongodb过程记录

近期在巡检线上环境mongodb服务时,发现有个400G容量的mongodb,使用容量超过200%,与DBA沟通,数据量快上TB,副本集数据量太大,节点宕机,维护比较麻烦,建议升级为分片mongodb。

应用使用mongodb的场景是接收广告点击数据存储到mongodb保留30天。之后有转化数据会匹配归因查询存储到mongodb的点击数据。

文档存储结构为:android_id,imei,oaid,idfa,caid,parter_code(媒体类型),ts(点击时间),ip等
写入数据:
安卓设备:android_id,imei,oaid,idfa,caid,parter_code(媒体类型),ts(点击时间),ip等,
iphone设备:idfa,caid,parter_code(媒体类型),ts(点击时间),ip等
查询数据
安卓:根据android_id,imei,oaid匹配查询点击数据
iphone:根据idfa(可能为多个)匹配查询点击数据

在转为分片mongodb集群时,发现因存在多条件查询,分片键难以确定。最终决定将单表拆分为索引表和内容表(缺点:数据存在冗余)
索引表:device_id,内容表的id(当安卓设备同时有android_id和imei时,存储为两条记录)
内容表:id,android,imei,oaid,idfa,caid,parter_code(媒体类型),ts(点击时间),ip等

写入数据:
先写入点击内容表,在写入索引表
查询数据:
先查询索引表得到内容表id,在根据内容表id查询得到点击内容

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容