Sử dụng Java Tôi muốn tạo Bản đồ có thể phát triển và phát triển và có khả năng lớn hơn kích thước bộ nhớ có sẵn. Bây giờ rõ ràng bằng cách sử dụng một tiêu chuẩn POJO HashMap chúng tôi sẽ hết bộ nhớ và JVM sẽ sụp đổ. Vì vậy, tôi đã suy nghĩ dọc theo các dòng của một bản đồ rằng nếu nó trở nên nhận thức của bộ nhớ chạy thấp, nó có thể ghi các nội dung hiện tại vào đĩa.Tạo một Bản đồ rất, rất lớn trong Java
Có ai đã triển khai bất kỳ điều gì như thế này hoặc biết về bất kỳ giải pháp hiện có nào không?
Những gì tôi đang cố gắng làm là đọc một tệp ASCII rất lớn (nói 50Gb) một dòng tại một thời điểm. Mỗi dòng chứa một khóa và một giá trị. Các khóa có thể được sao chép trong tệp. Sau đó, tôi sẽ lưu trữ mỗi dòng trong một Bản đồ, đó là Khóa đến một Danh sách các giá trị. Bản đồ này là đối tượng sẽ phát triển và phát triển.
Bất kỳ lời khuyên nào được đánh giá cao.
Phil
Cập nhật:
Cảm ơn tất cả các ý kiến và lời khuyên tất cả mọi người. Với vấn đề mà tôi mô tả, Cơ sở dữ liệu là giải pháp đúng, có thể mở rộng. Tôi nên nói rằng đây là một Bản đồ tạm thời cần được tạo và sử dụng trong một khoảng thời gian ngắn để hỗ trợ việc phân tích cú pháp một tệp. Trong trường hợp này, đề xuất của Michael là "chỉ lưu trữ số dòng thay vì giá trị thực tế" là thích hợp nhất. Đánh dấu (các) câu trả lời của Michael là giải pháp được đề xuất.
sẽ không đơn giản hơn để sử dụng cơ sở dữ liệu trong bộ nhớ như HSQL? – mcfinnigan
Bạn đang ánh xạ loại khóa/giá trị nào? –
Tôi không quan tâm đến phương pháp tiếp cận cơ sở dữ liệu. Nó quá nặng. – Phil