Wat betekent sharding?
Sharding is een gegevensbeheertechniek waarbij een database of blockchain wordt opgedeeld in kleinere, beter beheersbare stukken die shards worden genoemd. Elke shard werkt als een onafhankelijke entiteit die een subset van de totale gegevens opslaat.
Het verdelen van gegevens over meerdere shards helpt de prestaties en schaalbaarheid te verbeteren door ervoor te zorgen dat gegevensbewerkingen tijdig kunnen worden uitgevoerd. Dit is vooral waardevol voor scenario’s waarin de hoeveelheid gegevens de capaciteit van een enkele server of blockchainnetwerkknooppunt overstijgt om bewerkingen effectief uit te voeren.
Hoewel sharding veel voordelen biedt, brengt het ook uitdagingen met zich mee, waaronder mogelijke problemen met cross-shard transacties.
Database sharding vs. Blockchain sharding
Database sharding en blockchain sharding delen hetzelfde onderliggende concept van het verdelen van gegevens in kleinere delen om de prestaties en schaalbaarheid te verbeteren, maar ze worden in verschillende contexten geïmplementeerd en hebben specifieke kenmerken die hen van elkaar onderscheiden.
Database-sharding | Blockchain-sharding | |
---|---|---|
Doel | Het schalen van grote centralized databases. | Schalen van decentralized blockchain netwerken. |
Gegevensdistributie | Verdeelt gegevens over meerdere servers/nodes. | Distribueert gegevens over meerdere blockchains. |
Controle | Gecentraliseerd beheer via een databasebeheersysteem (DBMS). | Gedecentraliseerde controle op basis van consensusmechanismen. |
Inter-Shard Communicatie | Gemakkelijker door gecentraliseerde controle. | Vereist complexe cross-shard communicatiemechanismen. |
Databasesharing
Database sharding is een techniek die wordt gebruikt in databasemanagementsystemen (DBMSen) om de schaalbaarheid en prestaties te verbeteren door een grote database op te delen in kleinere partities die op een aparte server of servercluster kunnen worden opgeslagen. Elke shard bevat meestal een subset van de gegevens en wordt geïdentificeerd door een shard key.
Databasesharding wordt vaak gebruikt voor situaties waarin een groot aantal gelijktijdige verzoeken moet worden verwerkt en de database te groot is geworden om efficiënt door één server te worden beheerd.
Door de gegevens over meerdere servers te verspreiden, hoeft elke server of servercluster slechts een deel van de totale transactielast te beheren. Een centrale component of routeringsmechanisme leidt zoekopdrachten naar de juiste shard.
Horizontaal groeperen vs. verticaal groeperen
Database sharding kan horizontaal of verticaal worden uitgevoerd.
Horizontale sharding (ook wel range sharding genoemd) richt zich op het verdelen van rijen gegevens. Omdat hetzelfde schema over alle shards behouden blijft, is horizontaal rangschikken voor veel toepassingen een eenvoudigere aanpak.
Verticale sharding richt zich daarentegen op het verdelen van databasekolommen of -tabellen. Hoewel verticaal rangschikken effectief kan zijn als verschillende databasekolommen of -tabellen zeer verschillende toegangspatronen hebben, kan het een laag complexiteit introduceren die zorgvuldig beheerd moet worden.
Bijvoorbeeld, JOIN operaties die verschillende shards overspannen moeten mogelijk worden beheerd op de applicatielaag.
Blockchain-sharding
Blockchain sharding is een techniek die wordt gebruikt om de schaalbaarheid en prestaties van een blockchainnetwerk te verbeteren door de blockchain op te delen in kleinere partities.
Het opdelen van een blockchain in meerdere shards vermindert de rekenlast op het netwerk en maakt het mogelijk om meer transacties te verwerken in een bepaalde tijdspanne. De exacte details voor het sharden van een blockchain kunnen variëren afhankelijk van het specifieke blockchain protocol dat wordt gebruikt.
Projecten die experimenteren met sharding om de schaalbaarheid te verbeteren zijn onder andere:
Sharding wordt gezien als een manier om de Ethereum blockchain horizontaal uit te schalen. Het concept speelt een zeer belangrijke rol in The Surge (Ethereum 2.0).
Hoewel de Ethereum Foundation nog niet precies heeft besloten welke benadering van sharding zal worden gebruikt in Ethereum 2.0, is het waarschijnlijk dat zowel Beacon Chains als Danksharding zullen worden gebruikt om de kosten voor gas te verminderen en smart contracts en dApp-prestaties te optimaliseren.
Danksharding zal gebruikt worden om de schaalbaarheid en efficiëntie van het Ethereum netwerk te verbeteren door de Ethereum staat op te delen in meerdere shards, en Beacon Chains zullen verantwoordelijk zijn voor het coördineren van de shards en ervoor zorgen dat alle shards gesynchroniseerd zijn.
- Polkadot
Polkadot gebruikt een sharding mechanisme genaamd parachains om het netwerk te schalen. Een parachain is een individuele blockchain die parallel loopt met andere parachains binnen hetzelfde netwerk. Elke parachain is gespecialiseerd en geoptimaliseerd voor een bepaalde use case of toepassing.
Polkadot maakt het mogelijk dat meerdere parachains tegelijkertijd werken, onafhankelijk transacties verwerken en slimme contracten uitvoeren. Polkadot gebruikt een centrale relaisketen om parachains te beheren en hun veilige interactie te garanderen.
De relaisketen fungeert als een hub die de communicatie en consensus tussen verschillende parachains coördineert, en onderhoudt de algemene netwerkbeveiliging en interoperabiliteit terwijl de parachains autonoom kunnen werken.
- Cosmos
Cosmos gebruikt een sharding-achtig mechanisme genaamd “zones” om het netwerk te schalen. Elke zone functioneert als zijn eigen blockchain met zijn eigen consensusmechanisme, slimme contracten en governanceregels. De Cosmos Hub, die de communicatie tussen de zones verbindt en coördineert, gebruikt het Inter-Blockchain Communication (IBC) protocol om veilige gegevens- en activatransfers mogelijk te maken.
Met IBC kunnen zones met elkaar communiceren en tokens en gegevens tussen hen overdragen. Dit maakt het mogelijk om applicaties te bouwen die meerdere zones overspannen.