[firebase-br] Chave primaria Guid

Éder Monteiro do Nascimento fator em aliancati.com
Segunda Março 15 08:51:50 -03 2021


Desculpe a falta de conhecimento.
Não entendi seu problema.
Você tem diversas filiais, e quer gerar uma chave para integrar tudo?
Já pensou em uma chave BIGINT ?
Tipo o bigint vai de -9,223,372,036,854,775,808 ..
9,223,372,036,854,775,807.
Tipo, mesmo que você tenha diversas filiais, a gente tá falando   de -9
quinquilhões até +9quinquilhôes o que dá por volta de 10 decilhões de
chaves.
Caraca, acha registro unificado nessa base.
De qualquer forma não seria mais prático talvez uma chave composta? criar
um GENID para cada entidade e ao inserir o registro, preencher a PK por
trigguer, ao receber o id da entidade?
Algo como Genidentidade1, genidentidade2.
Ou ate mesmo genid por grupo, por que a cada gen desse de entidade estamos
falando de 10 decilhões de chaves.
Quantos registros vc tem na base, e qual sua previssão de crescimento?



Em dom., 14 de mar. de 2021 às 16:16, Rodrigo Gomes da Silva via lista <
lista em firebase.com.br> escreveu:

> Não é melhor usar como char(16) charset NONE mesmo? Pois como o Cantu
> falou, não tem nada especial no indice de octets... E com none, nem mesmo
> tem algum tratamento de charset na string pra fazer ter alguma diferença
> (minima) de performance.
>
> Em sáb., 13 de mar. de 2021 às 19:00, Carlos Wilson via lista <
> lista em firebase.com.br> escreveu:
>
> > Vou ler o artigo sim, mas a questão de ter um char ou varchar acima de
> > 16 posiçoes pelo que vi em outros estudos é a lentidão dos índices.
> > Conforme a tabela cresce o desempenho fica horrível segundo os artigos
> > que li. a vantagem do char(16) octects é que tem o mesmo desempenho de
> > um indice inteiro de 128 bits, portanto melhor pra PK e FK.
> >
> > Mas está tudo no campo da teoria ainda, pois nem consegui fazer
> funcionar.
> >
> > Obrigado.
> >
> > []'s
> > Carlos Wilson
> > Formosystem
> > Informática e Automação Comercial
> >
> > Em 13/03/2021 17:06, Mário Reis via lista escreveu:
> > > Bem recomendo a leitura do link:
> > > https://firebirdsql.org/refdocs/langrefupd25-intfunc-gen_uuid.html
> > > Já usei com MSSSQLSERVER e guardava numa varchar(35) salvo erro. Já foi
> > há
> > > 4 anos já não lembro bem
> > > Com os meus melhores cumprimentos
> > > Mário Agostinho Reis
> > > 919262146
> > >
> > > Esta mensagem contém informação de natureza confidencial e é
> > > exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por
> > engano,
> > > receber este email agradecemos que não o copie nem o reenvie e que nos
> > > notifique do ocorrido através do email de resposta.
> > > [image: cloudHQ] <https://www.free-email-tracker.com> Powered by
> > > cloudHQ <https://www.free-email-tracker.com>
> > >
> > >
> > > Marcelo - MK Softwares via lista <lista em firebase.com.br> escreveu no
> dia
> > > sexta, 12/03/2021 à(s) 22:58:
> > >
> > >> Nessa questão de leitura o C# faz bem tranquilo, usando a dll
> > >> FirebirdSql.Data.FirebirdClient. É só declarar uma propriedade em uma
> > >> class com o tipo Guid e fazer a leitura/gravação no banco sem
> problemas
> > >> algum.
> > >>
> > >> Agora se usar em string como o Cantu sugeriu, retorna erro de leitura
> > >> gravação. Tentamos dessa forma mas sem sucesso, e só conseguimos
> > >> solucionar quando mudamos o field para esse domain que compartilhei
> > >> anteriormente.
> > >>
> > >>
> > >> Em 12/03/2021 20:32, Carlos H. Cantu via lista escreveu:
> > >>> Acredito que você tenha que usar um string e não TBytes.
> > >>>
> > >>> []s
> > >>> Carlos H. Cantu
> > >>> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
> > >>> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
> > >>>
> > >>> CWvl> Criei desse mesmo jeito no banco, a questão é na aplicação pra
> > ler
> > >> esse
> > >>> CWvl> dado.
> > >>>
> > >>>
> > >>> CWvl> []'s
> > >>> CWvl> Carlos Wilson
> > >>> CWvl> Formosystem
> > >>> CWvl> Informática e Automação Comercial
> > >>>
> > >>> CWvl> Em 12/03/2021 15:57, Marcelo - MK Softwares via lista escreveu:
> > >>>>> Aqui usamos C# e para resolver os problemas com guid, criamos esse
> > >>>>> domain, e funciona bem tranquilo.
> > >>>>>
> > >>>>> CREATE DOMAIN UUID AS CHAR(16) CHARACTER SET OCTETS COLLATE OCTETS;
> > >>>>>
> > >>>>>
> > >>>>> Em 12/03/2021 15:44, Carlos Wilson via lista escreveu:
> > >>>>>> Boa tarde a todos,
> > >>>>>>
> > >>>>>> Atravessei a madrugada pesquisando e não achei solução para o meu
> > >>>>>> problema. Utilizo o Unidac.
> > >>>>>>
> > >>>>>> Devido a tantos problemas com replicação e outros em sincronizar
> > >>>>>> bancos de várias filiais estou tentando migrar minhas PK para GUID
> > >>>>>>
> > >>>>>> depois de estudar em alguns lugares vi que a pk tem que ser criada
> > >>>>>> como Char(16) Octates. Dessa maneira a pk é gravada como bytes
> > >>>>>> binarios e o desempenho fica melhor ao indexar e usar como FK.
> > >>>>>>
> > >>>>>> No delphi fiz essa função para preenchimento da chave.
> > >>>>>>
> > >>>>>> function Tdm.IncUUID: TBytes;
> > >>>>>> var
> > >>>>>>     qry: TUniQuery;
> > >>>>>> begin
> > >>>>>>     qry := TUniQuery.Create(Self);
> > >>>>>>     qry.Connection := DBConn1;
> > >>>>>>     qry.SQL.Clear;
> > >>>>>>     qry.SQL.Add('select GEN_UUID() from RDB$DATABASE');
> > >>>>>>     qry.Open;
> > >>>>>>     Result := qry.Fields[0].AsBytes;
> > >>>>>>     qry.Free;
> > >>>>>> end;
> > >>>>>>
> > >>>>>> Ao fazer o append ele chama essa função e parece que está
> > >>>>>> preenchendo. porém ao dar um post, acontece a excessao:
> > >>>>>>
> > >>>>>> Could not convert variant of type (array byte) into type
> (integer).
> > >>>>>>
> > >>>>>> Atualizei o Unidac mas o erro persiste, mas não sei mais o que
> posso
> > >>>>>> fazer. Alguém, por favor, pode me dar uma luz?
> > >>>>>>
> > >>>>>> Grato.
> > >>>>>>
> > >>>>> ______________________________________________
> > >>>>> 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://www.firebase.com.br/pesquisa_lista.html
> > >>> CWvl> ______________________________________________
> > >>> CWvl> FireBase-BR (www.firebase.com.br) - Hospedado em
> > >> www.locador.com.br
> > >>> CWvl> Para saber como gerenciar/excluir seu cadastro na lista, use:
> > >>> CWvl> http://www.firebase.com.br/fb/artigo.php?id=1107
> > >>> CWvl> Para consultar mensagens antigas:
> > >>> CWvl> http://www.firebase.com.br/pesquisa_lista.html
> > >>>
> > >>>
> > >>> ______________________________________________
> > >>> 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://www.firebase.com.br/pesquisa_lista.html
> > >> ______________________________________________
> > >> 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://www.firebase.com.br/pesquisa_lista.html
> > >>
> > > ______________________________________________
> > > 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://www.firebase.com.br/pesquisa_lista.html
> >
> > ______________________________________________
> > 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://www.firebase.com.br/pesquisa_lista.html
> >
> ______________________________________________
> 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://www.firebase.com.br/pesquisa_lista.html
>


Mais detalhes sobre a lista de discussão lista