Tại sao _id
lại là mặc định một chuỗi hex 24 ký tự?
Giá trị nhận dạng duy nhất mặc định được tạo làm khóa chính (_id
) đối với tài liệu MongoDB là ObjectId
. Đây là giá trị nhị phân 12 byte thường được biểu diễn dưới dạng chuỗi hex 24 ký tự và là một trong những loại trường tiêu chuẩn được hỗ trợ bởi MongoDB Đặc tả BSON
.
12 byte của một ObjectId được xây dựng bằng cách sử dụng:
- một giá trị 4 byte đại diện cho số giây kể từ kỷ nguyên Unix
- mã định danh máy 3 byte
- id quy trình 2 byte
- bộ đếm 3 byte (bắt đầu bằng một giá trị ngẫu nhiên)
Tầm quan trọng của ObjectId là gì?
ObjectIds (hoặc các số nhận dạng tương tự được tạo theo GUID công thức) cho phép các số nhận dạng duy nhất được tạo độc lập trong hệ thống phân tán.
Khả năng tạo một ID duy nhất một cách độc lập trở nên rất quan trọng khi bạn mở rộng quy mô lên nhiều máy chủ ứng dụng (hoặc có thể nhiều nút cơ sở dữ liệu trong cụm phân đoạn ). Bạn không muốn có một nút thắt cổ chai điều phối trung tâm như bộ đếm tuần tự (ví dụ:như bạn có thể có đối với khóa chính tự động tăng dần) và bạn sẽ muốn chèn các tài liệu mới mà không có rủi ro rằng một số nhận dạng mới sẽ trở thành trùng lặp.
ObjectId thường được tạo bởi MongoDB trình điều khiển ứng dụng khách
của bạn , nhưng cũng có thể được tạo trên máy chủ MongoDB nếu trình điều khiển máy khách hoặc mã ứng dụng của bạn hoặc chưa thêm _id
trường.
Tôi có phải sử dụng ObjectId mặc định không?
Không. Nếu bạn có số nhận dạng duy nhất phù hợp hơn để sử dụng, bạn luôn có thể cung cấp giá trị của riêng mình cho _id
. Đây có thể là một giá trị đơn lẻ hoặc một giá trị tổng hợp sử dụng nhiều trường.
Các ràng buộc chính đối với _id
là chúng phải là duy nhất cho một bộ sưu tập và bạn không thể cập nhật hoặc xóa _id
cho một tài liệu hiện có.