经过实际测试,对于上述数据,常规存储超过五十亿的kv记录就需要1T多的内存,如果需要做高可用多副本那带来的消耗是巨大的,另外kv的长短不齐也会带来很多内存碎片,这就需要超大规模的存储方案来解决上述问题。
二 存储何种数据
人⼝标签主要是cookie、imei、idfa以及其对应的gender(性别)、age(年龄段)、geo(地域)等;mapping关系主要是媒体cookie对supperid的映射。以下是数据存储⽰示例:
1、PC端的ID:
媒体编号-媒体cookie=>supperid
supperid => { age=>年龄段编码,gender=>性别编码,geo=>地理位置编码 }
2、Device端的ID:
imei or idfa => { age=>年龄段编码,gender=>性别编码,geo=>地理位置编码 }
显然PC数据需要存储两种key=>value还有key=>hashmap,⽽而Device数据需要存储⼀一种
key=>hashmap即可。
三 数据特点
-
短key短value:
-
- 其中superid为21位数字:比如1605242015141689522;
-
imei为小写md5:比如2d131005dc0f37d362a5d97094103633;
-
idfa为大写带”-”md5