粒度
以前一直不能理解粒度是什么意思,当看到《Building the Data Warehouse, 4th Edition》的第二章中的粒度小节时解开了多时的困扰。虽然书上没有用一个一句很明确的语言来描述粒度的含义,但是这本书通过例子让我明白了粒度的含义。下面以一个例子来解释粒度这个词。
例子:
对于一个电话公司来说,记录用户的通话记录是一项很平常的工作,在这项工作中就包含了一个例子:电话公司面临着一个需要决策的地方,就是究竟是以高粒度存储用户通话记录还是以低粒度存储用户通话记录。如果以高粒度存储,那么就需要存储每个用户每条通话记录的详细信息(可能包括日期、时间、通话人、接线员、通话时长等等);如果以低粒度存储,就只需要存储每个用户一个月(假设是一个月,也可以是一周等)的通话综合信息(可能包括月份、通话总次数、平均时长、长途次数等等)。
含义
意思就是高粒度的数据记录对应着损失部分细节,低粒度对应着保留了细节的完整性,当然这就意味着执行低粒度需要占用很大的存储空间来存储大量的细节数据,在数据查询的时候需要在更大的数据记录集中进行搜索,从而产生更大的开销。
这两种模式在实际生产中根据实际情况进行取舍,而且在数据仓库建设过程中同时使用两种粒度,这样既能提高程序执行性能,又能保留细节查询功能,低粒度数据体现为真实档案数据,高粒度体现为轻度综合数据。
活样本数据库
活样本数据库是从数据仓库中取得的真实档案数据或轻度综合数据的一个子集,抽取的方式可以是随机也可以是条件筛选,那么做出活样本数据库的目的是什么呢?一般来说是为了提高效率。
这里先解释一个名词:启发式分析,我的理解是在某一时刻分析人员的脑海中出现了一个idea,但是不知道这个idea实现的效果是怎么样的,于是立马开始编写程序进行分析,在几十秒或者几分钟之内就呈现出了结果,发现有一点可以进行改进的地方,于是马上修改程序,又进行一次程序执行,又得到一次结果,又修改程序,又得出结果,最终得出一个满意的结果的过程。这个过程中程序执行时间不宜太长,不然就达不到这种类似交互式分析的效果了。
于是我们知道:如果每次执行分析程序时都遍历数据仓库中所有相关数据,那么程序的执行时间肯定很长,有可能会达到好几小时或者一两天。于是就有了活样本数据库,每次程序执行的时候在活样本数据库上跑,这样花费的时间就会打打缩短。
举个例子:
分析一个有25000000条数据的大文件,结果显示有56.7%的男性,花费了5小时,如果对这个大文件进行采样,形成活样本数据库只有25000条数据,程序执行只花费了5分钟,结果是55%的男性,尽管第一种方式更加精确,但是花费的时间成本太高,而产生的两个结果之间差异很小,所以一般启发式分析时会采用第二种方式。
~本文为《Building the Data Warehouse, 4th Edition 》第二章第二次读书笔记