如今数据库软件领域不再由少数传统数据库管理系统 ( DBMS ) 产品组成,因为数据库市场已出现了数十种基于云的产品,从专为满足一组独特需求而设计的专用DBMS平台到应用范围更广的通用技术。
除此之外,它还包括DBMS供应商提供的各种托管云数据库服务,包括数据库即服务 ( DBaaS ) 和数据仓库即服务 ( DWaaS ) 产品。为了让企业选择合适的供应商,数据管理团队必须对可用的云数据库选择进行深思熟虑的比较。
一般情况下,IT人员经常用于云数据库比较的三个高级评估标准是产品范围、数据库迁移机制和定价。根据这些标准,以下是对四大知名DBaaS和DWaaS供应商的简单评估:AWS(亚马逊)、Microsoft(微软)、Google(谷歌)和Oracle(甲骨文)。
产品供应范围
数据库管理员 ( DBA )不仅需要了解云数据库软件的基础知识,还必须了解供应商底层架构的复杂性。使用同一家供应商的多种产品可让DBA扩展其现有技能,并简化不同数据库驱动应用程序之间的通信。
目前亚马逊、微软、谷歌和甲骨文都在云中提供各种类型的数据库系统。让我们看看他们在云数据库产品线广度方面的比较。
AWS
AWS目前在产品广度方面领先于所有竞争对手,共有15种不同的数据库引擎,Amazon Aurora是其通用关系数据库管理系统,与 MySQL和PostgreSQL开源数据库完全兼容,并提供15个只读副本、自动故障转移和轻松的可扩展性;它还可以部署在无服务器配置中,可根据需要自动运行和扩展或缩小。
Aurora是Amazon Relational Database Service(RDS)一部分,该产品套件还包括五个外部数据库引擎,分布是Microsoft SQL Server、Oracle Database、MySQL、PostgreSQL和另一个开源DBMS MariaDB。Amazon RDS也可在AWS Outposts上使用,这允许客户在本地数据中心部署完全托管的SQL Server、MySQL和PostgreSQL数据库。
AWS关系数据库产品线还包括Amazon Redshift,这是一个PB级数据仓库平台,可自动执行仓库管理任务并使用内置机器学习工具生成预测见解。当然,它也可以在无服务器设置中使用。
AWS提供的NoSQL数据库技术包括与MongoDB兼容的文档数据库Amazon DocumentDB、用于图形数据库应用程序的Amazon Neptune、Amazon DynamoDB键值存储、用于内存数据库部署的Amazon ElastiCache和Amazon MemoryDB for Redis以及Amazon Timestream时间序列数据库。
Amazon Keyspaces是另一个NoSQL数据库,它是一个宽列存储,使客户能够几乎不做任何更改地将Apache Cassandra数据库和工作负载迁移到AWS云。AWS还为寻求提供安全、可加密验证交易日志的分类账数据库的组织提供Amazon Quantum Ledger Database。
微软
微软还继续扩展其Azure云提供的数据库产品组合和功能,微软的关系产品包括Azure SQL数据库、其旗舰DBaaS平台和适用于基于云的数据仓库和大数据应用程序的Azure Synapse Analytics 。
Azure SQL托管实例是Azure SQL数据库的一个分支,它几乎与Microsoft的SQL Server本地数据库软件100%兼容,这使客户更容易将现有数据库迁移到托管云服务。或者,想要将数据库迁移到自管理IaaS平台的组织可以在Azure虚拟机上使用SQL Server。此外,Azure SQL Edge是一种专用于边缘计算的数据库系统,支持数据流和时间序列数据,并包括机器学习和图形功能。
值得注意的是,微软还提供了一个名为Azure Cosmos DB的多模型NoSQL数据库,该数据库支持文档、键值、图形和宽列数据模型以及MongoDB和Cassandra的API,以及通过PostgreSQL服务的关系工作负载。另外,Azure Managed Instance for Apache Cassandra允许客户在Azure云中运行Cassandra数据库,Azure Cache for Redis可用于将数据存储在内存中,以满足需要高吞吐量和最小延迟的应用程序的需求。
对于想要在Azure云中部署开源DBMS软件的客户,Microsoft为MySQL、MariaDB和PostgreSQL提供了完全托管的DBaaS环境。
谷歌
尽管在企业领域仍处于劣势,但谷歌不断增长的DBaaS产品套件凸显了其对支持企业数据管理需求的浓厚兴趣。谷歌云部门积极抢占DBMS市场份额,这使其在过去几年中推出了比其顶级竞争对手更多的新云数据库产品。
其关系数据库产品包括Cloud Spanner,一款专为需要高可扩展性的应用程序设计的云原生分布式SQL数据库,以及Cloud SQL,一款支持MySQL、PostgreSQL和SQL Server数据库的完全托管服务。Google 还提供AlloyDB for PostgreSQL,这是一个独立的DBaaS系统,与开源软件完全兼容,旨在提供高水平的性能和可扩展性。此外,客户可以使用Google的Oracle裸机解决方案将本地Oracle数据库迁移到 Google Cloud。
Google BigQuery是一个无服务器DWaaS平台,用于在云数据仓库中存储和分析大量数据。Google的NoSQL产品包括Cloud Bigtable(一种用于大规模工作负载的宽列存储)、文档数据库Firestore和Firebase Realtime Database(另一种支持实时数据存储和同步的文档存储,可实现最终用户之间的多设备访问和协作)。Google还提供Memorystore,这是一种完全托管的内存数据库服务,与Redis和Memcached 兼容。
甲骨文
根据甲骨文的营销努力,很明显,该供应商的主要重点是推广其自治Oracle Autonomous Databas服务,Oracle表示该服务可以自动完成通常由DBA完成的大部分数据库配置、调整、修补和更新工作。托管服务在Oracle云平台Oracle Cloud Infrastructure(OCI)上运行,也可以通过Oracle Cloud@Customer计划部署在本地数据中心。
自治数据库是一套云数据库产品套件,其中包括一个支持事务处理和事务、批处理和轻量级分析工作负载混合的DBMS版本,以及一个针对在数据仓库、数据集市和数据湖中运行更重负载分析工作负载而优化的DBMS版本。此外,自治数据库还内置了自治JSON数据库,这是一个支持MongoDB和简单Oracle文档访问API的NoSQL文档数据库。此外,自治数据库中还内置了 Oracle APEX应用程序开发,这是一种用于构建低代码应用程序的托管云服务。
想要运行工作组或部门云数据库的客户可以使用Oracle标准数据库服务,这是一项单独的DBaaS产品,它还使组织能够将本地Oracle数据库系统迁移到OCI。Oracle Database Service for Azure是另一款产品,它使用户能够在Microsoft Azure云中构建应用程序并在OCI中的Oracle数据库上运行它们,使用托管服务(例如Autonomous Database和Oracle Exadata Database Service,它在公司的Exadata设备上运行Oracle Database)。
Oracle的DBaaS产品线还包括多模型Oracle NoSQL数据库云服务和MySQL HeatWave,后者是Oracle开源关系数据库的高性能版本,旨在处理分析和事务处理应用程序。MySQL Heatwave现在也可在AWS云中使用,使其成为Oracle在OCI以外的云平台上提供的首个托管数据库服务。
数据库迁移和转换功能
云数据库比较的第二个核心评估点是供应商提供的将本地数据库迁移和转换到其平台的机制,正如你将在下面看到的,这可能是顶级云数据库供应商之间的一个巨大差异。
AWS
AWS的迁移和转换产品远超其竞争对手。AWS数据库迁移服务是一款全面的复制实用程序,可用于最初为你的DBaaS平台提供数据,然后使其与源系统保持同步。除了在同质源和目标之间复制数据外,该服务还允许DBA在各种异构平台之间设置复制。这让客户可以将其数据库迁移到AWS云并切换到不同的DBMS。该服务支持的源系统和目标系统的数量及其强大的功能集远远超过其他迁移产品。
AWS还提供AWS Schema Conversion Tool,帮助用户将源数据库模式(包括视图、存储过程和函数)转换为亚马逊对应的模式。该工具还会扫描应用程序代码以查找嵌入的SQL语句,并将其转换为访问云数据库软件。
微软
尽管其最初的工具集专注于将本地SQL Server数据库迁移到Azure SQL数据库,但微软一直在加大力度提供帮助客户将非Microsoft数据库迁移到其DBaaS产品的实用程序。微软的Azure数据库迁移服务可用于将数据从SQL Server迁移到Azure SQL数据库、Azure SQL托管实例和Azure虚拟机上的SQL Server,也可以从MongoDB迁移到Azure Cosmos DB、从MySQL迁移到Azure Database for MySQL以及从PostgreSQL迁移到Azure Database for PostgreSQL。此外,它还使客户能够将运行在Amazon RDS上的SQL Server、MySQL和PostgreSQL数据库迁移到其Azure SQL数据库和Azure Database对应数据库。
通过Microsoft SQL+Apps Migration Factory计划,微软还将免费为客户将符合条件的具有"低复杂性"工作负载的SQL Server数据库迁移到其Azure SQL云服务之一,但该项优惠仅适用于本地SQL Server数据库或在Amazon EC2服务上运行的数据库。
谷歌
谷歌在云数据库迁移和转换工具集方面落后于AWS和微软。谷歌的数据库迁移服务(DMS)可帮助客户将其本地MySQL、PostgreSQL和SQL Server数据库迁移到其Cloud SQL软件,还支持将Oracle数据库迁移到CloudSQL for PostgreSQL。此外,DMS现在可用于将任何现有的PostgreSQL数据库迁移到AlloyDB,无论它们是在本地运行,还是在Google Cloud中作为自管理系统运行,还是在竞争对手的云数据库服务中运行。
对于同构迁移,Google使用数据库固有的复制功能来传输数据。对于异构数据库转换,例如从Oracle迁移到Cloud SQL中的PostgreSQL,Google使用变更数据捕获复制流程。
Oracle
Oracle支持多种方法将其自己的本地数据库迁移到OCI,现在它提供Oracle云基础设施数据库迁移,这是一项用于迁移Oracle数据库(包括在Amazon RDS中运行的数据库)的托管服务。为了帮助客户将非Oracle数据库迁移到OCI,它主要依赖于Oracle SQL Developer,该工具包含一个迁移向导,用于将SQL Server、IBM Db2、Sybase Adaptive Server和Teradata Database等本地数据库迁移到Oracle自治数据库。SQL Developer还为想要从Amazon Redshift迁移到自治数据库的客户提供了单独的迁移实用程序。
另外,Oracle还免费为云用户提供Oracle Cloud Lift Services,该服务为客户提供单一联系点以及云工程资源和技术工具的访问权限,以帮助他们将数据库和应用程序工作负载迁移到OCI。
云数据库定价模型
避免云成本高昂的关键是充分了解供应商如何对资源分配和利用进行收费,因为你并不是购买云数据库环境,而且租用它并支付基于使用的费用,费用会因供应商、数据库服务、系统配置和工作负载的不同而有很大差异。
影响定价的一些常见因素包括数据库系统运行的地理区域、CPU和计算能力、内存和存储容量、生成的I/O量、网络带宽和磁盘子系统性能保证、超出供应商分配的备份数据存储、高可用性配置和云环境外的数据传输。
AWS
与竞争对手相比,其按使用量付费定价机制更为复杂。但这种复杂性是AWS提供的广泛数据库选项和功能的结果,这使客户能够定制满足其工作负载要求的环境。
根据数据库管理系统(DBMS)的不同,AWS向客户收取的费用基于地区、服务器与无服务器配置、CPU、内存、磁盘、I/O速率、备份存储和从其云平台传出的数据。例如,Amazon RDS客户可以从一系列不同价格的数据库实例类型中进行选择,以适应其特定的使用案例。这些实例类型提供不同的CPU、内存、存储和网络带宽组合,包括通用型和内存优化型选项。
客户可以选择按需数据库实例,其定价取决于使用时间(小时或秒)或对数据库的数据读写次数等因素。AWS的几项数据库服务还允许用户提前预留实例或处理容量,以获得常规工作负载的折扣价格。例如,使用Amazon RDS,可以预留实例一年或三年;预付全价可获得最大折扣,也可以选择部分预付款或不预付款。
微软
微软为其顶级云数据库管理系统Azure SQL Database提供了两种定价选项。客户可以使用数据库事务单元(DTU)购买模型,该模型将计算、存储和I/O资源组合成用于常见工作负载的套餐。或者他们可以使用基于虚拟核心(vCore)CPU的购买模型,该模型允许他们在不同代硬件之间进行选择,并分别选择计算、内存、存储和I/O。vCore选项还允许客户在预配置或无服务器计算层之间进行选择。
Azure SQL数据库客户还可以将多个系统组合在一起,并将它们作为一个单元分配资源。这些组称为弹性池,允许数据库共享分配的资源。客户可以选择基于DTU或基于vCore的购买模型来将资源分配给弹性池,并且DBA可以将工作负载在不同时间激增的数据库分配给一个池,从而降低总体资源利用成本。
对于微软的开源DBMS产品,客户可以选择vCore数量和不同的内存分配组合,以及通用或内存优化实例、存储分配和读取副本数量,以获得不同的定价级别。
谷歌
与微软和AWS相比,谷歌的定价模式更简单、更容易理解。尽管谷歌可能没有提供竞争对手提供的大量计算、内存和存储配置选项,但客户仍然可以选择一组不同定价水平的资源分配来满足他们的数据处理需求。
例如,Cloud SQL关系数据库服务的用户通过选择区域和高可用性选项以及分配虚拟CPU、内存、存储和网络资源来配置他们的系统。除了按小时或按月按需定价外,Google还提供一年或三年的使用承诺,在CPU和内存定价上提供25%和52%的折扣。这些折扣不适用于存储或网络出口定价,后者根据数据目的地而有所不同。
对于Cloud Spanner分布式SQL数据库,Google根据计算能力、数据库和备份存储的数量以及使用的网络带宽量向客户收费。
Oracle
对于其自治数据库产品,Oracle根据分配的Oracle CPU(OCPU)数量按小时收费,OCPU代表系统中的物理CPU核心;据Oracle称,一个OCPU相当于两个x86虚拟CPU。客户可以选择共享服务器环境或更昂贵的专用服务器平台,其中包括Oracle的 Exadata硬件。
现有的Oracle用户还可以选择自带许可证选项,这样他们就可以将本地数据库许可证应用于自治数据库服务,从而获得更低的价格。选择许可证、部署和工作负载类型后,客户可以选择峰值OCPU数量、需要峰值数量的时间百分比以及数据存储分配,以获得估计的每月成本。
Oracle NoSQL数据库云服务定价基于存储容量和读写次数,而Oracle Exadata数据库服务则将OCPU定价与底层Exadata系统的费用相结合。所有数据库产品都可以使用Oracle的在线成本估算器进行定价,这样做时很明显,供应商在创建实用程序时花费了大量时间提高易用性。
主要限制和缺点
云数据库的许多潜在缺点对于在云中运行的所有系统都是共同的。例如,将大量数据传入和传出云平台可能具有挑战性。此外,许多企业会发现云需要一种全盘考虑的方法。为了避免性能问题,应用程序及其访问的数据库都需要在同一个云平台上运行。本地和云系统之间的数据传输会增加处理时间并造成延迟。以下是比较顶级云数据库供应商时需要注意的一些具体问题。
- AWS; 由于AWS拥有广泛而深入的云DBMS服务套件,因此管理起来可能很复杂,正确配置新系统也很有挑战性。一些用户还表示,AWS的价格开始受到谷歌、微软和甲骨文等竞争对手的打压。此外,AWS通过AWS Outposts提供有限的本地产品,这对于拥有大量内部数据中心投资的客户来说可能是一个问题。
- **微软;**尽管微软提供了广泛的云数据库产品,但在整体云服务方面,它仍然落后于AWS。需要构建多层和多服务应用程序的Azure用户可能会发现自己需要编写自定义代码或购买第三方服务来提供AWS向其客户提供的功能。一些用户表示,微软的成本通常高于竞争平台上的类似系统。与AWS云一样,微软的环境非常复杂,配置起来也很有挑战性。想要使用微软DTU定价模型的客户经常发现,测量现有系统的资源利用率来执行DTU计算尤其困难。此外,微软的云迁移实用程序不如AWS提供的那么强大。此外,Microsoft用户还需要注意本地SQL Server和Azure SQL数据库之间可能存在的功能不匹配问题,这可能需要进行一些重新设计来修复迁移数据库时的不兼容性。Azure SQL托管实例服务旨在提供与SQL Server更紧密的兼容性,但仍然不是100%兼容。
- **谷歌;**与AWS和微软相比,谷歌的云数据库服务组合仍然不够全面和多样化。谷歌正在迅速扩大其数据库产品范围以缩小差距,但用户可以预料到,这样做会遇到一些成长的烦恼。
- 甲骨文; 众所周知,甲骨文的价格比竞争对手更高,它的许可和合同谈判一直很复杂,对客户来说压力很大,尽管其成本估算器易于使用,但这个问题仍然存在于其云产品中。与AWS、微软和谷歌相比,Oracle云系统市场份额最低。此外,其异构DBMS选项总体上不足,尽管Oracle现在更多地采用多云方法提供自己的数据库服务。
哪个好,应该怎么选择?
选择哪种云数据库取决于你的具体需求、预算、技术栈和未来的发展规划,不同的使用需求可能选择也不一样,所以要具体对待。
不过,通过以上的对比非常,大概可以了解,AWS适合需要广泛服务和全球覆盖的企业,微软对于使用微软生态系统的企业非常有吸引力,谷歌则适合需要大数据和分析能力的企业,而甲骨文则为需要强大数据库功能和企业级支持的企业提供了良好的选择。