去了 Oracle,难道真是省了许可费、花了运维钱吗?

简介:

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

前段时间,InfoQ 发布了一篇《独家揭秘陆金所去 Oracle 全过程:18 个月将 90% 数据库业务换到 MySQL 》的文章,引发了大家关于去 Oracle 的讨论,有很多读者提到了将 Oracle 替换之后,看似授权成本下降,但其实运维成本增加了,并不能减少支出。

那么,实际情况到底如何呢?我们常说的运维成本到底有哪些?运维成本在去 Oracle 实践中占总成本多大的比重?去 Oracle 之后,运维成本会发生哪些变化呢?如果去 Oracle 之后,运维成本增加了,那是否有降低成本的方式呢?… 为了弄清楚这些问题,InfoQ 采访了陆金所全站去 Oracle 负责人王英杰、 PingCAP 联合创始人兼 CTO 黄东旭。

我们常说的运维成本都有哪些?

“运维成本”是我们常挂在嘴边的词,但是运维成本到底包含哪些东西,有很多人是模糊的,所以本文先为大家梳理一下运维成本都包含哪些内容。
黄东旭表示,运维成本一般可以从固定资产性成本和运营成本两方面来考虑。

固定资产性成本

数据库迁移的固定资产性成本主要由软硬件购置成本和硬件服务维保成本组成。应用生产环境的硬件包括服务器、存储和数据备份环境,配套软件包括操作系统、保证数据库运行的安全类软件、运维软件如备份恢复、监控告警等。
如果更具体来讲的话,包括以下几个方面:

  • 数据库服务器:Oracle 通常部署在 Unix RISC 小型机上,一般一个数据库服务会由至少 2 台(主备)或 4 台 (Oracle RAC) 组成。如果 Oracle 数据库是应用于关键业务场景中,单台服务器硬件采购成本基本上都是 200-300 万起。
  • 高性能的磁盘存储:通常 Oracle 数据库会采用独立的 FC SAN 光纤磁盘阵列柜作为服务器上数据库存储的支撑手段。同样,如果是应用于关键业务场景中,此类存储设备及设备中配置的大量光纤硬盘(易耗品)的初次采购成本也是在百万元上下起步。
  • 除了初次购置成本,还要考虑 3-5 年服务器的硬件维保成本和冗余备件的采购成本。一般来说,一年的维保成本会占到初次采购成本的 10%-20%。
  • 软件许可费用,如果是使用 Oracle 数据库的话,它是根据 RISC Unix 的处理器核心数量计算许可费用,Oracle DG ( 高可用) 或者 Oracle RAC (集群) 需要支付额外的软件许可费用。如果是一个中大型企业的关键数据库应用,上述软件许可的初次购置费用也会在百万元起步。
  • 如果企业有灾备容灾要求,那么,还需要采购专门的数据备份软件,例如常见的 NBU 企业级独立备份系统,如果是要做异地容灾,那么需要在异地机房搭建同等或配置略低的容灾集群,同时还要采购确保两地主备集群安全同步的软件工具,如 Oracle ADG 容灾复制系统或者采购 Oracle GoldenGate 来实施。通常,为了容灾采购的硬件和配套软件的成本支出也要接近大几百万。
    黄东旭表示:“在不考虑企业的硬件采购实际折扣和合规完成度的前提下,只考虑 Oracle 数据库的总体建设工作,企业在关键业务场景中的固定资产性成本支出很容易就可以达到千万级别。”

运营成本

运营成本一般是指数据库迁移的应用迁移适配成本、数据迁移成本、迁移测试成本、运行维护人员的招募成本、培训成本及日常运维的一般性系统维护人力成本。

“人力成本在 Oracle 迁移前后的变化不大”,王英杰表示,“陆金所是将 Oracle 数据库迁移到 MySQL,从招聘成本来看,Oracle 工程师和 MySQL 工程师差别不大。另外,通常在企业去 Oracle 实践开始之前,公司 Oracle 工程师就已经开始向其它数据库工程师转型,通过 1-2 年的时间,他们足以成长为一名合格的其它数据库工程师。”

通常情况下,去 Oracle 之后,之前单套 IOE 数据库支持的业务量会被安装替换数据库的多套 X86 服务器接管,数据库服务器和实例数量的整体规模会迎来一个数倍的增长。对此,有实际去 Oracle 经验的王英杰表示这部分成本其实也是可以抵消的,“这类规模的增长如果依靠一套完善的数据库自动化运维系统支持,就无需通过堆人来增加成本。”

隐形成本

除了固定资产性成本和运营成本,还有很多不可实际衡量的隐形成本。
技术绑架造成的隐形成本,如果严重依赖某个厂商的技术来支持核心数据库,厂商可能会根据客户系统的重要性和对它的依赖程度灵活调整价格,合同到期之后,也可能会提高续签费用。

另外,当数据库的容量和并发量达到一定规模的时候,系统规模的提升可能会造成硬件成本的倍数提升。

在整个去 Oracle 过程中,运维成本占总成本的多少?

在 Oracle 迁移过程中,运维成本主要包括人力成本、迁移后的配套软硬件成本和一般性运维成本。如果抛开购置配套软硬件的直接成本,运维成本大致会来自以下三个方面:

  • 迁移技术验证方面的投入;
  • 单次迁移过程中的人力成本;
  • 迁移后的一般性运维成本。

“总体来说,运维成本不会占到去 Oracle 成本的大头,粗略估计的话,可能会在总成本投入的 10%-15% 之间。”黄东旭表示:“目前,越来越多企业会尝试在局部业务系统中验证性地进行去 Oracle 工作,总结经验,降低迁移过程中的运维成本占比,进而才会在企业内大规模推动去 Oracle 工作。”
以实际经历了去 Oracle 实践的陆金所为例,其在迁移过程中的运维成本主要包括:

  • 去 Oracle 之后,X86 服务器的采购费用,这部分费用不会很高,远低于之前 IOE 架构的费用;
  • 研发全套去 Oracle 工具平台的费用,这部分主要是由陆金所现有数据库团队完成的,没有因为去 Oracle 项目增加人力成本;
  • 去 Oracle 过程中,开发和测试部门投入的人力成本。不过,这些人力成本是一次性的,项目完成即结束。

在王英杰看来,“如果以去 Oracle 项目的一次性架构改造成本来看,运维成本大概会占到总人力成本的 30%-40%,其中人力成本主要是针对全套去 Oracle 工具的研发。”

去 Oracle 完成之后,运维成本会发生什么变化?

通常情况下,完成去 Oracle 工作之后,软硬件固定成本会大幅度降低。如果是从 Oracle 迁移到开源数据库,运维人员的学习成本会在短期内升高,但是随着新的数据库纳入企业管理体系和运维人员技能的提高,这个成本也会随之降低。如果是从 Oracle 迁移到云数据库,后期运维管理成本可能会更低。

一般来说,随着新数据库规模的扩大,成本降低的效果会愈发显著。举个例子,当花了 1000 万购买的小机和存储的计算和 IO 能力与 100 万购买的 X86 服务相当的时候,花一个亿购买的小机和存储的计算和 IO 能力,花费不到 1000 万的 X86 服务器就能满足相同的容量。
以陆金所为例,去 Oracle 之后,IOE 设备的软硬件费用几乎全部消失,仅采购廉价的 X86 服务器即可支撑起全站的核心数据库系统。

一旦运维成本上升,企业还会接着去 Oracle 吗?

虽然说在大多数情况下,去 Oracle 之后的运维成本是下降的,但凡事都有例外。如果运维成本上升了,企业还会接着去 Oracle 吗?
对此,黄东旭是分多种不同的情况进行分析的:

  • 如果是超大型商业公司,它们的 IT 基础设施体量庞大,数据库应用规模也很大,那么即使迁移后运维成本上升,企业也会因为迁移工作带来的中长期降本增效而接着进行。另外,运维成本中的一般性成本在纳入企业的管控体系后,也会得到控制,因此这类企业大概率会接着推动去 Oracle 工作;
  • 如果是中小型企业,数据库应用规模本身不大,单次更换数据库在固定成本上的降低不明显,如果迁移后运维成本上升,它们可能会选择上云或者使用云端数据库的方式来控制成本;
  • 如果是金融、国防、电力、通信、能源等领域的企业,它们除了承担着企业经营使命之外,还承担着国家运行基础设施支柱的作用。所以,它们在选择是否去 Oracle 时,运维成本可能是个考虑指标,但不会是主要指标。
    如果按照既定迁移路线评估之后,发现运维成本有上升的可能,其实我们也可以采取其它方式来降低成本,例如上云部署、云原生数据库服务、运维自动化等等。

写在最后

作为去 Oracle 的亲身实践者,王英杰表示:“去 Oracle 的成本说到底主要是开发、测试和运维的人力成本。作为一个庞大的系统改造项目,这部分人力成本在项目推进期间一次性投入,项目结束后,就无需投入了。”

“我们也观察到,对于越庞大的 IOE 系统,去 Oracle 改造后在成本减免上的收益也越大。因为这些 IOE 系统用于采购技术厂商提供的软硬件、维保、技术支持等费用上的成本,相较于在自身技术团队人力支出上的成本,占比会更大,而且数据库系统越庞大,占比会越大。如果我们通过投入一定的人力成本落地去 Oracle,让公司在数据库技术上有完全的自主性和选择权,对于拥有庞大 IOE 系统的公司来说,是非常值得的!”

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-03-20
本文作者: 田晓旭
本文来自:“InfoQ”,了解相关信息可以关注“InfoQ

相关文章
|
5月前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
2月前
|
运维 Oracle 前端开发
Oracle 11g RAC集群日常运维命令总结
Oracle 11g RAC集群日常运维命令总结
57 2
|
2月前
|
SQL 运维 Oracle
入门级Oracle 11g日常运维命令总结
入门级Oracle 11g日常运维命令总结
25 1
|
SQL 分布式计算 运维
【大数据开发运维解决方案】Sqoop增量同步mysql/oracle数据到hive(merge-key/append)测试文档
上一篇文章介绍了sqoop全量同步数据到hive, 本片文章将通过实验详细介绍如何增量同步数据到hive,以及sqoop job与crontab定时结合无密码登录的增量同步实现方法。
【大数据开发运维解决方案】Sqoop增量同步mysql/oracle数据到hive(merge-key/append)测试文档
|
SQL 运维 分布式计算
【大数据开发运维解决方案】Sqoop全量同步mysql/Oracle数据到hive
前面文章写了如何部署一套伪分布式的handoop+hive+hbase+kylin环境,也介绍了如何在这个搭建好的伪分布式环境安装配置sqoop工具以及安装完成功后简单的使用过程中出现的错误及解决办法, 接下来本篇文章详细介绍一下使用sqoop全量同步oracle/mysql数据到hive,这里实验采用oracle数据库为例,
【大数据开发运维解决方案】Sqoop全量同步mysql/Oracle数据到hive
|
SQL 分布式计算 运维
【大数据开发运维解决方案】sqoop增量导入oracle/mysql数据到hive时时间字段为null处理
前面几篇文章详细介绍了sqoop全量增量导入数据到hive,大家可以看到我导入的数据如果有时间字段的话我都是在hive指定成了string类型,虽然这样可以处理掉时间字段在hive为空的问题,但是在kylin创建增量cube时需要指定一个时间字段来做增量,所以上面那种方式不行,这里的处理方式为把string改成timestamp类型,看实验:
【大数据开发运维解决方案】sqoop增量导入oracle/mysql数据到hive时时间字段为null处理
|
SQL 运维 Oracle
【大数据开发运维解决方案】Oracle通过sqoop同步数据到hive
将关系型数据库ORACLE的数据导入到HDFS中,可以通过Sqoop、OGG来实现,相比较ORACLE GOLDENGATE,Sqoop不仅不需要复杂的安装配置,而且传输效率很高,同时也能实现增量数据同步。 本文档将在以上两个文章的基础上操作,是对第二篇文章环境的一个简单使用测试,使用过程中出现的错误亦可以验证暴漏第二篇文章安装的问题出现的错误,至于sqoop增量同步到hive请看本人在这篇文章之后写的测试文档。
【大数据开发运维解决方案】Oracle通过sqoop同步数据到hive
|
SQL 运维 Oracle
【大数据开发运维解决方案】Sqoop增量同步Oracle数据到hive:merge-key再次详解
这篇文章是基于上面连接的文章继续做的拓展,上篇文章结尾说了如果一个表很大。我第一次初始化一部分最新的数据到hive表,如果没初始化进来的历史数据今天发生了变更,那merge-key的增量方式会不会报错呢?之所以会提出这个问题,是因为笔者真的有这个测试需求,接下来先对oracle端的库表数据做下修改,来模拟这种场景。
【大数据开发运维解决方案】Sqoop增量同步Oracle数据到hive:merge-key再次详解
|
运维 分布式计算 Oracle
【大数据开发运维解决方案】Linux Solr5.1安装及导入Oracle数据库表数据
在solr页面中点击core admin–>add core 增加一个core。和id字段如果不做主键,需要将required="true"去掉。配置文件介绍中已经说了问题的主要原因是schema配置文件中存在。2、取消ID的required=true,修改为指定的字段即可。保存退出,至于为什么这么改,看后面遇到的问题及解决方法。1、将uniqueKey修改为你导入solr的字段。能够正常查询出来数据,简单导入完成。最后结果如上截图及配置。
【大数据开发运维解决方案】Linux Solr5.1安装及导入Oracle数据库表数据
|
SQL 运维 Oracle
【大数据开发运维解决方案】Oracle Sql基础查询
空字符串在oracle中常常相当于null,为什么不说空字符串等价于null呢,看案例: 可以看到,本身deptno是number类型的,而‘’字符串本身是varchar类型,这与null可以是任何类型不同,所以也就不等价。
【大数据开发运维解决方案】Oracle Sql基础查询

推荐镜像

更多
下一篇
无影云桌面