Có thể trùng lặp:
Viết máy chủ Web Web ứng dụng ít hơn
Vì vậy, giả sử tôi sẽ xây dựng một bản sao Stack Exchange và tôi quyết định sử dụng một cái gì đó như CouchDB làm cửa hàng phụ trợ của mình. Nếu tôi sử dụng xác thực tích hợp và ủy quyền cấp cơ sở dữ liệu, có lý do gì để không cho phép Javascript phía máy khách ghi trực tiếp vào máy chủ CouchDB có sẵn công khai không? Vì về cơ bản, đây là một ứng dụng CRUD và logic nghiệp vụ bao gồm "Chỉ có tác giả mới có thể chỉnh sửa bài đăng của họ" Tôi không thấy cần phải có một lớp giữa nội dung phía máy khách và cơ sở dữ liệu. Tôi chỉ đơn giản là sử dụng xác thực ở phía CouchDB để đảm bảo ai đó không đưa dữ liệu rác vào và đảm bảo rằng các quyền được đặt đúng để người dùng chỉ có thể đọc dữ liệu _user của riêng họ. Việc kết xuất sẽ được thực hiện phía máy khách bằng một cái gì đó như AngularJS. Về bản chất, bạn chỉ cần có một máy chủ CouchDB và một loạt các trang "tĩnh" và bạn sẽ ổn. Bạn sẽ không cần bất kỳ loại xử lý phía máy chủ nào, chỉ cần thứ gì đó có thể phục vụ các trang HTML.
Mở cơ sở dữ liệu của tôi ra thế giới có vẻ sai, nhưng trong kịch bản này, tôi không thể nghĩ tại sao miễn là quyền được đặt đúng. Nó đi ngược lại bản năng của tôi là một nhà phát triển web, nhưng tôi không thể nghĩ ra một lý do chính đáng. Vì vậy, tại sao đây là một ý tưởng tồi?
EDIT: Có vẻ như có một cuộc thảo luận tương tự ở đây: Viết các ứng dụng "máy chủ ít hơn"
EDIT: Thảo luận tuyệt vời cho đến nay, và tôi đánh giá cao phản hồi của mọi người! Tôi cảm thấy mình nên thêm một vài giả định chung chung thay vì gọi CouchDB và AngularJS một cách cụ thể. Vì vậy, hãy giả sử rằng:
- Cơ sở dữ liệu có thể xác thực người dùng trực tiếp từ cửa hàng ẩn của nó
- Tất cả các giao tiếp cơ sở dữ liệu sẽ xảy ra qua SSL
- Xác thực dữ liệu có thể (nhưng có lẽ không nên?) Được xử lý bởi cơ sở dữ liệu
- Ủy quyền duy nhất chúng tôi quan tâm ngoài các chức năng quản trị viên là ai đó chỉ được phép chỉnh sửa bài đăng của riêng họ
- Chúng tôi hoàn toàn ổn với mọi người có thể đọc tất cả dữ liệu (hồ sơ người dùng EXCEPT có thể chứa băm mật khẩu)
- Chức năng quản trị sẽ bị hạn chế bởi ủy quyền cơ sở dữ liệu
- Không ai có thể tự thêm vai trò quản trị viên
- Cơ sở dữ liệu tương đối dễ dàng để mở rộng quy mô
- Có rất ít hoặc không có logic kinh doanh thực sự; đây là một ứng dụng CRUD cơ bản
DELETE FROM ImportantData;