[firebase-br] Chave primaria Guid

Carlos Wilson cwfsa1 em gmail.com
Terça Março 16 12:08:21 -03 2021


puxa é muita coisa pra absorver e processar. Com bigint o unico trabalho 
seria colocar faixas de valores nos generators de cada filial né?

O problema não é nem o crescimento exponencial, isso só acontece com 
tabelas de movimentação, a questão mesmo é o choque de valores na 
replicação.

[]'s
Carlos Wilson
Formosystem
Informática e Automação Comercial

Em 15/03/2021 08:51, Éder Monteiro do Nascimento via lista escreveu:
> 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
>>>>>>> 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
>>
> ______________________________________________
> 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