Azure 資料

同一朵雲,兩種資料庫哲學:Cosmos DB 與 Azure SQL 的選型

Cosmos DB 與 Azure SQL 不是替代關係。Cosmos DB 是全球分散式的多模態資料庫,每個區域都可以寫入,並提供五種明確定義的一致性等級;2026 年它把向量索引、全文與混合檢索、全域次要索引補齊,成為 AI 應用的資料層。Azure SQL 受控執行個體則是為了讓既有的 SQL Server 應用幾乎不改就搬上雲:接近 100% 功能相容、原生虛擬網路隔離、自動修補與備份。選型看的是資料形狀、寫入分布,以及你願意為一致性付出多少延遲。
同一朵雲,兩種資料庫哲學:Cosmos DB 與 Azure SQL 的選型:文章重點卡

同一朵雲,兩種資料庫哲學:Cosmos DB 與 Azure SQL 的選型

「Cosmos DB 跟 Azure SQL 選哪個」這個問題,其實問錯了。它們處理的是兩件不同的事,會被放在一起比,多半是因為都掛著資料庫這三個字。

這篇試著把問題換掉:先分清楚你在決定什麼,再看兩邊各自的取捨,最後才是 2026 年那些值得注意的新東西。

你將學到什麼

先分清楚三件事

資料形狀、寫入分布、一致性容忍度,這三題決定了後面所有選擇。

多區域寫入的代價

每個區域都能寫,換來的是你必須自己決定寫入衝突怎麼解。

受控執行個體的角色

接近 100% 相容加上原生虛擬網路隔離,目標是讓舊應用少改就搬得動。

2026 年的變化

Cosmos DB 補齊了向量索引、全域次要索引與每分割區自動容錯移轉。

選資料庫最常見的失敗,不是選錯產品,是根本沒把「我在決定什麼」講清楚就開始比功能表。

所以這篇先把決策拆成三個問句,再回頭看 Cosmos DB 與 Azure SQL 各自在哪一格。

先分清楚你在決定三件事

  1. 資料形狀:你的資料有沒有穩定的關聯結構?需不需要跨表交易與複雜彙整?
  2. 寫入分布:寫入集中在一個地區,還是使用者散在全球、每個地區都要就近寫?
  3. 一致性容忍度:讀到幾百毫秒前的舊值,會不會讓業務出錯?

這三題答完,選型的空間會小很多。第二題尤其關鍵,因為它決定了架構的形狀,不是設定值。

兩種寫入拓撲,兩種要處理的問題單一寫入區域主要寫入區域唯讀複本唯讀複本好處:不會有寫入衝突,語意單純代價:遠端使用者的寫入要跨海故障時靠容錯移轉換主要區域多區域寫入區域 A區域 B區域 C好處:每個區域都能就近寫入代價:必須決定寫入衝突怎麼解一致性等級要跟著業務語意挑選錯的成本會在半年後才出現
多區域寫入不是免費的效能升級,它把衝突處理搬到了你的應用邏輯裡。

Cosmos DB:把「離使用者近」寫進資料庫本身

官方對 Cosmos DB 的描述是全球分散式資料庫系統,讓你從本地複本讀寫資料,並透明地把資料複寫到帳號關聯的所有區域。

重點是那個「透明」。加區域、減區域都不需要暫停或重新部署應用,這在傳統資料庫幾乎是不可能的操作。

官方文件(2026 年 6 月更新)列出多區域資料庫的讀寫可用性 SLA 為 99.999%,並提供五種一致性模型讓你在一致性與效能之間選位置。

分割區鍵才是真正的設計工作

Cosmos DB 的效能與成本,八成取決於分割區鍵選得好不好。選一個分布均勻、而且大多數查詢都會帶上的欄位,跨分割區查詢就會少;選錯了,之後要改的代價比重寫查詢大得多。2026 年官方雖然推出了變更分割區鍵的能力,但那是止血,不是免死金牌。

2026 年的 Cosmos DB,已經是 AI 應用的資料層

向量可以直接存在文件的欄位裡,跟原始資料放在同一個邏輯單位,省掉再養一套純向量資料庫的成本。

向量索引型別行為適合的情境
flat暴力搜尋,召回率 100%,維度上限較低資料量小,或已用篩選條件把範圍縮得很窄
quantizedFlat先壓縮再存索引,仍是暴力搜尋,精度略降範圍內向量數量不多的中小型情境
diskANNMicrosoft Research 的近似最近鄰索引,延遲與成本低搜尋範圍大、要在規模下維持高精度

近似搜尋有個容易踩的坑:同一個查詢在資料沒變的情況下,兩次執行可能回傳略有不同的排序。官方明說這是預期行為,需要精確結果就用 flat。

以下是 2026 年 Build 大會公布的幾項更新,狀態會變,實際以官方公告為準。

  • 全域次要索引:把昂貴的跨分割區查詢變成單一分割區查詢,並可與交易工作負載隔離。
  • 每分割區自動容錯移轉:區域出事時只轉移受影響的分割區,粒度比整個帳號細。
  • 語意重排序(預覽):用模型重新排序檢索結果,向量、全文與混合檢索都適用。
  • 分散式交易(預覽):跨多個分割區與實體維持交易一致性。
  • MCP 工具組:讓 AI 代理人以標準協定安全地存取資料。

Azure SQL 受控執行個體:要解的是「搬得動」

受控執行個體不是為了做全球分散,它要解的是另一種痛:一整批既有的 SQL Server 應用,要怎麼少改就上雲。

官方的說法是提供接近 100% 的最新 SQL Server 企業版資料庫引擎相容度,並具備原生的虛擬網路實作。這兩件事合起來,才讓大規模移轉變成可行。

選項你管什麼適合
SQL Server on Azure VM作業系統、修補、備份、高可用全都自己來需要完全掌控,或有特殊元件必須裝在主機上
SQL 受控執行個體只管資料庫設計與最佳化,其餘由平台處理既有應用依賴執行個體層級功能,要少改就搬
Azure SQL Database只管單一資料庫,管理面最輕新開發的應用,或本來就只用單一資料庫功能

幾個常被忽略但很實際的差異:不支援指定實體路徑,只有自動備份與時間點還原,而且驗證整合的是 Microsoft Entra ID。

名稱演變要記一下

Azure Active Directory 已經改名為 Microsoft Entra ID,官方文件現在一律用新名字。舊教學裡的 Azure AD 驗證、Azure AD 管理員,講的都是同一件事。

同期的品牌調整還有 Azure AI Foundry 改名為 Microsoft Foundry。看到不同名稱時,先確認那篇文章的發布日期再判斷內容還能不能用。

高可用與容錯,取捨在哪一層

兩邊解同一個問題的方式很不一樣,把它們放在一起看,反而最容易理解各自的假設。

  • Cosmos DB:可用性是資料庫本身的屬性。多區域寫入讓每個區域都能服務,區域出事由平台自動處理,2026 年再加上每分割區自動容錯移轉這一層。
  • 受控執行個體:可用性分層設計。預設是本地備援;要擋可用區域故障要啟用區域備援;要擋整個區域故障,則要另外做失敗轉移群組或地理還原。

這裡有個經驗:容錯設計最貴的不是資源,是「你以為已經有了」。哪一層有、哪一層沒有,要寫下來,不能靠記憶。

最後,四個問句代替一張比較表

  1. 我的寫入真的分布在多個地區嗎?沒有的話,多區域寫入只是多買一份複雜度。
  2. 這份資料讀到舊值會出什麼事?答不出來就先別談一致性等級。
  3. 我要搬的是資料庫還是整台執行個體?這一題直接決定 SQL Database 或受控執行個體。
  4. 向量要不要跟原始資料放在一起?要,就用整合式向量存放;不要,就另外接檢索服務。
本文源起本文依 Microsoft Learn 官方文件與 2026 年公開資料整理,由酒Ann 以自己的視角編寫成中文導覽。實際服務名稱與規格以 Microsoft Learn 為準。

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

既然 Cosmos DB 可以多區域寫入,是不是預設就該開?
不建議。多區域寫入解的是「使用者散在全球、寫入延遲不能忍」這個問題,代價是你必須面對寫入衝突。官方提供最後寫入者優先與自訂衝突解決兩種路線,但無論哪一種,你的應用邏輯都得能接受同一筆資料在兩地被同時改。如果寫入本來就集中在一個地區,單一寫入區域加上多個唯讀複本,語意單純得多。
一致性等級要怎麼挑?
官方提供五種明確定義的一致性模型,每一種都是一致性與效能之間的取捨。實務上的挑法不是看哪個最強,而是問這份資料被讀到舊值會發生什麼事。庫存扣減、帳務餘額這類讀到舊值就會出錯的,往前挑;貼文計數、推薦清單這類慢個幾百毫秒沒人會發現的,往後挑。同一個帳號底下不同容器可以有不同需求,別一刀切。
Azure SQL Database 與受控執行個體差在哪?
差在你要搬的是資料庫還是整台執行個體。受控執行個體提供接近 100% 的 SQL Server 相容度,包含 SQL Server Agent、跨資料庫查詢、連結伺服器、Service Broker、異動複寫這些執行個體層級的功能,而且原生跑在你的虛擬網路裡。如果應用只用到單一資料庫的功能、也不依賴執行個體層級的東西,SQL Database 的管理負擔更輕。
Cosmos DB 能當向量資料庫用嗎?
可以,而且是把向量直接存在文件裡,跟原始資料放在同一個邏輯單位。官方提供 flat、quantizedFlat 與 diskANN 三種向量索引,查詢用 VectorDistance 系統函式,並且可以跟一般的篩選條件與分割區鍵合用。這樣做的價值是省掉把資料複製到另一套純向量資料庫的成本,也避免兩邊資料不同步。
受控執行個體的高可用要怎麼設計?
預設是本地備援,也就是在同一個資料中心內做容錯移轉,這能擋住維護作業與資料庫引擎層級的問題,但擋不住整個可用區域出事。要防區域性故障就要啟用區域備援;要防整個 Azure 區域出事,則要另外做失敗轉移群組或地理還原。這三層要分開想,別把「有高可用」當成一句話帶過。