Share This
Π‘Π²ΡΠ·Π°Ρ‚ΡŒΡΡ со ΠΌΠ½ΠΎΠΉ
ΠšΡ€ΡƒΡ‚ΠΈ Π² Π½ΠΈΠ·
Categories
//πŸ›  ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ NanoID Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ UUID?

πŸ›  ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ NanoID Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ UUID?

UUID – один из наиболее часто используемых при разработке ПО универсальных идентификаторов. Однако в последние несколько лет появились альтернативы, которые ставят под сомнение необходимость его существования. Обсудить

mozhet li nanoid zamenit uuid 3628522 - 🛠 Может ли NanoID заменить UUID?

Перевод публикуется с сокращениями, автор оригинальной статьи Charuka Herath.

Среди альтернатив занял место NanoID – один из ведущих конкурентов, которые заменят UUID. Чтобы лучше понимать сферу его применения, в этой статье мы поговорим об особенностях NanoID, его преимуществах и ограничениях.

NanoID и его использование

Когда дело доходит до создания UUID или NanoID в JavaScript, становится ясно, что тут все просто – у них есть NPM-пакеты, которые помогут вам. Все, что нужно сделать – установить библиотеку NanoID NPM с помощью команды npmi nanoid и использовать ее в своем проекте.

         import { nanoid } from 'nanoid'; model.id = nanoid();     

Знаете ли вы, что NanoID имеет более 11 754 тыс. загрузок NPM в неделю и на 60% быстрее чем UUID?

На приведенном ниже графике показано сравнение мы видим тенденцию к росту NanoID по сравнению с неизменным прогрессом UUID.

mozhet li nanoid zamenit uuid 8bcfb6d - 🛠 Может ли NanoID заменить UUID?

Надеемся, что эти цифры убедили вас попробовать NanoID.

Основное различие между ними простое – используемый в качестве ключа алфавит. Поскольку NanoID использует алфавит большего размера чем UUID, более короткий идентификатор может работать также, как и более длинный UUID.

1. Размер NanoID составляет всего 108 байт

В отличие от UUID, NanoID в 4,5 раза меньше по размеру и не имеет никаких зависимостей. Кроме того, ограничение по «весу» было использовано для уменьшения размера еще на 35%. Это напрямую влияет на размер данных. Например, использующий NanoID объект мал и компактен для передачи и хранения данных. По мере роста приложения эти цифры становятся заметными.

2. Более безопасный

В большинстве генераторов случайных чисел используют небезопасную Math.random(). Однако NanoID использует crypto module и Web Crypto API, которые являются более безопасными. Кроме того, NanoID использует свой собственный алгоритм, называемый uniform algorithm, при реализации генератора идентификаторов вместо использования random % alphabet.

3. Быстрый и компактный

NanoID на 60% быстрее UUID. Вместо 36 символов в алфавите UUID, NanoID имеет только 21 символ.

         0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-     

А еще NanoID поддерживает 14 различных языков программирования, а именно:

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

4. Совместимость

NanoID умеет работать с PouchDB, CouchDB WebWorkers, Rollup и библиотеками, вроде React и React-Native. Вы можете получить уникальный идентификатор в терминале с помощью npx nanoid, но для этого вам придется соблюсти необходимое условие – установка NodeJS.

mozhet li nanoid zamenit uuid 38a1c93 - 🛠 Может ли NanoID заменить UUID?

Кроме того, в наборе инструментов Redux можно найти NanoID и использовать его следующим образом:

         import { nanoid } from ‘@reduxjs/toolkit’ console.log(nanoid()) //‘dgPXxUz_6fWIQBD8XmiSy’     

5. Пользовательские алфавиты

Еще одной существующей особенностью NanoID является то, что он позволяет разработчикам применять пользовательский алфавит. Вы можете изменить литералы или размер идентификатора, как показано ниже:

         import { customAlphabet } from 'nanoid'; const nanoid = customAlphabet('ABCDEF1234567890', 12); model.id = nanoid();     

В приведенном выше примере определяется пользовательский алфавит ABCDEF1234567890 с размером идентификатора 12.

6. Отсутствие сторонних зависимостей

Поскольку на NanoID не влияют какие-либо сторонние зависимости, со временем он будет становиться более стабильным и управляемым. Это полезно для оптимизации размера пакета в долгосрочной перспективе и делает его менее подверженным связанным с зависимостями проблемам.

***

Ограничения и направленность на будущее

По мнению многих экспертов по StackOverflow, использование NanoID не имеет существенных недостатков или ограничений.

Нечитабельность – это основной недостаток, который многие разработчики видят в NanoID, поскольку он затрудняет отладку. Однако по сравнению с UUID NanoID намного короче и читабельнее.

Когда вы используете NanoID в качестве первичного ключа таблицы, могут возникнуть проблемы, если вы будете использовать тот же столбец, что и кластеризованный индекса. Это происходит из-за того, что NanoID не являются последовательными.

В будущем…

NanoID постепенно становится самым популярным генератором уникальных идентификаторов для JavaScript, и большинство разработчиков выбирают его вместо UUID.

mozhet li nanoid zamenit uuid a4517b0 - 🛠 Может ли NanoID заменить UUID?

Приведенные выше тесты показывают производительность NanoID по сравнению с другими генераторами идентификаторов.

Он может генерировать более 2,2 млн. уникальных идентификаторов в секунду со своим алфавитом по умолчанию и более 1,8 млн. уникальных идентификаторов в секунду с пользовательским алфавитом.

Учитывая опыт применения, можно смело использовать NanoID вместо UUID для любых будущих проектов, благодаря его небольшому размеру, удобству URL, безопасности и скорости.

Дополнительные материалы:

  • Прощай, плохой код: вот как не лажать в JavaScript
  • 33 приема оптимизации JavaScript, которые вы должны знать в 2021 году
  • Разбираем на примерах: как избежать мутаций в JavaScript
  • Что такое npm? Гайд по Node Package Manager для начинающих
  • Почему мы должны прекратить использовать React?

  • 7 views
  • 0 Comment

Leave a Reply

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *

Π­Ρ‚ΠΎΡ‚ сайт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Akismet для Π±ΠΎΡ€ΡŒΠ±Ρ‹ со спамом. Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ваши Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

Categories 05.

Π‘Π²ΡΠ·Π°Ρ‚ΡŒΡΡ со ΠΌΠ½ΠΎΠΉ
Close