Myślę, że masz tutaj pomieszanych kilka terminów.
Wszystkie twoje dane trafiają do jednej bazy danych (czyli schematu). W bazie danych możesz mieć tabele.
np.
table employee
id integer
name varchar
address varchar
country varchar
table office
id integer
employee_id integer
address varchar
Wewnątrz tabel masz pola (id, name, address)
aka kolumny.A tabele mają jeden lub więcej wierszy.
Przykład dla pracownika tabeli:
id name address country
----------------------------------------------------
1 John 1 Regent Street UK
2 James 24 Jump Street China
3 Darth Vader 1 Death Star Bestine, Tatooine
Tyle o podstawach.
Dlaczego partycjonowanie
Teraz załóżmy, że w naszej bazie danych mamy bardzo dużo osób (wierszy).
Pamiętaj, że jest to galaktyczna baza danych, więc mamy 100 miliardów rekordów.
Jeśli chcemy przeszukiwać tak szybko fajnie, jeśli możemy to robić równolegle.
Więc dzielimy tabelę (powiedzmy według kraju), a następnie możemy mieć x serwerów szukających w 1 kraju każdy.
Podział na serwery nazywa się sharding
.
Lub możemy podzielić np. dane historyczne według roku, więc nie musimy przeglądać wszystkich dane tylko po to, aby uzyskać najnowsze Aktualności. Na ten rok musimy tylko przejść przez przegrodę. Nazywa się to partitioning
.
Jaka jest duża różnica między sharding
może po prostu partitioning
?
Sharding
W sharding
przewidujesz, że wszystkie Twoje dane są istotne i równie prawdopodobne, że zostaną odpytane. (np. Google może oczekiwać, że wszystkie ich dane zostaną odpytane; archiwizowanie części ich danych jest dla nich bezużyteczne).
W tym przypadku chcesz, aby wiele komputerów przeglądało Twoje dane równolegle, przy czym każda maszyna wykonuje część pracy.
Więc dajesz każdej maszynie inną partycję (odłamek) danych i dajesz wszystkim maszynom to samo zapytanie. Kiedy wyjdą wyniki, UNION
je wszystkie razem i wyprowadza wynik.
Podstawowe partycjonowanie
W podstawowym partitioning
część Twoich danych jest hot
a część to not
. Typowym przypadkiem są dane historyczne, nowe dane są hot
, stare dane prawie nie zostają naruszone.
W tym przypadku użycia nie ma sensu umieszczać starych danych na oddzielnych serwerach. Te maszyny będą po prostu czekać, czekać i nic nie zrobią, ponieważ nikt nie dba o stare dane, z wyjątkiem niektórych audytorów, którzy przeglądają je raz w roku.
Więc dzielisz te dane na rok, a serwer automatycznie archiwizuje stare partycje, aby Twoje zapytania będą dotyczyć tylko jednego (może 2) lat danych i będą znacznie szybsze.
Czy potrzebuję partycjonowania?
Partycjonujesz tylko wtedy, gdy masz bardzo dużo danych, ponieważ komplikuje to konfigurację.
O ile nie masz więcej niż miliona rekordów, nie musisz brać pod uwagę partycjonowania.
Jeśli masz masz ponad 100 milionów rekordów, zdecydowanie powinieneś to rozważyć.
Aby uzyskać więcej informacji, zobacz:http://dev.mysql.com/ doc/refman/5.1/en/partitioning.html
i:http://blog.mayflower.de/archives/353-Is-MySQL-partycjonowanie-przydatne-dla-bardzo-duzych-real-life-problems.html
Zobacz także wiki:http://en.wikipedia.org/wiki /Partition_%28database%29
To tylko moja osobista heurystyka YMMV.