MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Sử dụng ObjectId mongo làm id của người dùng có phải là một thực tiễn xấu?

Một vài điều mà tôi đã thấy:

  1. Nó không tốt cho các URL. Twitter cung cấp cho tôi một URL như http://twitter.com/gatesvp , với ObjectId, bạn sẽ nhận được một url như http://example.com/ab12ab12ab12ab12ab12ab12 .
  2. Các phân đoạn ObjectId rất kém. Nó không thực sự ngẫu nhiên, nó có phần tuần tự, vì vậy người dùng mới sẽ tập hợp theo các phân đoạn hơn là phân phối ngẫu nhiên.
  3. Bạn thường cần một số nhận dạng duy nhất khác. Hầu hết các trang web đều có yêu cầu về e-mail duy nhất hoặc tên người dùng duy nhất. Có, bạn có thể tạo một chỉ mục duy nhất trên "tên người dùng", nhưng sau đó bạn có hai chỉ mục duy nhất, một chỉ mục hữu ích và một chỉ mục chỉ là số ngẫu nhiên.
  4. Bạn sẽ tham khảo điều này ở khắp mọi nơi. Dữ liệu người dùng của bạn thường sẽ được trải rộng trên nhiều bộ sưu tập, tất cả đều có một con trỏ tới "userId". Có ObjectIds (hoặc Guids), nghĩa là bạn liên tục sao chép và dán các ID lớn này ở khắp mọi nơi và lưu trữ chúng trong DB.

Chuyển đến đâu? Khi bạn bắt đầu lưu trữ dữ liệu của người dùng trong MongoDB, các ID sẽ ít gặp vấn đề nhất khi bạn chuyển sang một DB khác. Tất cả các DB hiện đại đều có thể xử lý một số dạng Chuỗi hoặc Nhị phân làm ID khóa chính, vì vậy quá trình chuyển của bạn sẽ hoạt động tốt. Nhưng hầu hết sự phức tạp sẽ không liên quan gì đến ID.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB lồng nhau HOẶC / VÀ Ở đâu?

  2. Mongodb Mapreduce báo lỗi

  3. Tại sao trình kết nối Mongo Spark trả về các số lượng khác nhau và không chính xác cho một truy vấn?

  4. Slice với Projection với C #

  5. Làm cách nào để viết truy vấn SQL này theo cú pháp Mongodb?