将文件保存在RAM或磁盘上,哪个更好?这取决于……
按原样写文件和压缩文件哪个更好?这取决于……
当一行发生更改时修改文件还是保留历史记录,哪种方法更好?这取决于……
以A或B格式存储数据,哪种更好?这取决于……
如何处理“视情况而定”
简单的方法是两者都做,例如以柱状和行状两种格式存储数据。通过这种方式,用户可以访问其中之一,或者其他更有意义的。当然,这个选择是有代价的。在这种情况下,数据需要存储两次——将优点和缺点结合起来。
更好的方法是以某种方式组合特性,这样一方面的缺点就可以由另一种技术弥补(反之亦然)。优点和缺点的结合。这就是SAP HANA的秘密。不只是内存中的能力,不列存储,不压缩;而是这两者的巧妙结合。在内存空间中,没有其他数据库供应商能够达到这种程度,主要是出于历史原因。
为什么?享受这2分钟的视频。当然,用我们今天的知识回顾过去是不公平的,但是这个视频仍然很有趣。
主要的论点是你不能把所有的事情都记在脑子里,这是不可能的。如果我们把这句话视为理所当然,那么压缩可能是一条出路。假设1TB的RAM服务器太贵,如果数据可以压缩10倍,那么RAM需求将下降到更便宜的128GB RAM计算机。压缩有缺点,有什么技术可以绕过它?
SAP HANA使用四种技术来实现全利无弊的组合:
-Memory
Columnar Storage
Compression
Insert-Only
每种技术的优缺点
内存
基本思想是内存比磁盘快得多。实际上,这种差别比人们通常看到的要大得多。现代CPU的内存带宽为20g字节/秒或更高,单个磁盘的ssd带宽约为550MByte/秒,硬盘驱动器的带宽约为180MByte/秒,两者相差36和110倍。如果一个程序频繁地使用相同的内存,它会被缓存在CPU的L1或L2缓存中,从而将内存带宽提高10倍。相反,180MB/秒的磁盘速度仅适用于顺序读访问,随机访问对磁盘系统的性能要差得多,而对RAM没有负面影响,对SDDs影响很小。
内存的缺点是内存芯片本身的成本(截至2017年,RAM的成本为7美元/GByte,而磁盘的成本为0.05美元/GByte)和硬件平台需要的成本,以便处理尽可能多的内存。
从绝对数字上看,1TB的内存将是7000美元——可以负担得起。
那么内存计算的优点和缺点是什么呢?
优点:
更新数据快
插入数据很快
阅读是快速
缺点:
当电力耗尽时,所有的数据也随之耗尽
128GB的服务器便宜,1TB的服务器便宜,64TB的服务器贵,1000TB的服务器根本不存在(比如这里)
压缩
压缩的思想很简单:单个CPU比磁盘快得多,因此压缩数据以减少数据量是有益的,只要它的开销不是太大。因此,每个主要的数据库都支持压缩。但它不是很流行,因为压缩数据库块和解压缩它需要付出代价。最明显的成本开销是在数据库块内更新数据时。必须解压数据库块,将更改的数据合并到其中,然后必须再次压缩该块。
优点:
减少所需的大小
缺点:
插入需要更多的CPU能力
读需要更多的CPU能力