Úvod do jarných dát Azure Cosmos DB

1. Prehľad

V tomto tutoriále sa dozvieme o Azure Cosmos DB a o tom, ako s ním môžeme interagovať pomocou Spring Data.

2. Azure Cosmos DB

Azure Cosmos DB je globálne distribuovaná databázová služba spoločnosti Microsoft.

Je to NoSQL databáza, ktorá poskytuje komplexné dohody o úrovni služieb týkajúce sa priepustnosti, latencie, dostupnosti a záruk konzistencie. Tiež zaisťuje 99,999% dostupnosť pre čítanie aj zápis.

Azure Cosmos DB neposkytuje iba dve možnosti konzistencie, t. J. Buď konzistentné alebo nekonzistentné. Namiesto toho dostávame päť možností konzistencie: silný, ohraničená zatuchnutosť, zasadanie, konzistentná predponaa eventuálne.

Môžeme pružne škálovať priechodnosť aj úložisko Azure Cosmos DB.

Okrem toho je k dispozícii vo všetkých regiónoch Azure a ponúka globálnu distribúciu na kľúč, pretože môžeme replikovať naše údaje v ľubovoľných regiónoch Azure jednoduchým kliknutím na tlačidlo. To nám pomáha mať naše údaje bližšie k našim používateľom, aby sme mohli rýchlejšie vyhovieť ich požiadavkám.

Je to schematicko-agnosticképretože nemá žiadnu schému. Ďalej nemusíme robiť žiadnu správu indexov pre Azure Cosmos Db. Automaticky za nás robí indexáciu údajov.

S Azure CosmosDb môžeme pracovať pomocou rôznych štandardných rozhraní API, ako sú SQL, MongoDB, Cassandra atď.

3. Jarné údaje Azure Cosmos DB

Microsoft tiež poskytuje modul, ktorý nám umožňuje pracovať s Cosmos DB pomocou Spring Data. V nasledujúcej časti uvidíme, ako môžeme použiť aplikáciu Azure Cosmos DB v aplikácii Spring Boot.

V našom príklade vytvoríme webovú aplikáciu Spring, ktorá ukladá entitu produktu v databáze Azure Cosmos a vykonáva na nej základné operácie CRUD. Najskôr musíme nakonfigurovať účet a databázu na portáli Azure podľa pokynov v dokumentácii.

Ak nechceme vytvoriť účet na portáli Azure, Azure poskytuje aj emulátor Azure Cosmos. Aj keď to neobsahuje všetky funkcie služby Azure Cosmos Service a existujú určité rozdiely, môžeme ju použiť na miestny vývoj a testovanie.

Emulátor môžeme v našom lokálnom prostredí používať dvoma spôsobmi: buď stiahnutím emulátora Azure Cosmos na našom počítači alebo spustením emulátora v Dockri pre Windows.

Vyberieme možnosť spustiť ho v Dockeri pre Windows. Poďme ťahať Docker obrázok spustením nasledujúceho príkazu:

docker pull emulátor Microsoft / azure-cosmosdb-emulator

Potom môžeme spustiť obraz Dockeru a spustiť kontajner spustením nasledujúcich príkazov:

set containerName = azure-cosmosdb-emulator set hostDirectory =% LOCALAPPDATA% \ azure-cosmosdb-emulator.hostd md% hostDirectory% 2> nul docker run --name% containerName% --memory 2GB --mount "type = bind, zdroj =% hostDirectory%, destination = C: \ CosmosDB.Emulator \ bind-mount "-P --interactive --tty microsoft / azure-cosmosdb-emulator

Po nakonfigurovaní účtu a databázy Azure Cosmos DB na portáli Azure alebo v Dockeru môžeme pokračovať v konfigurácii v našej aplikácii Spring Boot.

4. Používanie Azure Cosmos DB na jar

4.1. Konfigurácia jarných údajov Azure Cosmos DB s jarou

Začneme pridaním závislosti spring-data-cosmosdb do našej pom.xml:

 com.microsoft.azure spring-data-cosmosdb 2.3.0 

Na prístup k Azure Cosmos DB z našej jarnej aplikácie budeme potrebovať URI našej databázy, to sú prístupové kľúče a názov databázy. Potom do nášho súboru pridáme vlastnosti pripojenia application.properties:

azure.cosmosdb.uri = cosmodb-uri azure.cosmosdb.key = primárny kľúč cosmodb azure.cosmosdb.secondaryKey = sekundárny kľúč cosmodb azure.cosmosdb.database = názov cosmodb 

Hodnoty vyššie uvedených vlastností môžeme nájsť na portáli Azure. Identifikátor URI, primárny kľúč a sekundárny kľúč budú k dispozícii v sekcii kľúčov nášho Azure Cosmos DB na portáli Azure.

Na pripojenie k Azure Cosmos DB z našej aplikácie musíme vytvoriť klienta. Pre to, musíme predĺžiť Konfigurácia AbstractCosmos triedy v našej konfiguračnej triede a pridajte @EnableCosmosRepositories anotácia.

Táto anotácia vyhľadá rozhrania, ktoré rozširujú rozhrania úložiska Spring Data v zadanom balíku.

Tiež musíme nakonfigurovať fazuľu typu CosmosDBConfig:

@Configuration @EnableCosmosRepositories (basePackages = "com.baeldung.spring.data.cosmosdb.repository") verejná trieda AzureCosmosDbConfiguration rozširuje AbstractCosmosConfiguration {@Value ("$ {azure.cosmosdb.uri}") súkromný reťazec uri; @Value ("$ {azure.cosmosdb.key}") súkromný reťazcový kľúč; @Value ("$ {azure.cosmosdb.database}") private String dbName; súkromný CosmosKeyCredential cosmosKeyCredential; @Bean public CosmosDBConfig getConfig () {this.cosmosKeyCredential = nový CosmosKeyCredential (kľúč); CosmosDBConfig cosmosdbConfig = CosmosDBConfig.builder (uri, this.cosmosKeyCredential, dbName) .build (); návrat cosmosdbConfig; }}

4.2. Vytvorenie entity pre Azure Cosmos DB

Na účely interakcie s Azure Cosmos DB používame entity. Vytvorme teda entitu, ktorú budeme ukladať v Azure Cosmos DB. Aby naše Výrobok triediť entitu, použijeme @Dokument anotácia:

@Document (kolekcia = "produkty") verejná trieda Produkt {@Id súkromný reťazec productid; private String productName; dvojitá súkromná cena; @PartitionKey private String productCategory; }

V tomto príklade použili sme zbierka atribút s hodnotou Produkty, aby ste označili, že to bude názov nášho kontajnera v databáze. Ak neposkytneme žiadnu hodnotu pre zbierka parameter, potom sa ako názov kontajnera v databáze použije názov triedy.

Definovali sme tiež ID pre náš dokument. Môžeme buď vytvoriť pole s názvom id v našej triede alebo môžeme pole anotovať pomocou @Id anotácia. Tu sme použili identifikačné číslo produktu pole ako id dokumentu.

Môžeme logicky rozdeliť naše údaje v našom kontajneri pomocou kľúča oddielu anotovaním poľa pomocou @PartitionKey. V našej triede sme používali kategória produktu ako kľúč oddielu.

Štandardne je politika indexovania definovaná Azure, ale môžeme ju tiež prispôsobiť pomocou @DocumentIndexingPolicy anotácia k našej entite Trieda.

Môžeme tiež povoliť optimistické zamykanie pre náš kontajner entít vytvorením poľa s názvom _etag a anotovať ho @ Verzia.

4.3. Definovanie úložiska

Teraz vytvorme a Úložisko produktu rozširujúce sa rozhranie Úložisko kozmu. Pomocou tohto rozhrania môžeme vykonávať operácie CRUD na našej Azure Cosmos DB:

@ Verejné rozhranie úložiska ProductRepository rozširuje CosmosRepository {List findByProductName (reťazec productName); }

Ako vidíme, je to definované podobne ako v iných moduloch Spring Data.

4.4. Testuje sa pripojenie

Teraz môžeme vytvoriť Junit Test na uloženie Výrobok entita v Azure Cosmos DB pomocou nášho Úložisko produktu:

@SpringBootTest verejná trieda AzureCosmosDbApplicationManualTest {@Autowired ProductRepository productRepository; @Test public void givenProductIsCreated_whenCallFindById_thenProductIsFound () {Product product = new Product (); product.setProductid ("1001"); product.setProductCategory ("Košeľa"); product.setPrice (110,0); product.setProductName ("Modré tričko"); productRepository.save (produkt); Produkt retrievedProduct = productRepository.findById ("1001", nový PartitionKey ("tričko")) .orElse (null); Assert.notNull (retrievedProduct, "Retrieved Product is Null"); }}

Spustením tohto testu Junit môžeme otestovať naše spojenie s Azure Cosmos DB z našej jarnej aplikácie.

5. Záver

V tomto tutoriáli sme sa dozvedeli o Azure Cosmos DB. Ďalej sme sa naučili, ako získať prístup k Azure Cosmos DB z aplikácie Spring Boot, ako vytvárať entity a konfigurovať úložisko rozšírením Úložisko kozmu komunikovať s ním.

Kód vyššie uvedeného príkladu je k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found