[firebase-br] Chave primaria Guid

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


Onde deve haver essa sequencia? no começo do numero ou no final?

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

Em 15/03/2021 08:52, Wanderlei Borges via lista escreveu:
> Bom dia pessoal.
> Vou dar minha opinião, conforme o Cantu falou, o problema de performance do
> GUID ocorre porque os números gerados são muito aleatórios, fazendo com que
> a árvore tenha índice muito esparso. Pensando nisso, o melhor seria ter um
> MYGUID que fosse gerado com uma parte não aleatória, mas sim sequencial, e
> outra parte aleatória, por exemplo DATAHORASEQUENCIAL do tamanho de
> char(20).
> Vc poderia fazer uma class function no Delphi que retorne 5 dígitos para a
> data, 10 dígitos para hora, minuto, segundo e milésimos de segundo, e mais
> 5 dígitos para o número aleatório. O MYGUID ficaria com uma parte
> sequencial e outra aleatória, não seria tão esparso quanto o GUID normal.
> Se vc entende que se o processador for rápido o suficiente para gerar mais
> de MYGUID num mesmo milissegundo, o número aleatório tratará de diferenciar
> os MYGUIDs.
> E se vc acha que o número aleatório pode se repetir depois de algum tempo,
> certamente isso ocorrerá num milissegundo diferente, o que te permitirá um
> MYGUID diferente.
> Não é infalível, mas na informática não conheço nada infalível.
> At.
> Wanderlei
>
>
> 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