sql >> Database >  >> RDS >> Mysql

Database-sharding versus partitionering

Partitioneren is meer een algemene term voor het verdelen van gegevens over tabellen of databases. Sharding is een specifiek type partitionering, onderdeel van wat horizontale partitionering wordt genoemd.

Hier repliceert u het schema over (meestal) meerdere instanties of servers, waarbij u een soort logica of identificatie gebruikt om te weten welke instantie of server naar de gegevens moet zoeken. Een dergelijke identifier wordt vaak een "Shard Key" genoemd.

Een veelgebruikte, sleutelloze logica is om het alfabet te gebruiken om de gegevens te verdelen. A-D is instantie 1, E-G is instantie 2, enz. Klantgegevens zijn hier zeer geschikt voor, maar zullen enigszins verkeerd worden weergegeven in de verschillende instanties als de partitie er geen rekening mee houdt dat sommige letters vaker voorkomen dan andere.

Een andere veelgebruikte techniek is het gebruik van een sleutelsynchronisatiesysteem of logica die zorgt voor unieke sleutels in alle instanties.

Een bekend voorbeeld dat je kunt bestuderen, is hoe Instagram hun partitionering in de begindagen oploste (zie onderstaande link). Ze begonnen gepartitioneerd op heel weinig servers en gebruikten Postgres om de gegevens vanaf het begin te verdelen. Ik geloof dat het enkele duizenden logische scherven waren op die paar fysieke scherven. Lees hier hun geweldige artikel uit 2012:Instagram Engineering - Sharding &ID's

Zie ook hier:http://www.quora. com/Wat-het-verschil-tussen-sharding-en-partitie



  1. PostgreSQL-tabelstatistieken analyseren

  2. Grote JSON opslaan - binair of tekst

  3. Hoe gebruik je een BIGINT als een automatisch oplopende primaire sleutel in Laravel 4

  4. Rails-scope - waar in exacte overeenkomsten