Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Simenes

performance

Recommended Posts

Bom dia pessoal!

 

Estou à criar um sistema e me surgiu uma dúvida quanto a performance de banco de dados. (Estou à utilizar o sql server neste projeto, mas gostaria de saber se o que for respondido cabe a outras engines de databases tambem).

 

Vamos à pergunta:

Para fins de performance, qual dos layouts abaixo seria melhor:

Layout 1: criar uma tabela com 2 colunas que irá guardar milhoes de registros

 

EXEMPLO Layout 1:*

 

id sequencia Coluna Valor

--- ------------- ---------- -----------

1 1 Nome Evandro

1 2 idade 22

1 3 ---o Masculino

2 1 Nome Roberto

2 2 idade 25

2 3 ---o Masculino

3 1 Nome Aline

3 2 idade 20

3 3 ---o Feminino

4 1 Nome Debora

4 2 idade 25

4 3 ---o Feminino

 

 

 

 

Layout 2: criar uma tabela com 300 colunas que irá reduzir a quantidade de registros em 300 vezes

 

EXEMPLO Layout 2:*

 

id Nome idade ---o

---- --------- -------- --------------

1 Evandro 22 Masculino

2 Roberto 25 Masculino

3 Aline 20 Feminino

4 Debora 25 Feminino

 

 

 

*Considere os layouts apenas exemplos, pois a quantidade de colunas ultrapassa 300 mas apenas 50 serão obrigatórios.

**Lembrando que a tabela já estaria com os devidos índices criados (unique, primary, etc...).

 

Digo isso porque preciso armazenar registros em grande escala, e a maioria dos valores sao dinamicos, ou seja, nem sempre virá para eu armazenar, o que acarretaria muitos campos em branco caso eu crie o layout 2, no layout 1 eu não teria problema com isso, eu armazenaria apenas os valores que vieram...

 

 

 

Desde já agradeço quem ajudar =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simenes , aconselho primeiro a você procurar ler sobre Normalização de Banco de Dados e Formas Normais.

 

Verá que não se trata de eu "eu acho" e sim práticas que se revelaram historicamente vantajosas.

 

Observações :

 

Uma tabela com 300 colunas quase certamente pode ser quebrada em outras.

 

Idade é um atributo mutável o correto a guardar a data de nascimento é calcular a idade.

 

Já aviso a 2@ forma é a mais correta , teria sérios problemas com a 1@, um exemplo "qual a idade da debora?" ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simenes, o leiaute 1 me pareceu uma variação do Modelo Entidade-Atributo-Valor, ou Modelo EAV.

Qual é o contexto do sistema e do banco de dados? Isto é, para que eles serão utilizados?

Teve a oportunidade de normalizar as estruturas, para verificar se é possível a utilização do modelo relacional? Talvez possa utilizar um modelo híbrido, com somente uma das tabelas utilizando a estrutura EAV otimizada.

 

Para consultar:

- Modelo Entidade-Atributo-Valor

- Uma proposta de modelagem de dados para criação de fichas clínicas dinâmicas

- Sparse matrix

 


Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.