.net数据统计系统设计(中小型)

近一年多没在博客园写东西了,从换公司后就一直努力学习公司的框架和业务。而今接手一个电商数据统计项目,在博客园搜索统计项目解决方案却一无所获,最终自己设计并在开发的过程中持续更新,希望可以和大家一起交流。

需求

项目组的电商系统运行了3年多,每天下单量在2w单左右。

1.要求从商户,客户,商品的角度统计每天,每月,任意天数查询的需求。

2.并对部分敏感数据做实时查询,例如下单数,下单金额之类的指标。

3.对客户,商品交易额交易量指标做top并支持导出。

4.按地域统计各个交易指标并做top。

5.不能在原有的系统上做集成,防止影响主业务。

设计思路

服务器采用windows2012 IIS7.5 .netfromwork4.0 数据库是部分sqlserver和部分mysql 基于目前系统的状况和需求,决定采用触发式预统计方式来完成部分重要功能。

何为触发式? 目前多个系统之间通信有消息中间件来处理业务。例如 下单,下单时创建订单后就直接往消息系统中注册一条创建订单任务,任务系统会分发给对应执行者去执行下单相关的后续任务。

根据消息系统的特性,在不掺和主系统的情况下利用下单,支付,等业务触发,完成数据的收集,处理,这就是触发式。

非实时部分

关于预统计呢,其实只要是统计,都绕不过这个方法。数据少的时候我们统计一般采用全表查询,count,groupby等形式来得出结果。但大多数情况下,会重复获取大量数据,每次都统计一遍,不但耗时,而且在数据库性能,数据传输,超时等问题上都是不能容忍的。

因此我们会总结,将可以增量统计的部分采取一点一滴的叠加,每天统计增量数据,将合理的数据结构存储起来(半成品),下次统计或者查询的时候直接查半成品,不仅数据量少,而且不用遍历原来的表。特别是电商系统,每天增量数据大,多会采用分库分表的方式来提高数据库性能和访问速度,但是却给统计造成了困扰。

实时部分

对于部分实时性要求高的指标,就需要我们达到流式计算的要求了。一样采用触发式的任务,在任务中维护一个全局的内存变量,不同商家也可以区分开,另外由于数据实时性和内存大小考虑,需要一个定时推送redis,一个定时定量去移除存储到数据库。

关于定时定量,是指内存中累积到一定个数比如客户交易商品累计到100或者离上次存储已经过去1分钟,这个时候就会触发存储规则。推送也一样,说是实时,但是不可能有变化就推送到redis,那这样用redis就没有意义。按我的想法是每个有交易的商家每分钟推一次,下单任务触发后根据上次推送时间来决定,如果没有交易当然就不推送。

库表设计

统计项目的库表我采用的是查从库,从库拥有和主库一样的表结构,并且只读不写。在分表原则上 将表设计为待统计表,预统计表,按月统计表 按月存储表 并根据数据量分表,让每个表中预期数据不超过1千万,我将部分数据量大的表分为128张,少量的分为16张

极限情况下可以分库,来提升连接数。

流程设计

在提升系统性能和响应速度方面,会采用长缓存+短缓存的方式。例如 不变通用的数据采用长缓存(2-24小时),实时要求敏感数据(1-5分钟)

对于部分慢的地方还可以采用首页缓存,默认参数缓存等方式来提高页面打开速度。

消息系统架构

触发式统计是建立在消息中间件的基础之上的,因此将它的架构和设计思路贴出来,供大家参考和借鉴。消息系统的存在主要有几点好处,1.解耦系统之间的依赖 2.异步执行耗时任务 3.具有可靠的日志和重试机制 4.可分布式部署横向扩展

统计任务中心

触发式统计的核心有两个,一是消息系统 二是统计任务中心。它的职责主要是收集交易数据,管理预统计结果并推送(redis和数据库)。已下列支付为例,它在全局中单例,并负责收集数据,管理(统计,存储,推送)

 总结

这一次,我将统计项目的大体结构和设计思路分享了出来,目前项目还未正式开始 ,后期可能会做调整,改掉不合理的设计。我打算将统计项目作为一个系列,在实现的途中分享,也希望有人能获益,有人能给予指点。

时间: 2024-11-08 08:31:47

.net数据统计系统设计(中小型)的相关文章

Asp.net管理信息系统中数据统计功能的实现

数据统计是每个系统中必备的功能,在给领导汇报统计数据,工作中需要的进展数据时非常有用. 在我看来,一个统计的模块应该实现以下功能: 能够将常用的查询的统计结果显示出来: 显示的结果可以是表格形式,也可以是图形形式,如果是图形的话能够以多种形式显示(柱状图.折线图.饼图.雷达图.堆叠柱状图等): 统计查询的结果,点击数字或者百分比能够显示详细的数据: 能够自由组合查询条件.筛选条件.分组条件.排序等: 统计结果最好有个实时预览: 查询统计能够保存,以便下次能直接调用并显示统计查询的结果: 对于保存

在Sqlserver下巧用行列转换日期的数据统计

在Sqlserver下巧用行列转换日期的数据统计 前言 在SQLSERVER 中有很多统计函数的基础语法,有使用Group By 或 partition by 后配合Sum,Count(*) 等用法.常应用于统计网站的PV流量.合同项目中月收入等业务场景中.在文中我分享下最近做过的统计小案例,和大家互相学习下:) 背景 合同中行项目按月收入的统计 1.业务逻辑及需求  1.1 表业务逻辑 合同是公司间互相签署的法律契约,一份合同从诞生起,就开始流转于公司的各个部门,最核心的还是盈亏的数值.盈亏是

PHP+Mysql+jQuery实现中国地图区域数据统计(raphael.js)

使用过百度统计或者cnzz统计的童鞋应该知道,后台有一个地图统计,不同访问量的省份显示的颜色也不一样,今天我将带领大家开发一个这样的案例.上一篇<使用raphael.js绘制中国地图>文章中,我给大家介绍了如何使用raphael.js绘制中国地图,今天我要给大家介绍在实际应用中,如何把数据载入到地图中.本文结合实例,使用PHP+Mysql+jQuery实现中国地图各省份数据统计效果. 本例以统计某产品在各省份的活跃用户数为背景,数据来源于mysql数据库,根据各省份的活跃用户数,分成不同等级,

网络遥控器数据统计0526

一.统计脚本及代码 1 #!/bin/sh 2 3 root_dir=`pwd` 4 source_file="$root_dir"/operate0526.txt 5 single_file="$root_dir"/single0526.txt 6 result_file="$root_dir"/result.txt 7 8 rm -rf $single_file 9 rm -rf $result_file 10 11 ###统计出现次数最多的

1.大数据统计(原创)

大数据统计 1.项目需求,统计海量数据中某一参数的概率分布 2.实现过程 #!/usr/bin env python # -*- coding:utf-8 -*- import re def preprocess(fileName, pattern): ''' 将数据集进行预处理,比如取出RSSI那一列的数据 :param fileName: 接收相对路径 :param pattern: 接收正则表达式的模板 :return: 返回Region of interest数据集 ''' with o

基于Android MPAndroidChart实现腾讯QQ群数据统计报表核心功能

 基于Android MPAndroidChart实现腾讯QQ群数据统计报表核心功能 腾讯QQ移动客户端(新版)的QQ群有一项功能比较有趣,是关于QQ群的.QQ群新增一项功能开放给具有管理权限的群成员:管理群 -> 群数据 中,会看到QQ群的一些基础数据统计报表,如人数.发言条数的统计报表,如图: 我之前写了一篇文章是关于Android平台上的一个统计报表的开源框架MPAndroidChart,文章介绍了如何在自己的项目中使用MPAndroidChart制作统计报表,同时给出了基本折线图的一

Echarts 之三 —— 地市联动数据统计二

一.简介 除了是一个地图之外,我们也可以使用多地图进行地市.区县联动数据统计.需求如下:展示整改广东省的地图,并显示统计信息,当点击某一个地市的时候,就显示该地市的地图,并统计该地市区县的数据信息.二.示例 相关echarts配置见上一篇 Echarts 之二——地市联动数据统计 . 相关代码如下: 1 <%@ page contentType="text/html;charset=UTF-8"%> 2 <html> 3 <head> 4 <t

Hbase在数据统计中的应用心得

1. 数据统计的需求 互联网上对于数据的统计,一个重要的应用就是对网站站点数据的统计,例如CNZZ站长统计.百度统计.Google Analytics.量子恒道统计等等. 网站站点统计工具无外乎有以下一些功能: 1)网站流量统计:包括PV.UV.IP等指标,这些统计指标可以以趋势图的形式展示出来,如最近一周.最近一个月等. 2)IP来源信息统计:记录各个来源IP下的访问PV数. 3)访问来源分析:记录访客是从哪些途径到达本网站的. 4)搜索引擎及搜索关键词分析:对于各个指定搜索引擎带来访问PV的

记住这个网站:服务器相关数据统计网站 http://news.netcraft.com/

http://news.netcraft.com/ 需要参考现在服务器相关数据,可以上这个网站. 当然google趋势也是一个可选得备案. 有一个数据统计更全面的: http://w3techs.com/ 统一编程语言使用率的网站: https://www.tiobe.com/tiobe-index/ http://redmonk.com/