Uuid là gì

1. Đôi nét

UUID (Viết tắt của Universally Unique Identifier), còn được gọi là GUID (Globally Unique Identifier) là một trong những cực hiếm tuyệt nhất lâu năm 128 bit. Một chuỗi UUID chuẩn chỉnh áp dụng chữ số hex (octet):

0710a5ca-f57e-11e9-802a-5aa538984bd8


*

Mục đích của UUID hình thành là bởi vì:

Dữ liệu béo, hình dạng khóa thiết yếu tự động imcrement phải nhiều byte để lưu lại hơn. Và khóa thiết yếu hình dạng này không tương xứng Khi nhưng hệ thống có nhiều VPS, nhiều client cùng lúc truy vấn bên trên toàn thế giới.quý khách đã xem: Uuid là gì

bởi thế UUID thành lập và hoạt động nhằm hạn chế những khuyết điểm trên. Vậy nếu khách hàng vừa đủ sức xây đắp một khối hệ thống với tương đối nhiều server, phục vụ hàng tỉ tỉ user hoặc chỉ dễ dàng là không muốn để lộ id ra bên ngoài, hãy nghĩ tới UUID.

You watching: Uuid là gì

Trong bài này, họ sẽ thuộc tò mò về UUID vào Java, thông qua class UUID.

2. Cấu trúc chuỗi UUID

Chúng ta thuộc xem ví dụ về chuỗi UUID:

123e4567-e89b-42d3-a456-556642440000xxxxxxxx-xxxx-Bxxx-Axxx-xxxxxxxxxxxxA thay mặt cho biến thể (variant) xác định bố cục tổng quan (layout) của UUID. Tất cả các bit không giống vào UUID phụ thuộc vào vào setting của các bit vào trường vươn lên là thể (variant field). Biến thể được xác minh bởi 3 bit đặc trưng độc nhất vô nhị của A:

MSB1 MSB2 MSB3 0 X X reserved (0) 1 0 X current variant (2) 1 1 0 reserved for Microsoft (6) 1 1 1 reserved for future (7)Giá trị của A trong UUID là "a ". Tương đương nhị phân của "a" (=10xx) hiển thị đổi mới thể là 2.B thay mặt mang đến phiên phiên bản (version). Phiên bạn dạng vào UUID (giá trị của B) là 4.

Java cung cấp những cách tiến hành để mang ra variant (vươn lên là thể) và version (phiên bản) của UUID nlỗi sau:

Java bao gồm cung cấp một implementation mang đến v3 và v4, tuy nhiên cũng cung ứng một constructor sẽ giúp người tiêu dùng tạo ra bất kỳ loại UUID nào:

UUID uuid = new UUID(long mostSigBits, long leastSigBits);

Version 3 và 5

Các UUID được chế tác bằng cách thực hiện hàm băm của namespace và name. Các định danh namespace là những UUID giống như Domain Name System (DNS), Object Identifiers (OIDs), URLs,...

See more: Khái Niệm Phần Mềm Oracle Database Là Gì ? Oracle Database Là Gì

UUID = hash(NAMESPACE_IDENTIFIER + NAME)Sự biệt lập nhất giữa UUIDv3 với UUIDv5 là Thuật toán băm (Hashing Algorithm) - v3 áp dụng MD5 (128 bit) trong những lúc v5 áp dụng SHA-1 (160 bit).Nói một biện pháp đơn giản dễ dàng, chúng ta cắt sút tác dụng băm thành 128 bit và tiếp nối sửa chữa 4 bit đến version (phiên bản) và 2 bit đến variant (thay đổi thể).

Và đây là phương pháp tạo ra UUID loại 3 vào java:

String source = namespace + name;byte bytes = source.getBytes("UTF-8");UUID uuid = UUID.nameUUIDFromBytes(bytes);Java ko cung cấp implementation đến UUID một số loại 5.

See more: Sinh Năm 2002 Là Tuổi Con Gì, Tuổi Gì? Tuổi Nhâm Ngọ Hợp Màu Nào?

Version 4

Implementation của UUID v4 vào Java áp dụng các số bỗng nhiên. Class được java implement là SecureRandom. Nó áp dụng một quý hiếm bắt buộc đân oán trước nhằm tạo ra những số tự nhiên nhằm mục đích bớt Tỷ Lệ trùng.Để sinc chuỗi UUID v4, các bạn sử dụng:

UUID uuid = UUID.randomUUID();Quý khách hàng rất có thể sinh unique key thực hiện ‘SHA-256" và UUID nlỗi sau:

MessageDigest salt = MessageDigest.getInstance("SHA-256");salt.update(UUID.randomUUID().toString().getBytes("UTF-8"));String digest = bytesToHex(salternative text.digest());

3. Kết luận

Vì cả nhì hàm băm MD5 và SHA1 phần đông bị hư, buộc phải rất tốt khuyện bạn áp dụng v5. Nếu bạn chỉ cần chế tạo ra UUID đơn giản dễ dàng, một số loại 4 rất có thể đáp ứng nhu cầu xuất sắc cho áp dụng của bạn.


Chuyên mục: Giải Đáp