Почему NanoID заменяет UUID?

внешний интерфейс

image.png

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

Среди них NanoID является одним из основных конкурентов UUID.

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


Узнайте о NanoID и о том, как его использовать

Создание UUID или NanoID очень просто для JavaScript. Все они имеют соответствующие пакеты NPM, которые помогают нам генерировать.

Все, что нам нужно сделать, это запуститьnpm i nanoidкоманда для установкиБиблиотека NanoID NPMи используем его в нашем проекте:

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

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

Кроме того, NanoID почти на 7 лет моложе UUID, и у него уже больше звезд на GitHub, чем у UUID.

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

image.png

Уууу, даже MediaPeopleTV.com/nano ID-vs-U…

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

Однако основное различие между ними простое. Это сводится к алфавиту, используемому ключами.

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

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

В отличие от UUID, NanoID в 4,5 раза меньше по размеру и не имеют зависимостей. Кроме того, ограничение размера было использовано для уменьшения размера еще на 35%.

Уменьшение размера напрямую влияет на размер данных. Например, объекты, использующие NanoID, небольшие и компактные, и их можно использовать для передачи и хранения данных. Эти цифры становятся очевидными по мере роста приложения.

2. Безопаснее

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

Кроме того, NanoID использует собственный алгоритм в реализации генератора идентификаторов, который называетсяЕдиный алгоритм, вместо использования «случайного% алфавита»random % alphabet.

3. Это быстро и компактно

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

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-

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

C#、C++、Clojure 和 ClojureScript、Crystal、Dart & Flutter、Deno、Go、Elixir、Haskell、Janet、Java、Nim、Perl、PHP、带字典的 Python、Ruby、Rust、Swift

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

Он также поддерживает PouchDB, CouchDB WebWorkers, Rollup и библиотеки, такие как React и Reach-Native.

мы можем использоватьnpx nanoidПолучите уникальный ID в терминале. Единственное требование для использования NanoID в JavaScript — наличие установленного NodeJS.

image.png

Кроме того, мы также можемRedux toolkitНайдите 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, и определите размер Id как 12.

6. Никаких сторонних зависимостей

Поскольку NanoID не зависит от каких-либо сторонних зависимостей, со временем он может стать более стабильным и автономным.

В долгосрочной перспективе это хорошо для оптимизации размера пакета и уменьшения его подверженности проблемам с зависимостями.


Ограничения и будущие приоритеты

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

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

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

В будущем……

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

image.png источник:Woohoo. Эта лошадь Plus.com/package/male…

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

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

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

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

Спасибо за прочтение! ! !

Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из ИнтернетаНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,товар,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.