Opschalen versus uitschalen
Een introductie tot schaalbaarheid van databases in cloud computing.
Data, overal data, daar hebben we het over wanneer we het hebben over schaalbaarheid
Schaalbaarheid in cloud computing is de mogelijkheid om snel en eenvoudig de omvang of het vermogen van een IT-oplossing of -hulpmiddel te vergroten of te verkleinen. Hoewel de term schaalbaarheid kan verwijzen naar het vermogen van elk systeem om een groeiende hoeveelheid werk aan te kunnen, hebben we het in dit geval over een grote hoeveelheid databases en data.
Schaalbaarheid van databases is waar moderne app-ontwikkelaars zich vooral mee bezighouden. Stel dat een nieuwe app een grote vlucht neemt en de vraag naar deze app neemt toe van een handjevol gebruikers tot miljoenen gebruikers over de hele wereld. Een van de belangrijkste mogelijkheden om de app-ontwikkelaars te helpen gelijke tred te houden met de vraag en downtime te minimaliseren, is de mogelijkheid om efficiënt te schalen.
Dit gesprek over uitschalen versus opschalen richt zich op de manieren waarop schaalbaarheid ons helpt ons aan te passen aan en om te gaan met het enorme volume en de enorme hoeveelheid gegevens, veranderende gegevensvolumes en veranderende werkdrukpatronen - allemaal gegenereerd vanuit de cloud, mobiele en sociale media en big data.
Uitschalen versus opschalen
Op het meest eenvoudige niveau kan schaalbaarheid van databases worden onderverdeeld in twee typen:
Verticaal schalen, of op- of terugschalen, waarbij je rekenkracht of databases naar behoefte vergroot of verlaagt. Dit kun je doen door prestatieniveaus te wijzigen of door pools voor elastische databases te gebruiken die zich automatisch aanpassen aan de eisen van de workload.
Horizontaal schalen of uit- of inschalen, waarbij je meer databases toevoegt of grote database opsplitst in kleinere knooppunten, met behulp van een aanpak waarin je gegevenspartities maakt. Dit wordt sharding genoemd. Hierdoor kunnen gegevens sneller en gemakkelijker worden beheerd op meerdere servers.
Verticaal opschalen
Verticaal schalen wordt gebruikt wanneer je snel moet reageren om een prestatieprobleem op te lossen dat je niet kunt oplossen met behulp van klassieke databaseoptimalisatietechnieken, zoals querywijzigingen of indexering. Opschalen is handig voor het verwerken van pieken in workloads waarbij het huidige prestatieniveau niet aan alle eisen kan voldoen. Door op te schalen kun je meer resources toevoegen, zodat je eenvoudig piekworkloads kunt verwerken. Wanneer de resources vervolgens niet meer nodig zijn, kun je met terugschalen teruggaan naar de oorspronkelijke staat en besparen op cloudkosten.
Wanneer moet je opschalen:
-
Je ziet dat je workloads een bepaalde prestatielimiet hebben bereikt, zoals CPU- of I/O-limieten.
-
Je moet snel reageren als je prestatieproblemen wilt oplossen die niet kunnen worden opgelost met klassieke databaseoptimalisatie.
-
Je hebt een oplossing nodig waarmee je servicelagen zo kunt wijzigen dat deze worden aangepast aan veranderende latentievereisten.
Horizontaal uitschalen
App-ontwikkelaars gaan overwegen om uit te schalen of horizontaal te schalen wanneer ze niet voldoende resources voor hun workloads kunnen krijgen, zelfs niet wanneer ze op de hoogste prestatieniveaus actief zijn. Bij horizontaal schalen worden gegevens gesplitst in verschillende databases, of shards, op verschillende servers, waarbij elke shard onafhankelijk omhoog of omlaag kan worden geschaald.
Hoe verbetert het partitioneren van gegevens de schaalbaarheid? Wanneer je één database opschaalt door resources zoals virtuele machines (VM's) toe te voegen, bereikt deze uiteindelijk een fysieke hardwarelimiet. Omdat gegevenspartities elk op een afzonderlijke server worden gehost, kun je een systeem bijna onbeperkt uitschalen als je gegevens over meerdere shards verdeelt.
Sommige typen databasetechnologieën, met name niet-relationele of NoSQL-databases, zijn ontwikkeld met unieke mogelijkheden om gegevens horizontaal uit te schalen met Databasesharding, waardoor ze grote, niet-gerelateerde, onbepaalde of snel veranderende gegevens kunnen verwerken.
En sommige relationele (SQL) databaseservices die oorspronkelijk services boden om op- of terug te schalen, zijn begonnen met interessante opties aan te bieden die opwegen tegen de schaalbaarheidsvoordelen van niet-relationele databases. Met hyperscaleservices als Microsoft Azure SQL Database Hyperscale en Azure Database for PostgreSQL Hyperscale kunnen gebruikers de opslagruimte snel opschalen tot 100 TB, een flexibele cloudarchitectuur bieden waarmee de opslagruimte naar behoefte kan worden uitgebreid, en kunnen ze vrijwel direct back-ups maken en snel de database herstellen in slechts enkele minuten.
Wanneer moet je uitschalen:
-
Je hebt geografisch gedistribueerde toepassingen waarbij elke app toegang moet hebben tot een deel van de gegevens in de regio. Elke app heeft alleen toegang tot de shard die aan die regio is gekoppeld zonder dat dit van invloed is op andere shards.
-
Je hebt een globaal shardingscenario, zoals een taakverdeling, waarbij je een groot aantal geografisch gedistribueerde clients hebt die gegevens invoegen in hun eigen toegewezen shards.
-
Je hebt je prestatievereisten maximaal gemaakt, zelfs in de hoogste prestatielagen van je service, of als je gegevens niet in één database passen.
Automatisch schalen
Automatisch schalen is het proces van automatisch en dynamisch resources aanpassen zodat deze voldoen aan de prestatievereisten van een systeem. Naarmate de hoeveelheid werk groeit, hebben apps mogelijk extra resources nodig om de benodigde prestatieniveaus te behouden of aan de groeiende vraag te voldoen. Als de vraag afneemt en de extra resources niet meer nodig zijn, kun je besparen op clouduitgaven door een automatische service te gebruiken om de toewijzing van ongebruikte resources ongedaan te maken.
Met automatisch schalen wordt gebruik gemaakt van de elasticiteit van cloudomgevingen. Hierdoor wordt de beheeroverhead eenvoudiger, doordat systeemoperators niet meer voortdurend beslissingen hoeven te nemen over het toevoegen of verwijderen van resources of het controleren van de prestaties van het systeem.
Hoewel er twee belangrijke manieren zijn waarop apps kunnen worden geschaald, verticaal of horizontaal, is het minder gebruikelijk om verticaal schalen te automatiseren, omdat het bij opschalen vaak vereist is dat het systeem tijdelijk niet beschikbaar is terwijl het opnieuw wordt geïmplementeerd.
Automatisch schalen komt vaker voor wanneer je horizontaal schaalt, omdat uit- of inschalen betekent dat je alleen exemplaren van een resource toevoegt of verwijdert. Je app wordt zonder onderbreking uitgevoerd wanneer er nieuwe resources worden ingericht. Als de vraag daalt, kunnen resources probleemloos worden afgesloten zonder uitvaltijd en kan de toewijzing ongedaan worden gemaakt.
Veel providers van cloudsystemen, waaronder Microsoft Azure, bieden ondersteuning voor automatisch horizontaal schalen.
Veelgestelde vragen
-
Een database is een verzameling van gerelateerde informatie die is opgeslagen en georganiseerd, zodat deze eenvoudiger is te beheren en te gebruiken. Omdat nieuwe gegevens en gegevenstypen in een razendsnel tempo worden gegenereerd, wordt het een uitdaging om die gegevens georganiseerd, toegankelijk en veilig te houden. Vaak worden databasebeheersystemen (DBMS), die een laag beheerhulpprogramma's bevatten, gebruikt om enorme hoeveelheden gegevens te verwerken.
Er ontstaan voortdurend nieuwe databasetypen en -technologieën om alleen al de hoeveelheid en de enorme variatie aan gegevens aan te kunnen die worden gegenereerd op basis van de cloud, mobiele media, sociale media en big data.
-
NoSQL-databases, vaak aangeduid als niet-relationele of "'niet-alleen'" SQL, zijn een diverse set databasetechnologieën die het opslaan en ophalen van gegevens anders verwerken dan een traditionele, relationele (SQL-)database.
Voor NoSQL-databases is geen vooraf gedefinieerd schema vereist. Deze kunnen gebruikmaken van meerdere gegevensmodellen, waardoor ze zeer effectief zijn in het verwerken van grote hoeveelheden ongestructureerde gegevens en het schalen van big-data databaseprojecten.
-
PostgreSQL is een robuuste, opensource-database die werkt met relationele en niet-relationele query's, en staat bekend om de betrouwbaarheid en gegevensintegriteit. PostgreSQL wordt veel gebruikt op terreinen als financiële diensten, productie, geografische informatiesystemen voor de overheid en webtechnologie. Ontwikkelaars maken apps met PostgreSQL, terwijl beheerders erop vertrouwen dat zij hiermee hun gegevens kunnen beveiligen.
-
Caching (in de cache opslaan van gegevens) is een veelvoorkomende techniek die door ontwikkelaars en IT-professionals wordt gebruikt om de prestaties en schaalbaarheid van een systeem te verbeteren. Bij caching gaat het erom dat veelgebruikte gegevens tijdelijk worden gekopieerd naar een snelle opslag die zich vlakbij de app bevindt. Als deze snelle gegevensopslag zich dichter bij de app bevindt dan de oorspronkelijke bron, kan caching de reactietijden voor client-apps significant verbeteren, doordat er meer gegevens kunnen worden verwerkt. Ontwikkelaars ontwerpen vaak apps om verwerkte gegevens in de cache op te slaan en de cache vervolgens voor een nieuw doeleinde te gebruiken om aanvragen sneller te verwerken dan bij standaarddatabasequery's.
-
Gegevenssharding is een horizontaal type gegevenspartitionering waarmee je je grote database kunt onderverdelen in kleinere databases, die je sneller en gemakkelijker op meerdere servers kunt beheren.
-
Platform as a service, vaak afgekort als PaaS, is een service van een cloudserviceprovider die een on-demand omgeving biedt voor het ontwikkelen, testen, leveren en beheren van apps. Met PaaS kunnen ontwikkelaars eenvoudiger en sneller web-apps en mobiele apps maken, zonder dat ze zich bezig hoeven te houden met het opzetten of het beheren van de onderliggende infrastructuur van servers, de opslag, het netwerk en de databases die zij als ontwikkelaars nodig hebben.
Informatiebronnen
Schaalbaarheid van de cloud verkennen met Azure
Ontdek een uitgebreide benadering voor omhoog schalen versus uitschalen: eentje die past bij je eigen scenario in on-premises omgevingen, omgevingen met meerdere clouds en randomgevingen. De Azure-familie van databaseservices biedt verschillende volledig beheerde, relationele, NoSQL- en in-memory databases die bedrijfseigen en opensource-engines omvatten en zijn afgestemd op de behoeften van moderne app-ontwikkelaars.
Bespaar tijd en geld met automatisch infrastructuurbeheer, waaronder automatiseringsoplossingen voor schaalbaarheid, beschikbaarheid en beveiliging.
Gerelateerde producten en services
Azure SQL
Verschillende SQL-clouddatabases leveren flexibele opties voor app-migratie, modernisering en ontwikkeling.
Azure Cosmos DB
Snelle NoSQL-database met open API's voor elke schaal.
Azure PostgreSQL
Volledig beheerde, intelligente en schaalbare PostgreSQL.
Azure SQL Database
Beheerde, intelligente SQL in de cloud.
Azure SQL Managed Instance
Beheerde, altijd up-to-date SQL-instantie in de cloud.
SQL Server op Virtual Machines
Je SQL Server-workloads migreren naar de cloud tegen de laagste TCO.
Azure Database for MySQL
Volledig beheerde, schaalbare MySQL-database.
Azure Maria DB
Beheerde MariaDB-databaseservice voor app-ontwikkelaars.
Azure Cache voor Redis
Versnel toepassingen met gegevenstoegang met een hoge doorvoer en opslaan in cache met een lage latentie.
Onbeperkt schalen met beheerde databases
Je kunt je concentreren op het bouwen van apps en je taak eenvoudiger maken wanneer je databases worden beheerd door Microsoft Azure.