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?

  • 6 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2022 / All rights reserved

    Связаться со мной
    Close