2008-09-18 33 views
19

Không bao giờ sử dụng bộ nhớ cache như thế này trước đây. Vấn đề là tôi muốn tải 500.000 + hồ sơ ra khỏi cơ sở dữ liệu và thực hiện một số lựa chọn/lọc nhanh chóng.OSCache so với EHCache

Tôi đang suy nghĩ về việc sử dụng bộ nhớ cache và tìm thấy sơ bộ EHCacheOSCache, có ý kiến ​​gì không?

+7

Tại sao bạn nghĩ rằng việc sử dụng bộ nhớ cache sẽ nhanh hơn việc chọn/lọc trong cơ sở dữ liệu? Đó là những gì họ làm. :) –

Trả lời

19

Cả hai đều là những dự án khá vững chắc. Nếu bạn có nhu cầu bộ nhớ đệm khá cơ bản, hoặc một trong số chúng có thể sẽ hoạt động tốt như nhau.

Bạn cũng có thể cân nhắc thực hiện lọc trong truy vấn cơ sở dữ liệu nếu có thể. Thông thường, sử dụng truy vấn được điều chỉnh trả về một tập hợp kết quả nhỏ hơn sẽ cho bạn hiệu suất tốt hơn so với tải 500.000 hàng vào bộ nhớ và sau đó lọc chúng.

0

Tôi chủ yếu sử dụng EhCache vì nó từng là nhà cung cấp bộ nhớ cache mặc định cho Hibernate. Có một danh sách các giải pháp lưu trữ trên Java-Source.net.

Tôi đã từng có liên kết so sánh các giải pháp bộ nhớ đệm chính. Nếu tôi tìm thấy nó, tôi sẽ cập nhật câu trả lời này.

5

Loại tùy thuộc vào nhu cầu của bạn. Nếu bạn đang thực hiện công việc trong bộ nhớ trên một máy thì ehcache sẽ hoạt động hoàn hảo, giả sử bạn có đủ RAM hoặc một đĩa cứng đủ nhanh để tràn không gây ra phân trang đĩa/đập. nếu bạn thấy bạn cần đạt được khả năng mở rộng, mặc dù hoạt động cụ thể này diễn ra rất nhiều, thì có thể bạn sẽ muốn thực hiện phân cụm. JGroups/TreeCache từ JBoss hỗ trợ điều này, do đó, hiện EHcache (tôi nghĩ), và tôi biết nó chắc chắn hoạt động nếu bạn sử dụng Ehcache với đất nung, đó là một tích hợp rất trơn. Câu trả lời này không nói trực tiếp đến giá trị của EHcache và OSCache, vì vậy đây là câu trả lời: EHcache dường như có quán tính nhất (được sử dụng để phát triển hoạt động mặc định, nổi tiếng, bao gồm cả máy chủ cache mới) và OSCache (ít nhất là tại một thời điểm) để có nhiều tính năng hơn một chút, nhưng tôi nghĩ rằng với các tùy chọn được đề cập ở trên, những ưu điểm đó là moot/superseded. Ah, điều khác mà tôi quên đề cập đến là giao dịch của dữ liệu là quan trọng và yêu cầu của bạn sẽ tinh chỉnh danh sách các lựa chọn hợp lệ.

2

Dù bằng cách nào, tôi khuyên bạn nên sử dụng chúng với Spring Modules. Bộ nhớ cache có thể trong suốt đối với ứng dụng và việc triển khai bộ nhớ cache rất dễ trao đổi. Ngoài OSCache và EHCache, Spring Modules còn hỗ trợ Gigaspaces và JBoss cache.

Như để so sánh .... OSCache là dễ dàng hơn để cấu hình EHCache có nhiều tùy chọn cấu hình

Cả hai đều đá rắn, cả hai đều hỗ trợ ánh xạ bộ nhớ cache, cả hai làm việc với Terracotta, cả hai hỗ trợ trong bộ nhớ và -disk caching.

3

Câu trả lời khác thảo luận về ưu/khuyết điểm đối với bộ nhớ cache; nhưng tôi tự hỏi liệu bạn có thực sự hưởng lợi từ bộ đệm ẩn không. Nó không phải là khá rõ ràng chính xác những gì bạn có kế hoạch làm ở đây, và lý do tại sao một bộ nhớ cache sẽ có lợi: nếu bạn có dữ liệu thiết lập tại sử dụng của bạn, chỉ cần truy cập đó. Bộ nhớ cache chỉ giúp tái sử dụng mọi thứ giữa các tác vụ độc lập khác. Nếu đây là những gì bạn đang làm, có, bộ nhớ đệm có thể giúp đỡ. Nhưng nếu nó là một nhiệm vụ lớn có thể mang theo bộ dữ liệu của nó, bộ nhớ đệm sẽ không thêm giá trị.

52

Đánh giá bởi releases page, OSCache của chúng tôi đã không được duy trì tích cực từ năm 2007. Đây không phải là điều tốt. EhCache, mặt khác, đang được phát triển liên tục. Vì lý do đó một mình, tôi sẽ chọn EhCache.

Chỉnh sửa tháng 11 năm 2013: OSCache, giống như phần còn lại của OpenSymphony, đã chết.

+5

+1 Đây là một yếu tố rất lớn trong việc quyết định phần mềm nguồn mở nào sử dụng – Richard

+10

http://www.opensymphony.com/ OpenSymphony hiện đã công bố công khai rằng họ đã chết. – Pace

2

Tôi đã sử dụng oscache trên một số dự án mùa xuân với mô-đun mùa xuân, sử dụng cấu hình dựa trên aop.

Gần đây, tôi đã sử dụng mô-đun oscache + spring trên dự án Spring 3.x, nhưng không tìm thấy bộ nhớ đệm dựa trên chú thích mô-đun mùa xuân (ngay cả bởi ngã ba).

thời gian gần đây tôi phát hiện ra về dự án này -

http://code.google.com/p/ehcache-spring-annotations/

nào hỗ trợ 3.x mùa xuân với khai báo bộ nhớ đệm chú thích dựa trên sử dụng ehcache.

5

Chọn bộ nhớ cache tuân thủ JSR 107 sẽ giúp công việc của bạn trở nên dễ dàng khi bạn muốn di chuyển từ một triển khai này sang triển khai khác. Để được cụ thể về câu hỏi đi cho Ehcache đó là phổ biến hơn và sử dụng rộng rãi giải pháp bộ nhớ đệm Java. Chúng tôi đang sử dụng rộng rãi Ehcache và nó hoạt động cho chúng tôi.

0

OSCache là khá nhiều người chết vì nó đã bị bỏ rơi một vài năm trước đây. Bạn có thể xem Cacheonix, nó đã được tích cực phát triển và chúng tôi vừa phát hành v.2.2.2 với sự hỗ trợ cho bộ nhớ đệm trong tầng web. Tôi là người cam kết để bạn có thể liên hệ nếu bạn có bất kỳ câu hỏi nào.

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