2010-09-27 33 views
15

Tôi đã sử dụng NHibernate một thời gian, tôi vẫn tự hỏi sự khác biệt giữa các Nhà cung cấp bộ nhớ cache cấp hai là gì?Nhà cung cấp bộ nhớ Cache cấp 2 NHibernate Sự khác biệt

  • Làm một số hoạt động tốt hơn \ tồi tệ hơn?
  • Phổ biến là gì và tại sao?

Để rõ ràng tôi đang nói về:

  • NHibernate.Caches.MemCache
  • NHibernate.Caches.Prevalence
  • NHibernate.Caches.SharedCache
  • NHibernate.Caches.SysCache
  • NHibernate.Caches.SysCache2
  • NHibernate.Caches.Velocity

và tôi chắc chắn có những người khác.

Cảm ơn

Trả lời

12

So sánh các nhà cung cấp bộ nhớ cache một cách hiệu quả nắm để so sánh memcached vs tỷ lệ vs Velocity, vv, và đó là không thực sự liên quan đến NHibernate.

Dưới đây là một số lý do (không phải là một danh sách đầy đủ) để chọn một trong những người khác:

Nếu bạn muốn giữ nó đơn giản và không chạy ứng dụng của bạn trong một trang trại, bạn có thể muốn sử dụng SysCache/Prevalence, chạy trong proc. Nếu bạn sử dụng MS SQL Server, hãy sử dụng SysCache2.

Nếu bạn cần bộ nhớ cache lớn trên nhiều máy chủ chuyên dùng bộ nhớ cache, bạn có thể muốn sử dụng memcached, có thể chạy trên Linux để tránh chi phí cấp phép.

Nếu ứng dụng của bạn chạy trên Azure hoặc đã sử dụng AppFabric, bạn có thể muốn sử dụng Vận tốc.

Cá nhân tôi thích tự lưu bộ nhớ đệm ở mức cao hơn truy cập dữ liệu (chỉ khi thật cần thiết), để làm cho bộ nhớ đệm trở nên có chủ ý và có ý nghĩa hơn chỉ thực thể và nắm lấy nhiều hơn truy cập dữ liệu trong bộ nhớ cache. Trong một hệ thống được thiết kế phù hợp, bộ nhớ đệm có thể dễ dàng minh bạch bằng cách sử dụng trang trí hoặc proxy.

+0

Tôi không đồng ý với đoạn đầu tiên. Một số kịch bản có thể là địa ngục mà không cần bộ nhớ đệm, bất kể bạn mã hóa chúng như thế nào. Và thay thế thường là một số hình thức bộ nhớ đệm thủ công, thường là tồi tệ hơn cho kiến ​​trúc. –

+0

@Diego: được cấp, đó là một điểm đáng tranh cãi. Tôi thích làm "lưu bộ nhớ cache thủ công" trong lớp cao hơn để nắm lấy nhiều hơn truy cập dữ liệu trong bộ nhớ cache (ví dụ: các dịch vụ xử lý/dịch vụ web nặng). Bộ nhớ đệm thủ công này là 99% thời gian trang trí hoặc proxy, vì vậy nó không thêm quá nhiều chi phí vào kiến ​​trúc. –

+0

@Diego: BTW điều này sẽ làm cho một chủ đề tuyệt vời cho một bài đăng blog "NH cấp 2 bộ nhớ cache: nó là gì và khi nào/tại sao/làm thế nào để áp dụng nó" ;-) –

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