Samlingar

Azure Cosmos DB är en globalt distribuerad databas med flera modeller som stöder datamodeller för dokument, grafer och nyckelvärden. Innehållet i det här avsnittet handlar om att skapa, fråga och hantera samlingsresurser med hjälp av SQL-API :et via REST.

REST-API:et stöder grundläggande CRUD-åtgärder på resurserna under ett databaskonto. En samling är en container med JSON-dokument och associerad JavaScript-programlogik, d.v.s. lagrade procedurer, utlösare och användardefinierade funktioner. I det här avsnittet beskrivs de REST-åtgärder som används för att hantera dokumentsamlingar.

Anteckning

Dessa API-referensartiklar visar hur du skapar resurser med hjälp av Azure Cosmos DB-dataplans-API:et. Med API:et för dataplanet kan du konfigurera grundläggande alternativ, till exempel indexeringsprincip, partitionsnycklar ungefär som du kan med Cosmos DB-SDK:er. Om du behöver fullständigt funktionsstöd för alla Azure Cosmos DB-resurser rekommenderar vi att du använder Cosmos DB-resursprovidern.

En samling mappar till en container i Azure Cosmos DB. Det är därför en fakturerbar enhet där kostnaden bestäms av det etablerade dataflödet uttryckt i enheter för programbegäran per sekund. Samlingar kan sträcka sig över en eller flera partitioner/servrar och skalas upp och ned när det gäller dataflöde. Samlingar partitioneras automatiskt i en eller flera fysiska servrar av Azure Cosmos DB.

Eftersom en samling är en systemresurs har den ett fast schema. En samlings URI-sökväg representeras av sorteringar i resursmodellen.

I följande exempel visas JSON-definitionen för en samling:

{  
  "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/"  
}  
  
Egenskap Beskrivning
id Det är det unika namnet som identifierar den nya samlingen.
indexingPolicy Det är indexeringsprincipinställningarna för samlingen.
partitionKey Det är partitioneringskonfigurationsinställningarna för samlingen.
_Bli Det är en systemgenererad egenskap. Resurs-ID :t (_rid) är en unik identifierare som också är hierarkisk per resursstacken i resursmodellen. Den används internt för placering och navigering av behörighetsresursen.
_Ts Det är en systemgenererad egenskap. Den anger den senast uppdaterade tidsstämpeln för resursen. Värdet är en tidsstämpel.
_Själv Det är en systemgenererad egenskap. Det är den unika adresserbara URI:n för resursen.
_Etag Det är en systemgenererad egenskap som representerar resursetaggen som krävs för optimistisk samtidighetskontroll.
_Doc Det är en systemgenererad egenskap som anger dokumentresursens adresserbara sökväg.
_sprocs Det är en systemgenererad egenskap som anger den adresserbara sökvägen för resursen för lagrade procedurer (sprocs).
_Utlösare Det är en systemgenererad egenskap som anger den adresserbara sökvägen för utlösarresursen.
_udfs Det är en systemgenererad egenskap som anger den adresserbara sökvägen för den användardefinierade funktionsresursen (udfs).
_Konflikter Det är en systemgenererad egenskap som anger den adresserbara sökvägen för konfliktresursen. Om en konflikt uppstår under en åtgärd på en resurs i en samling kan användarna inspektera de resurser som står i konflikt genom att utföra en GET på URI-sökvägen för konflikter.

Egenskaper under indexeringsprincip

Egenskap Beskrivning
automatiskt Anger om automatisk indexering är på eller av. Standardvärdet är True, vilket innebär att alla dokument indexeras. Om värdet anges till False tillåts manuell konfiguration av indexeringssökvägar.
indexingMode Indexeringsläget är konsekvent som standard. Det innebär att indexering sker synkront under infogning, ersättning eller borttagning av dokument. Om du vill att indexeringen ska ske asynkront anger du indexeringsläget till uppskjutet.
includedPaths Matrisen som innehåller dokumentsökvägar som ska indexeras. Som standard ingår två sökvägar: sökvägen /, som anger att alla dokumentsökvägar indexeras och den _ts sökvägen, som indexerar för en jämförelse av tidsstämpelintervall.
excludedPaths Matrisen som innehåller dokumentsökvägar som ska undantas från indexering.

Egenskaper under Inkluderade sökvägar

Egenskap Beskrivning
Sökvägen Sökväg som indexeringsbeteendet gäller för. Indexsökvägar börjar med roten (/) och slutar vanligtvis med ? jokerteckenoperator, som anger att det finns flera möjliga värden för prefixet. Om du till exempel vill visa SELECT * FROM Families F WHERE F.familyName = "Andersen" måste du inkludera en indexsökväg för /familyName/? i samlingens indexprincip.

Indexsökvägar kan också använda operatorn * jokertecken för att ange beteendet för sökvägar rekursivt under prefixet . Till exempel kan /payload/* användas för att inkludera allt under nyttolastegenskapen från indexering.
Datatyp Det är den datatyp som indexeringsbeteendet tillämpas på. Kan vara String, Number, Point, Polygon eller LineString. Booleska värden och nullvärden indexeras automatiskt
Typ Typ av index. Hash-index är användbara för likhetsjämförelser medan Intervallindex är användbara för likhet, intervalljämförelser och sortering. Rumsliga index är användbara för rumsliga frågor.
Precision Precisionen för indexet. Kan antingen anges till -1 för maximal precision eller mellan 1–8 för Tal och 1–100 för Sträng. Gäller inte för datatyperna Point, Polygon och LineString .

Egenskaper under Undantagna sökvägar

Egenskap Beskrivning
Sökvägen Sökväg som undantas från indexering. Indexsökvägar börjar med roten (/) och slutar vanligtvis med operatorn * jokertecken. Till exempel kan /payload/* användas för att undanta allt under nyttolastegenskapen från indexering.

Egenskaper under Partitionsnyckel

Egenskap Beskrivning
Sökvägen En matris med sökvägar som använder vilka data i samlingen som kan partitioneras. Sökvägar får inte innehålla jokertecken eller avslutande snedstreck. JSON-egenskapen "AccountNumber" anges till exempel som "/AccountNumber". Matrisen får bara innehålla ett enda värde.
Typ Algoritmen som används för partitionering. Endast hash stöds.

Indexeringsprincip

När dokument läggs till i en samling indexerar Cosmos DB som standard automatiskt dokumenten, vilket gör att dokument kan efterfrågas. Det är på samlingsnivå som du konfigurerar indexeringsprincipen. Eftersom indexeringsprincipen anges på samlingsnivå kan varje samling i en databas ha olika indexeringsprinciper.

Indexeringsprincipen för en samling kan ange följande alternativ:

  • Automatisk: Du kan välja om du vill att samlingen ska indexera alla dokument automatiskt eller inte. Som standard indexeras alla dokument automatiskt, men du kan välja att inaktivera det. När indexering är inaktiverat kan dokument endast nås via sina självlänkar eller genom frågor med hjälp av ID.

  • Indexeringsläge: Du kan välja mellan synkrona (konsekventa), asynkrona (lazy) indexuppdateringar och ingen indexering (Ingen). Som standard uppdateras indexet synkront för varje infognings-, ersättnings- eller borttagningsåtgärd som vidtas på ett dokument i samlingen. Den här uppdateringen gör att frågorna kan uppfylla samma konsekvensnivå som dokumentets läsningar utan dröjsmål för att indexet ska komma ikapp.

  • Indextyper och precision: Den typ eller det schema som används för indexposter har en direkt inverkan på indexlagring och prestanda. För ett schema med högre precision går frågorna vanligtvis snabbare. Det finns dock också en högre lagringskostnad för indexet. Om du väljer en lägre precision kan fler dokument behöva bearbetas under frågekörningen, men lagringskostnaderna blir lägre.

  • Indexsökvägar: I dokument kan du välja vilka sökvägar som måste inkluderas eller undantas från indexering, vilket kan ge bättre skrivprestanda och lägre indexlagring för scenarier när frågemönstren är kända i förväg.

Följande tabeller visar några exempel på indexeringssökvägar och hur de används i frågor.

Egenskap Beskrivning
/* Standardsökväg för samling. Rekursiv och gäller för hela dokumentträdet.
/Prop/? Indexsökväg som krävs för att hantera frågor som följande (med hash- respektive intervalltyper):

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/* Indexsökväg för alla sökvägar under den angivna etiketten. Fungerar med följande frågor:

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/[]/? Indexsökväg som krävs för att hantera iteration och JOIN-frågor mot matriser med skalärer som

["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/? Indexsökväg som krävs för att hantera iteration och JOIN-frågor mot matriser med objekt som

[{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/? Indexsökväg som krävs för att hantera frågor (med hash- respektive intervalltyper):

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

Mer information om Cosmos DB-indexeringsprinciper finns i Cosmos DB-indexeringsprinciper. I REST API-dokumentationen använder alla exempel automatisk indexering.

Erbjudanden och prestandanivåer

När en samling skapas skapas också en erbjudanderesurs som refererar till den skapade samlingen. Erbjudanderesursen innehåller konfigurationsinformation om insamlingsdataflödet i enheter för programbegäran per sekund och enheter för begäranden per minut.

Prestandanivån för en samling kan ändras med hjälp av Ersätt erbjudande.

Aktiviteter

Du kan göra följande med dokumentsamlingar: