数据库与新硬件技术
数据库技术的发展依靠两大类动力:1. 应用需求的牵引力,2. 新硬件产品的推动力。最近十几年,新硬件产品对数据库系统设计的影响一直是一个比较热门的主题。期间最主要的硬 件技术进步是多处理器(SMP)、多核(MultiCore)、大内存(Big Memory)和SSD。
新硬件对数据库设计的影响
多处理器、多核的流行促使了数据库系统的设计要考虑充分利用多处理器和多核的并行处理 能力,传统数据库的设计针对的是单一处理器或少数几个处理器的场景,并没有把重心放在 这里。多核多处理器对数据库系统的高并发需求演进到了并行需求,这也是为什么 1990 年 代并行数据库技术的研究非常热门。而 SSD 的出现大大提高了块设备的处理能力(很高的 IOPS和很低的延迟),极大的缓解了慢速磁盘设备给数据库系统带来的挑战。可是 SSD 的 物理特性(擦写、寿命等)又和磁盘存在较大的差别。很多研究和创新都集中在基于 SSD 的新存储引擎设计上,试图发明一些新的引擎,既可以充分利用 SSD 设备的 IO 能力,又 避免其擦写和寿命的问题。甚至有一些研究试图针对数据库的特点,定制 SSD 的访问 API。 现在回顾来看,传统的引擎,包括 Oracle、SQL Server 等的磁盘引擎并没有针对 SSD 做 出什么明显的改变,倒是 SSD 直接替换了磁盘,凭借优秀的 IO 能力就已经解决了很多现 实问题。大内存对产品改变主要体现在 SQL Server 等增加了内存引擎,也出现了很多的内 存数据库产品。最近几年,针对 NVM 的研究和开发出现得更多了一些,针对 NVM 设计一个 全新的引擎更多的属于学术研究和创业企业的范围,企业产品更多的是针对产品的某些部件 做一些改进,例如 Oracle、SAP HANA、SQL Server 等。除了 NVM 之外,还有一些硬件, 例如 GPU、FPGA、RDMA 等也一直受到关注。其中,GPU、FPGA 对数据库而言,起到的主要 是对特定操作加速的作用,因此大多用在 OLAP 的场景。
新硬件引入的不同阶段
针对新硬件的引入,可以分为以下几个阶段:
- 纯粹的学术研究阶段。
主要的参与者为学术机构以及各大公司的研究部门。通常的做法是针对新硬件完全从头设计 一个新的存储引擎,并评估各种设计的可能,然后以此原型为基础,实现 SQL 等功能。主要 目的是研究各种潜在的可能性,并发表论文和专利等。偶尔也会有人根据论文创立公司。
- 工程化的研究阶段。
主要的参与者为各大公司的研究部门或实验室。做法一般比学术研究要务实一些,通常基于 现有的产品做局部性的改造或者融合新老产品。在此过程中也可能会产生一些工程性的论文 或专利等。此时,也可能会出现一些创业性公司。
- 产品化阶段。
主要的参与者是公司的工程化团队,也会有研究部门或实验室的参与。到了这一阶段就 可以认为技术已经足够成熟。在商业化产品足够成熟后,小型的产品或一些开源的产品 也会逐步采纳相关的技术。
新硬件相关的数据库产品
多处理器、多核、大内存、SSD 等的进步,对实际系统的影响要相对小一点;也就是说现有 系统不做大的改动,实际上也很继续跑。对多处理器和多核的支持主要体现在并行处理上, 这实际上也是 1990 年代的研究主流,因此在现有的商业产品中早就得到了不同程度的优化。大内 存主要促进了内存数据库引擎的发展,不仅出现了很多新型的内存数据库如 MemSQL、HANA 等,传统产品中也出现了一些新的内存引擎,如 SQL Server 的 Heckton。SSD 领域的研究 虽然很多,但是对实际产品的影响似乎不大。业界明显可以看到的反而是 LSM 类引擎的流行, 例如以 RocksDB 为代表的 KV 存储引擎。
GPU、FPGA、NVM 等硬件设备本身很比较特殊,因此对数据库系统的影响要相对大很多。而且 由于它们也不像处理器、内存、SSD 那样通用,早期很多公司都把产品设计为专用的 Appliance, 近些年则大多是在大型互联网公司的机房内进行规模化部署。专用性比较强的设备意味着可以做 深度的定制开发,充分发掘其优势;反过来,也意味着数据库的通用性可能会受限制,不利 于用户的采纳。GPU、FPGA 都适合做特定的数据库操作的加速,容易想到的如数据的 SCAN 以及谓 词过滤,大量数据的排序,大表的 JOIN、聚集等操作。甚至有一些 CPU 厂商或 SSD 厂商 也可以利用 FPGA 或处理器的富余计算能力,在做压缩、CRC、加解密之外,也来加速数据库操 作。
GPU
GPU 方面的数据库创业公司主要有 Kinetica(2009 年成立)、 SQream(2010 年成立)、 ParStream(2011 年成立)、PG-Strom(2012 年 NEC)、MapD(2013 年成立)等。
FPGA
FPGA 在 OLAP 领域最出名的产品应该是 Netteza(1999)。此外还有 KickFire(2005) 等公司。前者被 IBM 收购,后者被 Teradata 收购,发展都不是很理想,市场上的声音也 小了很多。最近几年,互联网公司又在 FPGA 的加速方面做了很多探索,例如微软用 FPGA 来加速网卡的处理,百度用 FPGA 来加速查询处理等。
NVM
NVM 作为很多种持久化内存形态的总称,最近一两年因为 Intel 推出了相关的产品 DCPMM, 引起了更广泛的关注。SAP HANA 等产品也与 Intel 合作,提供了一些改进的版本。主要的 数据库厂商如 Oracle、SQL Server 等也不甘落后。此外,CMU 等研究机构也发表了相关领 域的论文。