Penso che tu abbia confuso alcuni termini qui.
Tutti i tuoi dati vanno in un database (noto anche come schema). In un database puoi avere tabelle.
es.
table employee
id integer
name varchar
address varchar
country varchar
table office
id integer
employee_id integer
address varchar
All'interno delle tabelle hai i campi (id, name, address)
alias colonne.E le tabelle hanno una o più righe.
Un esempio per dipendente di tabella:
id name address country
----------------------------------------------------
1 John 1 Regent Street UK
2 James 24 Jump Street China
3 Darth Vader 1 Death Star Bestine, Tatooine
Questo per quanto riguarda le basi.
Perché il partizionamento
Ora supponiamo di avere un sacco di persone (righe) nel nostro database.
Ricorda che questo è un database galattico, quindi abbiamo 100 miliardi di record.
Se vogliamo cercare così velocemente è bello se possiamo farlo in parallelo.
Quindi partizioniamo la tabella (diciamo per paese) e quindi possiamo avere x server che cercano in 1 paese ciascuno.
Il partizionamento tra server è chiamato sharding
.
Oppure possiamo partizionare ad es. dati storici per anno, quindi non dobbiamo esaminare tutti i dati solo per ottenere i recenti notizia. Dobbiamo solo passare attraverso la partizione per quest'anno. Questo si chiama partitioning
.
Qual è la grande differenza tra il sharding
può solo partitioning
?
Sharding
In sharding
prevedi che tutti i tuoi dati sono rilevanti e altrettanto probabili essere interrogati. (es. lavoro.
Quindi assegni a ciascuna macchina una partizione (shard) di dati diversa e fornisci a tutte le macchine la stessa query. Quando escono i risultati, UNION
tutti insieme e produrre il risultato.
Partizionamento di base
Nel partitioning
di base parte dei tuoi dati è hot
e la parte è not
. Un caso tipico sono i dati storici, i nuovi dati sono hot
, i vecchi dati vengono a malapena toccati.
Per questo caso d'uso è inutile mettere i vecchi dati in server separati. Quelle macchine aspetteranno e aspetteranno e non faranno nulla perché a nessuno importa dei vecchi dati tranne alcuni revisori che li esaminano una volta all'anno.
Quindi partizioni quei dati per anno e il server archivierà automaticamente le vecchie partizioni in modo che tu le query esamineranno solo un (forse 2) anni di dati e saranno molto più veloci.
Ho bisogno del partizionamento?
Esegui il partizionamento solo quando hai moltissimi dati, perché complica la tua configurazione.
A meno che tu non abbia più di un milione di record, non devi prendere in considerazione il partizionamento.
Se lo fai hai più di 100 milioni di record, dovresti assolutamente prenderlo in considerazione.
Per ulteriori informazioni, vedere:http://dev.mysql.com/ doc/refman/5.1/en/partitioning.html
e:http://blog.mayflower.de/archives/353-Is-MySQL-partitioning-useful-for-very-big-real-life-problems.html
Vedi anche wiki:http://en.wikipedia.org/wiki /Partizione_%28database%29
Queste sono solo le mie euristiche personali YMMV.