2011-09-22 45 views
6

Đây là lần đầu tiên tôi phát triển một ứng dụng sẽ được sử dụng bởi 10-15 người đồng thời tôi không chắc chắn về cách tốt nhất để giảm thiểu xung đột cập nhật.Xử lý môi trường nhiều người dùng

Về cơ bản, ứng dụng của tôi hoạt động như sau. Các mục mới được chèn vào cơ sở dữ liệu thông qua một dịch vụ bên ngoài khi chúng nhận được. Quy tắc kinh doanh cho biết rằng mỗi mục sẽ được xem xét bởi hai nhân viên độc lập. Không cần phải nói, có mối quan hệ một-nhiều giữa mục và bài đánh giá. khía cạnh quan trọng nhất của ứng dụng là không có mục nào có thể vượt quá hai bài đánh giá và hệ thống phải theo dõi ai là hai người đánh giá. Ngoài ra, người đóng vai trò là người đánh giá đầu tiên và thứ hai.

Bây giờ, tôi có mọi thứ hoạt động. Vấn đề tôi đang giải quyết là vấn đề này (một trong nhiều kịch bản tương tự). Điều gì sẽ xảy ra nếu tất cả người dùng làm mới danh sách mặt hàng của họ trong vòng 5 phút của nhau. Người dùng 1 gửi đánh giá cho id mục 1. Người thứ hai gửi bài đánh giá trên cùng một mục. Bây giờ người thứ ba gửi đánh giá về id mặt hàng 1 nhưng đã có 2 bài đánh giá để mục đã được đánh dấu là hoàn thành.

Có những cách nào để giải quyết môi trường đa người dùng khi có khả năng tuyệt vời nhiều người dùng cập nhật cùng một bản ghi?

Trả lời

7

Tôi không biết các chi tiết của ứng dụng của bạn, nhưng nó có vẻ như quá trình thực hiện một xét mở rộng các cửa sổ, nơi nhiều folks có thể bắt đầu xem xét lại và sau đó khi họ cam kết nó kết thúc lên hơn hai,

Một tùy chọn là giới thiệu khái niệm bắt đầu đánh giá. Khi ai đó bắt đầu hành động thực hiện đánh giá, họ "bắt đầu" đánh giá. Điều đó đánh dấu việc xem xét khi bắt đầu. Hệ thống không nên để nhiều hơn hai bắt đầu.

Bạn cũng có thể cải tiến nâng cao hơn bằng cách đặt thời gian cho các bài đánh giá rằng chúng tôi không bao giờ "gửi" hoặc có khả năng xóa đánh giá đang chờ xử lý đã bắt đầu.

+0

tương tự như khái niệm check-in/check out như bạn sẽ tìm thấy trong điều khiển nguồn – cordialgerm

5

Nhibernate có các mô hình concurreny khác nhau mà bạn triển khai trong dự án của mình dựa trên nhu cầu của bạn.

Có một cái nhìn tại NHibernate-Concurrency

+1

một vấn đề với đồng thời về việc thực hiện đánh giá là người đánh giá mất toàn bộ thời gian để viết đánh giá. – bryanmac

+0

Chính xác .so phụ thuộc vào nhu cầu của dự án. Bất kỳ ai cũng có thể ghi đè thay đổi hoặc ngăn dữ liệu cập nhật nếu có sửa đổi. –

+0

Đồng ý. Tôi nghĩ rằng có ai đó có thể viết một đánh giá đầy đủ chỉ để từ chối viết viết bảo vệ bởi concurrency là một kinh nghiệm xấu. 2 xu của tôi mặc dù về mặt kỹ thuật chính xác. – bryanmac

Các vấn đề liên quan