单台服务器的数据统计设计

macro?definition=e3RvY30&locale=zh_CN&version=2

背景

有且只有一台 db 服务器提供服务,该服务器同时支撑业务和统计需要。

统计的表单需要导出成 excel,且后续不能确定该表单是否还会修改。

导出数据的同时,需要为数据写入导出标识。

导出的数据总条数未做限制(有,但是范围比较大).

目前主要是导出结算单和申述单的支付统计。

数据库设计

针对上述背景,为了防止在执行导出操作时候造成对在线运行业务的影响,采用了mysql + mongodb 的方案,导出时候的查库和写库操作都在 mongodb 中执行。

数据库设计如下:

 %E7%BB%9F%E8%AE%A1-%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1.png?version=1&modificationDate=1463370969838&api=v2

1、MySQL中存储的是业务数据。

因为统计查询涉及到多张表,所以这里将使用到的各个表的字段做成了视图。

视图建表语句为

CREATE OR REPLACE VIEW view_name AS 

SELECT fields FROM table1, table2 where condition.

2、mongodb 中是统计使用的数据。每个数据有两个附属字段记录上次数据的同步时间last_sync_time 以及该条数据的最近变更时间last_update_time。

当统计程序修改 mongodb 中的数据同时,修改数据的最近变更时间。

3、运行数据同步脚本的时候,首先将 last_sync_time 不等于 last_update_time 的数据回写入 mysql 数据库(写入对象是视图);然后将 MySQL 中,创建时间大于 last_sync_time 的数据同步到 mongo 中(因为 mongo 中的数据是累加的,所以这里的 last_sync_time 取最近的一次即可)。

程序统计

1、为了快速更新 mysql 中的数据,使用

mysql> INSERT INTO table (a,b,c) VALUES (1,2,3) 

-> ON DUPLICATE KEY UPDATE cc=c+1; 

提高批量更新数据的效率。

2、使用 PHPExcel 生成 Excel 文件。

转载于:https://my.oschina.net/liuke1556/blog/675701

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值