Trang web này được dịch tự động sang nhiều ngôn ngữ bằng phần mềm do Kohei Koyanagi phát triển. Để chính xác hơn, vui lòng xem bản gốc bằng tiếng Anh .

Cách Tiếp Cận Hai Mã Định Danh Của Splync: UUID và Số Nguyên Tự Tăng

Splync Sử Dụng Hai Mã Định Danh Cho ID Nhạy Cảm

Trong cơ sở dữ liệu của Splync, mỗi người dùng và mỗi dự án đều được xác định bằng hai ID khác nhau: UUID và số nguyên tự tăng. Số nguyên tự tăng là loại mà hầu hết mọi người đều quen thuộc — chỉ là một bộ đếm: 1, 2, 3, v.v. Splync sử dụng các con số này bên trong cơ sở dữ liệu máy chủ để tổ chức hầu hết các bảng vì chúng đơn giản, nhanh và hiệu quả cho việc nối kết. Tuy nhiên, chúng tôi không bao giờ hiển thị những con số nội bộ này cho ứng dụng. Ví dụ, nếu bạn là người dùng thứ 42 đăng ký, ID nội bộ của bạn trong cơ sở dữ liệu sẽ là 42. Nhưng ứng dụng iOS của bạn không bao giờ thấy “42”. Thay vào đó, ứng dụng sử dụng UUID để đại diện cho bạn. Chúng tôi áp dụng cách tiếp cận tương tự cho các dự án — một ID dự án có thể là "7" trong cơ sở dữ liệu, nhưng ứng dụng luôn tham chiếu đến nó bằng UUID dài.

UUID Là Gì

UUID là viết tắt của Universal Unique Identifier. Splync sử dụng UUID phiên bản 4, biến thể 1, tuân thủ RFC 4122 — một trong những tiêu chuẩn được áp dụng rộng rãi nhất. Đây là một chuỗi được tạo ngẫu nhiên, ví dụ như 949ca11c-a6ed-48a3-b40a-fa9727494917. UUID thường được viết dưới dạng 32 ký tự thập lục phân chia thành năm phần, ngăn cách bởi dấu gạch ngang. Nó được thiết kế để độc nhất trên toàn cầu, nghĩa là nó sẽ không trùng lặp ngay cả trên các máy chủ hoặc cơ sở dữ liệu khác nhau. Toán học chỉ ra rằng có khoảng 16^32 = 2^128 kết hợp có thể. Tuy nhiên, vì sáu bit được dành riêng để chỉ thị biến thể và phiên bản, tổng số UUID phiên bản-4, biến thể-1 khác biệt là khoảng 2^122, hay khoảng 5.3 x 10^36 — một con số cực kỳ lớn đảm bảo tính duy nhất thực tế.

1 / 5,300,000,000,000,000,000,000,000,000,000,000,000 Nhỏ Đến Mức Nào

Mỗi cặp UUIDv4 có khoảng 1 trong 5.3 × 10^36 khả năng khớp nhau. Số này nhỏ đến mức gần như không tồn tại trong trí tưởng tượng của con người. Để hình dung, hãy tưởng tượng tung 47 con xúc xắc cùng lúc. Khả năng tất cả đều là một — mỗi con đều cho ra “1” — khoảng 1 trong 6^47, hay khoảng 1 trong 3.7 × 10^36. Đó là cùng cỡ với khả năng trùng khớp UUID. Bây giờ, hãy tưởng tượng mọi người trên Trái Đất — khoảng tám tỷ người trong chúng ta — tung 47 con xúc xắc mỗi mili giây trong một nghìn tỷ năm. Đó là khoảng 2.5 × 10^32 lần thử. Ngay cả sau tất cả điều đó, khả năng ai đó, ở nơi nào đó, làm cho tất cả 47 con ra số một cùng lúc vẫn chỉ là một trong mười nghìn. Đó là mức không thể xảy ra cho hai UUIDv4 trùng nhau. Nó không chỉ là hiếm. Nó là vô lý về mặt vũ trụ — một loại trùng hợp có thể khiến các nhà toán học đánh rơi cà phê và kiểm tra vũ trụ xem có lỗi không.

Có Dễ Để Tạo Một UUID Không

Thoạt nhìn, việc tạo UUID có vẻ đơn giản — rốt cuộc, nó chỉ là một chuỗi ký tự ngẫu nhiên. Nhưng thử viết một cái bằng bút và giấy. Bạn có thể ghi chép 36 ký tự, chắc chắn, nhưng nếu bạn lặp lại bài tập hàng ngàn lần, các mẫu rõ ràng sẽ xuất hiện. Có thể bạn ưa thích các chữ số nhất định như 3 hoặc 8, và hiếm khi sử dụng các chữ cái như x. Một máy tính có thể phát hiện những thiên hướng đó ngay lập tức. Một hacker độc hại có thể phân tích thói quen của bạn và thu hẹp chuỗi “ngẫu nhiên” bí mật của bạn trong vòng một ngày. Sau đó, nếu bạn cũng nhờ đến một máy tính và gọi hàm rand(), hàm ngẫu nhiên cổ điển, để tạo từng chữ số. Điều đó tốt hơn — nhưng chưa đủ tốt. Nhiều trình tạo số "ngẫu nhiên" trong các môi trường lập trình phổ biến là giả ngẫu nhiên, nghĩa là chúng tuân theo một chuỗi toán học có thể đoán trước bắt đầu từ một hạt giống nội bộ, thường dựa trên thời gian hệ thống. Nếu ai đó phát hiện hoặc đoán được hạt giống đó, họ có thể tái tạo mọi giá trị mà trình tạo của bạn từng tạo ra.

UUID Ngẫu Nhiên Hoàn Hảo Đến Mức Nào

Sự ngẫu nhiên hoàn hảo không thực sự tồn tại — cũng như không có xúc xắc hoàn hảo, hoặc một lần tung xúc xắc ngẫu nhiên hoàn hảo. Mọi quá trình vật lý hoặc số đều tuân theo một số quy tắc cơ bản. Tuy nhiên, các nhà toán học và kỹ sư đã dành nhiều thập kỷ để thiết kế các thuật toán càng gần như có thể đến sự ngẫu nhiên thực sự. Khi Splync tạo một UUID phiên bản-4 mới, nó không đơn giản chỉ “chọn số ngẫu nhiên” giống như tung xúc xắc. Nó yêu cầu hệ điều hành cung cấp những dấu vết nhỏ của sự không thể đoán trước — ví dụ, thời điểm chính xác CPU của bạn hoàn thành một tác vụ, tiếng ồn điện nhẹ trong phần cứng, hoặc biến động thời gian nền trong bộ nhớ. Những mảnh vụn của entropy này được thu thập và trộn thành 128 bit dữ liệu — một chuỗi dài các số một và số không. Kết quả là một mã mà gần như không thể đoán trước hoặc lặp lại đối với người dùng ứng dụng hoặc những kẻ tấn công độc hại tiềm năng.

Cách Tiếp Cận Hai Mã Định Danh Của Splync

Splync sử dụng UUID cho các mã định danh nhạy cảm như ID người dùng và ID dự án, vì chúng cực kỳ ngẫu nhiên và an toàn. Đồng thời, bên trong máy chủ của mình, Splync chuyển đổi những UUID đó thành các số nguyên tự tăng để tìm kiếm nhanh hơn và phân tích trên các tập dữ liệu lớn. Cách tiếp cận hai mã định danh này tìm cách cân bằng giữa an toàn và tiện lợi — quyền riêng tư bên ngoài với hiệu suất bên trong. Mục tiêu của Splync là trở thành một ứng dụng theo dõi ngân sách đơn giản, an toàn và không căng thẳng. Đằng sau giao diện người dùng có thể thấy, chúng tôi tiếp tục tinh chỉnh kiến trúc của mình để giữ mọi thứ mượt mà, an toàn và âm thầm thông minh.