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:
- Twiter do Rafael Ponte
- Pretende usar
UUIDcomo PK em vez deInt/BigIntno seu banco de dados? Pense novamente... - UUID porque usá-lo?
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

Postar um comentário