前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么 NanoID 正在取代 UUID?

为什么 NanoID 正在取代 UUID?

作者头像
coder_koala
发布2022-04-18 15:37:36
9780
发布2022-04-18 15:37:36
举报

UUID是软件开发中最常用的通用唯一识别码。然而,在过去几年中,其他替代方案对其提出了挑战。其中,NanoID是UUID的主要竞争对手之一。因此,在本文中,将讨论NanoID的特点、它的亮点以及它的局限性,以便更好地理解他和使用它。

了解NanoID及其用法

JavaScript中,生成UUID或NanoID都非常简单。都有NPM软件包。我们只需使用NPM i NanoID命令安装NanoID NPM库,就能项目中使用它。

代码语言:javascript
复制
import { nanoid } from 'nanoid';
model.id = nanoid();

NanoID每周NPM下载量超过11754K,而且速度比UUID快60%, 此外,NanoID比UUID年轻近7岁,但是它的GitHub star已经比UUID多。下图显示了这两个项目之间的npm趋势比较,我们可以看到与UUID的平稳进展相比,NanoID的上升趋势。

image.png

1.NanoID的大小只有108字节

与UUID不同,NanoID的大小比UUID小4.5倍,并且没有任何依赖性。这直接影响数据的大小。例如,使用NanoID的对象对于数据传输和存储来说既小又紧凑。随着程序的增长,这些特点将变得显而易见。

2.更安全

在大多数随机生成器中,它们使用不安全的Math.random()。但是,NanoID使用更安全的crypto moduleWeb Crypto API。此外,NanoID在ID生成器的实现过程中使用了自己的算法,称为uniform algorithm,而不是使用random % alphabet.

3.速度快,结构紧凑

NanoID比UUID快60%。在UUID的字母表里有36个字符,而NanoID只有21个字符。

代码语言:javascript
复制
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-

此外,NanoID支持14种不同的编程语言,

代码语言:javascript
复制
C#, C++, Clojure and ClojureScript, Crystal, Dart & Flutter, Deno, Go, Elixir, Haskell, Janet, Java, Nim, Perl, PHP, Python with dictionaries, Ruby , Rust, Swift

4.兼容性

它还支持PockDB、CouchDB WebWorkers、Rollup以及React和Reach Native等库。我们可以使用npx nanoid在终端中获得唯一的ID。唯一的先决条件是安装NodeJS。(其他语言也能,此处只从nodejs角度考虑)

image.png

此外,您还可以在Redux工具箱中找到NanoID,如下所示:;

代码语言:javascript
复制
import { nanoid } from ‘@reduxjs/toolkit’\
console.log(nanoid()) //‘dgPXxUz_6fWIQBD8XmiSy’

5.自定义字母表

NanoID的另一个特性是,它允许开发人员自定义字母表以及生成的id的长度.

代码语言:javascript
复制
import { customAlphabet } from 'nanoid';
const nanoid = customAlphabet('ABCDEF1234567890', 12);
model.id = nanoid();

在上面的例子中,我将自定义字母表定义为ABCDEF1234567890,Id的长度为12。

6.无第三方依赖关系

由于NanoID不依赖于任何第三方依赖关系,随着时间的推移,它变得更加稳定、自治。从长远来看,这有助于优化捆绑包的大小,并使其不太容易出现依赖关系带来的问题。

局限性和未来焦点

局限性

基于StackOverflow方面的许多专家意见,使用NanoID没有明显的缺点或局限性。许多开发人员在NanoID中看到的主要缺点是不可读,因为它使调试更加困难。然而,与UUID相比起来,NanoID却要短得多,可读性强得多。此外,如果使用NanoID作为表的主键,那么如果使用同一列作为聚集索引,就会出现问题。这是因为NanoIDs不是连续的。

未来…

NanoID正逐渐成为JavaScript最流行的唯一id生成器,大多数开发人员更喜欢选择它而不是UUID。

image.png

上图显示了NanoID与其他主要id生成器的性能比较。使用默认字母表时,它每秒可以生成超过220万个唯一ID,使用自定义字母表时每秒可以生成超过180万个唯一ID。考虑到NanoID的小尺寸、URL友好性、安全性和速度,建议在未来的项目中使用NanoID而不是UUID。

译自:https://blog.bitsrc.io/why-is-nanoid-replacing-uuid-1b5100e62ed2

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员成长指北 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 了解NanoID及其用法
  • 1.NanoID的大小只有108字节
  • 2.更安全
  • 3.速度快,结构紧凑
  • 4.兼容性
  • 5.自定义字母表
  • 6.无第三方依赖关系
  • 局限性和未来焦点
  • 局限性
  • 未来…
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档