Kolekcje

Usługa Azure Cosmos DB to globalnie rozproszona wielomodelowa baza danych, która obsługuje modele danych dokumentów, grafów i par klucz-wartość. Zawartość w tej sekcji służy do tworzenia, wykonywania zapytań dotyczących zasobów kolekcji i zarządzania nimi przy użyciu interfejsu API SQL za pośrednictwem interfejsu API REST.

Interfejs API REST obsługuje podstawowe operacje CRUD na zasobach w ramach konta bazy danych. Kolekcja jest kontenerem dokumentów JSON i skojarzonej logiki aplikacji JavaScript, tj. procedur składowanych, wyzwalaczy i funkcji zdefiniowanych przez użytkownika. W tym temacie opisano operacje REST używane do zarządzania kolekcjami dokumentów.

Uwaga

W tych artykułach referencyjnych interfejsu API pokazano, jak tworzyć zasoby przy użyciu interfejsu API płaszczyzny danych usługi Azure Cosmos DB. Za pomocą interfejsu API płaszczyzny danych można skonfigurować podstawowe opcje, takie jak zasady indeksowania, klucze partycji, podobnie jak w przypadku zestawów SDK usługi Cosmos DB. Jeśli potrzebujesz pełnej obsługi funkcji dla wszystkich zasobów usługi Azure Cosmos DB, zalecamy użycie dostawcy zasobów usługi Cosmos DB.

Kolekcja jest mapowania na kontener w usłudze Azure Cosmos DB. W związku z tym jest to jednostka rozliczana, w której koszt jest określany przez aprowizowaną przepływność wyrażoną w jednostkach żądań na sekundę. Kolekcje mogą obejmować co najmniej jedną partycję/serwery i skalowane w górę i w dół pod względem przepływności. Kolekcje są automatycznie partycjonowane na co najmniej jeden serwer fizyczny przez usługę Azure Cosmos DB.

Ponieważ kolekcja jest zasobem systemowym, ma stały schemat. Ścieżka identyfikatora URI kolekcji jest reprezentowana przez kolaże w modelu zasobów.

Poniższy przykład ilustruje definicję JSON kolekcji:

{  
  "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/"  
}  
  
Właściwość Opis
id Jest to unikatowa nazwa identyfikująca nową kolekcję.
indexingPolicy Są to ustawienia zasad indeksowania dla kolekcji.
partitionKey Jest to ustawienia konfiguracji partycjonowania dla kolekcji.
_Rid Jest to właściwość wygenerowana przez system. Identyfikator zasobu (_rid) jest unikatowym identyfikatorem, który jest również hierarchiczny dla stosu zasobów w modelu zasobów. Jest on używany wewnętrznie do umieszczania i nawigacji zasobu uprawnień.
_Ts Jest to właściwość wygenerowana przez system. Określa ostatni zaktualizowany znacznik czasu zasobu. Wartość jest znacznikiem czasu.
_Własny Jest to właściwość wygenerowana przez system. Jest to unikatowy adresowy identyfikator URI zasobu.
_Etag Jest to właściwość wygenerowana przez system reprezentująca tag zasobu wymagany do optymistycznej kontroli współbieżności.
_Dok Jest to właściwość wygenerowana przez system, która określa adresową ścieżkę zasobu dokumentów.
_sprocs Jest to właściwość wygenerowana przez system, która określa adresową ścieżkę zasobu procedur składowanych (sprocs).
_Wyzwalaczy Jest to właściwość wygenerowana przez system, która określa adresową ścieżkę zasobu wyzwalaczy.
_Udfs Jest to właściwość wygenerowana przez system, która określa adresową ścieżkę zasobu funkcji zdefiniowanych przez użytkownika (udfs).
_Konflikty Jest to właściwość wygenerowana przez system, która określa adresową ścieżkę zasobu konfliktów. Podczas operacji na zasobie w kolekcji, jeśli wystąpi konflikt, użytkownicy mogą sprawdzić zasoby powodujące konflikt, wykonując get na ścieżce identyfikatora URI konfliktów.

Właściwości w obszarze Zasady indeksowania

Właściwość Opis
Automatyczne Wskazuje, czy automatyczne indeksowanie jest włączone, czy wyłączone. Wartość domyślna to True, dlatego wszystkie dokumenty są indeksowane. Ustawienie wartości false spowoduje ręczne skonfigurowanie ścieżek indeksowania.
indexingMode Domyślnie tryb indeksowania jest spójny. Oznacza to, że indeksowanie odbywa się synchronicznie podczas wstawiania, zastępowania lub usuwania dokumentów. Aby indeksowanie miało miejsce asynchronicznie, ustaw tryb indeksowania na leniwy.
includedPaths Tablica zawierająca ścieżki dokumentów do indeksowania. Domyślnie dołączane są dwie ścieżki: / ścieżka, która określa, że wszystkie ścieżki dokumentów mają być indeksowane, oraz ścieżkę _ts, która indeksuje dla porównania zakresu sygnatur czasowych.
excludedPaths Tablica zawierająca ścieżki dokumentów, które mają zostać wykluczone z indeksowania.

Właściwości w obszarze Dołączone ścieżki

Właściwość Opis
Ścieżka Ścieżka, do której ma zastosowanie zachowanie indeksowania. Ścieżki indeksu zaczynają się od katalogu głównego (/) i zwykle kończą się ciągiem ? operator wieloznaczny oznaczający, że istnieje wiele możliwych wartości dla prefiksu. Aby na przykład służyć SELECT * FROM Families F WHERE F.familyName = "Andersen", musisz dołączyć ścieżkę indeksu dla /familyName/? w zasadach indeksu kolekcji.

Ścieżki indeksów mogą również używać operatora symboli wieloznacznych * do określania zachowania ścieżek rekursywnie pod prefiksem. Na przykład /payload/* może służyć do uwzględnienia wszystkiego w ramach właściwości ładunku z indeksowania.
Datatype Jest to typ danych, dla którego jest stosowane zachowanie indeksowania. Może to być ciąg, liczba, punkt, wielokąt lub ciąg liniowy. Wartości logiczne i null są automatycznie indeksowane
Rodzaju Typ indeksu. Indeksy skrótów są przydatne w przypadku porównań równości, podczas gdy indeksy zakresu są przydatne w przypadku równości, porównań zakresów i sortowania. Indeksy przestrzenne są przydatne w przypadku zapytań przestrzennych.
Precyzji Precyzja indeksu. Można ustawić wartość -1 dla maksymalnej dokładności lub z zakresu od 1 do 8 dla wartości Liczba i 1–100 dla ciągu. Nie dotyczy typów danych Point, Polygon i LineString .

Właściwości w obszarze Wykluczone ścieżki

Właściwość Opis
Ścieżka Ścieżka wykluczona z indeksowania. Ścieżki indeksu zaczynają się od katalogu głównego (/) i zwykle kończą się operatorem * symbolu wieloznacznych.. Na przykład /payload/* może służyć do wykluczania wszystkiego pod właściwością ładunku z indeksowania.

Właściwości w obszarze Klucz partycji

Właściwość Opis
Ścieżka Tablica ścieżek, przy użyciu których można partycjonować dane w kolekcji. Ścieżki nie mogą zawierać symbolu wieloznakowego ani ukośnika końcowego. Na przykład właściwość JSON "AccountNumber" jest określona jako "/AccountNumber". Tablica musi zawierać tylko jedną wartość.
Rodzaju Algorytm używany do partycjonowania. Obsługiwane jest tylko skróty .

Zasady indeksowania

W miarę dodawania dokumentów do kolekcji usługa Cosmos DB domyślnie automatycznie indeksuje dokumenty, co pozwala na wykonywanie zapytań dotyczących dokumentów. Jest ona na poziomie kolekcji, który konfiguruje zasady indeksowania. Ponieważ zasady indeksowania są ustawiane na poziomie kolekcji, każda kolekcja w bazie danych może mieć różne zasady indeksowania.

Zasady indeksowania dla kolekcji mogą określać następujące opcje:

  • Automatyczne: możesz wybrać, czy kolekcja ma automatycznie indeksować wszystkie dokumenty, czy nie. Domyślnie wszystkie dokumenty są automatycznie indeksowane, ale można je wyłączyć. Po wyłączeniu indeksowania dostęp do dokumentów można uzyskać tylko za pośrednictwem linków własnych lub zapytań przy użyciu identyfikatora.

  • Tryb indeksowania: możesz wybrać między aktualizacjami indeksów synchronicznych (spójnych), asynchronicznych (leniwych) i bez indeksowania (Brak). Domyślnie indeks jest aktualizowany synchronicznie dla każdej akcji wstawiania, zastępowania lub usuwania podjętej w dokumencie w kolekcji. Ta aktualizacja umożliwia kwerendom honorowanie tego samego poziomu spójności co odczyt dokumentu bez opóźnień, aby indeks nadrobił zaległości.

  • Typy indeksów i precyzja: typ lub schemat używany do wpisów indeksu ma bezpośredni wpływ na magazyn indeksów i wydajność. W przypadku schematu korzystającego z wyższej precyzji zapytania są zwykle szybsze. Jednak istnieje również większe obciążenie magazynu dla indeksu. Wybranie mniejszej dokładności oznacza, że podczas wykonywania zapytania może być konieczne przetworzenie większej liczby dokumentów, ale obciążenie magazynu będzie niższe.

  • Ścieżki indeksów: w dokumentach można wybrać ścieżki, które muszą być dołączone lub wykluczone z indeksowania, co może zapewnić lepszą wydajność zapisu i niższy magazyn indeksów w scenariuszach, gdy wzorce zapytań są znane wcześniej.

W poniższych tabelach przedstawiono przykładowe ścieżki indeksowania i sposób ich użycia w zapytaniach.

Właściwość Opis
/* Domyślna ścieżka kolekcji. Rekursywne i dotyczy całego drzewa dokumentów.
/Wniosku/? Ścieżka indeksu wymagana do obsługi zapytań, takich jak następujące (odpowiednio z typami skrótu lub zakresu):

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

SELECT * FROM collection c WHERE c.prop > 5

SELECT * FROM collection c ORDER BY c.prop
/Wniosku/* Ścieżka indeksu dla wszystkich ścieżek pod określoną etykietą. Współdziała z następującymi zapytaniami:

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/[]/? Ścieżka indeksu wymagana do obsługi iteracji i zapytań JOIN względem tablic skalarnych, takich jak

["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/? Ścieżka indeksu wymagana do obsługi iteracji i zapytań JOIN względem tablic obiektów, takich jak

[{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/? Ścieżka indeksu wymagana do obsługi zapytań (odpowiednio z typami skrótu lub zakresu):

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

Aby uzyskać więcej informacji na temat zasad indeksowania usługi Cosmos DB, zobacz Zasady indeksowania usługi Cosmos DB. Do celów dokumentacji interfejsu API REST wszystkie przykłady używają automatycznego indeksowania.

Oferty i poziomy wydajności

Po utworzeniu kolekcji zostanie również utworzony zasób oferty, który odwołuje się do utworzonej kolekcji. Zasób oferty zawiera informacje o konfiguracji przepływności kolekcji w jednostkach żądania na sekundę i jednostkach żądań na minutę.

Poziom wydajności kolekcji można zmienić przy użyciu opcji Zastąp ofertę.

Zadania

Możesz wykonać następujące czynności przy użyciu kolekcji dokumentów: