- Оригинальный адрес:Why is NanoID Replacing UUID?
- Оригинальный автор:Charuka Herath
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:Иней
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.
Уууу, даже 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.
Кроме того, мы также можем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.
источник:Woohoo. Эта лошадь Plus.com/package/male…
Приведенные выше тесты показывают производительность NanoID по сравнению с другими основными генераторами идентификаторов.
Более 2,2 миллиона уникальных идентификаторов генерируются в секунду с использованием алфавита по умолчанию и более 1,8 миллиона уникальных идентификаторов в секунду с использованием пользовательского алфавита.
Основываясь на своем опыте работы с UUID и NanoID, учитывая его небольшой размер, удобство использования URL, безопасность и скорость, я бы рекомендовал использовать NanoID вместо UUID в любых будущих проектах.
Поэтому я приглашаю вас попробовать NanoID в вашем следующем проекте и поделиться своими мыслями с другими в разделе комментариев.
Спасибо за прочтение! ! !
Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из ИнтернетаНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,товар,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.