阿里新规:换掉UUID,NanoID更快更安全

阿里新规:换掉UUID,NanoID更快更安全

文章来源:https://c1n.cn/WcAl0

目录

前言

UUID 是软件开发中最常用的通用标识符之一。然而,在过去的几年里,其他的竞品挑战了它的存在。

其中,NanoID 是 UUID 的主要竞争对手之一。

因此,在本文中,我们将展开讨论 NanoID 的功能、它的亮点以及它的局限性,以便让我们更好地了解何时使用它。

了解 NanoID 及其用法

对于 JavaScript,生成 UUID 或 NanoID 都非常简单。它们都有对应的 NPM 包来帮助我们实现生成。

我们所需要做的就是运行 npm i nanoid 命令安装 NanoID NPM 库 并在我们的项目中使用它:

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

你是否知道 NanoID 每周的 NPM 下载量超过 1175.4 万,并且运行起来比 UUID 快 60%?

此外,NanoID 比 UUID 年轻了将近 7 年,而且它的 GitHub 星数已经比 UUID 多。

下图显示了这两个之间的关系 npm 趋势比较,我们可以看到 NanoID 的上升趋势与 UUID 的平坦进展有强烈的对比。

https://www.npmtrends.com/nanoid-vs-uuid

我希望这些数字已经说服你去尝试 NanoID。但是,这两者之间的主要区别很简单。它归结为键使用的字母表。

由于 NanoID 使用比 UUID 更大的字母表,因此较短的 ID 可以用于与较长的 UUID 相同的目的。

| NanoID 只有 108 个字节那么大

与 UUID 不同,NanoID 的大小要小 4.5 倍,并且没有任何依赖关系。此外,大小限制已用于将大小从另外 35% 减小。

大小直接影响数据的大小。例如,使用 NanoID 的对象小而紧凑,能够用于数据传输和存储。随着应用程序的增长,这些数字变得明显起来。

| 更安全

在大多数随机生成器中,它们使用不安全的 Math.random()。但是,NanoID 使用 crypto module 和 Web Crypto API,意味着 NanoID 更安全。

此外,NanoID 在 ID 生成器的实现过程中使用了自己的算法,称为统一算法,而不是使用“随机 % 字母表” random % alphabet。

我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐。

| 它既快速又紧凑

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、PHP、带字典的 Python、Ruby、Rust、Swift。

| 兼容性

它还支持 PouchDB、CouchDB WebWorkers、Rollup 以及 React 和 Reach-Native 等库。

我们可以使用 npx nanoid 在终端中获得唯一 ID。在 JavaScript 中使用 NanoID 唯一的要求是要先安装 NodeJS。

此外,我们还可以在 Redux toolkit 中找到 NanoID,并将其用于其他用例,如下所示:

import { nanoid } from ‘@reduxjs/toolkit’ console.log(nanoid()) //‘dgPXxUz_6fWIQBD8XmiSy’

| 自定义字母

NanoID 的另一个现有功能是它允许开发人员使用自定义字母表,我们可以更改文字或 id 的大小。

如下所示:

import { customAlphabet } from ‘nanoid’; const nanoid = customAlphabet(‘ABCDEF1234567890’, 12); model.id = nanoid();

在上面的示例中,我将自定义字母表定义为 ABCDEF1234567890,并将 Id 的大小定义为 12。

| 没有第三方依赖

由于 NanoID 不依赖任何第三方依赖,随着时间的推移,它能够变得更加稳定自治。

从长远来看,这有利于优化包的大小,并使其不太容易出现依赖项带来的问题。

局限性和未来重点

根据 StackOverflow 中的许多专家意见,使用 NanoID 没有明显的缺点或限制。

非人类可读是许多开发人员在 NanoID 中看到的主要缺点,因为它使调试变得更加困难。但是,与 UUID 相比,NanoID 更短且可读。

另外,如果你使用 NanoID 作为表的主键,如果你使用相同的列作为聚集索引也会出现问题。这是因为 NanoID 不是连续的。

在将来……

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

https://www.npmjs.com/package/nanoid

上述基准测试显示了 NanoID 与其他主要 id 生成器相比的性能:使用默认字母表每秒可生成超过 220 万个唯一 ID,使用自定义字母表每秒可生成超过 180 万个唯一 ID。

根据我使用 UUID 和 NanoID 的经验,考虑到它的小尺寸、URL 友好性、安全性和速度,我建议在任何未来的项目中使用 NanoID 而不是 UUID。

因此,我邀请您在下一个项目中试用 NanoID,并在评论部分与其他人分享您的想法。

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月21日 18:18
下一篇 2022年6月21日 18:19

相关推荐

  • 30个无加盟费的项目(茶颜悦色奶茶店加盟费多少)

    茶颜悦色又爆了,8月18日,茶颜悦色南京门店正式开业,开张不到半小时,门店就人满为患,消费者的购买热情十分高涨,而由于人流量过大造成拥堵,茶颜悦色也不得不暂停营业。 当然,这里面排…

    2022年11月27日
  • 净利润率越高越好吗(净利润率多少合适)

    一、持续增收不增利,平均净利润率首次跌入个位数 2021年,增收不增利依旧是行业主流。具体来看,大部分企业营业收入呈增长态势,E50企业平均同比增速达到17.3%,但是利润增速则明…

    2022年11月26日
  • 规范透明促PPP高质量发展——16万亿元大市场迎来新规

    近日,财政部印发《关于进一步推动政府和社会资本合作(PPP)规范发展、阳光运行的通知》,从做好项目前期论证、推动项目规范运作、严防隐性债务风险、保障项目阳光运行四个方面进一步规范P…

    2022年11月25日
  • 推荐3种白手起家的赚钱项目(白手起家赚钱项目有哪些)

    如今社会压力非常的大,家有老少要养活,这些都加速了穷人想要创业的欲望,但是创业路总是那么的艰难,资金就是创业的重头戏,所以选择一个低成本又赚钱的项目是大多数人最期望的了,那么有哪些…

    2022年11月25日
  • 百度关键词快速排名的4大原理解析(百度怎么刷关键词)

    近期百度公告惊雷算法2.0,升级之快还是第一次吧,看来百度对于刷点击行为是零容忍了。之前尹华峰SEO技术博客介绍过一篇如何使用刷点击工具,其实市面上有很多这类SEO快速排名的软件,…

    2022年11月25日
  • 闲鱼运营的4大技巧解析(闲鱼运营怎么做)

    熟悉我又来了,上一次写的文章是爆出风水项目的潜规则,但那个项目已经凉凉了。 这一次我是要教一些小白,你们第一次做互联网的建议做的项目之一,这个项目就是闲鱼卖二手物品赚差价了!!! …

    2022年11月24日
  • 2023年农村创业最好的种植项目有哪些(2023年农村宅基地)

    随着2023年时间的临近,有关农村创业大家也都十分关注。2023年农村创业最好的种植项目有哪些?新的一年农村创业到底做什么最能赚钱呢?今天小编整理了一些非常具有发展潜力的农村种植业…

    2022年11月23日
  • 汕梅高速将改扩建为双向八车道 预计2026年建成通车

    昨日上午,汕梅高速改扩建项目在梅州举行建设动员会,标志着广东省首条山岭重丘区高速公路改扩建项目将全面开工建设。 汕梅高速是广东省东北部南北货运的重要通道,联通粤赣闽三省,承担着粤东…

    2022年11月23日
  • 阿里上线游戏社区“哔哔”

    阿里巴巴旗下app汇总 概要菜鸟裹裹是阿里巴巴旗下手机软件,网罗国内大部分快递物流信息,不用进入淘宝即可查快件,建立菜鸟联盟,使 淘宝大学App 阿里巴巴旗下app汇总 概要淘宝大…

    2022年11月23日
  • 微信任务平台(微信任务平台源码)

    本文主要讲的是微信任务平台,以及和微信任务平台源码相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 微信推广任务平台哪个好? 对于微信推广任务平台的来说的话,我觉得…

    2022年11月22日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息