近期在巡检线上环境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查询得到点击内容
网友评论