statpot:使用mongo+bootstrap+highcharts做统计报表

简介:

最近做了一个统计项目,这个统计项目大致的需求是统计接口的访问速度。客户端会调用一个接口来记录接口的访问情况,我的需求就需要分析这些数据,然后做出个统计报表。

需求实现

最初的时候想着每天把这些接口访问情况的信息存储到mysql中,然后根据这些访问情况做个分析再做报表。然后第一个问题就来了,信息包含太多字段了,如果我将每个信息解析成mysql表的一个字段,那么这个字段很长,而且还有一个致命缺陷,不容易扩展。如果将所有字段都存储为一个json,然后存储到text字段呢,又没法建立索引了。所以这种情况,最适合搬出mongo来了。

相比于mysql,mongo的好处就是扩展性好,灵活。像统计数据这样很容易需求不确定的数据确实是个很好的选择。我另外想想还有个好处就是不用的数据我可以很方便地将数据json化,然后存为文件。然后在需要的时候,也很容易读取直接放入到mongo中去。比如我可以将一个月的数据做一个持久备份之类的操作。

接着是生成统计报表的部分。各种图是很需要的,由于是给内部做统计报表,不需要兼顾各种浏览器。所以我选择了强大的highCharts。highCharts是一个JS图表库。很方便的就可以生成图表了。亲身体会是这个比flash做图表开发时间缩短多了。你可以从http://www.highcharts.com/上下载3.0版本。

后续呢,由于后面有很多统计变化的需求。每次都写一个过程来生成js代码从而渲染统计报表也是个很繁琐的事情。于是我就打算写一个工具,大致的思路就是依靠修改配置文件就可以直接生成统计报表,报表的页面为了美观我引入了bootstrap 3.0。于是发现这种数据存储mongo,加上配置文件生成报表的模式是很容易实现,也确实很好使用。甚至于你在mongo中增加了一种统计结构,我可以什么都不用修改,只需要增加一个配置项就可以生成新统计结构的图表了,这大都是归功于mongo的json结构化。

statpot工具

这个工具statpot开源在github上了:

https://github.com/jianfengye/statpot

可以下载result/stat_20130925.html来看生成的报表。

生成的报表如下:

Image(12)

现在是实现了两种:饼图和柱状图。后续有可能的话还会继续加上一些其他统计图表。

还能想到的一个问题是这个页面如果是动态的,那么必然实时分析需要的时间比较多,而统计报表一般不需要动态的,所以完全可以做成生成静态文件的方式,于是web/目录下就有动态和静态的入口。这种生成静态报表然后存储的方式也是很好的,比如每天我生成一次动态报表,然后就把mongo中的数据清空或这静态文件化。

当然后来想想,这种唯配置至上的工具唯一的弊端是配置本身就是一种学习成本,你需要花时间来掌握这个配置。但是这个问题在我看来,和代码一样,应该由配置的语义来解决。

问题记录

记录下开发过程中特别是使用mongo中遇到的问题:

如何获取一个字段的所有可能的值

使用distinct

Image(11)

如何获取一个字段的所有可能的值,并且计算出每个值有多少个条目

需要使用group命令

group的命令文档在:http://docs.mongodb.org/manual/reference/method/db.collection.group/

> db.feedbacks.group({

     "key" : {"keys.properties.network_type": true},

     "initial":{"count":0}, 
     "$reduce":function(cur,prev){

            prev.count=prev.count+1;

     }

})

对应的PHP mongo的API是:http://www.php.net/manual/zh/mongocollection.group.php

目录
相关文章
|
6月前
|
前端开发
记录一款好用的bootstrap后台模板
记录一款好用的bootstrap后台模板
48 0
|
存储 JSON 前端开发
Bootstrap Bootstrap表格插件bootstrap-table配置与应用小结3
Bootstrap Bootstrap表格插件bootstrap-table配置与应用小结3
121 0
|
JSON 前端开发 JavaScript
Bootstrap Bootstrap表格插件bootstrap-table配置与应用小结 2
Bootstrap Bootstrap表格插件bootstrap-table配置与应用小结
140 0
|
JSON 前端开发 JavaScript
Bootstrap Bootstrap表格插件bootstrap-table配置与应用小结 1
Bootstrap Bootstrap表格插件bootstrap-table配置与应用小结
249 0
|
JSON 监控 前端开发
(扩展)网站流量日志分析--数据可视化-- vue 版--复杂 json 具体实现 | 学习笔记
快速学习(扩展)网站流量日志分析--数据可视化-- vue 版--复杂 json 具体实现
148 0
(扩展)网站流量日志分析--数据可视化-- vue 版--复杂  json 具体实现 | 学习笔记
|
SQL JSON 监控
(扩展)网站流量日志分析--数据可视化-- vue 版--复杂 josn 格式数据剖析 | 学习笔记
快速学习(扩展)网站流量日志分析--数据可视化-- vue 版--复杂 josn 格式数据剖析
102 0
(扩展)网站流量日志分析--数据可视化-- vue 版--复杂 josn 格式数据剖析 | 学习笔记
|
SQL 存储 消息中间件
IG-REPORT企业智能报表 基于springboot+vue 轻松实现30s出报表
传统报表方式的弊端 报表是所有企业都必要的分析决策工具,传统的展示报表的方式特别麻烦,还记得两年前我入职的时候,领导让我做一个报表,步骤大概要经历1、数据库中创建一个目的表 存储SQL跑批后的结果 2、开发后端代码 从service到dao层都要开发 还要实现定时调度 3、开发前端代码 htmlcssjqueryajax等这些步骤从技术的角度来看算简单的、但却永远在做重复的事情。
IG-REPORT企业智能报表 基于springboot+vue 轻松实现30s出报表
|
前端开发
Bootstrap系列 -- 9. 表格
一. Bootstrap 表格样式支持   Bootstrap提供了六种不同风格的样式支持,其中一个基础样式,4个附件样式,1个响应式设计样式   1. .table:基础表格   2. .
1173 0
|
JavaScript
JS饼状图表数据分布插件
在线演示 本地下载
877 0

热门文章

最新文章