Acho que você confundiu alguns termos aqui.
Todos os seus dados vão para um banco de dados (também conhecido como esquema). Em um banco de dados você pode ter tabelas.
por exemplo.
table employee
id integer
name varchar
address varchar
country varchar
table office
id integer
employee_id integer
address varchar
Dentro das tabelas você tem os campos
(id, name, address)
aka colunas.E as tabelas têm uma ou mais linhas.Um exemplo para o funcionário da tabela:
id name address country
----------------------------------------------------
1 John 1 Regent Street UK
2 James 24 Jump Street China
3 Darth Vader 1 Death Star Bestine, Tatooine
Tanto para o básico.
Por que particionar
Agora suponha que temos muitas e muitas pessoas (linhas) em nosso banco de dados.
Lembre-se disso, um banco de dados galáctico, então temos 100 bilhões de registros.
Se quisermos pesquisar tão rápido é bom se pudermos fazer isso em paralelo.
Então particionamos a tabela (digamos, por país) e podemos ter x servidores procurando em 1 país cada.
Particionar entre servidores é chamado de
sharding
. Ou podemos particionar, por exemplo. dados históricos por ano, para que não precisemos passar por todos os dados apenas para obter os dados recente notícia. Nós só temos que passar pela partição para este ano. Isso é chamado de
partitioning
. Qual é a grande diferença entre
sharding
pode apenas partitioning
? Fragmentação
Em
sharding
você prevê que todos seus dados são relevantes e têm a mesma probabilidade de serem consultados. (por exemplo, o google pode esperar que todos os seus dados sejam consultados; arquivar parte de seus dados é inútil para eles).Neste caso, você deseja que muitas máquinas examinem seus dados em paralelo, onde cada máquina faz parte do work.
Então você dá a cada máquina uma partição diferente (shard) dos dados e dá a todas as máquinas a mesma consulta. Quando os resultados saírem, você
UNION
todos juntos e produza o resultado. Particionamento básico
No
partitioning
básico parte de seus dados está hot
e parte é not
. Um caso típico são dados históricos, os novos dados são hot
, os dados antigos dificilmente são tocados.Para este caso de uso é inútil colocar os dados antigos em servidores separados. Essas máquinas vão esperar e esperar e não fazer nada porque ninguém se importa com os dados antigos, exceto alguns auditores que os examinam uma vez por ano.
Então você particiona esses dados por ano e o servidor arquivará automaticamente as partições antigas para que seu as consultas analisarão apenas um (talvez 2) anos de dados e serão muito mais rápidas.
Preciso de particionamento?
Você só faz particionamento quando tem muitos e muitos dados, porque isso complica sua configuração.
A menos que você tenha mais de um milhão de registros, você não precisa considerar o particionamento.
Se você tem mais de 100 milhões de registros, você definitivamente deve considerar isso.
Para obter mais informações, consulte: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
Veja também wiki:http://en.wikipedia.org/wiki /Partition_%28database%29
Estas são apenas minhas heurísticas pessoais YMMV.