Sharding to po prostu inna nazwa „poziomego partycjonowania” bazy danych. Możesz poszukać tego terminu, aby był bardziej zrozumiały.
Z Wikipedii :
Podział poziomy to zasada projektowania, w której wiersze tabeli bazy danych są przechowywane osobno, a nie dzielone według kolumn (jak w przypadku normalizacji). Każda partycja stanowi część niezależnego fragmentu, który z kolei może znajdować się na oddzielnym serwerze bazy danych lub fizycznej lokalizacji. Zaletą jest zmniejszenie liczby wierszy w każdej tabeli (zmniejsza to rozmiar indeksu, a tym samym poprawia wydajność wyszukiwania). Jeśli fragmentowanie jest oparte na jakimś rzeczywistym aspekcie danych (np. Klienci europejscy kontra klienci amerykańscy), możliwe jest łatwe i automatyczne ustalenie odpowiedniego członkostwa niezależnego fragmentu i zapytanie tylko odpowiedniego fragmentu.
Kilka dodatkowych informacji o dzieleniu na fragmenty:
Po pierwsze, każdy serwer bazy danych jest identyczny i ma tę samą strukturę tabeli. Po drugie, rekordy danych są logicznie podzielone na podzieloną bazę danych. W przeciwieństwie do partycjonowanej bazy danych, każdy pełny rekord danych istnieje tylko w jednym niezależnym fragmencie (chyba że istnieje dublowanie w celu tworzenia kopii zapasowych / redundancji), a wszystkie operacje CRUD wykonywane są tylko w tej bazie danych. Użyta terminologia może Ci się nie podobać, ale reprezentuje to inny sposób organizowania logicznej bazy danych na mniejsze części.
Aktualizacja: Nie zepsujesz MVC. Praca nad określeniem poprawnego fragmentu, w którym mają być przechowywane dane, zostałaby wykonana w sposób transparentny przez warstwę dostępu do danych. Tam musisz określić poprawny fragment w oparciu o kryteria zastosowane do usunięcia fragmentu bazy danych. (Ponieważ musisz ręcznie podzielić bazę danych na różne fragmenty w oparciu o niektóre konkretne aspekty aplikacji). Następnie musisz zachować ostrożność podczas ładowania i przechowywania danych z / do bazy danych, aby użyć poprawnego fragmentu.
Być może ten przykład z kodem Java sprawia, że jest nieco jaśniejszy (dotyczy projektu Hibernacja odłamków ), jak to będzie działać w scenariuszu z prawdziwego świata.
Aby rozwiązać problem „ why sharding
”: Dotyczy to głównie aplikacji na bardzo dużą skalę, z dużą ilością danych. Po pierwsze, pomaga zminimalizować czas odpowiedzi na zapytania do bazy danych. Po drugie, możesz użyć tańszych, „niższych” maszyn do hostowania danych, zamiast jednego dużego serwera, co może już nie wystarczyć.