Tôi đang cố gắng quyết định phương pháp tốt nhất cho CouchApp (không có phần mềm trung gian). Vì có những điểm tương đồng với ý tưởng của tôi, giả sử chúng ta có một trang stackoverflow được lưu trữ trong CouchDB. Về bản chất nó bao gồm các câu hỏi thực tế trên đầu trang, câu trả lời và hoa hồng. Đó là cơ bản ba lớp.CouchDB: Tài liệu đơn lẻ và tài liệu "ghép nối" với nhau
Có hai cách để lưu trữ. Hoặc trong một tài liệu chứa biểu diễn JSON phù hợp của dữ liệu hoặc lưu trữ từng phần của mục nhập trong một tài liệu riêng biệt kết hợp chúng sau này qua một chế độ xem (tương tự như sau: http://www.cmlenz.net/archives/2007/10/couchdb-joins)
Bây giờ, cả hai cách tiếp cận có thể ổn, nhưng cả hai đều có nhược điểm lớn từ quan điểm hiện tại của tôi. Lưu trữ một tài liệu bận rộn (nhiều thay đổi thông qua nhiều người dùng được mong đợi) như là một thực thể signle sẽ gây ra xung đột xảy ra. Nếu người dùng A lưu trữ các thay đổi của anh ta/cô ấy đối với tài liệu, người dùng B sẽ nhận được lỗi xung đột khi anh/cô ấy hoàn tất việc nhập cập nhật của anh ấy/cô ấy. Tôi có thể tưởng tượng có thể sửa lỗi này mà không có kiến thức của người dùng thông qua việc tải xuống lại tài liệu trước khi thử lại.
Nhưng nếu tài liệu là khá lớn thì sao? Tôi sẽ loại trừ chúng để trở nên khá nổi lên theo thời gian mà sẽ gây ra một số chậm trễ đáng chú ý trong quá trình lưu, đặc biệt nếu quá trình thử lại phải xảy ra nhiều lần do nhiều người dùng cập nhật tài liệu cùng một lúc.
Một vấn đề khác mà tôi thấy là chỉnh sửa. Mọi người dùng đều được phép chỉnh sửa đóng góp của mình. Bây giờ, nếu chúng được lưu trữ trong một tài liệu có thể khó viết một trình xử lý auth solid.
Ok, bây giờ hãy xem xét cách tiếp cận nhiều tài liệu. Câu hỏi, câu trả lời và nhận xét sẽ được lưu trữ trong tài liệu của riêng họ. Ưu điểm: chỉ chủ sở hữu thực sự của tài liệu mới có thể gây xung đột, điều gì đó sẽ không xảy ra quá thường xuyên. Là những yếu tố khá nhỏ của toàn bộ, việc tải xuống lại sẽ không tốn nhiều thời gian. Hơn nữa thói quen auth nên khá dễ nhận ra.
Bây giờ, đây là nhược điểm. Các tài liệu duy nhất là thực sự dễ dàng để truy vấn và hiển thị. Có rất nhiều đoạn trích không được sắp xếp nằm xung quanh dường như là một điều lộn xộn vì tôi không thực sự có được cái nhìn thực tế để trình bày tôi với 100% sẵn sàng sử dụng đối tượng JSON chứa toàn bộ mục theo định dạng có trật tự và có cấu trúc.
Tôi hy vọng tôi đã có thể giao tiếp vấn đề thực tế. Tôi cố gắng quyết định giải pháp nào phù hợp hơn với tôi, những vấn đề nào dễ khắc phục hơn. Tôi tưởng tượng giải pháp đầu tiên là giải pháp đẹp nhất về lưu trữ và truy vấn, nhưng giải pháp thứ hai là giải pháp thực tế hơn có thể giải quyết thông qua quản lý khóa tốt hơn trong chế độ xem (tôi chưa hoàn toàn vào nguyên tắc khóa).
Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn trước :)
Hi Ryan! Cảm ơn rất nhiều vì câu trả lời chi tiết và dễ hiểu của bạn. Bạn đã nói với tôi một số điều tôi chưa biết. Tôi đã quản lý để thực hiện một phiên bản đầu tiên của tùy chọn thứ hai khá nhanh chóng, nhưng sẽ tinh chỉnh nó dựa trên đầu vào của bạn. Cảm ơn rất nhiều! :) –