Auto Increment ID là một dạng đánh số nguên dương tự tăng thường để tạo giá trị cho primary key (khoá chính) trong cơ sở dữ liệu quan hệ. Ngay hôm nay, ở nhiều trường đại học, khoa CNTT vẫn dạy thiết kế CSDL dùng AUTO ID: với MySQL là AUTO_INCREMENT, với Postgresql là Serial, với SQL Server Identity.

Cho một ứng dụng monolithic app để bảo vệ tốt nghiệp, AutoID chắc là đủ. Nhưng cho một ứng dụng hiện đại hướng đến microservice, IOT, decentralized app , thì AutoID rất là không ổn. Các giá trị nguyên dương: 1, 2, 3, 4, 5... rất dễ bị trùng lặp, và không đảm bảo tính duy nhất trong toàn bộ hệ thống chứ chưa nói đến trên toàn thế giới.

UUID hay GUID bản chất là một, đảm bảo giá trị là duy nhất trên toàn bộ thế giới (mà cũng có thể trên vũ trụ). Nhược điểm của UUID là nó phải rất dài, rất hỗn độn - ngẫu nhiên và phụ thuộc thời gian sinh.

Ưu điểm của UUID là nó có thể sinh ra ở bất kỳ đâu chứ không nhất thiết phải ở trong database server, giá trị không tuần tự, giá trị sau không cần biết giá trị trước là gì, rất phù hợp với stateless (không lưu trạng thái) và concurrency (chạy đồng thời).
ví dụ UUID:

be0bd96c-78c3-4604-92b7-232ddf674ee1

Sau UUID có CUID được thiết kế để giảm xác suất trùng lặp (collision resistant), cho phép mở rộng hệ thống (horizontal scaling), tối ưu tốc độ tìm kiếm nhị phân (binary search):
ví dụ CUID
ch72gsb320000udocl363eofy
cjcyc7n1a000104u32o0p1nrp

Đánh giá trực quan thì mã CUID ngắn hơn 25 ký tự so với 40 ký tự của UUID , tiết kiệm không gian lưu trữ. Mục tiêu duy nhất, giảm tối đa trùng lặp thì cả UUID và CUID đều hướng đến rồi.

Còn một biến thể nữa là shortID khoảng 8 ký tự, nhìn gọn mắt, khả năng chống trùng lặp kém hơn nhiều, phù hợp cho hệ thống nhỏ xinh.

Một số tài liệu bạn có thể tham khảo :https://blog.codinghorror.com/primary-keys-ids-versus-guids/
                                                                http://hilton.org.uk/blog/microservices-correlation-id
                                                                http://usecuid.org/

    Tìm hiểu và nghiên cứu sâu bạn sẽ thấy được thế giới lập trình thú vị như thế nào, biết được                 một vài điều bạn cho là nhiều nhưng để so sánh với thế giới  nó còn nhỏ bé lắm,

                hãy theo dõi  blog techmaster để cập nhật những bài viết thú vị nữa nhé !!