Não foi possível carregar o Diqus. Se você é o moderador, por favor veja o nosso guia de problemas.

flaviogranero • 10 anos atrás

Legal seu post Nando, tenho usado uuid em um projeto e estou gostando bastante. Só uma coisa, acredito que não seja necessário definir um índice do campo uuid para garantir que ele seja único, já que todas as chaves primárias já são por definição únicas e not null.

Nando Vieira • 10 anos atrás

Você tem toda razão. Atualizei o artigo removendo esta informação. ;)

Santiago • 10 anos atrás

Eu tinha tentado usar UUID no mysql uma vez, mas a gem que usei não gerava um string bonitinha na tabela, gera um binário bizarro.
Depois vou tentar usar essa, prefiro muito mais usar chave UUID do que usar inteiro com auto incremento.

Nando Vieira • 10 anos atrás

Este post aplica-se somente ao PostgreSQL.

Santiago • 10 anos atrás

Sim cara, to ligado.
Só estou compartilhando a experiência ruim que tive com rails, UUID e mysql. :)
E que depois vou testar no postgresql.
Desculpe se não fui muito claro.

Nando Vieira • 10 anos atrás

Tranquilo! :)

Fabiano Almeida • 10 anos atrás

Apesar de ser remota a chance disso acontecer, mas e como tratar a duplicidade de registro? Ou simplesmente não trata?

Nando Vieira • 10 anos atrás

Não é preciso tratar. Chaves primárias já tem um índice de unicidade. Caso uma uuid seja gerada de forma duplicada, uma exceção será lançada.

Fabiano Almeida • 10 anos atrás

Nando, sei que será lançada uma exceção, mas pensando na usabilidade da aplicação, quanto mais diante de uma API, isso poderia trazer um transtorno para o usuário. Contudo, você conseguiu me responder. Por se tratar de algo muito remoto de acontecer, melhor não tratar e deixar que o próprio usuário faça uma nova tentativa. Obrigado pela sua resposta.

Nando Vieira • 10 anos atrás

Dada a baixíssima probabilidade de colisão, eu diria para deixar para lá. No entanto, se você quiser mesmo "resolver" esse "problema", pode adicionar um begin..rescue que usa um retry para tentar salvar o registro novamente.

Fabiano Almeida • 10 anos atrás

:clap: :clap: :clap:

Fabiano Monteiro • 10 anos atrás

O comentário que iria fazer.
Atualmente, para mim, as coisas estão assim: "melhor não tratar e deixar que o próprio usuário faça uma nova tentativa"

Rainer Borene • 10 anos atrás

Nando, qual implementação você sugere usar para gerar esses identificadores? O Ember.js tem algum módulo pra isso?

Nando Vieira • 10 anos atrás

Não, o Ember não tem nada built-in. Mas existem várias implementações por aí. Dá uma procurada no http://bower.io.

Gabriel Massote Prado • 10 anos atrás

Fala Nado, tenho acompanhado seu blog a um tempo e sempre com posts bem explicativos. Parabéns. Quanto a suas experiências com o UUID como chave, seja elas no heroku, howtocode, etc, já se deparou com situações relacionadas queda de performance? ou algo que observou que valesse a pena ser comentado? abs

Denis Dos Santos Silva • 5 anos atrás

vale ressaltar que:

a- usar uuid v1 ou mesmo v4 como está no padrão não é possível indexar de forma otimizada, pois, a ordem dos bits 'por padrão' não é deterministica*

b- o uso de chave uuid v1 como PK tem que reordenar os bits para que seja "de forma incremental"

c- quando não se tem "uuid embutido" no banco de dados, pode, estar usando uma linguagem pra isso

d- o ideal eh que esse campo seja gerado via trigger

e- e que seja armazenado no formato binário, p.ex., "binary" 16

that's all folks!