3 điểm bởi GN⁺ 2024-08-27 | 1 bình luận | Chia sẻ qua WhatsApp
  • Các phiên bản UUID khác nhau

    • UUID Version 1 (v1): được tạo từ dấu thời gian, bộ đếm đơn điệu và địa chỉ MAC
    • UUID Version 2 (v2): được dành riêng cho security ID. Chưa có nhiều thông tin chi tiết được biết đến
    • UUID Version 3 (v3): được tạo từ hàm băm MD5 của dữ liệu được cung cấp. DNS và URL được đề xuất là dữ liệu đầu vào ứng viên
    • UUID Version 4 (v4): được tạo từ dữ liệu hoàn toàn ngẫu nhiên. Đây là kiểu UUID mà đa số mọi người vẫn nghĩ tới
    • UUID Version 5 (v5): được tạo từ hàm băm SHA1 của dữ liệu được cung cấp. Tương tự v3, DNS và URL được đề xuất là dữ liệu đầu vào ứng viên
    • UUID Version 6 (v6): được tạo từ dấu thời gian, bộ đếm đơn điệu và địa chỉ MAC. Dùng cùng loại dữ liệu như v1 nhưng thứ tự được thay đổi để có thể sắp xếp theo thời gian tạo
    • UUID Version 7 (v7): được tạo từ dấu thời gian và dữ liệu ngẫu nhiên
    • UUID Version 8 (v8): có thể được người dùng tự định nghĩa hoàn toàn (trừ các trường version/variant bắt buộc)
  • Thời điểm sử dụng

    • v4: dùng khi cần ID ngẫu nhiên. Là lựa chọn mặc định tốt
    • v7: dùng khi cần sắp xếp. Ví dụ, phù hợp khi dùng làm khóa cơ sở dữ liệu
    • v5 hoặc v8: dùng khi muốn đưa dữ liệu đặc thù vào UUID. Khi cần, bạn sẽ tự nhận ra
  • Giải thích về các phiên bản khác

    • v7 là phiên bản cải tiến của v1 và v6, nên nếu có thể thì nên dùng v7. Vì vậy v1 và v6 thường không được dùng
    • v2 được dành riêng cho các mục đích liên quan đến bảo mật. Nếu bạn đang dùng nó thì có lẽ bạn sẽ không thể biết nhiều chi tiết
    • v3 đã được thay thế bởi v5. v5 dùng hàm băm mạnh hơn

Tóm tắt của GN⁺

  • UUID có nhiều phiên bản khác nhau và mỗi phiên bản được thiết kế cho một mục đích cụ thể
  • v4 và v7 là hai phiên bản được dùng phổ biến nhất, còn v5 và v8 được dùng khi có yêu cầu dữ liệu cụ thể
  • Việc chọn phiên bản UUID phụ thuộc vào mục đích sử dụng; nếu cần sắp xếp thì nên dùng v7, còn nếu cần ID ngẫu nhiên thì nên dùng v4
  • Hiểu rõ các phiên bản UUID khác nhau sẽ giúp bạn chọn được UUID phù hợp cho dự án

1 bình luận

 
GN⁺ 2024-08-27
Ý kiến Hacker News
  • UUID Version 2 (v2) được dành riêng cho ID bảo mật, nhưng thông tin chi tiết về nó không được biết đến nhiều

    • Vì tài liệu RFC được viết khá mơ hồ
    • Có thể tham khảo tài liệu của Open Group để biết thêm thông tin
    • UUID "version 0" cũng tồn tại, và điều này đã góp phần giúp các phiên bản khác tương thích về sau
    • Có thể xem kết quả nghiên cứu trên GitHub
  • Chi tiết của UUID v2 có thể dễ dàng tìm thấy trong tài liệu RFC 9562

    • Nó được định nghĩa như một phần của DCE, và có thể xem chi tiết bằng cách nhấp vào liên kết liên quan
    • Việc nhấp vào liên kết là rất quan trọng
  • Dấu thời gian của UUID v7 hữu ích để tìm nhanh các tệp metadata trong Databend

    • Cải thiện đáng kể tốc độ thao tác trên AWS S3
    • PR liên quan có thể xem trên GitHub
  • Giá mà có một tiêu chuẩn cho UUID ngắn

    • Ví dụ: 73WakrfVbNJBaAmhQtEeDv hoặc bK7nP9xM
    • Cần những ID ngắn và dễ nhớ
  • Khó hiểu được mục đích của UUID2

    • Chỉ từng gặp UUID2 khi yêu cầu Xandr xóa dữ liệu cá nhân
    • Ngay cả khi đọc trang Wikipedia cũng khó hiểu vì sao cần nhiều loại UUID khác nhau
    • Tò mò không biết việc trộn với mã Mac có làm tăng tính ngẫu nhiên của UUID2 hay là vì một lý do khác
    • Nếu dùng định danh rất dài để bảo vệ quyền riêng tư thì có thể dùng UUID không trùng lặp
  • UUID v4 về cơ bản chỉ là bộ sinh byte ngẫu nhiên

    • Sẽ hiệu quả hơn nếu chỉ tạo byte ngẫu nhiên và bỏ qua dấu gạch nối, thông tin phiên bản, v.v.
  • Tốt nhất là không nên dùng các phiên bản dựa trên MAC

    • Về mặt lý thuyết, điều này áp dụng cho mọi phiên bản ngoài v4 và v7
    • Đặc biệt v1 là tệ nhất, còn MD5 của v3 cũng rất yếu
  • UUID dùng dữ liệu SHA256 và bộ đếm có thể hữu ích

    • Có thể dùng làm định danh bảo vệ quyền riêng tư theo cách tương tự PBKDF2
  • Nên dùng v7

    • Các chuyên gia bảo mật có thể sẽ phản đối
  • Đây là một bài đọc thú vị

    • Mỗi ngày đều có thể học được điều mới