- vừa được xem lúc

Tại sao NanoID đang dần thay thế UUID

0 0 30

Người đăng: Thai Quoc Vuong

Theo Viblo Asia

UUID là một trong những số định danh được sử dụng nhiều nhất trong phát triển phần mềm. Tuy nhiên, trong vài năm qua, các giải pháp thay thế khác đã thách thức sự tồn tại của nó.

Trong số này, NanoID là một trong những đối thủ cạnh tranh hàng đầu để tiếp quản UUID. Vì vậy, trong bài viết này, tôi sẽ thảo luận về các tính năng của NanoID, nơi nó tỏa sáng và những hạn chế của nó để bạn hiểu rõ hơn về thời điểm sử dụng nó.

NanoID và cách sử dụng

Việc tạo UUID với JavaScript rất đơn giản với packet npm. Tuy nhiên tôi là 1 Ruby dev thì tôi sẽ dùng gem nanoid ??

Install: gem "nanoid" Usage:

require 'nanoid' Nanoid.generate
"YZHm7hEisuUnK9krZtprB"

NanoID chỉ có kích thước 108 bytes

Không giống như UUID, NanoID có kích thước nhỏ hơn 4,5 lần và không có bất kỳ phụ thuộc nào. Hơn nữa, giới hạn kích thước đã được sử dụng để giảm kích thước đi 35% .

Việc giảm kích thước ảnh hưởng trực tiếp đến kích thước của dữ liệu. Ví dụ: một đối tượng sử dụng NanoID nhỏ và gọn để truyền và lưu trữ dữ liệu. Với sự phát triển ứng dụng, những con số này trở nên rõ ràng.

An toàn hơn

Trong hầu hết các trình tạo ngẫu nhiên, chúng sử dụng Math.random() . Tuy nhiên, NanoID sử dụng crypto moduleWeb Crypto API an toàn hơn. Ngoài ra, NanoID đã sử dụng thuật toán riêng của nó được gọi là uniform algorithm trong quá trình triển khai trình tạo ID thay vì sử dụng random % alphabet

Nhanh và gọn

NanoID nhanh hơn 60% so với UUID. Thay vì có 36 ký tự trong bảng chữ cái của UUID, NanoID chỉ có 21 ký tự.

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-

Ngoài ra, NanoID hỗ trợ 14 ngôn ngữ lập trình khác nhau bao gồm C#, C++, Clojure and ClojureScript, Crystal, Dart & Flutter, Deno, Go, Elixir, Haskell, Janet, Java, Nim, Perl, PHP, Python with dictionaries, Ruby , Rust, Swift.

Nó cũng hỗ trợ PouchDB, CouchDB WebWorkers, Rollup và các thư viện như React và Reach-Native.

Custom Alphabets

Một tính năng hiện có khác của NanoID là nó cho phép các nhà phát triển sử dụng các bảng chữ cái tùy chỉnh. Bạn có thể thay đổi các ký tự hoặc kích thước của id như bên dưới: Với JS:

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

Với Ruby:

require 'nanoid' Nanoid.generate(alphabet: '1234567890abcdef', size: 12)
=> "6ceb481c83ad"

Không có sự phụ thuộc của bên thứ ba

Vì NanoID không phụ thuộc vào bất kỳ hoạt động phụ thuộc nào của bên thứ ba nên theo thời gian, nó trở nên ổn định hơn.

Điều này có lợi để tối ưu hóa kích thước gói trong thời gian dài và làm cho nó ít bị các vấn đề đi kèm với dependencies.

Hạn chế và Trọng tâm trong tương lai

Dựa trên nhiều ý kiến trong StackOverflow, không có nhược điểm hoặc hạn chế đáng kể nào khi sử dụng NanoID.

Ngoài ra, nếu bạn sử dụng NanoID làm khóa chính của bảng, sẽ có vấn đề nếu bạn sử dụng cùng một cột làm clustered index. Điều này là do NanoID không tuần tự. image.png Các điểm chuẩn trên cho thấy hiệu suất của NanoID so với các trình tạo id chính khác. Nó có thể tạo ra hơn 2,2 triệu ID duy nhất mỗi giây với bảng chữ cái mặc định và hơn 1,8 triệu ID duy nhất mỗi giây khi sử dụng bảng chữ cái custom. Với kinh nghiệm sử dụng cả UUID và NanoID, tôi khuyên bạn nên sử dụng NanoID thay vì UUID cho bất kỳ dự án nào trong tương lai khi xem xét kích thước nhỏ, tính thân thiện với URL, bảo mật và tốc độ của nó.

References

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

https://github.com/radeno/nanoid.rb

Bình luận

Bài viết tương tự

- vừa được xem lúc

Bài toán tìm đường đi ngắn nhất với giải thuật Dijkstra

Với các bạn sinh viên chuyên ngành công nghệ thông tin, chắc không lạ gì với bài toán tìm đường đi ngắn nhất (Shortest Path Problems) trong đồ thị trọng số nữa. Ở bài viết lần này, mình sẽ làm 3 việc:.

0 0 122

- vừa được xem lúc

Tôi cá là bạn không biết những điều này - Ruby on rails ( Phần 2)

Các bạn có thể theo dõi phần 1 ở đây :. https://viblo.asia/p/toi-ca-la-ban-khong-biet-nhung-dieu-nay-ruby-on-rails-phan-1-WAyK8DDeKxX. 5.

0 0 211

- vừa được xem lúc

Những thay đổi trong ruby 3.0

. 2020 là một năm lớn đối với cộng đồng Ruby. Những người sáng lập Ruby có một món quà thực sự tuyệt vời cho chúng ta vào giáng sinh với việc phát hành Ruby 3.

0 0 31

- vừa được xem lúc

Có gì đặc biệt trong phiên bản Ruby 3x3 ?

Hello guys, chắc hẳn thời gian vừa rồi chúng ta cũng đã nghe qua thông tin Ruby sắp cho ra mắt Ruby version 3, hay còn được gọi là ruby 3x3, vậy liệu Ruby version 3 này có gì mới, và có những update nào đáng phải kể đến, và tại sao mọi người lại gọi nó là ruby version 3x3, thì trong bài ngày hôm nay

0 0 30

- vừa được xem lúc

Cách sử dụng class Time & Date trong Ruby (Phần 1)

Time là một class trong Ruby, nó sẽ giúp chỉnh sửa format, trích xuất thông tin một cách hiệu quả theo ý của bạn. . Topic hôm nay chúng ta có gì nào. .

0 0 83

- vừa được xem lúc

Ruby 3.0 có gì mới

Ruby 3.0.0 đã được ra mới được ra mắt vào tháng 12/2020, mục tiêu của bản 3.0.

0 0 26