1.项目中使用mongoDB的场景

    1. 1)数据量大
    2. 2)写入操作频繁(读写都很频繁)
    3. 3)价值较低的数据,对事务性要求不高
    4. 对于这样的数据,我们更适合使用MongoDB来实现数据的存储。
    5. 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,
    6. 通过地理位置索引实现附近的人、地点等功能。
    7. 本项目用来储存用户的点赞 收藏等信息

    2.mongoDB、redis、mysql的选择

    MySQL MongoDB redis
    查询速度(相对)
    支持事务? 是(仅能保证按顺序执行)
    存储方式 在不同的引擎有不同的存储方式(常涉及IO) 虚拟内存+持久化 全部在内存,定期持久化备份
    数据结构 类似于excel JSON格式和BSON格式 K-V格式
    关系型?
    拓展性 可通过分表等操作 通过复制集分片等 集群分片

    3.行为模块介绍

    用户行为数据的记录包括了关注、点赞、不喜欢、收藏、阅读等行为
    
    这些行为与当前app端的功能实现没有任何关系,即使没有行为数据,功能也不耽误实现,那为什么要做行为数据的保存呢?
    
    黑马头条项目整个项目开发涉及web展示和大数据分析来给用户推荐文章,如何找出哪些文章是热点文章进行针对性的推荐呢?这个时候需要进行大数据分析的准备工作,埋点。
    
    所谓“埋点”,是数据采集领域(尤其是用户行为数据采集领域)的术语,指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。比如用户某个icon点击次数、阅读文章的时长,观看视频的时长等等。
    

    4.后台参数是如何校验的

    利用一个参数校验框架,hibernate validator
    它实现了Java定义的一套基于注解的数据校验规范[Bean Validation]
    只需使用对应注解即可完成参数校验