本人是用户,我用过的库不管是仓库还是源系统,都保留20年以上的数据。
仓库里的交易事实表,都存有很老的历史数据。
但是看inmon等人的文章 都说老数据要删掉 不然影响速度之类。
各位的系统里要考虑这个问题吗?谢谢回答
------解决思路----------------------
首先,数据是无价的,积累了那么多的数据,没有真正的用起来,没有充分的挖掘数据的价值,很可惜
其次,数据也是有生命周期的,你可以将这些暂时无用的数据保存起来,比如建立一个分区,一张表,或者一个历史的数据库,将这些数据保存起来,让他在旁边睡觉,一旦你用到了,随时可以唤醒,到那个时候你就体会到老数据的价值,数据仓库不同于OLTP,讲的是历史的延续的东西,举个简单的例子,做样本分析,OLTP系统无法反映数据的客观性,偏析性很大,这样的结果对DSS会产生错误的结果
------解决思路----------------------
对数据库的性能有影响么? 这个要怎么看,放在一张表中确实有影响,放在分区表中,影响小得多,放在其他的表中微乎其微,放在历史库中,没有影响
------解决思路----------------------
删除肯定不要了,移到低速存储器上,供以后查询分析时使用,一般是这样搞得吧。
------解决思路----------------------
1. 根据业务决定数据的生命周期,比如电商交易频繁的可能是2年,保险行业交易比较少的5年。太老的数据对于数据分析没多大作用,你想10年前的电商交易数据对于现在的电商能有多大帮助,价格、产品、用户都已经完全不同了。
2. 将对业务分析最重要的数据放在数据仓库中。不重要或者过期的数据可以考虑从数据仓库中淘汰掉,或者移到低价存储器上。
3. 对于单个非常大的流水表,可以将其按字段的hot程度,拆分为一个hot表和一个cold表,从而提高使用效率。降低维护成本。
------解决思路----------------------
是否删除老数据要看你对老数据和对数据仓库需求的定义了:
1、如果数据仓库是否仅用于分析的话(我看好多地方建立的数据仓库仅用于统计分析,对于数据挖掘基本都没有用),如果有大量的数据挖掘的话,那么数据多些对于结果越精确。(当然,前提是你的历史数据质量不太差的情况下)
2、你指的老数据有多少?就是多少年的数据?如果有20~30看的数据,那么是否用得着?数据质量如何(我在好多项目上整理历史数据的时候发现数据质量奇差无比)?
历史数据如果仅用近5年的,那么你可以将6年前的数据导出(备份到其它存储设备上),仅留下足够的数据就可以了,因为大量的不用的历史数据中的维度及事实会占用数据检索时间。(当然,你也在程序来控制,就是将不用的历史数据保存然后物理分段,在数据访问时使用程序来控制检索段。或者使用聚集表的形式增加历数据粒度,还有好多种处理方式)
现在存储设备越来越便宜,如果不是数据量很惊人的话,一般是不用删除或导出的,因为导出后是需要管理的。