热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

另一条路去IOE:全内存数据库弯道超车

文何鸿凌,作者就职于中国移动集团公司业务支撑系统部,从事大数据平台规划工作,微博@BigData分析老祖宗留下了《易经》这本书,告诉我们世界的本质是“变化”的,“变化”之间有相关性。比如云计算的兴起是由于计算机的带宽快速增加引起的,大数据的兴

文 / 何鸿凌,作者就职于中国移动集团公司业务支撑系统部,从事大数据平台规划工作,微博@BigData分析 老祖宗留下了《易经》这本书,告诉我们世界的本质是“变化”的,“变化”之间有相关性。比如云计算的兴起是由于计算机的带宽快速增加引起的,大数据的兴

文 / 何鸿凌,作者就职于中国移动集团公司业务支撑系统部,从事大数据平台规划工作,微博@BigData分析

  老祖宗留下了《易经》这本书,告诉我们世界的本质是“变化”的,“变化”之间有相关性。比如云计算的兴起是由于计算机的带宽快速增加引起的,大数据的兴起是由于数字化进程引发的。

  当今的IT界最重要的“变化”就是摩尔定律。曾几何时,程序员们沉醉于用C语言精妙的语句节省了数KB内存空间,现在大家都用上了逻辑更加清楚、更易于大规模协作的JAVA,而对语言效率看得不那么重要。计算和存储能力变得越来越廉价的“变化”引发了其上软件产品的“变化”。

  软件产品构建在以CPU、内存、外存(磁盘)为边的三角形之上。摩尔定律对三条边的影响程度各有不同。内存的性价比每15个月倍增,CPU的性价比每18个月倍增,但磁盘存储(主要的外存)的性价比增长并不遵循摩尔定律(因为它是磁的不是晶体管的)。更加重要的是:内存带宽的增长是符合摩尔定律的,而磁盘的带宽(从IDE到SATA、SAS)提升速度甚至还落后于磁盘容量性价比的提升。

  因此,代表内存的那条边伸长得太快以至于三角形无法维持其形状,构建在上面的软件产品面临惨烈的“颠覆”,以ORACLE为代表的数据库软件(DBMS)首当其冲,因为它们是数据密集型的。按照数据库使用内存和外存的特点,可以分为三个时期:

  内存昂贵的时期:摩尔定律的效果还在累积,内存远比外存昂贵。大部分的数据、索引、日志和临时空间都只能放在外存磁盘之上,内存起到的作用只是缓存。ORACLE、DB2、SYBASE等皆是在这个时代的产物,遗憾的是它们似乎历史的包袱太沉重,现在大半个身子还停留于此时代,怪不得数据库大师Mike.Stonebraker称他们为30年前的技术。

  SSD外存崛起的时期:后SSD逐渐成为可选择外存之一,而SSD的容量性价比是符合摩尔定律的,带宽提升也非常快(如PCIE接口)。于是业界有一些改进尝试。比如阿里巴巴当前的交易系统在去IOE后是采用的MYSQL数据库Sharding方案,并将数据“全部”存储在PCIE接口的SSD上。各传统数据库也发展出自己的StorageGroup方式来支持支持SSD做“热”数据存储的选项。比如Oracle推出了一体机Exadata,可以选择将“部分”数据缓存到到SSD上,但其大规模的存储还是利用磁盘。另外有一些技术型公司,如沃趣科技,推出了将Oracle的“全部”数据放到SSD上的方案,取得了很好的效果。

  内存颠覆外存的时期:全内存数据库其实早就出现了,例如被Oracle收购的TimeTen、被DB2收购的SolidDB、韩国的AltiBase等,但是由于之前内存还是一个比较昂贵的选择,因此内存数据库只是小规模使用。随着摩尔定律效应的累计,内存的价格持续下降、速度持续增加,量变成为质变,VoltDB、HANA、MemSQL等一系列练就了独门功夫的内存数据库如雨后春笋般出现。他们的共同特点就是所有数据都存储在内存中。这其中每个数据库又有自己的特点,比如VoltDB颠覆了原有数据库设计理论,通过全局时钟和预编译的方法来进行并发控制,避免了锁等开销,很好地适应了OLTP类应用;HANA通过内存列存储和极限压缩来支持更快的大数据分析任务;MemSQL重新设计了Mysql的存储引擎部分,使之更加适应内存。

  我们现在已经可以清楚地看到内存替代外存的趋势,因此可以断言:今后内存将是存取数据、索引的主要发生地,而不仅仅是缓存某些数据。SSD可能会作为快速数据持久化的手段,保证断电以后当前数据的安全。而速度更慢的机械磁盘可能作为备份的手段,替代磁带保证历史数据的可用性。

  如果认可而摩尔定律推导的这个趋势,就必须审视它会对未来的系统架构和软件带来何种的影响。预写日志、日志检查点、回滚和前滚、B树索引等现有数据库特性都是基于使用机械磁盘的假设。机械磁盘寻道时间长故随机存取速度慢,这与SSD和内存等高速随机存取器有非常大的差别。为了适应机械磁盘的特点,数据库管理系统(DBMS)利用了大量的代码将随机存取变成顺序存取。比如日志,一个事务写一次日志很自然,但是为了要顺序存取,就要缓存一批日志再一次性写入磁盘。这就又带来了事务持久化的新问题,因此需要大量的代码为之服务。B树索引也是为磁盘顺序存取优化的,在SSD和内存等随机存取器中显得完全没有必要。

  如果要使用高速且随机存取的内存作为主要存储器,那么最好对整个数据库的架构进行全新的设计。可以看到VoltDB和HANA正是这样做的,抛弃了很多传统的包袱,轻装上阵。Oracle和DB2的历史包袱太沉重,他们不可能抛弃自己的遗产,只能采取优化的方式,比如ORACLE12c中也推出了内存列存储,DB2新的BLU特性也允许激进地使用内存,但其底层的数据存储,还是为机械磁盘来优化的。

凯文.凯利说颠覆总是从边缘开始,因为只有抛弃传统、独辟蹊径,才能发现新的技术范式,在数据库领域也是如此。可以预测要不了几年,内存数据库就会从事务处理系统开始全面取代磁盘数据库的领先地位。很高兴的是,我们看到联想、华为、南大通用等国内的软件公司已经认识到这一点,已经在内存数据库方面进行了颇多的探索,有的已经有了相应的产品。南大通用最近准备筹资5000万用于内存数据库产品的进一步研发。

  看到未来的趋势,顺应潮流,拥抱变化的世界,这种方式的“去IOE”是弯道超车。这是《易经》告诉我们的道理。

推荐阅读
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 本文探讨了高质量C/C++编程的最佳实践,并详细分析了常见的内存错误及其解决方案。通过深入理解内存管理和故障排除技巧,开发者可以编写更健壮的程序。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
author-avatar
涩味122_508
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有