主要云數據庫產品
我最近查看的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的主席兼首席執行官。
原文網址:https://www.infoworld.com/article/3627792/how-to-choose-a-cloud-database.html