UUID é um dos identificadores mais utilizados no desenvolvimento de software, porém, ele é comumente objeto de muitas discussões sensatas e acaloradas, recheadas de argumentos, de uma olhada nestas excelentee referências:

Logo, um assunto tão discutido tem oportunidades de melhoria, uma das propostas é a utilização do NanoID. Neste texto, vou falar sobre alguma funcionalidades e algumas limitações.


Segurança

NanoID não utiliza Math.random(), que é comumente conhecido por ser inseguro, eventualmente gerando o mesmo valor.

A implementação pra JavaSccript utiliza crypto_module e Web_Crypto_API que é mais seguro.

Utiliza o algoritmo uniform para gerar o ID ao invés de usar random % alphabet.


Rápido e compacto

NanoID é 60% mais rápido que UUIDe utiliza 21 caracteres contra 36 do UUID.


Compatibilidade

Temos implementações para:

C#, C++, Clojure and ClojureScript, Crystal, Dart & Flutter, Deno, Go, Elixir, Haskell, Janet, Java, Nim, Perl, PHP, Python with dictionaries, Ruby , Rust, Swift


Também é suportado por PouchDB, CouchDB WebWorkers, Rollup, e bibliotecas como  React e Reach-Native


Alfabeto customizado

Você pode customizar o alfabeto utilizado para geração da chave, customizando os caracteres e a quantidade.


Limitações

Como você já percebeu, a geração do ID neste caso estará na aplicação, e não no banco de dados, você deve considerar este ponto ao utiliza-lo.

O ID gerado não é sequencial, oque significa que você não pode utiliza-lo como clausula de ordenação.

O valor gerado, não é amigavel, ou de facil leitura a humanos.



Original: https://blog.bitsrc.io/why-is-nanoid-replacing-uuid-1b5100e62ed2


Post a Comment

Postagem Anterior Próxima Postagem