0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

UUID正在被NanoID取代?

Android編程精選 ? 來源:Android編程精選 ? 作者:Android編程精選 ? 2022-04-02 14:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

UUID 是軟件開發(fā)中最常用的通用標(biāo)識符之一。然而,在過去的幾年里,其他的競品挑戰(zhàn)了它的存在。 其中,NanoID 是 UUID 的主要競爭對手之一。 因此,在本文中,我們將展開討論 NanoID 的功能、它的亮點以及它的局限性,以便讓我們更好地了解何時使用它。

了解 NanoID 及其用法

對于 JavaScript,生成 UUID 或 NanoID 都非常簡單。它們都有對應(yīng)的 NPM 包來幫助我們實現(xiàn)生成。 我們所需要做的就是運行npm i nanoid命令安裝 NanoID NPM 庫 并在我們的項目中使用它:

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

你是否知道 NanoID 每周的 NPM 下載量超過 1175.4 萬,并且運行起來比 UUID 快 60%?

此外,NanoID 比 UUID 年輕了將近 7 年,而且它的 GitHub 星數(shù)已經(jīng)比 UUID 多。 下圖顯示了這兩個之間的 npm 趨勢比較,我們可以看到 NanoID 的上升趨勢與 UUID 的平坦進展有強烈的對比。

e378c2ee-b233-11ec-aa7f-dac502259ad0.png

image.png

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

我希望這些數(shù)字已經(jīng)說服你去嘗試 NanoID。

但是,這兩者之間的主要區(qū)別很簡單。它歸結(jié)為鍵使用的字母表。

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

1. NanoID 只有 108 個字節(jié)那么大

與 UUID 不同,NanoID 的大小要小 4.5 倍,并且沒有任何依賴關(guān)系。此外,大小限制已用于將大小從另外 35% 減小。 大小減少直接影響數(shù)據(jù)的大小。例如,使用 NanoID 的對象小而緊湊,能夠用于數(shù)據(jù)傳輸和存儲。隨著應(yīng)用程序的增長,這些數(shù)字變得明顯起來。

2. 更安全

在大多數(shù)隨機生成器中,它們使用不安全的Math.random()。但是,NanoID 使用crypto module和Web Crypto API,意味著 NanoID 更安全。 此外,NanoID 在 ID 生成器的實現(xiàn)過程中使用了自己的算法,稱為 統(tǒng)一算法,而不是使用“隨機 % 字母表”random % alphabet。

3. 它既快速又緊湊

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

4. 兼容性

它還支持 PouchDB、CouchDB WebWorkers、Rollup 以及 React 和 Reach-Native 等庫。 我們可以使用npx nanoid在終端中獲得唯一 ID。在 JavaScript 中使用 NanoID 唯一的要求是要先安裝 NodeJS。

e39d5a14-b233-11ec-aa7f-dac502259ad0.png

image.png

此外,我們還可以在 Redux toolkit 中找到 NanoID,并將其用于其他用例,如下所示;

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

5. 自定義字母

NanoID 的另一個現(xiàn)有功能是它允許開發(fā)人員使用自定義字母表。我們可以更改文字或 id 的大小,如下所示:

import{customAlphabet}from'nanoid'; constnanoid=customAlphabet('ABCDEF1234567890',12); model.id=nanoid();

在上面的示例中,我將自定義字母表定義為ABCDEF1234567890,并將 Id 的大小定義為 12。另外,搜索公眾號互聯(lián)網(wǎng)架構(gòu)師后臺回復(fù)“面試”,獲取一份驚喜禮包。

6. 沒有第三方依賴

由于 NanoID 不依賴任何第三方依賴,隨著時間的推移,它能夠變得更加穩(wěn)定自治。 從長遠來看,這有利于優(yōu)化包的大小,并使其不太容易出現(xiàn)依賴項帶來的問題。

局限性和未來重點

根據(jù) StackOverflow 中的許多專家意見,使用 NanoID 沒有明顯的缺點或限制。 非人類可讀是許多開發(fā)人員在 NanoID 中看到的主要缺點,因為它使調(diào)試變得更加困難。但是,與 UUID 相比,NanoID 更短且可讀。 另外,如果你使用 NanoID 作為表的主鍵,如果你使用相同的列作為聚集索引也會出現(xiàn)問題。這是因為 NanoID 不是連續(xù)的。

在將來……

NanoID 正逐漸成為 JavaScript 最受歡迎的唯一 id 生成器,大多數(shù)開發(fā)人員更喜歡選擇它而不是更喜歡 UUID。

e3aadd10-b233-11ec-aa7f-dac502259ad0.png

來源:https://www.npmjs.com/package/nanoid 上述基準測試顯示了 NanoID 與其他主要 id 生成器相比的性能。

使用默認字母表每秒可生成超過 220 萬個唯一 ID,使用自定義字母表每秒可生成超過 180 萬個唯一 ID。

根據(jù)我使用 UUID 和 NanoID 的經(jīng)驗,考慮到它的小尺寸、URL 友好性、安全性和速度,我建議在任何未來的項目中使用 NanoID 而不是 UUID。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 軟件開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    642

    瀏覽量

    28616
  • UUID
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    8363

原文標(biāo)題:UUID正在被NanoID取代?

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    2025年倉儲革命:不用RFID數(shù)據(jù)采集器的企業(yè)正在被淘汰!

    在2025年,倉儲領(lǐng)域正經(jīng)歷著一場前所未有的革命。隨著科技的飛速發(fā)展,RFID(射頻識別)技術(shù)已成為倉儲管理變革的核心驅(qū)動力,那些尚未采用RFID數(shù)據(jù)采集器的企業(yè),正面臨著被市場淘汰的嚴峻挑戰(zhàn)。傳統(tǒng)倉儲管理模式主要依靠人工盤點和條碼掃描,效率低下且容易出錯。據(jù)統(tǒng)計,制造業(yè)因倉儲管理缺陷造成的年損失高達營收的3%-5%。而RFID技術(shù)的出現(xiàn),徹底改變了這一局面
    的頭像 發(fā)表于 07-07 15:43 ?164次閱讀
    2025年倉儲革命:不用RFID數(shù)據(jù)采集器的企業(yè)<b class='flag-5'>正在被</b>淘汰!

    傳統(tǒng)的芯片設(shè)計,正在被顛覆

    幾十年來,半導(dǎo)體開發(fā)一直遵循著24至36個月的穩(wěn)定設(shè)計開發(fā)周期。雖然這種模式在計算需求較低且創(chuàng)新速度更易于管理的情況下運作良好,但人工智能卻創(chuàng)造了一套新的規(guī)則。人工智能的飛速發(fā)展正在迅速超越當(dāng)前芯片
    的頭像 發(fā)表于 06-27 12:38 ?358次閱讀
    傳統(tǒng)的芯片設(shè)計,<b class='flag-5'>正在被</b>顛覆

    藍牙UUID:無線通信中的唯一標(biāo)識符

    一、藍牙UUID:1、我們將從機具有的數(shù)據(jù)或者屬性特征,稱之為從機中添加(profile配置文件),作為profile包含一個或者多個服務(wù),每個服務(wù)又包含一個或者多個特征。每個特征值都有自己的屬性
    的頭像 發(fā)表于 03-25 16:48 ?374次閱讀
    藍牙<b class='flag-5'>UUID</b>:無線通信中的唯一標(biāo)識符

    這些崗位正在被復(fù)合機器人取代

    機器人
    fuweizn
    發(fā)布于 :2025年03月04日 14:54:52

    想要用一個藍牙模塊與 DLP NIRscan Nano連接,怎么知道哪一個UUID才是該設(shè)備藍牙連接的UUID?

    DLP NIRscan Nano用戶指南里邊給了很多UUID,我現(xiàn)在想要用一個藍牙模塊與 DLP NIRscan Nano連接,但是沒弄明白哪一個UUID才是該設(shè)備藍牙連接的UUID?謝謝!
    發(fā)表于 03-03 07:19

    簡單認識AMQP通信協(xié)議

    在工業(yè)4.0、物聯(lián)網(wǎng)、智能工廠和智能設(shè)備構(gòu)建的未來藍圖中,跨層級的連接扮演著核心角色。我們正見證著一場變革:傳統(tǒng)的、分層的自動化金字塔結(jié)構(gòu)正在被一種更大、更全面的網(wǎng)絡(luò)結(jié)構(gòu)所取代。在這種新結(jié)構(gòu)中,各個節(jié)點不僅相互連接,還實時交換數(shù)據(jù),共同編織出智能化的網(wǎng)絡(luò)。
    的頭像 發(fā)表于 01-10 18:05 ?930次閱讀
    簡單認識AMQP通信協(xié)議

    KT6368A藍牙芯片的uuid完整的是多少,以及app或者小程序開發(fā)的注意點

    目前KT6368A藍牙雙模芯片用的是16位的uuid,當(dāng)然這個uuid或者特征值有很多種 16位的uuid是最簡單的一種,如下圖所示,當(dāng)然網(wǎng)上隨便搜搜也有很多的介紹,想了解也可以搜搜
    的頭像 發(fā)表于 12-29 09:46 ?720次閱讀
    KT6368A藍牙芯片的<b class='flag-5'>uuid</b>完整的是多少,以及app或者小程序開發(fā)的注意點

    ADS1278在靈敏度上是否可以取代ADS1282芯片?

    公司在做地震檢測儀器,不知道ADS1278在靈敏度上是否可以取代ADS1282芯片?
    發(fā)表于 12-16 07:02

    科技先鋒:物聯(lián)網(wǎng)(RFID)在被裝信息化中的應(yīng)用

    整合進入BD裝備的物聯(lián)網(wǎng)系統(tǒng)中,實現(xiàn)裝備的智能識別、準確定位、即時跟蹤、有效監(jiān)管以及高效的管理流程。這包括在被裝物品中植入傳感器和智能單元,使其能夠接入網(wǎng)絡(luò),并根據(jù)既定的協(xié)議進行信息的相互交流和傳遞。 二、被裝物聯(lián)網(wǎng)信息化硬
    的頭像 發(fā)表于 11-14 16:37 ?919次閱讀
    科技先鋒:物聯(lián)網(wǎng)(RFID)<b class='flag-5'>在被</b>裝信息化中的應(yīng)用

    陶瓷電容取代LDO中的鉭電容

    電子發(fā)燒友網(wǎng)站提供《陶瓷電容取代LDO中的鉭電容.pdf》資料免費下載
    發(fā)表于 10-11 09:28 ?2次下載
    陶瓷電容<b class='flag-5'>取代</b>LDO中的鉭電容

    用精密DAC取代數(shù)字電位器應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《用精密DAC取代數(shù)字電位器應(yīng)用說明.pdf》資料免費下載
    發(fā)表于 09-14 10:56 ?10次下載
    用精密DAC<b class='flag-5'>取代</b>數(shù)字電位器應(yīng)用說明

    多路復(fù)用器將取代繼電器應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《多路復(fù)用器將取代繼電器應(yīng)用說明.pdf》資料免費下載
    發(fā)表于 09-11 10:05 ?0次下載
    多路復(fù)用器將<b class='flag-5'>取代</b>繼電器應(yīng)用說明

    取代分立式保護并優(yōu)化PLC系統(tǒng)保護

    電子發(fā)燒友網(wǎng)站提供《取代分立式保護并優(yōu)化PLC系統(tǒng)保護.pdf》資料免費下載
    發(fā)表于 08-29 11:08 ?0次下載
    <b class='flag-5'>取代</b>分立式保護并優(yōu)化PLC系統(tǒng)保護

    求助,求分享一款可以取代IA2410的運放?

    求一款TI的 可以取代IA2410
    發(fā)表于 08-22 06:10

    芯片行業(yè),正在被改寫

    個性化和以軟件為中心的體驗。對于許多行業(yè)專家來說,半導(dǎo)體行業(yè)顯然正在經(jīng)歷一場大規(guī)模的轉(zhuǎn)型,其客戶要求各個行業(yè)都進行變革。在這個復(fù)雜的領(lǐng)域,出現(xiàn)了一個新的機遇——半
    的頭像 發(fā)表于 08-09 08:28 ?539次閱讀
    芯片行業(yè),<b class='flag-5'>正在被</b>改寫

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品