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

Phương thức Meteor so với quy tắc từ chối / cho phép

Bình thường tôi cố gắng tránh những câu trả lời chủ quan, nhưng đây là một cuộc tranh luận thực sự quan trọng. Đầu tiên, tôi khuyên bạn nên đọc Phương pháp sao băng so với Thao tác phía máy khách từ blog Discover Meteor. Lưu ý rằng tại Edthena, chúng tôi sử dụng độc quyền các phương pháp vì những lý do cần phải trở nên rõ ràng.

Phương pháp

chuyên nghiệp

  • Các phương thức có thể thực thi chính xác các quy tắc lược đồ và xác nhận có độ phức tạp tùy ý mà không cần thư viện bên ngoài. Lưu ý bên cạnh - séc là một công cụ tuyệt vời để xác thực cấu trúc các đầu vào của bạn.

  • Mỗi phương pháp là một nguồn chân lý duy nhất trong ứng dụng của bạn. Nếu bạn tạo phương thức 'posts.insert', bạn có thể dễ dàng đảm bảo rằng đó là cách duy nhất trong ứng dụng của bạn để chèn bài đăng.

con

  • Các phương thức yêu cầu một phong cách mệnh lệnh và chúng có xu hướng dài dòng liên quan đến số lượng xác thực cần thiết cho một hoạt động.

Hoạt động phía khách hàng

chuyên nghiệp

  • allow / deny có kiểu khai báo đơn giản.

con

  • Xác thực lược đồ và quyền trên update hoạt động là vô cùng khó khăn. Nếu bạn cần thực thi một lược đồ, bạn sẽ cần sử dụng một thư viện bên ngoài như collection2. Chỉ riêng lý do này thôi cũng khiến bạn phải tạm dừng.

  • Các sửa đổi có thể được phổ biến trên toàn bộ ứng dụng của bạn. Do đó, có thể khó xác định lý do tại sao một hoạt động cơ sở dữ liệu cụ thể lại xảy ra.

Tóm tắt

Theo ý kiến ​​của tôi, allow / deny đẹp hơn về mặt thẩm mỹ, tuy nhiên điểm yếu cơ bản của nó là trong việc thực thi các quyền (đặc biệt là trên các bản cập nhật). Tôi muốn giới thiệu các hoạt động phía máy khách trong các trường hợp:

  • Cơ sở mã của bạn tương đối nhỏ - vì vậy, thật dễ dàng để ghi chú cho tất cả các trường hợp có một công cụ sửa đổi cụ thể xuất hiện.

  • Bạn không có nhiều nhà phát triển - vì vậy bạn không cần phải đồng ý rằng chỉ có một và một cách để chèn vào X bộ sưu tập.

  • Bạn có các quy tắc cấp phép đơn giản - ví dụ:chỉ chủ sở hữu tài liệu mới có thể sửa đổi bất kỳ khía cạnh nào của tài liệu.

Theo ý kiến ​​của tôi, sử dụng các hoạt động phía máy khách là một lựa chọn hợp lý khi xây dựng MVP, nhưng tôi sẽ chuyển sang các phương pháp cho tất cả các tình huống khác.

cập nhật 2/22/15

Sashko Stubailo đã tạo một đề xuất để thay thế cho phép / từ chối bằng các phương thức chèn / cập nhật / loại bỏ.

cập nhật 6/1/16

Hướng dẫn sao băng có vị trí mà allow/deny luôn nên tránh.




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

  2. Quy trình công việc dữ liệu lớn sử dụng gấu trúc

  3. ánh xạ trong tạo chỉ mục trong tìm kiếm đàn hồi thông qua sông mongodb không có hiệu lực

  4. MongoDB dropIndexes ()

  5. Mẹo lập kế hoạch lược đồ MongoDB