日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
ULID與UUID:用于JavaScript的可排序隨機(jī)ID生成器

其中,ULID 是領(lǐng)先的競(jìng)爭(zhēng)對(duì)手之一,因?yàn)樗峁┛膳判虻奈ㄒ?ID。

從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、域名與空間、網(wǎng)絡(luò)空間、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。

在本文中,我將通過示例討論 ULID 的特性,以便您更好地了解何時(shí)使用它。

了解 ULID 及其用法

ULID[2] 代表通用唯一按字母順序排序的標(biāo)識(shí)符。它每周有超過 271K 的 NPM 下載和 1.7K 的 GitHub Stars。

您可以使用 npm i ulid 命令輕松安裝 ULID NPM 庫并在您的項(xiàng)目中使用它。

import { ulid } from ‘ulid’;
ulid();

它具有一些驚人的功能,解決了UUID的一些缺點(diǎn)。例如,當(dāng)在關(guān)系數(shù)據(jù)庫中使用UUID時(shí),由于缺乏內(nèi)置的排序,可能會(huì)出現(xiàn)數(shù)據(jù)索引的困難。在這種情況下,你可能被迫包括另一個(gè)屬性來使數(shù)據(jù)可排序。

此外,UUID 在隨機(jī)性、效率和生成方面存在一些常見問題,ULID 解決了這些問題。因此,讓我們?cè)敿?xì)了解一下 ULID。

同時(shí)使用時(shí)間戳和隨機(jī)性

當(dāng)你使用UUID生成一個(gè)ID時(shí),它將只考慮隨機(jī)性或時(shí)間戳,生成一個(gè)36個(gè)字符的長(zhǎng)字符串。

但是,ULID 會(huì)同時(shí)考慮隨機(jī)性和時(shí)間戳來生成 ID,并將它們編碼為 26 個(gè)字符串(128 位)。

// UUID示例
01FHZXHK8PTP9FVK99Z66GXQTX

ULID 的前 10 個(gè)字符表示時(shí)間戳,ULID 的第二部分表示隨機(jī)性。這兩個(gè)部分都是 base 32 編碼字符串,分別使用 48 位和 80 位表示。

例如,上述 ULID 的分解如下所示:

01FHZXHK8PTP9FVK99Z66GXQTX
時(shí)間戳 (48 bits) - 01FHZXHK8P
隨機(jī)數(shù) (80 bits) - TP9FVK99Z66GXQTX

注意:ULID 使用 Crockford 的 Base32 字母表 (0123456789ABCDEFGHJKMNPQRSTVWXYZ) 進(jìn)行編碼。它不包括 I、L、O 和 U 字母以避免任何意外的混淆。

UILD 是按字典順序排序的

詞典可排序性是 ULID 最突出的特性之一。

正如我們已經(jīng)知道的,ULID 可以排序。ULID 的這一特性允許開發(fā)人員輕松管理與數(shù)據(jù)庫相關(guān)的任務(wù),例如排序、分區(qū)和索引。

例如,你不需要?jiǎng)?chuàng)建一個(gè)額外的列來維護(hù)記錄的創(chuàng)建時(shí)間。相反,你可以使用ULID的時(shí)間戳表示,根據(jù)創(chuàng)建時(shí)間來排序或劃分?jǐn)?shù)據(jù)。

注意:ULID 的時(shí)間戳部分以 UNIX 時(shí)間(以毫秒為單位)表示,直到公元 10889 年才會(huì)耗盡空間。

隨機(jī)數(shù)的高安全性

大多數(shù)隨機(jī) ID 生成器使用 unsafeMath.random() 來生成 ID。但是,ULID 默認(rèn)阻止使用 Math.random() 并根據(jù)情況自動(dòng)決定合適的隨機(jī)數(shù)生成器。

例如,它將在瀏覽器中使用 crypto.getRandomValues,在 Node 環(huán)境中使用 crypto.randomBytes。

但是,如果您想在 ULID 中使用Math.random(),則需要明確允許該權(quán)限。

import { factory, detectPrng } from 'ulid'

const random_number_gen = detectPrng(true)
const ulid = factory(random_number_gen)

注意:您也可以使用自己的偽隨機(jī)數(shù)生成器來生成 ULID。

單調(diào)的ULIDs與種子時(shí)間

ULID 允許您通過傳遞種子時(shí)間來獲取具有相同時(shí)間戳的 ID。例如,如果要?jiǎng)?chuàng)建以 2021–10–15 作為時(shí)間戳的 ID,則需要將 UNIX 時(shí)間戳(以毫秒為單位)傳遞給 ulid() 函數(shù)。

ulid(1634263671000) // 01FJ0V986RA01G70YQ5Z0AMQE7

除此之外,ULID 允許創(chuàng)建一系列值不斷增加的 ID。您需要做的就是使用 monotonicFactory創(chuàng)建一個(gè) ulid 對(duì)象并傳遞相同的時(shí)間種子。

import { monotonicFactory } from ‘ulid’
const ulid = monotonicFactory()
console.log(ulid(100000)); // 00000031N0J7R2B57M8YG73J7M
console.log(ulid(100000)); // 00000031N0J7R2B57M8YG73J7N
console.log(ulid(100000)); // 00000031N0J7R2B57M8YG73J7P
console.log(ulid(100000)); // 00000031N0J7R2B57M8YG73J7Q
console.log(ulid(100000)); // 00000031N0J7R2B57M8YG73J7R

多語言支持

ULID 支持近 50 種語言,包括 JavaScript、Java、C++、Dart、Python 和 .NET。

此外,二進(jìn)制表示可用于超過 15 種語言,包括 C++、Dart、Go、JavaScript 和 Python。

JavaScript 模塊支持

ULID 可以輕松地與所有類型的 JavaScript 模塊一起使用,包括 ES6+、CommonJS 和 AMD。

// TypeScript , ES6+ Modules
import { ulid } from ‘ulid’;
ulid();

// CommonJS
const ULID = require('ulid');
ULID.ulid();

// AMD
define(['ULID'] , function (ULID) {
ULID.ulid()
});

// Browser


其他特性

每毫秒可以生成 1.21e+24 個(gè)唯一的 ULID。

ULID 是 URL 安全的,因?yàn)樗皇褂萌魏翁厥庾址?/p>

小包大小 - 2.5 kB (minified), 1.2kB (GZipped).

下載時(shí)間約為 1ms –10 ms。

比 UUID 短。

與 UUID 128 格式兼容。

未來重點(diǎn)

根據(jù) StackOverflow 中的許多專家意見,使用 ULID 沒有明顯的缺點(diǎn)或限制。

但是,不區(qū)分大小寫和 80 位隨機(jī)性是開發(fā)人員在 ULID 中注意到的主要缺點(diǎn)。但它的字典排序能力使其在所有其他產(chǎn)品中獨(dú)樹一幟。

此外,如果我們考慮過去一年 ULID 的使用趨勢(shì),我們可以看到它處于上升趨勢(shì)。雖然下載量比 UUID 少很多,但在過去的一年里它已經(jīng)獲得了超過 150000 名用戶。

??https://www.npmtrends.com/ulid??

憑借所有這些功能以及我使用 UUID 和 ULID 的經(jīng)驗(yàn),對(duì)于需要排序的用例來說,這是不費(fèi)吹灰之力的。所以,不要猶豫,在你的下一個(gè)項(xiàng)目中使用 ULID。

原文:https://blog.bitsrc.io/ulid-vs-uuid-sortable-random-id-generators-for-javascript-183400ef862c

作者:Chameera Dulanga

參考資料

[1]UUID: https://en.wikipedia.org/wiki/Universally_unique_identifier

[2]ULID: https://www.npmjs.com/package/ulid

本文轉(zhuǎn)載自微信公眾號(hào)「前端全棧開發(fā)者」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系前端全棧開發(fā)者公眾號(hào)。


新聞名稱:ULID與UUID:用于JavaScript的可排序隨機(jī)ID生成器
文章鏈接:http://www.5511xx.com/article/djcdodj.html