[firebase-br] escolha do dialeto

Sandro Souza escovadordebits em gmail.com
Qua Dez 3 12:11:38 -03 2008


Bom dia/tarde pessoal.

Só complementando as diferenças que já foram citadas, temos também a
diferença da precisão numérica.

Nos dialetos 1 e 2, quando você declara um campo do tipo NUMERIC ou DECIMAL,
ele será armazenado com o formato de ponto flutuante, como o tipo DOUBLE
PRECISION por exemplo.

Isso implica diretamente em possíveis erros de precisão numérica, sendo
notados principalmente em somatórios (SUM) e médias (AVG).

No dialeto 3, o Firebird procura armazenar o valor como se fosse um valor
inteiro, ou seja:

Se o seu campo tiver até 4 dígitos, independente de quantas casas decimais
tenha, será armazenado internamente como um SMALLINT (inteiro de 16 bits com
sinal).

Se o seu campo tiver de 5 até 8 dígitos, independente de quantas casas
decimais tenha, será armazenado internamente como um INTEGER (inteiro de 32
bits com sinal).

Se o seu campo tiver de 9 até 18 dígitos, independente de quantas casas
decimais tenha, será armazenado internamente como um BIGINT (inteiro de 64
bits com sinal), que é disponível apenas no dialeto 3.

Apesar desses valores serem armazenados como inteiros, durante as operações
matemáticas, seus valores são multiplicados e/ou divididos por potências de
10 para respeitar as casas decimais informadas.

Como resultado final, você tem o mínimo possível de erros de precisão
(arredondamento, etc...).

Esse "pequeno detalhe técnico" faz muita diferença quando você está lidando
com valores monetários (como o tipo MONEY do SQL Server, ou o tipo Currency
do Borland Delphi), que também são BIGINTs (Int64) "disfarçados".

Resumindo, quer o máximo de precisão numérica entre outros benefícios? Use
sempre o dialeto 3.

2008/12/3 Fabiano Segal <fabianosegal em gmail.com>

> toda limitacao implica tambem em performance, visto que por nao poder
> utilizar determinados tipos de campo, bem como determinados tipos de
> funcoes
> o sistema deve ser programado de forma mais antiquada.
>
> Abraço
>
> 2008/12/3 renato <centriscorps em gmail.com>
>
> > Dadas as diferenças no sql há diferença quanto a performance?
> >
> > Renato
> >
> > Em 03/12/08, Fabiano Segal<fabianosegal em gmail.com> escreveu:
> >  > sim, amigo, existem diferenças sim,
> > >
> > > em sentenças SQL as principais, em tipos de campo, ou seja, o dialeto 1
> é
> > > limitado. bem mais limitado.
> > > e como nosso amigo anterior se referiu, ele apenas é mantido por
> > > compatibilidade.
> > >
> > > Abraço.
> > >
> > > 2008/12/3 renato <centriscorps em gmail.com>
> > >
> > >> Saudações!
> > >>
> > >> Existe alguma diferença entre criar um banco firebird usando o dialeto
> 1
> > >> ou
> > >> 3?
> > >>
> > >>
> > >> Abraços,
> > >>
> > >> Renato.
> > >> ______________________________________________
> > >> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > >> Para saber como gerenciar/excluir seu cadastro na lista, use:
> > >> http://www.firebase.com.br/fb/artigo.php?id=1107
> > >> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >>
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista