共用方式為


集合

Azure Cosmos DB 是一種全域散發的多模型資料庫,可支援檔、圖形和索引鍵/值資料模型。 本節的內容是透過 REST 使用SQL API來建立、查詢和管理集合資源

REST API 支援資料庫帳戶下資源的基本 CRUD 作業。 集合是 JSON 文件和相關 JavaScript 應用程式邏輯的容器,亦即預存程序、觸發程序和使用者定義函數。 本主題概述用來管理檔集合的 REST 作業。

注意

這些 API 參考文章示範如何使用 Azure Cosmos DB 資料平面 API 建立資源。 透過資料平面 API,您可以設定基本選項,例如編制索引原則,資料分割索引鍵就像使用 Cosmos DB SDK 一樣。 如果您需要所有 Azure Cosmos DB 資源的完整功能支援,建議您使用 Cosmos DB 資源提供者

集合會對應至 Azure Cosmos DB 中的容器。 因此,它是可計費的實體,其成本取決於每秒要求單位所表示的布建輸送量。 集合可以跨越一或多個分割區/伺服器,並在輸送量方面相應增加和減少。 集合會由 Azure Cosmos DB 自動分割成一或多部實體伺服器。

因為集合是系統資源,所以有固定的結構描述。 集合的 URI 路徑是以 資源模型中的 colls 表示。

下列範例說明集合的 JSON 定義:

{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "indexingMode": "consistent",  
    "automatic": true,  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "kind": "Range",  
            "dataType": "String",  
            "precision": -1  
          },  
          {  
            "kind": "Range",  
            "dataType": "Number",  
            "precision": -1  
          }  
        ]  
      }  
    ],  
    "excludedPaths": []  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash"  
  },  
  "_rid": "PD5DALigDgw=",  
  "_ts": 1459200611,  
  "_self": "dbs/PD5DAA==/colls/PD5DALigDgw=/",  
  "_etag": "\"00005900-0000-0000-0000-56f9a2630000\"",  
  "_docs": "docs/",  
  "_sprocs": "sprocs/",  
  "_triggers": "triggers/",  
  "_udfs": "udfs/",  
  "_conflicts": "conflicts/"  
}  
  
屬性 描述
id 這是識別新集合的唯一名稱。
indexingPolicy 這是集合的索引編制原則設定。
partitionKey 這是集合的資料分割組態設定。
_擺脫 它是系統產生的屬性。 資源識別碼 (_rid) 是資源模型上每個資源堆疊的階層式唯一識別碼。 供內部進行放置和導覽文件資源時使用。
_Ts 它是系統產生的屬性。 代表資源的上次更新時間戳記。 值為時間戳記。
_自我 它是系統產生的屬性。 代表資源的唯一可定址 URI。
_Etag 這是系統產生的屬性,代表開放式並行控制所需的資源 etag
_醫生 它是系統產生的屬性,指定檔資源的可定址路徑。
_sprocs 它是系統產生的屬性,指定預存程式 (sprocs) 資源的可定址路徑。
_觸發器 它是系統產生的屬性,指定觸發程式資源的可定址路徑。
_udfs 它是系統產生的屬性,指定使用者定義函式 (udfs) 資源的可定址路徑。
_衝突 它是系統產生的屬性,指定衝突資源的可定址路徑。 在操作集合內的資源期間,如果發生衝突,使用者可以在衝突 URI 路徑上執行 GET 來檢查衝突的資源。

索引編制原則底下的屬性

屬性 Description
自動 指出是否自動索引為開啟或關閉。 預設值為 True,因此會編制所有檔的索引。 將值設定為 False 會允許手動設定索引路徑。
indexingMode 根據預設,索引模式為 一致。 這表示在插入、取代或刪除檔時,索引編制會同步發生。 若要非同步進行檢索,請將檢索模式設為 lazy。
includedPaths 包含要檢索的文件路徑的陣列。 根據預設,會包含兩個路徑:/path,指定所有檔路徑都會編制索引,而_ts路徑則為時間戳記範圍比較編制索引。
excludedPaths 包含要排除檢索的文件路徑的陣列。

包含路徑底下的屬性

屬性 Description
path 索引行為套用至的路徑。 索引路徑的開頭為根 (/),且通常結尾為 ? 萬用字元運算子,代表有多個可能的首碼值。 例如,若要為 SELECT * FROM Families F WHERE F.familyName = "Andersen" 提供服務,您必須在集合的索引原則中包含 /familyName/? 的索引路徑。

索引路徑也可以使用 * 萬用字元運算子來指定路徑首碼底下的遞迴行為。 例如,/payload/* 可用來在承載屬性下包含索引編制的所有專案。
dataType 它是套用索引行為的資料類型。 可以是 StringNumberPointPolygonLineString。 布林值和 Null 會自動編制索引
kind 索引的類型。 雜湊 索引適用于相等比較,而範圍索引適用于相等、 範圍 比較和排序。 空間 索引適用于空間查詢。
有效位數 索引的有效位數。 可以設定為 -1 表示最大有效位數,或 數位介於 1-8 之間, 字串則設定為 1-100。 不適用於 PointPolygonLineString 資料類型。

[排除路徑] 底下的屬性

屬性 Description
path 從索引編制中排除的路徑。 索引路徑開頭為根 (/) ,且通常會以 * 萬用字元運算子結尾。 例如,使用 /payload/* 可將 payload 屬性下的所有項目自編製索引作業中排除。

資料分割索引鍵底下的屬性

屬性 Description
path 路徑陣列,可用來分割集合中的資料。 路徑不得包含萬用字元或結尾斜線。 例如,JSON 屬性 「AccountNumber」 會指定為 「/AccountNumber」。 陣列必須只包含單一值。
kind 用於資料分割的演算法。 僅支援 雜湊

索引原則

當檔新增至集合時,Cosmos DB 預設會自動為檔編制索引,因此允許查詢檔。 檢索原則是在集合層級上設定。 因為檢索原則是在集合層級上設定,所以資料庫內的每個集合可以有不同的檢索原則。

集合的檢索原則可以指定下列選項:

  • 自動:您可以選擇是否要讓集合自動為所有檔編制索引。 根據預設,會自動索引所有文件,但您可以選擇將它關閉。 關閉索引編製功能時,便只能透過文件自己的連結或使用識別碼透過查詢來存取文件。

  • 編制索引模式:您可以選擇同步 (一致) 、非同步 (延遲) 索引更新,以及無索引編制 (無) 。 根據預設,索引會在集合中的文件每次發生插入、取代或刪除動作時進行同步更新。 此更新可讓查詢接受與檔讀取相同的一致性層級,而不會延遲索引趕上。

  • 索引類型和精確度:用於索引項目目的型別或配置對索引儲存體和效能有直接影響。 若為使用更高精確度的配置,查詢通常會更快。 不過,索引也會有更高的儲存負擔。 選擇較低的精確度表示在查詢執行期間可能需要處理多份文件,但儲存負擔會比較低。

  • 索引路徑:在檔中,您可以選擇哪些路徑必須包含在索引中或從索引中排除,這可在事先知道查詢模式時,為案例提供改善的寫入效能和較低的索引儲存體。

下表顯示一些範例編製索引的路徑和查詢中的使用方式。

屬性 Description
/* 集合的預設路徑。 遞迴並套用至整個文件樹狀結構。
/prop/? 為類似下列的查詢 (類型分別為雜湊或範圍) 提供服務而必要的索引路徑:

SELECT * FROM collection c WHERE c.prop = "value"

SELECT * FROM collection c WHERE c.prop > 5

SELECT * FROM collection c ORDER BY c.prop
/"prop"/* 指定之標籤底下所有路徑的索引路徑。 使用下列查詢:

SELECT * FROM collection c WHERE c.prop = "value"

SELECT * FROM collection c WHERE c.prop.subprop > 5

SELECT * FROM collection c WHERE c.prop.subprop.nextprop = "value"

SELECT * FROM collection c ORDER BY c.prop
/props/[]/? 針對等純量陣列提供反復專案和 JOIN 查詢所需的索引路徑,例如

[「a」、「b」、「c」]:

SELECT tag FROM tag IN collection.props WHERE tag = "value"

SELECT tag FROM collection c JOIN tag IN c.props WHERE tag > 5
/props/[]/subprop/? 針對物件陣列提供反復專案和 JOIN 查詢所需的索引路徑,例如

[{subprop: 「a」}, {subprop: 「b」}]:

SELECT tag FROM tag IN collection.props WHERE tag.subprop = "value"

SELECT tag FROM collection c JOIN tag IN c.props WHERE tag.subprop = "value"
/prop/subprop/? 為查詢 (類型分別為雜湊或範圍) 提供服務而必要的索引路徑:

SELECT * FROM collection c WHERE c.prop.subprop = "value"

SELECT * FROM collection c WHERE c.prop.subprop > 5

SELECT * FROM collection c ORDER BY c.prop.subprop

如需 Cosmos DB 索引編制原則的詳細資訊,請參閱 Cosmos DB 索引編制原則。 基於 REST API 文件的用途,所有範例都使用自動檢索。

供應專案和效能等級

建立集合時,也會建立參考所建立集合的供應專案資源。 供應專案資源包含每秒要求單位和每分鐘要求單位之集合輸送量的組態資訊。

您可以使用取代供應專案來變更集合的效能等級。

工作

您可以使用檔集合執行下列動作: