Azure Cosmos DB beschrijven

Voltooid

Uw ontwikkelteam heeft ervaring met het werken met niet-relationele gegevensarchieven. U wilt deze ervaring gebruiken om de functionaliteit van de cloudeigen oplossing uit te breiden met de verwerking en opslag van IoT-telemetrie die door slimme apparaten wordt gegenereerd. Nadat u door Azure beheerde NoSQL-aanbiedingen hebt verkend, hebt u besloten Om Azure Cosmos DB te gebruiken. De volgende informatie kan u helpen bij het bevestigen van de geschiktheid als permanent gegevensarchief voor telemetriegegevens.

Wat is Cosmos DB?

Azure Cosmos DB is een volledig beheerde, cloudeigen NoSQL-database. Het is een van de basisservices van Azure, wat betekent dat het beschikbaar is in elke Azure-regio.

Als beheerde service elimineert Azure Cosmos DB de meeste traditionele databasebeheertaken, zoals updates of patching van de onderliggende database-engine. Het biedt automatische en directe schaalbaarheid, met door Service Level Agreement (SLA) ondersteunde garanties voor de prestaties en reactiesnelheid. Het biedt ook een set tolerantiefuncties die deze onderscheiden van relationele databases. Deze functies omvatten wereldwijd gedistribueerde replica's met schrijfbewerkingen in meerdere regio's en de mogelijkheid om vijf verschillende consistentiemodellen te implementeren, variƫrend van sterk tot uiteindelijk.

Een ander uniek kenmerk van Azure Cosmos DB is ondersteuning voor meerdere database-API's. Wanneer u een Azure Cosmos DB inricht, kunt u uw favoriete ontwikkelplatform kiezen uit de systeemeigen Core (NoSQL)-API, API voor MongoDB, Cassandra-API, Gremlin-API en Table-API. Met de Azure Cosmos DB for NoSQL-API hebt u de flexibiliteit om uw favoriete ontwikkelplatform te selecteren, zoals de .NET SDK, Java SDK, Node.js of Python.

Wat zijn de voordelen van Cosmos DB ten opzichte van relationele databases?

Een van de algemene kenmerken van relationele databasesystemen is het gebruik van vergrendeling, wat het transactionele gedrag garandeert. Deze garanties zorgen voor een sterke gegevensconsistentie binnen elke database. Hoewel dergelijke consistentie in veel scenario's gewenst is, heeft dit een negatief effect op gelijktijdigheid, latentie en beschikbaarheid. Het is mogelijk om deze negatieve gevolgen te beperken door een database op te splitsen in meerdere shards, maar deze benadering is complex om te implementeren en te onderhouden.

Azure Cosmos DB behandelt deze nadelen via een combinatie van de ondersteuning voor verschillende consistentiemodellen, ingebouwde replicatie en schrijfbewerkingen in meerdere regio's met een configureerbaar mechanisme voor conflictoplossing. Deze ondersteuning biedt aanzienlijke prestatie- en tolerantievoordelen in scenario's waarbij sterke consistentie geen vereiste is. Tegelijkertijd biedt Cosmos DB ook ondersteuning voor transacties aan de serverzijde, indien deze consistentie nodig is.

Wat is het Cosmos DB-resourcemodel?

Als u Azure Cosmos DB wilt implementeren, moet u eerst een Azure Cosmos DB-account maken in uw Azure-abonnement. Het account fungeert als de distributie-eenheid en hoge beschikbaarheid. U kunt een account configureren voor replicatie in meerdere regio's en elk van deze replica's schrijfbaar maken. U kunt ook het standaardconsistentieniveau voor een account configureren.

Wanneer u SQL API, API voor MongoDB of Gremlin-API gebruikt, kan een account een of meer databases bevatten, waarbij elk van deze databases een of meer containers host. Een container is de schaalbaarheidseenheid, waarmee u reken- en opslagresources kunt toewijzen voor het verwerken van de inhoud. Deze inhoud, als er SQL API of API voor MongoDB is, gebruikt de indeling van door JSON opgemaakte documenten, ook wel items genoemd, zonder specifieke schema-gedefinieerde beperkingen. Standaard indexeert Azure Cosmos DB automatisch alle items in een container zonder expliciet index- of schemabeheer, maar biedt u de mogelijkheid om het indexeringsgedrag aan te passen.

Het aantal resources dat beschikbaar is voor het verwerken van gegevens in een database of de afzonderlijke verzamelingen, is afhankelijk van het aantal beschikbare aanvraageenheden (RU's). Het aantal RU's is gebaseerd op de database- of containerconfiguratie die u opgeeft. Cosmos DB biedt drie modi waarmee RU-toewijzing wordt bepaald, afhankelijk van uw voorkeuren.

  • Ingerichte doorvoermodus. In deze modus wijst u een specifiek aantal RU's aan om de verwachte gebruikspatronen weer te geven. Deze aanpak biedt de meeste duidelijkheid over de resulterende prestaties en kosten.
  • Modus voor automatisch schalen. In deze modus maakt u de toewijzing van het aantal RU's waarvan u denkt dat u voldoende bent om aan uw basislijnvereisten te voldoen, maar zorgt u ervoor dat deze automatisch toenemen als er een hogere vraag naar gegevenstoegang is. Deze modus is het meest geschikt voor bedrijfskritieke workloads met variabele of onvoorspelbare gebruikspatronen.
  • Serverloze modus. In deze modus hoeft u geen ru's vooraf toe tewijsen. In plaats daarvan vertrouwt u op de mogelijkheden voor automatisch schalen van Azure Cosmos DB om de hoeveelheid verwerkingsbronnen te verhogen of te verlagen. Deze modus kan nuttig zijn vanuit het oogpunt van kosten, als uw workloads tijdelijke latentie kunnen tolereren na perioden van inactiviteit van de database.

Wat zijn de voordelen en gebruiksvoorbeelden van Cosmos DB in Azure IoT-scenario's?

Azure Cosmos DB biedt veel mogelijkheden die het geschikt maken voor IoT-scenario's, waaronder:

  • Partitioneren. In Azure Cosmos DB worden containers automatisch gepartitioneerd met behulp van de logische partitiesleutel die u opgeeft. Partitionering is het kernmechanisme achter schaalbaarheid en tolerantie van Azure Cosmos DB. Door de partitiesleutel te kiezen, kunt u voldoen aan IoT-scenario's waarvoor het opslaan en verwerken van grote hoeveelheden apparaat- en telemetriegegevens is vereist.

    Notitie

    Een logische partitie mag niet groter zijn dan 20 GB.

  • Time to Live (TTL). Met TTL kan Azure Cosmos DB items automatisch verwijderen na een periode die u hebt aangewezen. Deze automatisering vereenvoudigt het beheer van gegevenslevenscycli en verlaagt de kosten, omdat verwijderingen op basis van TTL niet mee tellen voor het RU-gebruik.

  • Wijzigingenfeed. Azure Cosmos DB maakt gebruik van wijzigingenfeed om automatisch een actie te activeren na wijzigingen in verzamelingsitems. Deze automatische trigger vereenvoudigt het implementeren van het algemene IoT-ontwerppatroon, dat afhankelijk is van gegevenswijzigingen om een bijbehorende actie te activeren.

  • Service Level Agreements (SLA's) voor prestaties en tolerantie. In IoT-scenario's waarbij grote hoeveelheden streaminggegevens zijn betrokken, kunnen klanten rekenen op latenties van minder dan 10 ms voor het 99e percentiel van lees- en schrijfbewerkingen, en 99,999% beschikbaarheid voor schrijfbewerkingen in meerdere regio's.

  • Schemaloze databases. Azure Cosmos DB biedt ruimte voor de opslag van verschillende typen telemetrie die door verschillende apparaatmodellen in dezelfde verzameling worden gegenereerd, door schemabeperkingen te elimineren.

  • Automatisch indexeren. Azure Cosmos DB-indexeringsondersteuning draagt bij aan snelle en flexibele zoekacties voor grote hoeveelheden gegevens die inventarissen van geregistreerde apparaten en hun telemetrie bevatten.

Azure Cosmos DB biedt plaats voor twee primaire IoT-use cases:

  • Het slaat apparaattelemetrie op, waardoor snelle toegang tot telemetriegegevens mogelijk is voor visualisatie, naverwerking en analyse.
  • Er wordt een apparaatcatalogus opgeslagen, die geschikt is voor het modelleren van IoT-apparaten, entiteiten en hun topologie, waarbij elk apparaat wordt vertegenwoordigd door een item.