Az előző cikkemben kifelejtettem a sharding-ot, ami pedig egy fontos technika az adatbázis-kezelő erőforrásainak elosztásában. Arról van szó, hogy szétbombázzuk az adatainkat:
Lehet olyat, hogy egy adott tábla megy egy kitüntetett adatbázis-szerverre.
Olyan is működik, hogy a rekordokat valamilyen kitüntetett érték szerint dobáljuk szét, például az egyik szerver a 0-999, a másik pedig az attól fölfelé sorszámú izéket tárolja. Ezt a MySQL elvileg támogatja (partitioning), de nem hallok jókat róla.
Magadnak kell megoldani a sharding miatt felmerülő problémákat, pl. ha a táblákat dobálod szét, akkor nem tudsz olyan lekérdezést írni, amiben ezek a táblák is szerepelnek, külön kell kezelni az ügyet és mondjuk PHP-ben összesíteni. Nyilván a rekordonkénti sharding-nál sem tudsz egyetlen SQL-lel szummát számítani.
Egy életszagú példa: az eBay-nél a sharding miatt a JOIN-t az alkalmazásban oldják meg. A kód így persze nem szép, de eBay méretekben a skálázódás (könnyű plusz alkalmazásszervereket indítani) sokkal fontosabb.
A suliban megtanítottak a normalizálásra, azonban nagy méretekben denormalizálni kell, mert nem elég a teljesítmény. Mivel a tárterület árak nagyon alacsonyak, ez nem probléma, de az adatok módosítása és a kód itt is gáz lesz.
A Flickr így tárolja a hozzászólásokat, a shard-jaik között a hozzászólások duplikálva (mit duplikálva, triplikálva, ezerlikálva!) vannak.
Lehet, hogy az egyetemen most magukhoz nyúlnak, de hát ők csak tanítják, mi meg csináljuk.
iMect means internet, media and other cool things. iMect is a small company near lake Velence, Hungary. We’ve a big footer on every page where you can discover what we do and what happens with us.
Az iMect jelentése: internet, média és egyéb király dolgok. Egy kis cég vagyunk közel a Velencei-tóhoz. Minden oldalon van egy nagy lábléc, ahol felfedezheted, hogy mivel foglalkozunk.