Guide för Azure Cosmos DB-utvecklare

Azure Spring Data för Azure Cosmos DB tillhandahåller Spring Data-stöd för Azure Cosmos DB för NoSQL. Azure Cosmos DB är en globalt distribuerad databastjänst som gör att utvecklare kan arbeta med data med hjälp av olika standard-API:er, till exempel SQL, MongoDB, Cassandra, Graph och Table.

Den här guiden beskriver begreppen i Azure Spring Data Azure Cosmos DB SDK, funktioner som stöds, felsökning och kända problem. Mer information om begreppen nedan och kodexempel finns i läsemplet Spring Data for Azure Cosmos DB SDK.

Princip för versionsstöd

Stöd för Spring Boot-version

Det här projektet stöder flera Spring Boot-versioner. Mer information finns i Supportprincip för Spring Boot. Maven-användare kan ärva från spring-boot-starter-parent projektet för att få ett beroendehanteringsavsnitt för att låta Spring hantera versionerna för beroenden. Mer information finns i Support för Spring Boot-version.

Stöd för Spring Data-version

Det här projektet stöder olika spring-data-commons-versioner. Mer information finns i Spring Data Version Support.

Vilken version av Azure Spring Data Azure Cosmos DB som ska användas

Azure Spring Data Azure Cosmos DB-biblioteket stöder flera versioner av Spring Boot/Spring Cloud. Mer information om vilken version av Azure Spring Data Azure Cosmos DB som ska användas med Spring Boot/Spring Cloud-versionen finns i Vilken version av Azure Spring Data för Azure Cosmos DB ska jag använda?.

Kom igång

Inkludera paketet

Om du använder Maven lägger du till följande beroende.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-spring-data-cosmos</artifactId>
    <version>LATEST</version>
</dependency>

Förutsättningar

SLF4J behövs bara om du planerar att använda loggning, även ladda ned en SLF4J-bindning, som länkar SLF4J-API:et till valfri loggningsimplementering. Mer information finns i användarhandboken till SLF4J.

Konfigurera och anpassa konfigurationsklassen

För att kunna konfigurera konfigurationsklassen måste du utöka AbstractCosmosConfiguration. Mer information finns i Konfigurera konfigurationsklass.

Du kan anpassa underliggande CosmosAsyncClient som används av Azure Spring Data Azure Cosmos DB SDK genom att tillhandahålla DirectConnectionConfig eller GatewayConnectionConfig båda och ge dem till CosmosClientBuilder. Ett fullständigt exempel finns i avsnittet om att anpassa konfigurationen.

Entitetskonfiguration

Du kan definiera en enkel entitet som objekt i Azure Cosmos DB. Du kan definiera entiteter genom att lägga till anteckningen @Container och ange egenskaper som är relaterade till containern. Mer information finns i Definiera en entitet.

Containerkommentarer har stöd för att ange containernamn, enheter för begäranden (RU), time to live, skapa containrar med autoskalningsdataflöde, stöd för kapslad partitionsnyckel och andra containeregenskaper.

Konfiguration av lagringsplats

Azure Spring Data Azure Cosmos DB stöder ReactiveCrudRepository (asynkrona API:er) och CrudRepository (synkroniserings-API:er), som tillhandahåller följande grundläggande CRUD-funktioner:

  • spara
  • findAll
  • findOne efter ID
  • deleteAll
  • ta bort med ID
  • ta bort entitet

Du kan utöka CosmosRepository (för stöd för synkroniserings-API) eller ReactiveCosmosRepository (för asynkront API-stöd) för att konfigurera Spring Data-lagringsplatser för ditt program. Mer information finns i Skapa lagringsplatser.

Azure Spring Data Azure Cosmos DB har stöd för att ange kommenterade frågor i lagringsplatserna med hjälp av @Query. Mer information finns i QueryAnnotation : Using annotated querys in repositories (FrågaAnnotation: Använda kommenterade frågor i lagringsplatser).

Spring Data-anteckningar

Spring Data -@Id-kommentar

Det finns flera sätt att mappa ett fält i domänklassen till id. Mer information finns i avsnittet om vårdata-ID-anteckningskod.

Automatisk ID-generering

Azure Spring Data Azure Cosmos DB stöder automatisk generering av ID:er med anteckningen @GeneratedValue . Mer information finns i avsnittet automatisk ID-generering.

SpEL-uttryck och anpassat containernamn

Som standard är containernamnet klassnamnet för användardomänklassen. Om du vill anpassa lägger du till anteckningen @Container(containerName="myCustomContainerName") i domänklassen. Mer information finns i avsnittet SpEL-uttryck och anpassat containernamn.

Anpassad indexeringPolicy

Som standard IndexingPolicy anges av Azure-tjänsten. Om du vill anpassa lägger du till anteckningen @CosmosIndexingPolicy i domänklassen. Mer information finns i avsnittet indexeringsprincip.

Princip för unik nyckel

Azure Spring Data Azure Cosmos DB stöder inställning UniqueKeyPolicy på containern genom att lägga till anteckningen @CosmosUniqueKeyPolicy i domänklassen. Mer information finns i avsnittet om unik nyckelprincip.

Azure Cosmos DB-partition

Azure-spring-data-cosmos stöder Azure Cosmos DB-partitioner.

Om du vill ange att ett fält i domänklassen ska vara ett partitionsnyckelfält kommenterar du det med @PartitionKey.

När du utför CRUD-åtgärden anger du partitionsvärdet.

Mer information finns i avsnittet test här.

Optimistisk låsning

Azure-spring-data-cosmos stöder optimistisk låsning för specifika containrar, vilket innebär att upserts/deletes by item misslyckas med ett undantag om objektet ändras av en annan process under tiden. Mer information finns i avsnittet optimistisk låsning.

Anpassad Spring Data-fråga, växlingsbar och sortering

Azure-spring-data-cosmos stöder anpassade Spring Data-frågor, till exempel en sökåtgärd som findByAFieldAndBField. Den stöder även Spring Data Pageable, Slice och Sort. Mer information finns i avsnittet fråga, växlingsbar information och sortering.

Använda Azure Cosmos DB Java SDK via Spring Data Cosmos

Azure-spring-data-cosmos stöder användning av Azure Cosmos DB Java SDK. Användare kan hämta CosmosClient eller CosmosAsyncClient bean igenom ApplicationContext och köra åtgärder som stöds av Azure Cosmos DB Java SDK. Mer information finns i avsnittet använda Azure Cosmos-klienten via Spring Data Cosmos.

Spring Data REST

Azure-spring-data-cosmos stöder Spring Data REST. Mer information finns i avsnittet Azure Spring Data Azure Cosmos DB REST API.

Granskning

Azure-spring-data-cosmos stöder granskningsfält på databasentiteter med vanliga spring-data-anteckningar. Mer information finns i avsnittet Spring Data Azure Cosmos DB-granskning.

Konfiguration av flera databaser

Azure-spring-data-cosmos stöder konfiguration av flera databaser, inklusive "flera databaskonton" och "enskilt konto, med flera databaser". Ett fullständigt kodfragment finns i avsnittet konfiguration för flera databaser.

Felsökning

Allmänt

Om du stöter på en bugg kan du skapa ett problem här.

Om du vill föreslå en ny funktion eller ändringar som kan göras kan du ange ett problem på samma sätt som för en bugg.

Aktivera klientloggning

Azure-spring-data-cosmos använder SLF4j som loggningsfasad som stöder inloggning i populära loggningsramverk som log4j och logback. Mer information finns i avsnittet aktivera klientloggning.

Exempel

Ett fullständigt exempelprojekt finns i exempelprojektet.

Konton med flera databaser

Ett fullständigt exempelprojekt finns i exempelprojektet för flera databaser.

Enskilt konto med flera databaser

Ett fullständigt exempelprojekt finns i exempelprojektet Single account with Multi-database (Enskilt konto med flera databaser).

Nästa steg

Bidrar

Det här projektet välkomnar bidrag och förslag. De flesta bidrag kräver att du godkänner ett licensavtal för deltagare (CLA) som förklarar att du har rätt att, och faktiskt gör det, ge oss rätten att använda ditt bidrag.

När du skickar en pull-begäran kommer en CLA-robot automatiskt att avgöra om du behöver tillhandahålla en CLA och dekorera PR på rätt sätt (till exempel etikett, kommentar). Följ bara anvisningarna från roboten. Du behöver bara göra detta en gång över alla lagringsplatser med hjälp av vår CLA.

Det här projektet har antagit Microsoft Open Source Code of Conduct (Microsofts regler för uppförande för öppen källkod). Mer information finns i Vanliga frågor och svar om uppförandekod eller kontakt opencode@microsoft.com med andra frågor eller kommentarer.

Impressions