数据也有温度 访问频率监测有助数据库管理

在数据库早期,当时数据库包含的还只有相对少量的信息,访问频率之间的差别并不是很重要。

现在,我们有大量的数据需要搜集和存储,而访问频率之间的差别正变得越来越重要。现在人们已经有合适的术语来描述数据的这个方面:"热"数据是指经常被访问的数据,而"冷"数据则是指不经常被访问的数据。

在几乎所有的商业系统中,当年的数据被认为是热数据,因为这些数据在事务层面上的访问频率非常高。例如,人们将希望知道这样的问题:"我们上周向X客户出售了什么产品或服务?",或"我们是否已经满足了Y客户昨天下的订单?"

数据仓库中的许多数据是冷数据–大部分内容是事务性数据格式,比如,前四年的数据–只有少量是当年的热数据。

一般来说,如下表所示,我们有三种类型的磁盘。其中一种磁盘–固态驱动器–的价格,就像我在这里所写的,正在快速下滑。在早先的文章中,我还讨论了固态驱动器(SSD)在数据库中的应用,可能已经很明显的是,热数据和冷数据的概念尤其适用于数据仓库。

磁盘类型

电能消耗

容量

速度

成本

慢速硬盘(5000转)

6 – 8瓦

便宜

快速硬盘(1.5万转)

16 瓦

昂贵

SSD(固态驱动器)

150毫瓦

极快

非常昂贵

但是可以肯定的是,任何有这方面意识的DBA(数据库管理员)已经在分区数据表,将经常访问的数据放到快速媒介,将不经常访问的数据放到慢速媒介。实际上,我们用这种方式处理数据已经很多年了,比如将旧材料归档放到磁带等等。因此,为什么人们对数据访问频率的兴趣又开始增加了呢?

这个问题的答案是两个因素–数据访问频率之间的差别越来越大,变化中的存储媒介–意味着数据管理正变得越来越复杂。更准确地说,这意味着如果我们准备好以更加复杂的方式来管理数据,那么我们将获得显著的性能提升。

例如,一个明显的方式就是将冷数据放在慢速廉价磁盘中,同时如果忽略成本因素,将热数据放在SSD中。如果将适量的热数据放在慢速磁盘中,虽然这是违反直觉的,但也不失为一个办法。从定义上来说,一个主要承载冷数据的慢速磁盘大部分时间都是处在闲置状态。

如果你将少量热数据放到慢速磁盘中,当数据访问请求到来的时候,这个磁盘应该不会正忙于做处理其他事务,因此热数据也可以快速访问。

问题的关键是瓶颈,用于归档数据的慢速磁盘碰上瓶颈的概率有时为零。你可以利用和平衡这种概率:这种慢速磁盘不会每时每刻都在工作,实际上,与其降级使用这种磁盘,不如利用它来改善性能。

一旦你决定将一些热数据放到慢速磁盘,你可以将这种数据放到外层磁盘,因为这里的数据经常可以更快地访问。不过你可能认为"哇,虽然理论上这是正确的,但是这种方式太难管理了",你是对的。

在理解了数据也有"温度"且磁盘性能千差万别之后,我们就可以进行很多工作来改善系统,但是实际上问题是数据的访问频率会随着时间而改变,而调整是非常复杂的,因此实际上不可行。

在算法控制下,这种问题可以得到很好的管理。算法控制可以根据数据的实际使用情况来将数据放到合适的位置。实际上,这种对热数据和冷数据的处理方式尤其适用于巨量平行处理(MPP)下对数据的处理。

已经有人在做这样的事。例如,Teradata已经迈向这个领域:监视数据访问频率,然后自动将数据迁移到最佳的存储地点。Teradata对SSD的兴趣已经有好多年了。

Teradata负责EMEA(欧洲,中东与非洲)平台与解决方案营销的总监Martin Wilcox表示:"从数据访问来说,并不是所有的数据引擎都是一样的。和大多数其他引擎不同,Teradata始终都针对随机I/O模式进行了优化,而不是假设I/O是顺序访问的。因此Teradata的引擎从本质上来说可以立即地挖掘SSD的所有优点。"

Teradata已经在SSD的使用上迈出了更多的步伐。在一年前的大会上,该公司展示了一款完全运行在SSD上的数据仓库系统,并利用它来评估性能和成本优势–而且从那以后SSD的价格就在快速下滑。

考虑数据访问频率可以帮助我们更好地优化数据库。如果能够推动数据库引擎供应商考虑将其加入为一种功能,那就更好了。