课程名称:Spring Boot+Vue3前后端分离,实战wiki知识库系统
课程章节:11-2 报表统计方案的探讨
主讲老师:甲蛙
课程内容:
数据快照的基本概念
电子书快照脚本收集脚本编写
课程收获
数据快照的基本概念
- 全球网络存储工业协会SNIA对快照的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。
- 数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。也就是说快照根本的原理就是将本地或远程数据库上的一个查询结果保存在一个表中
电子书快照脚本收集脚本编写
#方案一(ID不连续):
#删除今天的数据
#为所有的电子书生成一条今天的记录
#更新总阅读数、总点费数
#更新今日阅读数、今日点费数
#方案二(ID连续):
#为所有的电子书生成一条今天的记录,如果还没有工
#更新总阅读数、总点赞数
#更新今日阅读数、今日点费数
-- 插入数据快照
INSERT INTO ebook_snapshot ( ebook_id, `date`, view_count, vote_count, view_increase, vote_increase ) SELECT
t1.id,CURDATE(),0,0,0,0
FROM
ebook t1
WHERE
NOT EXISTS (
SELECT
1
FROM
ebook_snapshot t2
WHERE
t1.id = t2.ebook_id
AND t2.`date` = CURDATE());
-- 更新今天的数据快照
UPDATE ebook_snapshot t1, ebook t2
set t1.view_count = t2.view_count, t1.vote_count = t2.vote_count
WHERE t1.`data` = CURDATE();
-- 获取昨天数据
SELECT * FROM ebook_snapshot t1 WHERE t1.`date` = DATE_SUB(CURDATE(),INTERVAL 1 DAY)