GIỚI THIỆU UUID LÀ GÌ, NGHĨA CỦA TỪ UUID ĐỊNH NGHĨA VÀ GIẢI THÍCH Ý NGHĨA

1. Đôi nét

UUID (Viết tắt của Universally chất lượng Identifier), có cách gọi khác là GUID (Globally chất lượng Identifier) là một trong những giá trị duy nhất lâu năm 128 bit. Một chuỗi UUID chuẩn sử dụng chữ số hex (octet):

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

*
Mục đích của UUID ra đời là vì chưng vì:

Dữ liệu lớn, phong cách khóa chính tự động hóa imcrement buộc phải nhiều byte nhằm lưu hơn. Với khóa thiết yếu kiểu này không cân xứng khi nhưng hệ thống có rất nhiều server, các client cùng lúc truy cập trên toàn cố giới.

Bạn đang xem: Giới thiệu uuid là gì, nghĩa của từ uuid Định nghĩa và giải thích Ý nghĩa

Bởi vậy UUID ra đời nhằm mục tiêu khắc phục các yếu điểm trên. Vậy nếu như khách hàng đủ sức xuất bản một khối hệ thống với nhiều server, giao hàng hàng tỉ tỉ user hoặc chỉ đơn giản là không thích để lộ id ra ngoài, hãy nghĩ tới UUID.

Trong bài này, bọn họ sẽ cùng tìm hiểu về UUID trong Java, trải qua class UUID.

2. Cấu tạo chuỗi UUID

Chúng ta thuộc xem lấy ví dụ như về chuỗi UUID:

123e4567-e89b-42d3-a456-556642440000xxxxxxxx-xxxx-Bxxx-Axxx-xxxxxxxxxxxxA thay mặt đại diện cho thay đổi thể (variant) xác định bố cục (layout) của UUID. Tất cả các bit khác trong UUID phụ thuộc vào setting của những bit trong trường biến đổi thể (variant field). Trở nên thể được xác minh bởi 3 bit đặc biệt nhất 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ị biến hóa thể là 2.B thay mặt cho phiên phiên bản (version). Phiên bạn dạng trong UUID (giá trị của B) là 4.

Java cung cấp các phương thức để mang ra variant (biến thể) và version (phiên bản) của UUID như sau:

UUID uuid = UUID.randomUUID();int variant = uuid.variant();int version = uuid.version();Đây là 5 phiên phiên bản khác nhau đến UUID biến thể 2: Time Based (UUIDv1), DCE Security (UUIDv2), Name Based (UUIDv3 và UUIDv5), Random (UUIDv4).

Xem thêm: 9 Bí Quyết Giữ Gìn Hạnh Phúc Gia Đình, 16 Bí Quyết Giữ Gìn Hạnh Phúc Gia Đình

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

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

Version 3 & 5

Các UUID được tạo bằng cách sử dụng hàm băm của namespace với name. Các định danh namespace là những UUID giống như Domain Name System (DNS), Object Identifiers (OIDs), URLs,...

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

Và đây là cách chế tạo ra UUID các loại 3 vào java:

String source = namespace + name;byte<> bytes = source.getBytes("UTF-8");UUID uuid = UUID.nameUUIDFromBytes(bytes);Java không cung cấp implementation đến UUID nhiều loại 5.

Version 4

Implementation của UUID v4 vào Java sử dụng những số ngẫu nhiên. Class được java implement là SecureRandom. Nó áp dụng một giá trị không thể đoán trước để tạo nên các số ngẫu nhiên nhằm mục tiêu giảm tỷ lệ trùng.Để sinh chuỗi UUID v4, chúng ta sử dụng:

UUID uuid = UUID.randomUUID();Bạn rất có thể sinh chất lượng key áp dụng ‘SHA-256" cùng UUID như sau:

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

3. Kết luận

Cả UUIDv3 và UUIDv5 đều phải có những điểm tốt mà các hệ thống khác nhau hoàn toàn có thể tạo ra cùng một UUID bằng phương pháp sử dụng cùng một namespace với name. Bọn chúng cơ phiên bản được áp dụng để sản xuất UUID phân cấp.

Vì cả hai hàm băm MD5 với SHA1 phần đa bị hỏng, nên tốt nhất khuyện bạn thực hiện v5. Giả dụ bạn chỉ việc tạo UUID đối chọi giản, một số loại 4 rất có thể đáp ứng giỏi cho áp dụng của bạn.