当前位置: 首页 > 科技观察

为什么NanoID正在取代UUID

时间:2023-03-13 06:36:15 科技观察

UUID是软件开发中最常用的通用标识符之一。然而,在过去几年中,其他替代方案对其存在提出了挑战。其中,NanoID是接替UUID的主要竞争者之一。因此,在本文中,我将讨论NanoID的特点、它的闪光点以及它的局限性,以便您更好地了解何时使用它。了解NanoID及其用法就JavaScript而言,生成UUID或NanoID非常简单。他们都有NPM包来帮助你做到这一点。您需要做的就是使用命令npminanoid安装NanoIDNPM库,并在您的项目中使用它。从'nanoid'导入{nanoid};model.id=nanoid();您是否知道NanoID每周NPM下载量超过11,754K,并且比UUID快60%?此外,NanoID比UUID年轻了将近7岁,而且它的GitHubstar数也比UUID多。下图是两者的npm趋势对比,我们可以看到NanoID呈上升趋势,而UUID则持平。下载我希望这些数字已经说服您尝试使用NanoID。然而,两者之间的主要区别很简单,归结为用于按键的字母表。由于NanoID使用比UUID更大的字母表,因此较短的ID可以用于与较长的UUID相同的目的。那么具体有哪些区别呢?六大不同列出了六大不同,大家可以参考。NanoID的大小只有108个字节与UUID不同,NanoID的大小要小4.5倍,并且没有任何依赖关系。此外,大小限制已将大小从另外35%减少。大小缩减直接影响数据的大小。例如,使用NanoID的对象对于数据传输和存储来说是小而紧凑的。随着应用程序的增长,这些数字变得可见。更安全在大多数随机生成器中,它们使用不安全的Math.random()。但是,NanoID使用加密模块和WebCryptoAPI,更加安全。此外,NanoID在ID生成器的实现中使用了自己的算法,称为统一算法,而不是使用随机的%字母表。WebCryptoAPI:https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API加密模块:https://nodejs.org/api/crypto.html统一算法:https://github。com/ai/nanoid/blob/main/index.js快速紧凑的NanoID比UUID快60%。UUID字母表中有36个字符,而NanoID只有21个字符。0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-此外,NanoID支持14种不同的编程语言,它们是:C#、C++、Clojure和ClojureScript、Crystal、Dart&Flutter、Deno、Go、Elixir、Haskell、Janet、Java、Nim、Perl、PHPartion、PythonSwiftCompatibility,它还支持PouchCouchDBWebWorkers、Rollup以及React和Reach-Native等库。您可以使用npxnanoid在终端中获取唯一ID。唯一的先决条件是安装NodeJS。此外,您还可以在Redux工具包中找到NanoID,并将其用于其他用例,如下所示。import{nanoid}from'@reduxjs/toolkit'console.log(nanoid())//'dgPXxUz_6fWIQBD8XmiSy'自定义字母表NanoID的另一个现有功能是它允许开发人员使用自定义字母表。您可以像这样更改ID的字面含义或大小:import{customAlphabet}from'nanoid';constnanoid=customAlphabet('ABCDEF1234567890',12);model.id=nanoid();在上面的示例中,我定义了A指定自定义字母ABCDEF1234567890,Id的大小为12。无第三方依赖性由于NanoID不依赖于任何第三方依赖性,因此随着时间的推移,它会随着时间的推移变得更加稳定,因为它会自行管理。从长远来看,这有助于优化包大小并减少依赖性问题。局限性和未来局限性根据StackOverflow中的许多专家意见,使用NanoID没有明显的缺点或局限性。非人类可读性是许多开发人员在NanoID中看到的一个主要缺点,因为它使调试变得更加困难。但是,NanoID比UUID更短且更易读。另外,如果使用NanoID作为表的主键,如果使用同一个列作为聚簇索引,也会出现问题。这是因为NanoID不是连续的。测试以上基准测试显示了NanoID与其他主要ID生成器相比的性能。它可以使用默认字母表每秒生成超过220万个唯一ID,使用自定义字母表每秒可以生成超过180万个唯一ID。根据我使用UUID和NanoID的经验,我建议在未来的任何项目中使用NanoID而不是UUID,因为它体积小、URL友好、安全且速度快。

最新推荐
猜你喜欢