Sharding ve Shard Anahtarı — Veriyi Bölmenin Tek Önemli Kararı
Önce şunu oku: Replikasyon ve Okuma Replikaları — Yazdım Ama Göremiyorum
30 saniyede özet
Sharding veriyi birden çok veritabanına böler. Hangi satırın nereye gideceğini shard anahtarı seçer ve bu seçim hangi sorgunun ucuz, hangisinin her shard'a sorulacağını, yazmaların dağılıp dağılmayacağını belirler.
Bir kütüphane büyüdükçe kitaplar tek binaya sığmaz ve dört şube açılır. Şimdi her kitabın hangi şubeye gideceğine karar vermek gerekir. Bu kararın kendisi, kütüphanenin geri kalan bütün hayatını belirler.
-
Bayt: Ödemeler tablosu tek veritabanına sığmıyor. Aylara göre dört veritabanına böldüm, çok düzenli.
-
Sen: Bugün gelen ödemeler hangisine yazılıyor?
-
Bayt: Hepsi... dördüncüye. Öteki üçü boş boş duruyor!
-
Bayt: Bölmenin kuralı, yükün nereye gideceğini de seçmiş. Kuralı birlikte inceleyelim.
Bölmek ve anahtar
shardingBir tablonun satırlarını birden çok veritabanına bölmek. Her shard verinin bir parçasını taşır; yazma ve depolama yükü bölünür.Sözlükte gör →, bir tablonun satırlarını birden çok veritabanına dağıtmaktır. Her veritabanı verinin yalnızca bir parçasını taşır, böylece yazma ve depolama yükü bölünür.
Hangi satırın hangi shard’a gideceğini shard keyBir satırın hangi shard'a gideceğini belirleyen kolon. Sorgu onu içeriyorsa tek shard'a, içermiyorsa hepsine gider.Sözlükte gör → belirler. Bu anahtar bir kez seçilir ve sonradan değiştirmek bütün veriyi taşımak demektir.
Kafam karıştı, daha basit anlat
Sharding veriyi parçalara böler. Hangi satırın nereye gideceğini tek bir kural, shard anahtarı seçer.
Sharding ile replikasyon arasındaki temel fark nedir?
Shard anahtarı neyi belirler?
Hangi soru ucuz?
Ödemeler müşteri numarasının hash'ine göre dört shard'a bölündü. Muhasebe geçen haftanın bütün ödemelerini istiyor. Sorgu kaç shard'a gider? Cevabı göster
Dördüne de. Tarih shard anahtarında değil; geçen haftanın ödemeleri her shard’a dağılmış. Her shard’a sorulur ve sonuçlar birleştirilir.
Adım adım oku
- Kitaplar dört şubeye bölündü.
- Aya göre bölünce bütün yeni kitaplar tek şubeye gidiyor; orası boğuluyor.
- Üye numarasına göre bölünce yük eşit dağılıyor.
- Bölme kuralını, en sık sorulan soruya göre seç.
Sorgu shard anahtarını içeriyorsa yön bellidir ve tek shard’a gidilir. İçermiyorsa her shard’a sorulur; buna scatter-gather denir ve en yavaş shard kadar yavaştır.
Yazmalar da aynı kurala uyar. Tarih gibi sürekli artan bir anahtar, “şimdi”yi tek bir shard’a koyar ve bütün yeni yazmalar oraya yığılır.
Kafam karıştı, daha basit anlat
Sorgu anahtarı biliyorsa tek shard, bilmiyorsa hepsi. Sürekli artan bir anahtar yazmaları tek yere yığar.
Ödemeler müşteri numarasının hash'ine göre bölündü. 'Geçen haftanın ödemeleri' sorgusu kaç shard'a gider?
Ödemeler aya göre bölündü. Bugünün yazmaları nasıl dağılır?
Shard eklemek
Anahtarı shard’a hash mod N ile eşlersen, N değişince kalanların çoğu değişir. Dörtten beşe geçerken her beş anahtardan dördü başka shard’a gider.
consistent hashingAnahtarları ve shard'ları bir halkaya dizen eşleme. Shard eklenince yalnızca yeni shard'ın payı taşınır, hash mod N'deki gibi çoğu değil.Sözlükte gör → anahtarları bir halkaya dizer; yeni shard yalnızca kendi payını alır. Bir başka yaygın yol, baştan çok sayıda sanal shard açıp onları fiziksel makinelere dağıtmaktır.
Kafam karıştı, daha basit anlat
mod N ile shard eklemek neredeyse her şeyi taşır. Consistent hashing yalnızca yeni shard’ın payını taşır.
hash(müşteri) mod 4 ile çalışan sisteme beşinci shard eklenip mod 5'e geçildi. Satırların yaklaşık ne kadarı başka shard'a taşınmalı?
Kendin gör
Shard anahtarı neyi ucuzlatır?
Tohum 275257- shard 1…
- shard 2…
- shard 3…
- shard 4…
Oynat ya da adımla.
Şu an ne oldu?
Tarih aralığı (ay) · Bugünün yazmaları
Shard anahtarı, bir satırın hangi shard'da duracağına karar verir. Her anahtar bir işi ucuzlatır, bir başkasını pahalılaştırır.
Görevler0/3
Bütün yazmaları tek bir shard'a yığaçık
İpucu
Varsayılan ayarlar yeter.
Tek bir müşterinin ödemeleri için dört shard'a birden soraçık
İpucu
Müşteri numarası anahtarda değilse ne olur?
Hash anahtarıyla beşinci shard'ı verinin yalnızca beşte birini taşıyarak ekleaçık
İpucu
Anahtarları shard'lara eşlemenin başka bir yolu var.
Olay günlüğü (0)
Henüz olay yok. Oynat veya adımla.
- Varsayılanla oynat. Tarih anahtarında bugünün bütün yazmaları dördüncü shard’a gitti.
- Anahtarı hash yap. Yazmalar dörde eşit bölündü.
- İşi “bir müşterinin ödemeleri” yap. Hash’te tek shard; tarih ve ülkede dört shard.
- “Beşinci shard ekle”, hash anahtarı. Verinin yüzde 80’i taşındı.
- Consistent hashing’i aç. Yalnızca beşte biri taşındı.
Consistent hashing, shard eklerken neden daha az veri taşır?
Tuzaklar
Erken sharding. Tek veritabanı, indeksler, okuma replikaları ve önbellek çoğu zaman yeter. Sharding’in bedeli her sorguda ve her şema değişikliğinde ödenir.
Shard’lar arası transaction. İki farklı shard’daki satırı tek transaction’da değiştirmek artık dağıtık bir transaction’dır. Birlikte değişen veriyi aynı shard anahtarı altında tut.
Ünlü müşteri. Hash bile kurtarmaz: tek bir dev müşteri bütün yazmaların yarısını yapıyorsa, onun shard’ı yine sıcak olur.
Kafam karıştı, daha basit anlat
Gerekmeden bölme, birlikte değişeni aynı yerde tut, tek bir dev anahtara dikkat et.
Hesaptan hesaba transferde gönderen ve alıcı farklı shard'larda. Ne değişir?
Aşağıdaki örnek bir ödeme sisteminden: ödemeler müşteri numarasına göre sanal shard’lara, sanal shard’lar da fiziksel veritabanlarına dağıtılıyor.
Derinleş · Ödemeler: müşteri numarasıyla sharding, sanal shard'larla büyüme 4 dosya · ~65 satır · ilk okumada atlayabilirsin
Kendini sına
Sorgu shard anahtarını içermiyorsa her shard'a sorulması gerekir.
Shard anahtarı hash(müşteri). Tek bir kurumsal müşteri bütün yazmaların yarısını yapıyor. Sonuç?
Aklında kalacak üç şey
- 1 Shard anahtarı, bir satırın hangi shard'da duracağını belirler. Sorgu bu anahtarı içeriyorsa tek shard'a gider; içermiyorsa her shard'a sorulur ve sonuçlar birleştirilir.
- 2 Tarih gibi sürekli artan bir anahtar, bütün yeni yazmaları tek bir shard'a yığar. Yazma yükünü dağıtmak için çeşitliliği yüksek bir anahtar seçilir.
- 3 hash mod N ile shard eklemek verinin büyük kısmını taşır (4'ten 5'e geçişte yüzde 80'i). Consistent hashing yalnızca yeni shard'ın payını taşır.
4 kart sonraki derste seni bekliyor