Wat is sharding?

De techniek achter onder andere Bitcoin en Ethereum kan best complex zijn. Zo zijn er veel termen die beginnende beleggers onbekend in de oren klinken. Eén van deze termen is sharding. Wat is sharding precies? En wat is de rol van sharding binnen de blockchain? In dit artikel duiken we de diepte in!

Sharding voor leken: samenvatting

Applicaties slaan data op in een database. Bij veel data kan een database erg groot en traag worden. Sharding is een techniek die het mogelijk maakt om één grote tabel op te delen in kleinere tabellen. Dit is een horizontale techniek waarbij je zonder de hardware te verbeteren toch een snelheidswinst kunt boeken.

Een goed voorbeeld van sharding is het opdelen van alle namen in een database in groepen: A tot K en L tot Z.

Wat wil je weten over sharding?

  • Blockchain: hoe kan sharding de blockchain helpen?
  • Definitie: wat is sharding precies in meer details?
  • Soorten: welke type sharding bestaan er?
  • Voordelen: wat zijn de voordelen van sharding?
  • Nadelen: wat zijn de nadelen van sharding?

Sharding en de blockchain

Een groot probleem van de blockchain is dat deze traag is: de Bitcoin kan maar 7 transacties per seconde aan tegenover 10.000 transacties per seconde door Visa. Deze vertraging is er doordat elke computer (ook wel node) in het netwerk de transactie moet controleren. Wanneer er 600 nodes zijn dan moeten al deze computers de transactie controleren en goedkeuren.

Bij sharding wordt dit proces bijvoorbeeld verdeeld over 3 X 200 nodes. Hierdoor kunnen er drie transacties tegelijk worden nagekeken wat de snelheid van het netwerk ten goede komt. Dit is een vorm van horizontale optimalisatie waarbij je met dezelfde rekenkracht betere resultaten kunt behalen.

Sharding werkt beter wanneer het netwerk groter wordt, aangezien je het dan meer kunt opdelen. Hierdoor is het beter schaalbaar dan de traditionele manier van het controleren van transacties waarbij het proces juist steeds trager wordt. Wanneer iedereen elke transactie moet controleren, dan duurt dit namelijk steeds langer.

sharding

Betekenis sharding: wat is sharding?

Sharding kan het beste worden omschreven als het proces waarbij grote tabellen worden opgedeeld in kleinere brokken (Een tabel bevat data, bijvoorbeeld gebruikersnamen). Deze brokken worden shards genoemd. Binnen sharding worden deze shards over meerdere servers verspreid. Een shard is in feite niets meer dan een horizontale gegevenspartitie die een deelverzameling van de totale gegevensverzameling bevat. Dit onderdeel is dan ook gelijk verantwoordelijk voor het bedienen van een deel van de totale werklast. Het idee is om gegevens die niet op één knooppunt passen, te verdelen over een cluster van databankknooppunten.

Simpeler gezegd verdeel je één grote verzameling data over meerdere kleine verzamelingen data. Hierdoor kan je de werklast verdelen en de belasting van het systeem verlagen.

Vanuit deze optiek wordt harding ook wel horizontale partitionering genoemd. Het onderscheid tussen horizontaal en verticaal komt van de traditionele weergave van een database. Een database kan verticaal worden gesplitst, hierbij worden er verschillende tabelkolommen in een enkele database opgeslagen. Het kan alleen ook horizontaal worden weergegeven, hierbij is er sprake van meerdere rijen van dezelfde tabel die in meerdere databankknooppunten worden opgeslagen. Het belangrijkste wat je moet weten is dat er dus een andere soort opslag van gegevens plaatsvindt middels sharding.

De rol van sharding voor de blockchain

Sharding speelt mogelijk een belangrijke rol bij de toekomst van de blockchain.  Blockchain-netwerken worden steeds vaker gebruikt door bedrijven die hun supply chain management en financiële transacties net even wat makkelijker willen laten verlopen. Naarmate de populariteit van blockchain toeneemt, groeit de belasting van het netwerk en het transactievolume dat door het netwerk wordt verwerkt. Door de blockchain te zien als een gedeelde database is het zo dat naarmate er meer data wordt toegevoegd een manier moet worden gevonden om die data efficiënt en snel te verwerken.  Sharding is in staat om het probleem rondom de latency van Bitcoin en van andere munten op te lossen (latency is de vertraging van de dataoverdracht). Latency focust op de schaalbaarheid van de blockchain.

De beperking van de schaalbaarheid van de blockchain zorgt ervoor dat de netwerken mogelijk niet in staat zijn om de toegenomen hoeveelheden gegevens en transacties te verwerken naarmate de blockchain groter wordt. Sharding is zoals je hierboven al hebt gezien ontworpen om de werklast van een netwerk te verdelen in partities. Dit kan mogelijk helpen bij het verminderen van latency. Hierdoor zouden er meer transacties kunnen worden verwerkt door de blockchain. Eén van de projecten die op dit moment veel bezig is met sharding is het project van Ethereum, de bekende nummer twee van dit moment.

Verschillende soorten sharding – hash & range sharding

Als het aankomt op sharding zijn er diverse soorten vormen waarop dit plaats kan vinden. Iedere vorm brengt diverse unieke voordelen en nadelen met zich mee. De belangrijkste soorten sharding zijn:

Hash sharding

de eerste manier waarop sharding kan plaatsvinden is door hash sharding (hashing is het proces waarbij een variabele input op de blockchain wordt omgezet naar een output met een vaste lengte). Bij Hash sharding wordt de waarde van een shard sleutel genomen en wordt hier een hash waarde van gegenereerd. De hash waarde wordt vervolgens gebruikt om te bepalen in welke shard de gegevens zich moeten bevinden. Met een uniform hashing-algoritme zoals ketama kan de hash-functie gegevens gelijkmatig verdelen over servers. Dit zorgt ervoor dat er minder risico’s plaats zullen vinden bij de opslag. Met deze aanpak is het onwaarschijnlijk dat gegevens met nauwe shard-sleutels op dezelfde shard worden geplaatst.

Range sharding

De volgende vorm van sharding is range sharding. Range sharding verdeelt gegevens op basis van bereiken van de gegevenswaarde. Dit wordt ook wel de keyspace genoemd. Shard sleutels met dicht bij elkaar liggende waarden hebben meer kans om in dezelfde range te worden ingedeeld. Elke shard behoudt in wezen hetzelfde schema van de oorspronkelijke database. Sharding wordt zo eenvoudig als het identificeren van het juiste bereik van de gegevens en het plaatsen ervan op de overeenkomstige shard.

Voordelen van sharding – potentie van de techniek

Een vraag die vaak gesteld wordt is waarom het eigenlijk van belang is om sharding te gebruiken. Het grootste voordeel van de toepassing van sharding voor een database is dat het kan helpen bij het vergemakkelijken van horizontaal schalen, een proces wat ook wel bekend staat als scaling out. Horizontaal schalen kan gezien worden als het toevoegen van meer machines aan een bestaande stack om de belasting op het netwerk te spreiden en een snellere verwerking mogelijk te maken. Dit staat vaak in contrast met verticaal schalen, ook bekend als scaling up. Hierbij wordt de hardware van een bestaande server geüpgraded, vaak wordt dit gedaan door een RAM of CPU toe te voegen.

Een andere reden waarom sharding een belangrijke rol kan spelen voor de cryptomarkt is dat het in staat is om de responstijd van query’s te versnellen. Wanneer je een query indient op een database die niet sharded is, kan het zijn dat het elke rij in de tabel die je bevraagt moet doorzoeken. Voor een applicatie met een enorme database, kunnen deze rijen enorm worden. Door één tabel te sharen in meerdere shards kan dit probleem eenvoudig voorkomen worden.

Sharding kan ook helpen om een applicatie betrouwbaarder te maken door de impact van uitval te verkleinen. Stel dat een bepaalde applicatie of website gebruikmaakt van een database die nog geen sharding heeft. Als er een storing plaatsvindt dan is het mogelijk dat heel het project uit de lucht wordt gehaald. Met een sharded database zal een uitval waarschijnlijk slechts een enkele shard treffen. Dit zorgt er mogelijk voor dat de rest van de applicatie nog wel gewoon gebruikt kan worden.

Nadelen van sharding – kritiek tegen de techniek

Er zitten dus veel voordelen aan sharding. Helaas kent sharding ook een aantal grote nadelen die niet onbesproken dienen te worden. Het eerste probleem is dat het implementeren van een sharded database-architectuur erg complex is om te doen. Doordat het zo complex is kunnen er fouten worden gemaakt tijdens de implementatie. Als het verkeerd wordt gedaan, is er een aanzienlijk risico dat het sharding proces kan leiden tot verloren gegevens of beschadigde tabellen. Daar komt bij dat het een grote invloed heeft op de workflows van een bepaald bedrijf. In plaats van de gegevens te beheren vanaf één enkel toegangspunt, moeten gebruikers gegevens beheren op meerdere shard-locaties.

Een ander probleem wat zich voor kan doen is dat de shards uiteindelijk niet meer in balans zullen zijn. Stel je voor dat er een database is die is voorzien van twee afzonderlijke shards, één voor klanten wiens achternaam begint met de letters A tot en met M en één voor klanten wiens naam begint met de letters N tot en met Z. Stel dat je een app hebt met veel gebruikers die een achternaam hebben die begint met de letter D. Als gevolg daarvan krijgt de A-M shard geleidelijk meer gegevens dan de N-Z shard. Dit kan ervoor zorgen dat de applicatie trager wordt en uitvalt voor een bepaald deel van je gebruikers. Dit houdt in dat er een zogeheten database hotspot is ontstaan. In dit geval werkt het sharding proces niet zoals het hoort.

Een ander groot nadeel is dat als een database eenmaal voorzien is van sharding, het erg moeilijk kan zijn om hem terug te brengen naar de architectuur zonder sharding. Back-ups van de database die gemaakt zijn voordat hij ge-shard werd, bevatten geen gegevens die sinds de partitionering zijn geschreven. Dit is nauw verbonden met het eerste nadeel. Stel dat je erachter komt dat sharding toch niet prettig is voor een bepaalde applicatie of site dan is het niet meer mogelijk om dit terug te draaien. Dit is een groot probleem voor bedrijven of projecten die erg risico-avers zijn.

Conclusie – complexe techniek met grote potentie

Ongeacht het feit dat de techniek rondom sharding vrij technisch is hopen we dat je dankzij de info uit dit artikel een beter beeld hebt gekregen over het fenomeen. Sharding kan mogelijk een grote rol spelen bij het overbruggen van bepaalde problemen op de blockchain. Deze voordelen brengen onder andere met zich mee dat projecten als Zcash en Ethereum veel aan het experimenteren zijn met sharding. Wel is het zo dat er ook diverse nadelen bestaan ten aanzien van sharding.

Auteur: Indy van den Berg

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *