選擇 Azure Cosmos DB 中的 API

適用於:NoSQL MongoDB Cassandra Gremlin Table PostgreSQL

Azure Cosmos DB 是完全受控的 NoSQL、關係型和向量資料庫,可用於新式應用程式開發。 Azure Cosmos DB 利用自動管理、更新和修補,讓您從資料庫管理工作中脫身。 它也會使用符合成本效益的無伺服器和自動調整選項來處理容量管理,以回應應用程式必須使容量符合需求的訴求。

Azure Cosmos DB 中的 API

Azure Cosmos DB 提供多種資料庫 API,包括 NoSQL、MongoDB、PostgreSQL、Cassandra、Gremlin 和 Table。 使用這些 API,即可透過文件、索引鍵/值、圖表和資料行系列資料模型,模型化真實世界的資料。 這些 API 可讓應用程式將 Azure Cosmos DB 視為其他不同的資料庫技術,但不會造成管理的額外負荷,也無須調整做法。 Azure Cosmos DB 可以透過各種 API,協助您使用既有的生態系統、工具和技能來建立資料模型和查詢。

所有 API 都會提供自動調整儲存體和輸送量、彈性和效能保證。 這其中並沒有所謂的最佳 API,因此您可以選擇任何一個 API 來建置應用程式。 本文會協助您根據工作負載和小組需求來選擇 API。

選擇 API 的考量事項

適用於 NoSQL 的 API 是 Azure Cosmos DB 的原生 API。

適用於 MongoDB、PostgreSQL、Cassandra、Gremlin 和資料表的 API 會實作開放原始碼資料庫引擎的有線通訊協定。 這類 API 是符合下列條件時的首選:

  • 目前已有 MongoDB、PostgreSQL、Cassandra 或 Gremlin 應用程式
  • 您不想重寫整個資料存取層
  • 您想在資料庫中運用開放原始碼開發人員生態系統、用戶端驅動程式、專業知識和資源
  • 如果您想要使用 Azure Cosmos DB 核心功能,例如:
    • 全域散發
    • 儲存體和輸送量的彈性調整
    • 大規模高效能
    • 低延遲
    • 能夠執行交易和分析工作負載
    • 管理完善的平台
  • 如果您要在多雲端環境上開發現代化應用程式

您可以使用這些 API 建置新的應用程式,或移轉現有資料。 若要執行已移轉的應用程式,請變更應用程式的連接字串,然後像以前一樣繼續執行。 移轉現有應用程式時,請務必評估這些 API 的功能支援。

您必須根據工作負載選擇符合需求的 API。 下列的流程圖會顯示在建置新應用程式或將現有應用程式移轉到 Azure Cosmos DB 時,如何選擇正確的 API:

圖表:在 Azure Cosmos DB 中選擇 API 的決策樹。

圖表:在 Azure Cosmos DB 中選擇 API 的決策樹。 圖表的一半說明有多少現有開放原始碼資料庫工作負載可以使用 Azure Cosmos DB 的相對應 API。 圖表的另一半說明新應用程式如何使用 API for NoSQL,或搭配使用現有技能與開放原始碼資料庫的 API。

適用於 NoSQL 的 API

適用於 NoSQL 的 Azure Cosmos DB API 會以文件格式來儲存資料。 其會提供最佳的端對端體驗,因為我們可以完全掌控介面、服務及 SDK 用戶端程式庫。 Azure Cosmos DB 推出的任何新功能,都會先在適用於 NoSQL 的 API 帳戶釋出。 NoSQL 帳戶支援使用結構化查詢語言 (SQL) 語法查詢項目,這是大家查詢 JSON 物件時最熟悉且最常使用的其中一種查詢語言。 若要深入了解,請參閱 Azure Cosmos DB API for NoSQL 訓練課程模組和開始使用 SQL 查詢一文。

如果您是從 Oracle、DynamoDB、HBase 等其他資料庫移出,而且想要使用現代化技術建置應用程式,則建議使用 API for NoSQL。 API for NoSQL 支援分析,並可將作業工作負載與分析工作負載的效能隔離。

適用於 MongoDB 的 API

適用於 MongoDB 的 Azure Cosmos DB API 會透過 BSON 格式,以文件結構儲存資料。 其雖與 MongoDB 有線通訊協定相容,卻未使用任何與原生 MongoDB 有關的程式碼。 如果您想使用更廣泛的 MongoDB 生態系統和技能,但不想犧牲 Azure Cosmos DB 功能,則適用於 MongoDB 的 API 會是不錯的選擇。

您可以繼續使用的 Azure Cosmos DB 功能包括:

  • 調整大小
  • 高可用性
  • 異地複寫
  • 多個寫入位置
  • 自動化和透明分區管理
  • 作業與分析存放區之間的透明複寫

只要變更連接字串,就可以使用現有的 MongoDB 應用程式搭配適用於 MongoDB 的 API。 您可以使用原生的 MongoDB 工具 (例如 mongodump 和 mongorestore) 或使用我們的 Azure 資料庫移轉工具來移動所有現有資料。 MongoDB 殼層、MongoDB CompassRobo3T 等工具可以執行查詢,並像處理原生 MongoDB 一樣處理資料。 若要深入了解,請參閱適用於 MongoDB 的 API 一文。

適用於 PostgreSQL 的 API

Azure Cosmos DB for PostgreSQL 這項受管理的服務能運用分散式資料表 Citus 開放原始碼的強大功能,在任何規模上執行 PostgreSQL。 這項服務能在單一節點上儲存資料,或將資料散發在多節點設定中。

Azure Cosmos DB for PostgreSQL 是以原生 PostgreSQL 為基礎建置,而不是 PostgreSQL 分支,因此可讓您選擇 PostgreSQL 社群支援的任何主要資料庫版本。 它具有豐富的索引、地理空間功能和 JSONB 支援,非常適合從單一節點資料庫開始。 日後,如果您需要更多的效能,則不需要停機,即可將節點新增至叢集。

如果您需要支援高效能和異地複寫的受控開放原始碼關聯式資料庫,建議您選擇 Azure Cosmos DB for PostgreSQL。 若要深入了解,請參閱 Azure Cosmos DB for PostgreSQL 簡介

適用於 Apache Cassandra 的 API

適用於 Cassandra 的 Azure Cosmos DB API 將資料儲存在資料行導向的結構描述中。 Apache Cassandra 會用高度分散的水平縮放方式儲存大量資料,同時為資料行導向的結構描述提供彈性做法。 Azure Cosmos DB 中適用於 Cassandra 的 API 運用同樣原理處理分散式 NoSQL 資料庫。 這項適用於 Cassandra 的 API 是與原生 Apache Cassandra 相容的有線通訊協定。 如果您想要獲得 Azure Cosmos DB 的彈性和完全受控本質優勢,同時仍使用大部分的原生 Apache Cassandra 功能、工具和生態系統,請考慮使用 API for Cassandra。 這種完全受控本質表示,當您使用 API for Cassandra 時,您不需要管理 OS、JAVA VM、記憶體回收行程、讀取/寫入效能、節點、叢集等等。

您可以使用 Apache Cassandra 用戶端驅動程式連線到 API for Cassandra。 API for Cassandra 可讓您使用 Cassandra 查詢語言 (CQL) 和 CQL 殼層等工具來與資料互動,這些都是您熟悉的 Cassandra 用戶端驅動程式。 API for Cassandra 目前僅支援 OLTP 案例。 使用 API for Cassandra 時,您也可以使用 Azure Cosmos DB 的獨特功能,例如變更摘要。 若要深入了解,請參閱 API for Cassandra 一文。 如果您已熟悉 Apache Cassandra 但不熟悉 Azure Cosmos DB,請參閱如何採用 API for Cassandra 以取得詳細資訊。

適用於 Apache Gremlin 的 API

適用於 Gremlin 的 Azure Cosmos DB API 可讓使用者執行圖表查詢,並將資料儲存為邊線和頂點。

以下情節適合使用適用於 Gremlin 的 API:

  • 涉及動態資料
  • 涉及具有複雜關聯性的資料
  • 涉及太複雜而無法用關聯式資料庫建立模型的資料
  • 您想使用現有的 Gremlin 生態系統和技能

API for Gremlin 結合了圖形資料庫演算法的強大功能與可高度調整的受控基礎結構。 此 API 提供獨特且更有彈性的解決方案,以處理因缺乏彈性及關聯式方法導致的常見資料問題。 API for Gremlin 目前僅支援 OLTP 案例。

API for Gremlin 是以 Apache TinkerPop 圖表計算架構為基礎。 API for Gremlin 使用相同的圖表查詢語言來內嵌和查詢資料。 它使用 Azure Cosmos DB 分割策略,從圖形資料庫引擎執行讀取/寫入作業。 API for Gremlin 提供開放原始碼 Gremlin 的有線通訊協定支援,因此您可以使用開放原始碼 Gremlin SDK 建置應用程式。 API for Gremlin 也可搭配 Apache Spark 和 GraphFrames 處理複雜的分析圖表案例。 若要深入了解,請參閱 API for Gremlin 一文。

適用於資料表的 API

適用於資料表的 Azure Cosmos DB API 會以索引鍵/值格式來儲存資料。 如果您目前使用 Azure 資料表儲存體,則可能出現延遲、擴充、輸送量、全域散發、索引管理和低查詢效能等限制。 適用於資料表的 API 能克服這些限制。如果您想善用 Azure Cosmos DB 的優點,建議您遷移應用程式。 適用於資料表的 API 僅支援 OLTP 情節。

針對 Azure 資料表儲存體所撰寫的應用程式可以移轉到 API for Table (幾乎不用變更程式碼),並利用進階功能。 若要深入了解,請參閱 API for Table 一文。

移轉資料時的容量規劃

為了從現有資料庫叢集移轉到 Azure Cosmos DB for NoSQL 或 MongoDB,您正在嘗試進行容量規劃嗎? 您可以使用現有資料庫叢集的相關資訊進行容量規劃。

下一步