关于数据事实表汇总的模拟实现——原理

简介:
在数据仓库中通常会存储双重粒度级别的数据来满足不同的需要,轻度综合数据和原始数据,在原始数据层面上可以访问细节数据,而在分析层面则访问轻度综合数据。 
原始数据因为存储了基本上原封不动的数据,导致系统存储压力增大,同时也造成查询使系统性能的下降;而轻度综合数据由于数据进行压缩更为简洁,通常情况下对数据仓库的访问 95%以上都是通过轻度综合数据访问来进行的。
数据增量聚合的实现和增量抽取类似,都是尽量以时间戳的方式,尽量减少每次事务的开销。
下面开始对基于时间戳的数据增量聚合进行系统设计:
1、 首先需要定义一张数据字典表,定义需要进行处理的任务,其中主要包括任务名称,任务描述,本次聚合开始时间、结束时间、当前时间、执行的系统时间,状态,最大时限等等。
序号 
 字段名称 
 字段描述 
 字段类型 
 备注 
 

 factProcName 
 任务名称 
 Varchar(40) 
 
 

 factDesc 
 任务描述 
 Varchar(100) 
 
 

 factType 
 任务类型 
 INT 
 
 

 LastLogTime 
 当前处理时间 
 Datetime 
 
 

 BeginTime 
 本次任务开始时间 
 Datetime 
 
 

 EndTime 
 本次任务结束时间 
 Datetime 
 
 

 Status 
 本次任务执行情况 
 Varchar(20) 
 FINSHED
RUNNING
EXCEPTION 
 

 LogLimit 
 本次任务处理最大时限 
 Int 
 
 

 Step 
 本次任务处理距离当前时间最大间隔 
 Int 
 
 
10 
 CancelFlag 
 取消标志 
 Int 
 1,取消
0,正常 
 
11 
 CurTime 
 本次任务执行的系统时间 
 Datetime 
 
 
2、 有了这张字典表就可以开始进行工作了,为了方便表达,暂时处理成伪代码形式,同时只以一个表的处理为例。

1、获取上次处理的恶最后时间,状态和取消情况
2、如果取消状态,则直接退出
3、判断是否存在该任务
4、如果没有,则新增,如果存在更新当前状态为运行
5、获取本次任务开始时间和结束时间
6、并根据系统表中的最大处理时限和时间间隔进行截取时间
7、根据控制事务处理大小的粒度,进行循环抽取
8、 INSERT INTO t_fact_table(TargetFieldList)
SELECT SourceFieldList FROM t_org_table
WHERE logdate> BeginDate
AND logdate< BeginDate+粒度
9、并同步进行时间和状态的更新
 



本文转自baoqiangwang51CTO博客,原文链接:http://blog.51cto.com/baoqiangwang/309772 ,如需转载请自行联系原作者
相关文章
|
6月前
|
存储 程序员 C语言
c++ 如何做出实现一组数据的实际索引
c++ 如何做出实现一组数据的实际索引
|
8月前
|
存储 数据可视化 数据挖掘
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
|
10月前
|
存储 程序员 C语言
c++ 如何做出实现一组数据的实际索引
C++是一种计算机高级程序设计语言, 由​​C语言​​​扩展升级而产生 , 最早于1979年由​​本贾尼·斯特劳斯特卢普​​在AT&T贝尔工
|
关系型数据库 MySQL 数据库
数据库技术知识点(一)IDEFO需求建模方法、解释实体、实体型、实体集的区别、完全函数依赖、部分函数依赖、传递函数、平凡函数依赖、非平凡函数依赖举例、超码、主码、候选码的概念与区分
数据库技术知识点(一)IDEFO需求建模方法、解释实体、实体型、实体集的区别、完全函数依赖、部分函数依赖、传递函数、平凡函数依赖、非平凡函数依赖举例、超码、主码、候选码的概念与区分
数据库技术知识点(一)IDEFO需求建模方法、解释实体、实体型、实体集的区别、完全函数依赖、部分函数依赖、传递函数、平凡函数依赖、非平凡函数依赖举例、超码、主码、候选码的概念与区分
|
SQL 存储 缓存
索引不是越多越好,理解索引结构原理,才有助于我们建立合适的索引!
MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引。
589 0
|
SQL 关系型数据库 MySQL
mysql索引_效率测试(包含测试sql脚本300万条数据),可用作教学案例。
mysql索引_效率测试(包含测试sql脚本300万条数据),可用作教学案例。
272 0
mysql索引_效率测试(包含测试sql脚本300万条数据),可用作教学案例。
|
数据可视化 数据库
虚拟筛选涉及的小分子数据库
虚拟筛选涉及的小分子数据库
1008 0
虚拟筛选涉及的小分子数据库
|
Web App开发 API 数据库
零代码实现一对一表关系和无限主子表级联保存
本文主要介绍一对一关系和无限主子表在crudapi系统中的应用。一对一关系是指关系数据库中两个表之间的一种关系。关系数据库中第一个表中的单个行只可以与第二个表中的一个行相关,且第二个表中的一个行也只可以与第一个表中的一个行相关。
253 0
零代码实现一对一表关系和无限主子表级联保存
|
前端开发 JavaScript .NET
【自然框架】 之 主从表的添加、修改
摘要 1、 这里不是说如何做一个人员管理,这里要说的是自然框架如何处理主从表的添加、修改。人员管理只是一个例子。2、 人员管理的表的“结构”。3、 Tab标签页,通过js脚本+iframe实现的Tab效果。
1468 0
|
大数据 分布式数据库 分布式计算
数据分布背后的逻辑
在分布式数据库及大数据平台中,数据如何分布到多台机器中是个很关键的问题。因为很多运算是数据密集型的,如果数据分布做得不好,就会导致网络传输量变大,从而影响性能。 一般来讲,分布式数据库会提供两种分布策略:对于大表按某个字段(的 HASH 值)去分布,大多数情况会使用主键,这样可以把数据分拆到多台机器上;对于小表则采用复制性分布,也就是每个机器上都会复制一份。
1172 0