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

Thay đổi kiểu _id trong MongoDB thành số nguyên có tệ không?

Không, nó không tệ chút nào và trên thực tế, ObjectId được tích hợp sẵn khá lớn trong chỉ mục, vì vậy nếu bạn tin rằng bạn có thứ gì đó tốt hơn thì bạn có thể thay đổi giá trị mặc định của _id trường cho bất cứ điều gì.

Nhưng, và đây là một nhưng lớn , có một số cân nhắc khi quyết định chuyển khỏi ObjectId được công thức mặc định , đặc biệt là khi sử dụng _ids tự động tăng dần như được hiển thị tại đây:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-increcting-field

Đa luồng không phải là một vấn đề lớn vì findAndModify và khóa nguyên tử thực sự có thể giải quyết vấn đề đó, nhưng sau đó bạn mới gặp phải vấn đề đầu tiên của mình. findAndModify không phải là chức năng nhanh nhất cũng không phải là chức năng nhẹ nhất và đã có sự sụt giảm hiệu suất đáng kể khi sử dụng nó thường xuyên.

Dù sao thì bạn cũng phải cân nhắc chi phí của việc tự làm việc này, ngay cả khi không có findAndModify . Đối với mỗi lần chèn, bạn sẽ cần thêm một truy vấn. Hãy tưởng tượng có một id duy nhất mà bạn phải truy vấn tính duy nhất của mỗi lần bạn muốn chèn. Cuối cùng, tỷ lệ chèn của bạn sẽ giảm xuống mức thu thập thông tin và thời gian khóa của bạn sẽ tăng lên.

Tất nhiên là ObjectId thực sự giỏi trong việc trở thành duy nhất mà không cần phải kiểm tra hoặc hình thành tính độc đáo của riêng nó bằng cách chạm vào cơ sở dữ liệu trước khi chèn, do đó nó không có chi phí này.

Nếu bạn vẫn cảm thấy một số nguyên _id phù hợp với kịch bản của mình, thì hãy tiếp tục, nhưng hãy nhớ đến chi phí được mô tả ở trên.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ dayOfYear

  2. loại bỏ _id khỏi kết quả mongo

  3. Model.find (). ToArray () tuyên bố không có phương thức .toArray ()

  4. Trợ giúp về biểu mẫu Rails + MongoMapper + EmbeddedDocument

  5. Những cân nhắc cơ bản khi sao lưu MongoDB