Ú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.