Tôi cần chia sẻ dữ liệu giữa hai ứng dụng Java chạy trên cùng một máy (hai JVM khác nhau). Tôi chính xác rằng dữ liệu được chia sẻ là lớn (khoảng 7 GB). Các ứng dụng phải truy cập dữ liệu rất nhanh vì chúng phải trả lời các truy vấn đến với tốc độ rất cao. Tôi không muốn các ứng dụng giữ từng bản sao dữ liệu.Các tệp được ánh xạ trên bộ nhớ: ưu và nhược điểm?
Tôi đã thấy rằng một tùy chọn là sử dụng các tệp được ánh xạ trên bộ nhớ. Ứng dụng A nhận dữ liệu từ đâu đó (giả sử một cơ sở dữ liệu) và lưu trữ nó trong các tệp. Sau đó, ứng dụng B có thể truy cập các tệp này bằng cách sử dụng java.nio
. Tôi không biết chính xác cách thức các tệp ánh xạ bộ nhớ hoạt động, tôi chỉ biết rằng dữ liệu được lưu trữ trong một tệp và tệp này (hoặc một phần của nó) được ánh xạ tới một vùng của bộ nhớ (bộ nhớ ảo?). Vì vậy, hai ứng dụng có thể đọc-ghi dữ liệu trong bộ nhớ và những thay đổi được tự động (tôi đoán?) Cam kết tập tin. Tôi cũng không biết liệu có kích thước tối đa cho một tệp được ánh xạ hoàn toàn trong bộ nhớ hay không.
Câu hỏi đầu tiên của tôi là khả năng chia sẻ dữ liệu trong kịch bản này là bao nhiêu? Tôi chính xác rằng câu hỏi này không liên quan đến I/O được ánh xạ bộ nhớ, nó chỉ để biết những cách khác để giải quyết cùng một vấn đề.
Câu hỏi thứ hai của tôi là ưu và khuyết điểm của việc sử dụng các tệp ánh xạ bộ nhớ là gì?
Cảm ơn
thể u cũng cung cấp chi tiết, làm thế nào chính xác bạn muốn sử dụng bộ nhớ file ánh xạ? – DarthVader
Tôi thấy câu hỏi không phải là về việc kích hoạt một số hành động trong chương trình khác. Nếu vậy Tại sao không phải là một cơ sở dữ liệu chung để chia sẻ dữ liệu? –
@Pangea Tôi có các ràng buộc về thời gian truy cập, các ứng dụng phải truy cập dữ liệu nhanh chóng. –