Azure Cosmos DB 資源模型

適用於: SQL API Cassandra API Gremlin API 資料表 API 適用於 MongoDB 的 Azure Cosmos DB API

Azure Cosmos DB 是完全受控的平台即服務 (PaaS)。 若要開始使用 Azure Cosmos DB,首先應該在所需訂用帳戶下的 Azure 資源群組中建立 Azure Cosmos 帳戶,再於此帳戶之下建立資料庫、容器、項目。 本文說明 Azure Cosmos DB 資源模型及資源模型階層中的各種實體。

Azure Cosmos 帳戶是全域散發和高可用性的基本單位。 Azure Cosmos 帳戶包含唯一的 DNS 名稱,您可以使用 Azure 入口網站、Azure CLI 或不同語言專用的 SDK 來管理帳戶。 如需詳細資訊,請參閱如何管理 Azure Cosmos 帳戶。 若要將資料和輸送量分散至全球多個 Azure 區域,您隨時都可以在帳戶中新增和移除 Azure 區域。 您可以將 Azure Cosmos 帳戶設定為具有單一區域或多個寫入區域。 如需詳細資訊,請參閱如何在帳戶中新增和移除 Azure 區域。 您可以在帳戶上設定預設一致性層級。

Azure Cosmos 帳戶中的元素

Azure Cosmos DB 容器是可擴縮性的基本單位。 您在容器上可佈建的輸送量 (RU/秒) 和儲存體幾乎不受限制。 Azure Cosmos DB 會使用您指定的邏輯分割區索引鍵以透明的方式分割您的容器,以彈性地調整您佈建的輸送量和儲存體。

目前,在一個 Azure 訂用帳戶下,最多可以建立 50 個 Azure Cosmos 帳戶 (這是可透過支援要求來提高的彈性限制)。 單一 Azure Cosmos 帳戶可管理的資料量和佈建輸送量幾乎沒有限制。 若要管理您的資料和佈建的輸送量,您可以在您的帳戶下建立一或多個 Azure Cosmos 資料庫,並且可在該資料庫內建立一或多個容器。 下圖顯示 Azure Cosmos 帳戶中的元素階層:

Hierarchy of an Azure Cosmos account

在 Azure 訂用帳戶下建立帳戶之後,您就可以在帳戶中建立資料庫、容器和項目來管理資料。

下圖顯示 Azure Cosmos DB 帳戶中各種實體的階層:

Azure Cosmos account entities

Azure Cosmos 資料庫

您可以在帳戶下建立一或多個 Azure Cosmos 資料庫。 資料庫類似於命名空間。 資料庫是一組 Azure Cosmos 容器的管理單位。 下表說明 Azure Cosmos 資料庫如何對應至各種 API 特有實體:

Azure Cosmos 實體 SQL API Cassandra API 適用於 MongoDB 的 Azure Cosmos DB API Gremlin API 資料表 API
Azure Cosmos 資料庫 資料庫 keyspace 資料庫 資料庫 NA

注意

在資料表 API 帳戶中,建立第一個資料表時,Azure Cosmos 帳戶中會自動建立預設資料庫。

Azure Cosmos 資料庫中的作業

您可以使用 Azure Cosmos API 來與 Azure Cosmos 資料庫互動,如下表所述:

作業 Azure CLI SQL API Cassandra API 適用於 MongoDB 的 Azure Cosmos DB API Gremlin API 資料表 API
列舉所有資料庫 是 (資料庫會對應至 keyspace) NA NA
讀取資料庫 是 (資料庫會對應至 keyspace) NA NA
建立新的資料庫 是 (資料庫會對應至 keyspace) NA NA
更新資料庫 是 (資料庫會對應至 keyspace) NA NA

Azure Cosmos 容器

Azure Cosmos 容器是佈建輸送量和儲存體都適用的可擴縮性單位。 容器會以水平方式分割,然後跨多個區域複寫。 您新增至容器的項目會根據分割區索引鍵,自動分組到邏輯分割區 (分散至實體分割區)。 容器上的輸送量會平均分散至實體分割區。 若要深入了解分割和分割區索引鍵,請參閱分割資料

當您建立容器時,請使用下列其中一種模式來設定輸送量:

  • 專用佈建輸送量模式︰容器上佈建的輸送量完全保留給該容器,而且由 SLA 所支援。 如需詳細資訊,請參閱如何在容器上佈建輸送量

  • 共用佈建輸送量模式︰這些容器與同一資料庫中的其他容器 (不包括已設定專用佈建輸送量的容器) 共用佈建輸送量。 換句話說,所有「共用輸送量」容器共用資料庫上佈建的輸送量。 若要深入了解,請參閱如何在資料庫上佈建輸送量

注意

只有在建立資料庫和容器時,才能設定共用和專用輸送量。 若要在建立容器後從專用輸送量模式切換為共用輸送量模式 (反之亦然),您必須建立新的容器,並將資料遷移至新的容器。 您可以使用 Azure Cosmos DB 變更摘要功能來遷移資料。

無論使用共用或專用佈建輸送量模式來建立容器,Azure Cosmos 容器都可以彈性縮放。

容器是與結構描述無關的項目容器。 容器中的項目可以有任意的結構描述。 例如,代表人的項目和代表車的項目可以放在「相同的容器」中。 根據預設,您新增至容器的所有項目都會自動編製索引,不需要執行任何明確的索引或結構描述管理作業。 您可以在容器上設定索引編製原則,以自訂編製索引行為。

您可以在容器內選取的項目上或在整個容器上設定存留時間 (TTL),從系統中清除自然這些項目。 Azure Cosmos DB 會自動刪除過期的項目。 也保證容器上執行的查詢不會傳回固定界限內過期的項目。 若要深入了解,請參閱在容器上設定 TTL

您可以使用變更摘要來訂閱容器的每個邏輯分割區受控的作業記錄。 變更摘要針對容器上執行的所有更新提供記錄,還有項目的之前和之後映像。 如需詳細資訊,請參閱使用變更摘要建立回應式應用程式。 您也可以在容器上使用變更摘要原則,以設定變更摘要的保留期間。

您可以為容器註冊預存程序、觸發程序、使用者定義函數 (UDF)合併程序

您可以在 Azure Cosmos 容器上指定唯一索引鍵條件約束。 您可以建立唯一索引鍵原則,以確保每個邏輯分割區索引鍵一或多個值的唯一性。 如果您使用唯一索引鍵原則建立容器,則建立新的或更新的項目時,項目的值不能與唯一索引鍵條件約束所指定的值重複。 若要進一步了解,請參閱唯一索引鍵條件約束

容器專供 API 特有的實體使用,如下表所示:

Azure Cosmos 實體 SQL API Cassandra API 適用於 MongoDB 的 Azure Cosmos DB API Gremlin API 資料表 API
Azure Cosmos 容器 容器 Table 集合 圖形 資料表

注意

建立容器時,請確定您不會建立兩個名稱相同但大小寫不同的容器。 這是因為 Azure 平台的某些部分不會區分大小寫,而這可能導致在具有這類名稱的容器上發生遙測和動作的混淆/衝突。

Azure Cosmos 容器的屬性

Azure Cosmos 容器有一組由系統定義的屬性。 根據您使用的 API 而定,某些屬性可能不直接公開。 下表描述系統定義的屬性清單:

系統定義的屬性 系統產生或使用者可設定 目的 SQL API Cassandra API 適用於 MongoDB 的 Azure Cosmos DB API Gremlin API 資料表 API
_rid 系統產生 容器的唯一識別碼
_etag 系統產生 適用於開放式並行存取控制的實體標記
_ts 系統產生 容器的上次更新日期時間戳記
_self 系統產生 容器的可定址 URI
id 使用者可設定 使用者定義的容器唯一名稱
indexingPolicy 使用者可設定 能夠變更索引路徑、索引類型和索引模式
timeToLive 使用者可設定 能夠在一段時間後自動從容器中刪除項目。 如需詳細資訊,請參閱存留時間
changeFeedPolicy 使用者可設定 用來讀取容器中對項目所做的變更。 如需詳細資訊,請參閱變更摘要
uniqueKeyPolicy 使用者可設定 用來確保邏輯分割區中一或多個值的唯一性。 如需詳細資訊,請參閱唯一索引鍵條件約束
AnalyticalTimeToLive 使用者可設定 能夠在一段時間後自動從容器中刪除項目。 如需詳細資訊,請參閱存留時間

Azure Cosmos 容器中的作業

當您使用任何 Azure Cosmos API 時,Azure Cosmos 容器支援下列作業:

作業 Azure CLI SQL API Cassandra API 適用於 MongoDB 的 Azure Cosmos DB API Gremlin API 資料表 API
列舉資料庫中的容器 NA NA
讀取容器 NA NA
建立新容器 NA NA
更新容器 NA NA
刪除容器 NA NA

Azure Cosmos 項目

Azure Cosmos 項目可根據所使用的 API,分別代表集合中的文件、資料表中的資料列,或圖形中的節點或邊緣。 下表顯示 API 特有實體與 Azure Cosmos 項目的對應:

Cosmos 實體 SQL API Cassandra API 適用於 MongoDB 的 Azure Cosmos DB API Gremlin API 資料表 API
Azure Cosmos 項目 項目 資料列 Document 節點或邊緣 項目

項目的屬性

每個 Azure Cosmos 項目都有以下系統定義屬性。 根據您使用的 API 而定,某些屬性可能不直接公開。

系統定義的屬性 系統產生或使用者可設定 目的 SQL API Cassandra API 適用於 MongoDB 的 Azure Cosmos DB API Gremlin API 資料表 API
_rid 系統產生 項目的唯一識別碼
_etag 系統產生 適用於開放式並行存取控制的實體標記
_ts 系統產生 上次更新項目的時間戳記
_self 系統產生 項目的可定址 URI
id 邏輯分割區中使用者定義的唯一名稱。
任意使用者定義的屬性 使用者定義 以 API 原生表示法 (包括 JSON、BSON 和 CQL) 表示的使用者定義屬性

注意

只在每個邏輯分割區內強制實施 id 屬性的唯一性。 多個文件可以有相同的 id 屬性,但各有不同的分割區索引鍵值。

項目上的作業

Azure Cosmos 項目支援下列作業。 您可以使用任何 Azure Cosmos API 來執行這些作業。

作業 Azure CLI SQL API Cassandra API 適用於 MongoDB 的 Azure Cosmos DB API Gremlin API 資料表 API
插入、取代、刪除、更新插入、讀取

後續步驟

了解如何管理您的 Azure Cosmos 帳戶及其他概念: