С MySQL хората обикновено правят това, което се нарича базирано на приложение шардиране .
Накратко, ще имате същата структура на базата данни на множество сървъри за бази данни. Но няма да съдържа същите данни.
Така например:
Users 1 - 10000: server A
Users 10001 - 20000: server B
Разделянето (разбира се) не е техника за архивиране, а е предназначено да разпределя четене и запис в клъстер.
Техниките, използвани за шард, са например MySQL-Proxy. Това не е нищо, което HScale е измислил, това е повече или по-малко прост LUA скрипт, който разпределя четене и запис на различни сървъри в задната част. Трябва да има много примери в MySQL ковачницата.
Друг инструмент (базиран на MySQL Proxy) е SpockProxy . Напълно съобразен за раздробяване. Те също така се отърваха от Lua и работиха върху различни неща, за да го направят по-бърз от проксито. Досега тествах само SpockProxy, но никога не го пусках в производство.
Сега освен тези прокси сървъри, можете да разделите и себе си. Задължителна би била главна таблица, напр.:
-------------------
| userA | server1 |
| userB | server2 |
| userC | server1 |
-------------------
След това изградете своите четения и записвания към сървъра. Не е много красиво, но работи. Следващото препятствие би било да го направим по-слабо толерантен. Така например, server1
, server2
и server3
всеки трябва да е малък клъстер.
И не на последно място, друг интересен подход към разделяне на данни и индекси между сървъри е IDDB . Не съм сигурен дали някога са пускали кода му, но публикациите в блога им дават страхотни подробности за това какво прави.
Кажете ми, ако това помогне!