如何选择云数据库

自 1980 年代初以来,数据库已经走了很长一段路,当时它们只在大型机上运行,您可以在 CODASYL 数据库和关系数据库之间进行选择。CODASYL数据库的速度往往是关系数据库的两倍,但最终计算机硬件的改进和SQL查询的便利性(与编写导航数据库代码相比)导致关系数据库主导市场。
现在,可以从智能手机到数据中心的服务器,再到地理位置分散的云数据库,可以在任何地方运行数据库。除了关系表格数据库之外,还有用于时间序列、图形、空间、文本、联机分析处理 (OLAP)、XML 和 JSON 数据的数据库。一些数据库专门处理单一类型的数据;有些提供数据类型选择,但一次只能选择一种;有些允许多种数据类型在同一数据库实例中共存。一些数据库专门用于联机事务处理 (OLTP),一些数据库专门用于分析 (OLAP),而一些数据库则适用于组合事务和分析工作负载。
在本文中,我们将重点介绍在云中运行的事务工作负载,并将云数据仓库留给另一篇文章。我们将讨论的一些数据库也可以在本地运行;有些具有专门的云支持,但与本地数据库兼容;有些是“云原生的”,这意味着它们只能从云提供商处获得。
确定数据库要求
您将生成多少数据?有多快?
您是否提前了解您的架构?
如果您的数据库架构(数据结构)是预先确定的,并且不太可能随时间发生重大变化,并且您希望大多数字段在记录之间具有一致的类型,那么 SQL 数据库将是您的理想选择。否则,NoSQL 数据库(其中一些甚至不支持模式)可能更适合您的应用程序。
但是,也有例外。例如,操作数据库 Rockset 允许 SQL 查询,而无需对其导入的数据强加固定模式或一致的类型。
哪种形状适合您的数据?
您的延迟要求是什么?
是否需要群集数据库?
您需要分布式数据库吗?
主要云数据库产品
我上次查看时,DB-Engines排名中有373个系统,尽管其中许多产品并没有明确表示是云数据库。我为此列表选择了 12 家云服务和云数据库供应商作为示例,并按字母顺序列出它们。请注意,列入此列表不是建议,不列入也不是谴责。
亚马逊网络服务在其云中提供了至少15个数据库,尽管其中一些是数据仓库,其他一些已被弃用。Aurora 是其高性能、高可用性的关系数据库服务,同时支持 MySQL 和 PostgreSQL。RDS是其标准性能的关系数据库服务,支持五个引擎:MariaDB,MySQL,Oracle Database,PostgreSQL和Microsoft SQL Server。DynamoDB 是其高流量键值数据库服务。ElastiCache是其内存服务,具有Memcached和Redis兼容性。DocumentDB是一个与MongoDB兼容的文档数据库服务。Keyspaces 是一个与 Cassandra 兼容的宽列数据库服务。Neptune 是一个图形数据库服务,支持属性图和 RDF 模型。时间流是一种时间序列数据库服务。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 是一个云原生的多云、无服务器、可扩展、多区域 DBaaS,基于 Apache Cassandra/DataStax Enterprise。存储附加索引为非主键提供了 Astra 查询功能,这在任何其他版本的 Cassandra 上尚不可用。
谷歌云托管了十几种数据库。关系数据库包括适用于 Oracle数据库的裸机解决方案;Cloud SQL for MySQL、PostgreSQL 和 Microsoft SQL Server;和 Google Cloud Spanner,它是云原生的,具有无限的规模、一致性和 99.999% 的可用性。Google Cloud Bigtable是一个类似于Cassandra或HBase的宽列商店。Firestore 和 Firebase 实时数据库是文档数据库。内存存储支持 Redis 和 Memcached API。Google Cloud Partner Services 支持 MongoDB、DataStax、Redis Labs 和 Neo4j 的托管产品。
IBM在其云中提供了大约10种数据库。关系数据库服务包括PostgreSQL,EnterpriseDB(PostgreSQL的商业扩展)和IBM Db2.NoSQL数据库服务包括IBM Cloudant(文档数据库),MongoDB(也是文档数据库),DataStax(宽列Cassandra的商业扩展)和Redis(内存数据结构存储,用作数据库,缓存和消息代理)。IBM 在端到端加密的超保护环境中托管 PostgreSQL 和 MongoDB。
Microsoft Azure 支持八个事务性云数据库。Azure SQL 是 SQL Server 的云原生版本,是一个关系多模型数据库;Azure SQL 实例与此类似,但提供与最新 SQL Server 引擎的最大兼容性。您还可以在虚拟机中运行 SQL Server。Azure Database 支持 MariaDB、MySQL 和 PostgreSQL。Cosmos DB 是一种高可用性、多模型、多区域数据库服务,提供文档模型、宽列模型、键值模型和图形模型,尽管每个实例一个模型。Azure Cache 与 Redis 兼容。适用于 Cassandra 的 Azure 托管实例是一个托管宽列数据库,可与本地 Cassandra 群集同步。
MongoDB Atlas是一种多云文档数据库服务,可在AWS,Google Cloud和Microsoft Azure上使用。MongoDB本身可以作为托管服务或在基本上每个云服务提供商的虚拟机中使用。
Redis 是一种 NoSQL,内存中数据结构存储,可以保留在磁盘上。它可以用作数据库、缓存和消息代理。它通过 Redis Sentinel 提供高可用性,并使用 Redis 集群提供自动分区。Redis 企业版增加了一些功能,以提高速度、可靠性和灵活性,并可作为云数据库即服务使用。Redis on Flash 是一项 Redis Enterprise 功能,可以显著降低 Redis 的硬件成本。Redis Enterprise Cloud 实例可在 AWS、Google Cloud 和 Microsoft Azure 上使用;您可以选择自己的一个或多个区域。您还可以在云虚拟机、Kubernetes 或容器中运行 Redis。
本文由“云原生数据库”进行翻译
原文链接:
https://www.infoworld.com/article/3627792/how-to-choose-a-cloud-database.html




