常见业务
1.搜索引擎
三段式结构:
1.检索系统
2.索引系统
3.spider爬虫
1.爬虫:由搜索引擎主动发起,去别人家的网站去爬数据
关键是建索引
快速判重:布隆过滤器。
给定数据排序:
1.常见排序算法
2.BitMap 算法,
数据量小的时间复杂度、空间复杂度比较大如(10、122、10万)。但是适应于密集的情况,有明显优势。
2.推荐系统
NetFlix 推荐系统公司,很多公司的标杆,其他公司的系统多少都会抄这家公司。
推荐系统通常有三个部份:
- offline 部份,离线
- nearline 部分,近线
- online部分,在线
划分为以上三部分的理由:
|_______昨天______|______今天_______|
离线:
当天肯定无法将当天所有用户的行为数据拿到,所以将昨天的数据存储后进行计算。
比如,用户9点看了鞋子的广告,但量不能确定10后用户还看了什么。
离线挖掘出的数据,应快带提供出去,比如使用NOSQL做为中间介质传递出去。redis、mongo、hbase 等
前端从nosql中去取数据。
大至是这个流程。
在线:
处理在线的时时的数据,对数据进行时时产生。如地图。
为什么不用时实代替离线??
如果时实时系统做的很完备,可以不要离线。但是实时任务有个特点,时效性要求非常高,为了保证任务快速得到结果,所以必须做出妥协,所以实时任不能有复杂算法,否则一量有一个任务出现非实时性,则整个实时任务线将受到影响。
离线不在乎时间,可以做复杂算法任务。所以两种任务,输入一样,输出并不一样。离线更准确,在线可以给一个近似的结果。
近线:
类似在线,如 storm、spark
推荐数据放缓存数据库中,如:NOSQL
数据有两部分:
- 用户行为数据
- 物品元数据:即名称,描述,标签,颜色等等属性