一、项目简介
推荐系统是信息过载所采用的措施,面对海量的数据信息,从中快速推荐出符合用户特点的物品。本项目主要根据用户的历史特征和行为为用户推荐更适合他们口味的电影。整个系统可以分为统计推荐模块、离线推荐模块和实时推荐模块三个部分。
接下来将依次展示项目的分解视图、依赖视图、执行视图、实现视图、部署视图、工作分配视图、数据库设计和核心工作机制。
二、分解视图
分解是构建软件架构模型的关键步骤,分解视图也是描述软件架构模型的关键视图,一般分解视图呈现为较为明晰的分解结构(breakdown structure)特点。本文以UML包图来展现系统的分解视图。
三、依赖视图
依赖视图在项目计划中有比较典型的应用。比如它能帮助我们找到没有依赖关系的软件模块或子系统,以便独立开发和测试,同时进一步根据依赖关系确定开发和测试软件模块的先后次序。
四、执行视图
执行视图展示了系统运行时的时序结构特点,比如流程图、时序图等。执行视图中的每一个执行实体,一般称为组件(Component),都是不同于其他组件的执行实体。如果有相同或相似的执行实体那么就把它们合并成一个。
五、实现视图
实现视图有助于码农在海量源代码文件中找到具体的某个软件单元的实现。实现视图与软件架构的静态结构之间映射关系越是对应的一致性高,越有利于软件的维护,因此实现视图是一种非常关键的架构视图
六、部署视图
部署视图是将执行实体和计算机资源建立映射关系。这里的执行实体的粒度要与所部署的计算机资源相匹配,比如以进程作为执行实体那么对应的计算机资源就是主机,这时应该描述进程对应主机所组成的网络拓扑结构,这样可以清晰地呈现进程间的网络通信和部署环境的网络结构特点。
七、工作分配视图
工作分配视图将系统分解成可独立完成的工作任务,以便分配给各项目团队和成员。工作分配视图有利于跟踪不同项目团队和成员的工作任务的进度,也有利于在个项目团队和成员之间合理地分配和调整项目资源,甚至在项目计划阶段工作分配视图对于进度规划、项目评估和经费预算都能起到有益的作用。
八、数据库设计
1. Movie【电影数据表】
2. Rating【用户评分表】
3. Tag【电影标签表】
4. User【用户表】
5. RateMoreMoviesRecently【最近电影评分个数统计表】
6. RateMoreMovies【电影评分个数统计表】
7. AverageMoviesScore【电影平均评分表】
8. MovieRecs【电影相似性矩阵】
9. UserRecs【用户电影推荐矩阵】
10. StreamRecs【用户实时电影推荐矩阵】
11. GenresTopMovies【电影类别 TOP10】
九、核心工作机制
【综合业务部分】
用户可视化:主要负责实现和用户的交互以及业务数据的展示,主体采用AngularJS2 进行实现,部署在 Apache 服务上。
综合业务服务:主要实现 JavaEE 层面整体的业务逻辑,通过 Spring 进行构建,对接业务需求。部署在 Tomcat 上。
【数据存储部分】