Tôi không phải là chuyên gia về couchdb, nhưng sau khi thực hiện một nghiên cứu nhỏ, đây là những gì tôi đã tìm thấy.
Câu trả lời đơn giản là sử dụng UUID trừ khi bạn có lý do chính đáng.
Câu trả lời còn là, nó phụ thuộc vào:
Chi phí của việc thay đổi ID Vs Làm thế nào có khả năng ID là thay đổi
chi phí thấp thay đổi và khả năng thay đổi ID
Một ví dụ trong số này có thể là một blog có thiết kế không chuẩn hóa như jchris' blog (sofa code available on git hub).
Mỗi lần một trang web khác liên kết đến bài đăng blog, đây là một tham chiếu khác cho id, vì vậy chi phí thay đổi id tăng.
chi phí cao của việc thay đổi ID và ID đó sẽ không bao giờ thay đổi
Một ví dụ của việc này là bất kỳ thiết kế DB đó là rất bình thường mà sử dụng ID auto-increment. Stackoverflow.com là một ví dụ tốt với ID câu hỏi tự động gia tăng mà bạn thấy trong mọi URL. Chi phí thay đổi ID là rất cao vì mỗi khóa ngoại sẽ cần được cập nhật.
Có bao nhiêu tham chiếu hoặc "khóa ngoại" (trong ngôn ngữ DB quan hệ) sẽ có id?
Bất kỳ "khóa ngoại" nào sẽ làm tăng đáng kể chi phí thay đổi ID. Phải cập nhật các tài liệu khác là một hoạt động chậm và chắc chắn nên tránh.
ID có thể thay đổi như thế nào?
Nếu bạn không muốn sử dụng UUID, có thể bạn đã có ý tưởng về ID nào bạn muốn sử dụng.
Nếu có khả năng thay đổi, chi phí thay đổi ID phải thấp. Nếu không, hãy chọn một ID khác.
Động lực của bạn khi muốn sử dụng ID dễ nhớ là gì?
Đừng nói hiệu suất.
Benchmarks show rằng "tra cứu chính của chế độ xem CouchDB gần như, nhưng không hoàn toàn, nhanh như tra cứu tài liệu trực tiếp". Điều này có nghĩa là phải tìm kiếm để tìm một bản ghi không phải là vấn đề lớn. Không chọn id thân thiện chỉ vì bạn có thể thực hiện tra cứu trực tiếp trên tài liệu.
Bạn sẽ thực hiện nhiều thao tác chèn hàng loạt?
Nếu vậy, tốt hơn nên sử dụng UUID gia tăng để có hiệu suất tốt hơn.
Xem điều này post về chèn số lượng lớn. Damien Katz bình luận và nói:
"Nếu bạn muốn có nhanh nhất lần chèn có thể, bạn nên cung cấp cho giá trị tăng dần của _id, do đó, có một UUID và tăng nó bằng 1, như vậy nó luôn luôn chèn vào cùng một địa chỉ trong chỉ mục và được lưu vào bộ nhớ cache thân thiện khi bạn đang xử lý các tệp lớn hơn RAM.Để dễ dàng hơn cách thực hiện tương tự, chỉ cần liên tục ghi số tài liệu đó là . đệm như vậy mà chúng sắp xếp chính xác, "0000001" thay vì "1" chẳng hạn. "
Câu trả lời này dường như được soạn trên quan điểm cho rằng cuộc xung đột tránh phải lúc nào cũng mong muốn; tuy nhiên, đôi khi xung đột là một phần tự nhiên của miền vấn đề và thay vì chỉ đơn giản là tránh được, chúng phải chủ động được phát hiện và giải quyết. Trong những trường hợp như vậy, ID tự nhiên là một lựa chọn tuyệt vời. Ví dụ: không sử dụng tiêu đề của bài đăng trên blog làm ID trên hệ thống nhiều người dùng, nhưng hãy sử dụng tên miền và địa chỉ IP đầy đủ khi lập mô hình bản ghi địa chỉ DNS. – user359996
Bài viết này giải thích rõ tác động của UUID ngẫu nhiên lên hiệu suất của CouchDB http://blog.inoi.fi/2010/11/impact-of-document-ids-on-performance.html – Lebugg
Có sử dụng CouchDB trong nhiều nguồn mở và thương mại khác nhau dự án, tôi hoàn toàn không đồng ý với câu trả lời này. Nó hoàn toàn bỏ qua cách ID hoạt động trong Couch (không thay đổi, được sử dụng để phân loại, phải là duy nhất trên toàn bộ DB, ý nghĩa cho sao chép, v.v.). – theDmi