主要云数据库产品
我最近查看的DB-Engines排名中有373个系统,不过其中许多产品不是明确的云数据库。我选择了有代表性的12家云服务和云数据库供应商,按首字母排序来介绍。请注意,本文提及的并非建议使用,未提及的也并非不好。
亚马逊网络服务(AWS)在其云端提供至少15种数据库,不过其中几种是数据仓库。Aurora是高性能、高可用性的关系数据库服务,同时支持MySQL和PostgreSQL。RDS是其标准性能的关系数据库服务,支持5种引擎:MariaDB、MySQL、Oracle Database、PostgreSQL 和Microsoft SQL Server。DynamoDB是高流量键值数据库服务。ElastiCache是内存中服务,与Memcached和Redis兼容。DocumentDB是一种与MongoDB兼容的文档数据库服务。Keyspaces是一种与Cassandra兼容的宽列数据库服务。Neptune是一种图数据库服务,支持属性图和RDF模型。Timestream是一种时间序列数据库服务。QLDB是一种分类账数据库服务。
CockroachDB是一种分布式、可横向扩展、动态分片的关系多模型数据库,它在键值存储数据库上实现了PostgreSQL;它拥有强一致性和异常出色的存活能力。CockroachDB Core是免费开源的;CockroachDB Enterprise是拥有附加功能的商业版;CockroachCloud是供应商管理的多云数据库即服务,基于CockroachDB Enterprise和Kubernetes;CockroachCloud Free是CockroachCloud的永久免费版,功能简化,每个免费集群最多只能使用1个vCPU和5 GB存储。CockroachDB在 2020年年底增加了空间数据存储和索引功能。
Couchbase Server是一种内存优先、分布式、灵活的JSON文档数据库,在本地集群中高度一致。Couchbase Lite是移动版本,可以在本地运行,也可以在连接后同步到服务器。Couchbase Cloud是一种完全托管的NoSQL数据库服务,面向关键任务型应用,可在AWS或Microsoft Azure的云环境中自动部署和管理Couchbase Server。
DataStax Enterprise 是开源宽列数据库Apache Cassandra的增强型云原生版本。DataStax Astra是一种基于Apache Cassandra/DataStax Enterprise构建的云原生多云、无服务器、可扩展的多区域DBaaS。存储附加索引机制为Astra提供了针对非主键的查询功能,其他任何版本的Cassandra还没有这项功能。
谷歌云托管10多种数据库。关系数据库包括Bare Metal Solution for Oracle Database、Cloud SQL for MySQL/PostgreSQL/Microsoft SQL Server以及Google Cloud Spanner,后者是云原生系统,支持无限制的规模、一致性和99.999%的可用性。Google Cloud Bigtable是类似Cassandra或HBase的宽列存储数据库。Firestore和Firebase Realtime Database是文档数据库。Memorystore支持Redis API和Memcached API。谷歌云合作伙伴服务支持来自MongoDB、DataStax、Redis Labs和Neo4j的托管产品。
IBM 在其云端提供大约10种数据库。关系数据库服务包括PostgreSQL、EnterpriseDB(PostgreSQL 的商业扩展)和IBM Db2。NoSQL数据库服务包括IBM Cloudant(文档数据库)、MongoDB(也是文档数据库)、DataStax(宽列Cassandra的商业扩展)以及Redis。IBM 在超级保护的环境中托管PostgreSQL和MongoDB,实现了端到端加密。
Microsoft Azure支持8种事务云数据库。Azure SQL是SQL Server的云原生版本,是一种关系多模型数据库;Azure SQL实例类似,但提供与最新SQL Server引擎的大兼容性。你还可以在虚拟机中运行SQL Server。Azure Database支持MariaDB、MySQL和PostgreSQL。Cosmos DB是一种高可用性、多模型、多区域的数据库服务,提供文档、宽列、键值和图模型,不过每个实例支持一个模型。Azure Cache与Redis兼容。Azure Managed Instance for Cassandra是一种托管宽列数据库,可以与本地Cassandra集群同步。
MongoDB Atlas是一种可在AWS、谷歌云和Microsoft Azure上使用的多云文档数据库服务。MongoDB本身可作为托管服务来使用,或在几乎每家云服务提供商的虚拟机中使用。
MySQL、MariaDB、Vitess、PlanetScale和SkySQL是从MySQL派生而来的数据库,可作为云服务来使用。MySQL是一种开源多模型关系数据库,可在AWS、谷歌云、Microsoft Azure和Oracle Cloud以及几乎每家云服务提供商的虚拟机中作为一项托管服务来使用。MariaDB是早期开发人员开发的MySQL的一个分支。Vitess是一种用于横向扩展MySQL的数据库集群系统,有自动分片功能。PlanetScale是一种与MySQL兼容的无服务器数据库平台,由Vitess提供支持。SkySQL则是可在AWS和谷歌云中使用的MariaDB服务。
Neo4j是一种符合ACID的属性图数据库,有许多集群功能。Neo4j Aura是一种快速、可靠、可扩展且完全自动化的Neo4j图数据库,作为云服务来提供。Aura的免费版和专业版仅在谷歌云上可用。企业版在AWS和谷歌云上都可用。
Oracle Database是一种商业关系数据库,也是领先的关系多模型数据库。它在 Oracle Cloud中以多种形式和大小的服务来使用;MySQL作为一项服务可在Oracle Cloud中使用。Oracle Database也可用于 AWS和谷歌云的本地部署环境中。
Redis是一种NoSQL内存中的数据结构存储,可以持久保存在磁盘上。它可以充当数据库、缓存和消息代理。它通过Redis Sentinel提供高可用性,并通过Redis Cluster实现自动分区。Redis Enterprise增加了提高速度、可靠性和灵活性的功能,可以作为云数据库即服务来使用。Redis on Flash是Redis Enterprise的一项功能,可显著降低Redis的硬件成本。Redis Enterprise Cloud实例可在AWS、谷歌云和Microsoft Azure上使用;你可以选择自己的一个或多个区域,还可以在云虚拟机、Kubernetes或容器中运行Redis。
无论你为自己的应用选择什么数据库,都别忘了在投入资源之前运行概念验证,并在进入到生产环境之前进行负载测试。许多云数据库可以根据需要纵向扩展和横向扩展,但并非所有云数据库都可以在无须将数据传输到新实例然后关闭旧实例的情况下进行扩展。
一旦你的数据库进入到生产环境,就要设置持续监控机制,能够针对异常情况发出警报,并且准备好应对紧急情况。请注意,一些数据库需要在负载变化时对索引进行调整和更改,另一些数据库会自动调整自己。
作者:Martin Heller现为《InfoWorld》网站的特约编辑兼评论员,此前担任Web和Windows编程顾问。从1986年至2010年,Heller一直从事数据库、软件和网站的开发工作。近期,他出任Alpha Software的技术和教育副总裁,还是Tubifi的主席兼首席执行官。