前言
在我们的公众号中,已经有多篇介绍exadata数据库云平台的文章,如“”,“。今天的这篇“oracle exadata决策者指南”,翻译自oracle利来国际app官网(点击文末“阅读原文”可获得英文版链接)。此文是决策者评估 exadata 系列产品和云服务的指南,它涵盖 exadata 使用场景和设计理念、技术基础,以及网络、硬件和数据库软件如何在 exadata 中协同工作。最后是对 exadata 各代的完整总结,将所有创新联系在一起,形成一个连贯的演进故事。
以下为中文翻译,希望能帮助决策者了解exadata的设计初衷和核心价值点。另外,大家都知道,exadata被称为“engineered system”或“工程化系统”,文章的最后,我们将为大家解读“工程化系统”这一概念。
oracle exadata 决策者指南(译文)
压倒性的行业采用
exadata 的目标是通过优化和集成各个层面的硬件和软件,并绕过传统的通用服务器层,将数据库算法和智能注入到存储和网络中,从而以更低的成本提高性能和可用性。
exadata 是一个硬件和软件组合平台,包括横向扩展计算服务器、横向扩展智能存储服务器、极速网络、持久内存 (pmem)、nvme 闪存和专用 exadata 软件,提供丰富的配置和价位选择。exadata 存储采用高性能服务器来存储数据并运行 exadata 软件,以在共享存储层中对数据密集型数据库操作直接进行处理。
exadata 于 2008 年首次亮相,作为 oracle 工程系统系列中的第一个产品,用于部署为“私有云”的企业数据中心。2015 年 10 月,exadata 作为订阅服务在 oracle 云中提供,称为 exadata 云服务。
部署在 exadata 云服务中的 oracle 数据库与部署在本地 exadata 上的数据库 100% 兼容,这使客户能够在零应用程序更改的情况下过渡到 oracle 云。oracle 负责管理这项服务,包括硬件、网络、linux 软件和 exadata 软件,而客户保留对其数据库的完全控制权。
2017 年初,exadata开始提供第三种部署选择。exadata [email protected]是部署在本地(在客户防火墙后面)并由 oracle 云专家管理的 exadata 云服务技术。与 exadata 云服务一样,exadata [email protected] 由 oracle 拥有和管理,并通过即用即付订阅获得。oracle [email protected]带来了 oracle 公共云的所有优势,同时解决了潜在的网络延迟、安全性和监管问题。
2018 年,甲骨文推出了 oracle 自治数据库 - 一种基于云的自动驾驶、自治安全、自治保护的数据库,可提供关键任务可用性和安全性,同时降低管理成本。oracle 自治数据库可用于 exadata 云服务和 [email protected] 部署。
2019 年,新发布的exadata x8m 通过增加两项重大技术突破——持久性内存 (pmem) 和融合以太网 (roce) 上的 rdma(远程直接内存访问),大幅提升了 exadata 的性能。oracle exadata x8m 直接从数据库使用 rdma 访问智能存储服务器中的持久内存,绕过整个操作系统、i/o 和网络软件堆栈。这可以显着降低延迟和提高吞吐量。
exadata使用场景
exadata 旨在以最佳方式运行任何 oracle 数据库负载或混合工作负载,例如与分析处理同时运行的 oltp 应用程序。该平台经常用于整合许多以前在专用数据库服务器上运行的数据库。exadata 的横向扩展架构天然适合在 oracle 云中运行,在那里计算需求可以动态增长和缩小。
从历史上看,专门的数据库计算平台是为特定的工作负载(例如数据仓库)设计的,并且对于其他工作负载(例如 oltp)来说效果不佳或无法使用。exadata 对所有数据库工作负载进行了优化,实施后混合工作负载可以公平地共享系统资源。资源管理功能允许系统资源的优先分配,例如始终优先为交互式用户提供服务而不是报告和批处理,即使他们正在访问相同的数据。
与传统的非 exadata 数据库服务器相比,长时间运行的请求(典型的数据仓库、报告、批处理作业和分析)的运行速度要快许多倍。客户参考案例中经常提到性能提高了 10 倍或更高。分析型工作负载还可以使用 exadata 上的 oracle database in-memory选项进行额外加速,并且 exadata 上的内存数据库可以扩展以利用闪存,其容量比 dram 的容量大很多倍。exadata 的混合列压缩功能旨在减少数据仓库和归档数据的存储消耗,并通过减少 i/o 数量来提高性能。
exadata 上的事务型 (oltp) 工作负载受益于将持久内存和闪存合并到 exadata 的存储层次结构中,以及将数据自动“分层”到 dram、持久内存、闪存或磁盘存储中。特殊算法针对响应时间敏感的数据库操作(例如日志写入)优化持久内存和闪存。对于要求最高的 oltp应用,全闪存存储完全消除了磁盘介质的延迟。
exadata设计理念
传统计算平台是通用的
构成典型数据库计算平台的硬件组件是通过网络连接到存储阵列的计算服务器。数据库软件在计算服务器上运行,并通过网络向存储阵列发送数据或从存储阵列接收数据。硬件组件使用标准软件协议相互通信。这种通过标准接口的分离使通用计算平台能够运行来自不同供应商的各种工作负载、软件和硬件。所有应用程序逻辑和数据处理都在计算服务器上执行,所有数据都必须发送到该服务器。这种方法允许将计算平台用于广泛的软件应用程序,尽管它不会针对任何特定应用程序进行优化。
oracle 数据库是 exadata 的重点
exadata 的目标是创建一个针对 oracle 数据库量身定制的完整软件和硬件堆栈,将处理转移到最佳位置。由于 exadata 仅处理 oracle 数据库请求,因此可以在所有软件层中聚焦于这一重点。硬件设计包括非常快速的 roce 以太网网络、闪存和持久性内存等技术,这些技术集成到架构中,以最大限度地发挥 oracle 数据库应用程序的优势。鉴于数据存储对数据库的重要性,oracle 特别关注优化 exadata 平台的这一方面。
oracle 需要一个可以轻松横向扩展和并行处理 oracle 数据库请求的exadata 存储层。向 exadata 存储服务器添加闪存和(后来支持的)持久化内存也为优化存储层性能开辟了一系列可能性。例如,随着闪存的性能和容量快速增长,网络成为传统数据库平台的瓶颈,而 exadata 通过将数据库处理卸载到 exadata 存储服务器避免了此问题。随后在 exadata 存储层中添加持久化内存更加尖锐地暴露了传统平台的局限性。
将数据库智能添加到存储
在 exadata 诞生之时,oracle 拥有数十年的数据库软件开发经验,非常清楚传统计算平台的局限性和性能瓶颈。为了完成 exadata 的使命,oracle 需要一个可以轻松横向扩展和并行处理 oracle 数据库请求的存储层。oracle 还认识到存储在处理数据库请求方面的合作机会,而不仅仅是存放和传送数据。例如,不是将整个数据库表通过网络发送到计算服务器以查找少量记录,而是可以在存储中完成这种数据过滤,最终只有结果记录需要通过网络发送。
总之,oracle 认识到需要一个强大的服务器,它可以运行智能数据库软件并充当存储阵列,其模块化设计可以随着数据库的增长而轻松提高容量和性能。通过将 exadata 重点放在最适合 oracle 数据库的方面,构建可与计算服务器配合执行数据库请求的“数据库感知”的存储服务器成为一项引人注目的任务。
数据库感知型 exadata存储服务器是 oracle 发明的替代传统存储阵列的数据库,是 exadata 的基础。
全栈优化
为了最大限度地提高 exadata 的效率,oracle 必须控制平台的软件和硬件组件,以便可以紧密集成并随时随地进行协调改进。
在构思 exadata 时,oracle 已经拥有广泛的软件产品组合,涵盖运行数据库平台所需的大部分软件层,例如 oracle linux 操作系统、存储管理软件、监控和管理工具、虚拟化软件、当然,还有 oracle 数据库和数据库选件。
2008年初次发布的exadata (v1) 由 oracle(软件)和惠普(硬件)联合开发。exadata 第二代 (v2) 转向sun的硬件,此后不久 oracle 收购了 sun,从而获得了 exadata 主要硬件组件的所有权。
拥有 exadata 的主要硬件组件完善了 oracle 开发围绕 oracle 数据库优化的整个计算平台的能力。对于客户的另一个好处是能够由一家供应商提供整个 exadata 平台的支持;这对于使用来自多个供应商的硬件和软件组件的传统计算平台是不可能的。
exadata智能软件
随着初始版本证明了 exadata 概念的价值,oracle 开始了定期发布计划,包括新软件功能以及与前沿硬件组件紧密集成。
利用 oracle 数据库格式和算法的知识,加上对应用程序工作负载的理解,这些运行于oracle 数据库和平台中所有软件和固件中的“智能”软件增强功能,已经具备了显著超越传统数据库平台的潜力。在 exadata 存储服务器软件中运行 oracle 数据库例程的能力是这一优势的主要促成因素。
由于硬件和软件的集成,特定于 exadata 的软件增强在某些方面取得了更好的性能。例如,当 oltp 应用程序向数据库软件提交事务时,该请求被 exadata 视为关键操作,并在网络和存储服务器中相应地提高了优先级。提交请求将跳过网络和 i/o 队列中不太紧急的消息。
另一个例子是使用闪存来缓存分析应用程序访问的数据。由于列式数据格式对分析工作负载更有效,当 exadata 将行格式数据从磁盘移动到闪存时,它会自动将数据重新格式化为列式格式。
这些示例说明了 oracle 数据库如何理解应用程序的意图并将这种理解传递到网络和存储软件,然后网络和存储软件进行相应的处理。
自 exadata 于 2008 年首次亮相以来,通常每年至少发布两个重要的 exadata 软件版本,提供数十项“智能”软件增强功能。这些增强中的大多数都基于几个关键的技术基础,如下所述。
技术基础
卸载到存储- 指在 exadata 存储服务器中执行数据密集型数据库操作,例如数据扫描、表联结以及行和列的过滤。仅发送操作描述并返回结果,大大减少了计算服务器和存储服务器之间的网络流量。这避免了传统架构的网络瓶颈,其中数据密集型操作需要在计算服务器和存储之间传输大量数据。卸载是可能的,因为 exadata 存储构建在标准服务器上,能够与计算服务器协同运行数据库功能,同时处理存储 i/o。随着时间的推移,更多的数据库功能和更多的数据类型已经被卸载。此外,如果 exadata 存储太忙,“反向卸载”会将操作推送回计算服务器。
存储索引- 通过跟踪小存储区域内的列值来避免 i/o。存储索引会自动维护并保存在 exadata 存储服务器的内存中。如果存储索引表明对某个区域的 i/o 找不到匹配项,则会避免该 i/o,这会带来显着的性能优势。最初,存储索引跟踪少量列的取值范围。随着时间的推移,增加了更多的列和更复杂的值跟踪,因此可以避免更多的 i/o 操作类别。存储索引被持久化到 exadata 存储服务器上的本地存储,以提高服务器重启后的性能一致性。
闪存和持久内存缓存-提供闪存和持久内存的低延迟(快速响应),同时保持了用于存储大型数据库的较低磁盘成本,以最低成本获得最佳 i/o 性能。一般而言,任何时候数据库都只有一小部分处于活跃状态。例如,如果仅将活跃数据保存在闪存中,则 i/o 性能将与全闪存存储相同,而成本要低得多。exadata 监控当前工作负载并以最佳格式将最活跃的数据保存在闪存或持久内存中。例如,exadata 知道 i/o 何时是数据库备份的一部分,而不是活跃数据块的指示,而传统平台将任何 i/o 视为“热”块。对于分析所访问的数据,闪存缓存还将在闪存中将行重新格式化为列格式。最初,闪存缓存仅用于读取数据,然后扩展到日志写入和所有其他写入 i/o。后来,闪存被用作 oracle database in-memory 列式数据存储的扩展,用于比单独使用 dram所允许的容量大得多的内存数据库。持久化内存缓存在 exadata x8m 中首次亮相,在存储中添加了更快的缓存并显著提高了 iops(每秒 i/o 数)和降低了延迟。
混合列压缩 (hcc) -减少不经常更新的数据消耗的存储量,例如数据仓库(可以增长到巨大的规模)。传统数据压缩算法的压缩率介于 2 倍和 4 倍之间,而 hcc 的平均压缩率介于 10 倍和 15 倍之间,因为列格式具有更高的可压缩性。如此大幅度地减少 i/o 数量也可以显着提高性能。最初,hcc 表不支持行级锁定,限制了它们在 oltp 应用程序中的使用。2016 年,exadata 上的 hcc 中添加了对行级锁定的支持,提高了具有 hcc 数据的混合工作负载的性能。hcc 的混合格式使 exadata 能够避免仅列式数据库的性能缺陷。
资源管理- 根据优先级将 exadata 系统资源(例如 cpu、i/o 和网络带宽)分配给数据库、应用程序或用户。在 exadata 上整合多个数据库时,资源管理可确保各自适宜的服务质量。i/o 资源管理在 exadata v1 中首次亮相。exadata x4 中添加了网络资源管理。
内存数据库- 为分析工作负载提供卓越的性能,利用计算服务器上的 dram,补充 exadata 对存储和网络的重视。oracle database in-memory 于 2014 年在 exadata 上可用,利用其快速的 infiniband 网络实现内存容错。为了支持更大的内存数据库,exadata 存储服务器在 exadata 闪存中实施内存例程和内存数据格式,作为在计算服务器上进行的相同内存处理的扩展。
智能软件增强
下面是软件增强功能的更详细列表,按它们对分析或 oltp 工作负载的价值以及它们对数据库可用性和安全性的影响进行分组。类似的增强功能无法在其他平台上提供,因为它们需要跨数据库软件、操作系统、网络和存储对软件和 api 进行修改和集成。
有关这些功能的说明,请参阅 exadata 文档和数据表。
exadata 计算服务器运行oracle linux 7 操作系统,oracle database 11g 第 2 版企业版一直到 oracle database 19c(oracle 的长期支持版本),以及目前最新的 oracle database 21c企业版。
exadata数据库服务器
exadata存储服务器
共享存储的内存级性能
传统计算平台的架构师总是不得不应对影响其系统设计的技术变化。目标是消除瓶颈,以便存储输出在网络中的移动和由计算服务器的处理不会出现任何减速。解决不平衡通常涉及添加更快或更多的网络连接或计算服务器。这是在超高速 pcie 闪存、nvme 闪存接口和持久内存出现之前。
exadata x4-2 于 2013 年发布。闪存容量翻了一番,并添加了闪存压缩,再次有效地将容量翻了一番。引入了网络资源管理,自动对关键消息进行优先级排序。infiniband 带宽翻倍,支持主动/主动连接。
exadata x4-8 于 2014 年发布,增加了按需容量许可、i/o 延迟上限和超时阈值。
exadata x5-2 和 x5-8 于 2015 年发布,其中包含一组主要增强功能。闪存和磁盘容量翻了一番。引入弹性配置以实现一次扩展一台服务器。虚拟化和可信分区作为一个选项添加到 exadata,用于在虚拟机中提供灵活许可。
exadata 存储上的数据库快照支持高效的开发和测试。exadata 上的 oracle database in-memory 包括容错冗余。更换了高性能 exadata 存储服务器凭借全闪存(极致性能)存储服务器,exadata 成为第一家采用 nvme 闪存接口的主要供应商。引入了列式闪存缓存以自动将分析数据重新格式化为flash 中的列格式。ipv6 支持已完成。exadata 云服务在 oracle 云上启动。
exadata x6-2 和 x6-8 于 2016 年发布。闪存容量翻了一番。exafusion direct-to-wire 协议 减少了集群中的消息传递开销,智能融合块传输消除了集群中 oltp 应用程序的日志写入延迟。exadata [email protected] 首次亮相,在企业数据中心内实现 oracle 云优势。
exadata x7-2 和 x7-8 于 2017 年发布。闪存容量翻倍。闪存卡变得可热插拔以进行在线更换。10 tb 磁盘驱动器与 25 gb/秒以太网连接一起亮相。oracle database in-memory 处理扩展到闪存存储,并利用存储服务器 dram 实现更快的 oltp。
exadata x8-2 和 x8-8 于 2019 年 4 月发布。exadata storage server extended (xt) 被引入用于低成本存储不经常访问的数据。14 太字节 (tb) 磁盘驱动器与 exadata 存储服务器中 60% 的计算核心一起首次亮相。添加了机器学习算法,可自动监控 cpu、网络和内存以检测异常情况,例如卡住的进程、内存泄漏和不稳定的网络,并自动创建(自动索引)、重建或删除索引。优化器统计信息也会在 dml 执行时实时收集。为了增强安全性,添加了高级入侵检测环境 (aide) 以在对系统软件进行未知更改时进行检测并发出警报。
exadata x8m-2和x8m-8 于 2019 年 9 月发布。由于在 exadata 存储服务器中添加了 intel optane dc persistent memory,以及基于新的 100 gbit/s 内部网络结构,性能大幅提升在 roce(rdma over converged ethernet)上,取代了之前的 infiniband 结构。这些更改将读取 i/o 吞吐量提高了 2.5 倍,并将 i/o 延迟降低了 10 倍。此外。一个新的基于 kvm 的虚拟机取代了之前的基于 xen 的虚拟机,使来宾 vm 的可用内存量增加了一倍。
附录:什么是工程化系统(engineered system)
exadata从诞生起,就被称为工程化系统,英文原文为“engineered system”。engineer这个单词大家非常熟悉,但engineered就很难直接想象出其对应的含义。就像oracle数据库中的cardinality,idempotency等术语,通常都需要经过二次解读。
在oracle利来国际app官网(1),工程化系统的解释为:
oracle engineered systems are integrated, full stack solutions that are developed with oracle database and applications to run crucial customer workloads faster, at lower costs, and with greater security than multivendor, on-premises solutions.
大意是:oracle 工程化系统是与 oracle 数据库和应用一起开发的集成全栈利来手机国际的解决方案,与多供应商内部部署利来手机国际的解决方案相比,可以更快、以更低的成本和更高的安全性运行客户的关键工作负载。
在另一篇博客中(2),作者chuck hollis总结了工程化系统应具有的几大特质:
针对关键应用进行了优化
是一个产品,而不是一个组装项目
由单个工程团队负责,从应用程序到存储的全栈架构
应用感知、完整和安全
企业云设计
oracle 独有的,令人信服的功能
一种综合体验,一个供应商
当我在论坛中咨询engineered/engineering这个单词的含义时,一位英国同事做了如下的回答,其中文大意为:
在英语中,设计的简洁、高效和优雅被视为engineering的核心特质。想想一辆“well engineered car”:从外观上看,它拥有干净优雅的线条和形状,操作简单,驾驶起来舒适而高效。里面其实非常复杂,需要大量的知识和数学来创造。
一个“工程系统”对我来说就像一个技艺高超的武术大师:他/她在做高难度和高技巧的事情时,表现出毫不费力的优雅。
我非常喜欢这个解释,下一次再提到工程系统,我就会直接想到engineering在英文中对应的含义:简洁(simplicity)、高效(efficiency)和优雅(elegance)。
今天是2022年开工的第2天,农历虎年也即将来临。在此为大家献上一首小虎队的老歌,祝大家新年平安,健康,顺利!
参考文献:
(1) https://www.oracle.com/engineered-systems/
(2) https://chucksblog.typepad.com/chucks_blog/2015/09/grown-up-it-for-grown-up-applications.html
编辑:小炒肉