【大数据匹配-求高效处理思路】

woluge 2016-05-03 10:49:22
各位大神好,需求前景如下:
**电信运营商每小时给出**省份用户接入数据,大约7千多万,数据中有地理位置字段(LAC),小区ID(CI),**省份的小区对应表数据为20多万,我现在要通过后台程序实现根据用户地理位置(LAC),小区ID(CI),在小区对应表中匹配用户所在小区,这个查询匹配量很大,如果我只是简单的将小区对应表缓存到内存中检索,那效率肯定不行,
请大神们指点更优的缓存机制
小区对应表如下:


...全文
520 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
woluge 2016-05-03
  • 打赏
  • 举报
回复
引用 5 楼 cancerser 的回复:
如果你非要采用缓存处理,并且要处理7000万条的话,我给你几个建议 1.先将7000万排序并分组去重复(如果可能的话,估计你的内存吃不下,请无视此条) 2.将20万分组,通过LAC进行分组。匹配每一条时,到相应的LAC去查找CI,这样你单次匹配的数量级就降到了 LAC的组数+相应LAC组的CI数,要远小于20万。或则有更精细的特征码,你可以继续分组,分组越详细匹配的数量级越小 3.内存中LAC 和CI 都转成整型,别用字符串。值类型比较要比字符串快的多的多。 -------- 4.如果7000万是实时的,也就是每时每刻都在同步,那么,个人建议你实时插入本地数据库,然后和20万左连接就好 5.如果7000万事分时的,也就是每小时来一次,那么恭喜你,除非是分布式匹配,任何方法都快不到哪里去 给你个简单思路,多建几个数据库,把20万分到几个数据库里(LAC分组),然后7000根据不同特征码插到不同的数据库,一个视图搞定。当然这种分组方式也适用123 6.我通常的做法适用123建几个webservice,每个同事机器上装一个,7000万几个人一分 很快就完事
感谢分享,我这边是按小时给出的数据包,对数据要进行地市分组,黑名单剔除,重复用户迁移路线归类,8G虚拟内存,先跑起来看看
cancerser 2016-05-03
  • 打赏
  • 举报
回复
如果你非要采用缓存处理,并且要处理7000万条的话,我给你几个建议
1.先将7000万排序并分组去重复(如果可能的话,估计你的内存吃不下,请无视此条)
2.将20万分组,通过LAC进行分组。匹配每一条时,到相应的LAC去查找CI,这样你单次匹配的数量级就降到了 LAC的组数+相应LAC组的CI数,要远小于20万。或则有更精细的特征码,你可以继续分组,分组越详细匹配的数量级越小
3.内存中LAC 和CI 都转成整型,别用字符串。值类型比较要比字符串快的多的多。
--------
4.如果7000万是实时的,也就是每时每刻都在同步,那么,个人建议你实时插入本地数据库,然后和20万左连接就好
5.如果7000万事分时的,也就是每小时来一次,那么恭喜你,除非是分布式匹配,任何方法都快不到哪里去
给你个简单思路,多建几个数据库,把20万分到几个数据库里(LAC分组),然后7000根据不同特征码插到不同的数据库,一个视图搞定。当然这种分组方式也适用123
6.我通常的做法适用123建几个webservice,每个同事机器上装一个,7000万几个人一分 很快就完事

woluge 2016-05-03
  • 打赏
  • 举报
回复
嗯,感谢,我实现下
  • 打赏
  • 举报
回复
就是你用memorycache了?数据量不是很大的话也可以
woluge 2016-05-03
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
放到redis不行么?用sortedset,lac和ci直接组合成score,这样你就是直接用score进行查找
感谢版主回答,刚我也想到了合并lac,ci用作唯一key,然后根据key的最后一位数的奇偶,进行缓存分组,再匹配,如果不使用redis,直接使用hash表,是否够好了?
  • 打赏
  • 举报
回复
放到redis不行么?用sortedset,lac和ci直接组合成score,这样你就是直接用score进行查找

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧