none
Qual a diferenca entre Particionamento Horizontal e Vertical de dados? RRS feed

  • Pergunta

  • Ola a Todos,

    Apesar de simples minha duvida, nao consegui encontrar a resposta ainda em algum topico do forum, caso haja dsculpe por nao procurar mais..

    mas 'e o seguiente:

    qual a diferenca em particionar dados de forma vertical ou de forma horizontal?

    por favor gostaria de um exemplo.

    obrigado a todos


    domingo, 13 de julho de 2008 21:49

Respostas

  • Cleyton,

    Até a versão 2000 os particionamentos tinham que ser feitos "manualmente", onde tínhamos que criar tabelas diferentes e adicioná-las em filegroup diferentes para aumentar a performance....  e precisávamos também de uma view para  ser utilizadas nas consultas.

     

    A partir da versão 2005 o particionamento horizontal foi "automatizado", mas o vertical não tem como pois não obedece um padrão especifico.

     

    Em relação aos filegroup, é apenas uma forma de separar os objetos do banco de dados em discos diferentes para aumentar a performance.

     

    Respondendo as suas perguntas:

     

    1. Podemos utilizar o filegroup para os dois tipos de particionamentos.

    2. A funcionalidade de particionamento que foi adicionado na nova versão do SQL (partitions functions e partitions schema) fazem o particionamento horizontal.

    3. No SQL 2005 devido a nova funcionalidade, todo o processo ficou implícito.

     

     

     

    Tulio Rosa

    http://tuliorosa.blogspot.com

     

     

    terça-feira, 15 de julho de 2008 02:05

Todas as Respostas

  • Cleyton,

    Seguinte....

     

    Quando falamos em particionar tabelas estamos querendo aumentar a performance nas operações que envolvam essa tabela, geralmente são necessárias em tabelas com milhões de registros (tabelas pequenas não fazem diferença).

     

    O particionamento vertical, é quando passamos os campos menos utilizados em uma tabela para uma segunda... com um relacionamento de 1 para 1.

     

    O particionamento horizontal, é quando passamos os registros de uma tabela para outra obedecendo algum critério, como intervalo de datas, numeração etc...

     

     

    Exemplo:

    Tabela A (campoA, campoB, campoC, campoD)

     

    Particionamento vertical:

    . Tabela A (campoA, CampoB)

    . Tabela B (campoC, campoD)

     

    Particionamento horizontal:

    . Tabela A (campoA, CampoB, CampoC, CampoD) mas somente registros do ano de 2007

    . Tabela B (campoA, CampoB, CampoC, CampoD) mas somente registros do ano de 2008

     

     

    Tulio Rosa

    http://tuliorosa.blogspot.com

    segunda-feira, 14 de julho de 2008 10:18
  • Tulio,

     

    Parabéns pela explicação, simples e direta.

    segunda-feira, 14 de julho de 2008 12:07
    Moderador
  •  Tulio Rosa wrote:

    Cleyton,

    Seguinte....

     

    Quando falamos em particionar tabelas estamos querendo aumentar a performance nas operações que envolvam essa tabela, geralmente são necessárias em tabelas com milhões de registros (tabelas pequenas não fazem diferença).

     

    O particionamento vertical, é quando passamos os campos menos utilizados em uma tabela para uma segunda... com um relacionamento de 1 para 1.

     

    O particionamento horizontal, é quando passamos os registros de uma tabela para outra obedecendo algum critério, como intervalo de datas, numeração etc...

     

     

    Exemplo:

    Tabela A (campoA, campoB, campoC, campoD)

     

    Particionamento vertical:

    . Tabela A (campoA, CampoB)

    . Tabela B (campoC, campoD)

     

    Particionamento horizontal:

    . Tabela A (campoA, CampoB, CampoC, CampoD) mas somente registros do ano de 2007

    . Tabela B (campoA, CampoB, CampoC, CampoD) mas somente registros do ano de 2008

     

     

    Tulio Rosa

    http://tuliorosa.blogspot.com



    OK tulio obrigado pela explicação, me surgiu essa duvida devido a um video que vi no expierence, onde foi citado que ao utilizar filegorups diferentes para a mesma tabela utilizando diferentes arquivos de dados e o particonamento de tabelas ocorre um particonamento vertical????


    quando se usa o particionamento de tabelas com partitions functions e partitions schema os dados são dividios horizontalmente não?

    ex:

    Tabela A Particao1(fg1)(campoA, CampoB, CampoC, CampoD) mas somente registros do ano de 2007

    Tabela A Particao2(fg2)(campoA, CampoB, CampoC, CampoD) mas somente registros do ano de 2008
    Tabela A Particao3(fg3)(campoA, CampoB, CampoC, CampoD) mas somente registros do ano de 2009 para cima


    outra questão apesar de entendido o sua explicação a forma de exemplos era usado até a versão 2000? certo, pois no sql 2005 não mais precisa criar 2 tabelas para particionar dados devido a nova funcionalidade de partionamento de tabelas.

    obrigado e aguardo comentários..



    segunda-feira, 14 de julho de 2008 12:24
  • Cleyton,

    Até a versão 2000 os particionamentos tinham que ser feitos "manualmente", onde tínhamos que criar tabelas diferentes e adicioná-las em filegroup diferentes para aumentar a performance....  e precisávamos também de uma view para  ser utilizadas nas consultas.

     

    A partir da versão 2005 o particionamento horizontal foi "automatizado", mas o vertical não tem como pois não obedece um padrão especifico.

     

    Em relação aos filegroup, é apenas uma forma de separar os objetos do banco de dados em discos diferentes para aumentar a performance.

     

    Respondendo as suas perguntas:

     

    1. Podemos utilizar o filegroup para os dois tipos de particionamentos.

    2. A funcionalidade de particionamento que foi adicionado na nova versão do SQL (partitions functions e partitions schema) fazem o particionamento horizontal.

    3. No SQL 2005 devido a nova funcionalidade, todo o processo ficou implícito.

     

     

     

    Tulio Rosa

    http://tuliorosa.blogspot.com

     

     

    terça-feira, 15 de julho de 2008 02:05
  •  Tulio Rosa wrote:

    Cleyton,

    Até a versão 2000 os particionamentos tinham que ser feitos "manualmente", onde tínhamos que criar tabelas diferentes e adicioná-las em filegroup diferentes para aumentar a performance....  e precisávamos também de uma view para  ser utilizadas nas consultas.

     

    A partir da versão 2005 o particionamento horizontal foi "automatizado", mas o vertical não tem como pois não obedece um padrão especifico.

     

    Em relação aos filegroup, é apenas uma forma de separar os objetos do banco de dados em discos diferentes para aumentar a performance.

     

    Respondendo as suas perguntas:

     

    1. Podemos utilizar o filegroup para os dois tipos de particionamentos.

    2. A funcionalidade de particionamento que foi adicionado na nova versão do SQL (partitions functions e partitions schema) fazem o particionamento horizontal.

    3. No SQL 2005 devido a nova funcionalidade, todo o processo ficou implícito.

     

     

     

    Tulio Rosa

    http://tuliorosa.blogspot.com

     

     



    OK Tulio.. vlw... achei estranho o video no expierence.. ate entaum tinha essa definicao, apos o video fiquei na duvida.. ou o video esta errado ou interpretei errado... vou velo novamente..

    abraço.
    terça-feira, 15 de julho de 2008 12:01