运动手环数据分析系统

作者:9ec49896 — 已发布 2021/03/24 02:19:00 GMT+0, 上次修改时间: 2022-02-17T10:34:54+00:00
目前一种新型的可穿戴便携式电子设备--“运动手环”已经走入重庆第二师范学院,“一人一手环”成为一种新兴热潮。在操场、教学楼、寝室等公共场所安装了传感器,手环上的数据通过蓝牙能实时上传。“运动手环数据分析系统”就是基于I9000服务平台,结合智慧校园的实际应用需求对所产生的数据进行分析进而实时监测学生信息。

项目背景

        运动手环数据分析,学校有天然的数据优势。

        实时监测学生的心率,运动量,并对其进行长期跟踪,使学生能够实时了解自己的健康状态并及时做出调整。

        清楚感知和实时定位,通过长期的数据积累,对学生进行行为变化分析,从宏观的视野分类化、多维度数据收集对全校各学院的信息,学生行为轨迹进行可视化的展示,通过大数据分析,更加科学地了解学生的行为爱好。根据定位结果对学生的活动轨迹进行绘制,并分析出学生最常去的地方,帮助学校了解学生兴趣进行有效的调整。

项目架构

       本项目参考目前较为成熟的MEAN框架,将负责前端页面的Angular替换为kendo-uiMEAN框架是当下成熟的一种Javascript全栈的开发架构。其首字母分别代表的是:(M)ongoDB——NoSQL的文档数据库,使用类JSON风格的数据结构来存储数据,同时原生支持Javascript;(E)xpress——基于Node的Web服务器框架;(A)agular——JS的前端开发框架,提供了声明式的双向数据绑定;(N)ode——基于V8引擎的运行时环境(JS语言开发),可以构建快速响应、可扩展的网络应用。

       MongonDB是一个在概念上与其他大多数据库有较大区别的数据库,它允许类 JSON 数据在其中自由随意,这意味着数据库条目是灵活的,但同时也导致无效的记录成了一个非常容易遇到的问题。它不是通过 SQL 与数据库交互,而是使用其独有的方式。MongoDB优点(*为重要特性): *面向文档存储(类JSON数据模式简单而强大) *动态查询全索引支持,扩展到内部对象和内嵌数组*查询记录分析 *快速,就地更新高效存储二进制大对象 (比如照片和视频) 复制和故障切换支持Auto- Sharding自动分片支持云级扩展性 MapReduce 支持复杂聚合商业支持,培训和咨询MongoDB缺点: *不支持事务(最新版本已支持) MongoDB没有如MySQL那样成熟的维护工具

       Express前端页面主要是展示数据,最好与数据解耦,因此需要和后端进行交互,获取数据内容。这样可以将前后端分离前后端分离中,所有用到的展现数据都是后端通过异步接口(AJAX/JSONP)的方式提供的,前端只管展现。前后端分离的好处: 1:前后端可以同时开发,互不影响 2:后台错误不会直接反映到前台,错误较为友好 3:由于后台是很难去探知前台页面的分布情况,而这又是JS的强项,而JS在浏览器环境又是无法独立对服务器进行操作的。所以单单用后台去控制整体页面,又或者只靠JS完成效果,都会难度加大,前后台各尽其职可以最大程度的减少开发难度。

       Kendo UI 是一套 JavaScript 函数库,提供抽象化、可自订主题的 GUI 控制项与动画效果。基于 Kendo JavaScript函式库,可用来建构互动式的 Web 应用。本项目采用的Kendo UI 基于jQuery,代码简洁友好,容易上手,可以加快开发效率。同时与Webpack打包工具结合,使代码结构清晰明了。

       Node.js是一个Javascript运行环境。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。其特点为:

       1. 它是一个Javascript运行环境

       2. 依赖于Chrome V8引擎进行代码解释

              事件驱动

              非阻塞I/O

       3. 轻量、可伸缩,适于实时数据交互应用

项目功能

       整个项目分为两个部分,包括后端数据库处理以及前端页面展示。后端数据处理主要是负责的N与E部分,利用数据库中已有信息,根据前端页面展示需求,对数据进行处理,提供图标显示的数据,一期工程的主要内容为将数据进行简单处理并进行聚合。前端页面展示主要负责的“A”部分,根据需求将数据可视化,直观的对数据进行展示对比。

1)前端页面展示

       前端页面采用了上手容易的jquery Kendo-ui框架,并辅以Webpack自动化工具协助开发,形成前端的基础设施。而可视化方面选择了百度团队的echarts进行数据的可视化。页面布局采用了bootstrap来实现,极大简化了开发效率。

接下来对各个组件的功能角色进行简单的介绍

image.png

       Express是基于NodeJS的Web服务器,其职责与Apache、Tomcat、Nginx等服务器类似,是处理客户端请求的应用。

       目前来说express除下述提到的端口设置无需更改,如果需要更改,请参考http://expressjs.com/ 官网进行客制化,并注意版本号。用户访问页面大致发生了什么:

image.png       Webpack也是如此,无需修改,如果有一定要修改的必要,请参考webpack官方文档https://webpack.js.org/concepts/

       各个组件的作用及webpack的作用:

image.png

       前端代码使用Webpack实现自动化构建,简化了模块之间的相互引用,并且编译时可以将代码进行压缩混淆,优化代码,一定程度上保护了代码,同时具有按需加载的功能,优化网页的渲染。开发的代码amd的方式进行引用,使得前端代码得以模块化。

2)后端数据处理

       在package.json文件中dependencies项中可以看到主要的依赖。其中大多是express、mongoose以及mongodb的中间件,用来管理优化功能的。DevDependencies中放有开发时的测试相关的依赖,可以适当学习使用。

项目展示

       活动热力图

image.png

image.png

项目优势

       MEAN全栈框架中,MongoDB作为架构的高性能数据库,提供灵活、强大的数据操作功能。得益于NodeJS运行时环境,使用Javascript编写后端得以实现,而Javascript编写的后端通过NodeJS负责与MongoDB的交互及逻辑的处理。Express作为后端服务器,处理前后端基于RESTful API的交互。而前端与用户对接的负责呈现的表现层即为Angular。这样的架构使各个组件松耦合,实现了前后端分离,代码逻辑与数据分离的成果。同时,此框架使用统一的Javascript语言,极大降低了开发难度及成本。此外,由于各个组件的松耦合,每一部分都是可以替换的。由于Angular更加适用于大量表单的场合,且学习、使用成本较高,架构也比较臃肿,不是很符合本项目的需求。所以经过比较,本项目的前端开发使用kendo-ui替换了Angular。