2011-12-14 5 views
9

Có một thực hiện Java hiệu quả của một lưu trữ giá trị khóa hệ thống tập tin dựa trên với các tính năng sau:Java dựa trên đĩa lưu trữ giá trị khóa

  1. Store, ghi đè lên, và lấy mảng byte bằng một ID duy nhất (có thể được chỉ định bởi các lưu trữ)
  2. Không có bộ nhớ bộ nhớ đệm (đọc phương tiện đọc từ hệ thống tập tin, hãy viết các phương tiện ghi vào hệ thống tập tin ngay lập tức)
  3. Toàn bộ dữ liệu kích thước lên đến vài terabyte
  4. số đối tượng được lưu trữ lên đến hàng trăm hàng triệu
  5. Số lượng đối tượng hệ thống tệp có thể quản lý (để di chuyển/sao chép/xóa toàn bộ dung lượng trên hệ thống tệp)

Berkeley DB JE?

+0

tại sao sự ác cảm đối với nhiều đối tượng hệ thống tệp? Điều này khá dễ quản lý nếu bạn bỏ yêu cầu đó. Hoặc heck, bạn có thể chỉ cần sử dụng SQLITE – wowest

+0

Tôi chắc chắn sẽ không mong đợi SQLite để quy mô tốt để "một vài terabyte". – Gray

+0

Berkeley DB JE chắc chắn sẽ nằm trong danh sách những thứ tôi muốn thử nếu không có gì khác. Tôi nghĩ rằng một cơ sở dữ liệu SQL sẽ chậm hơn. Tôi không thể tưởng tượng làm một di chuyển/sao chép/xóa các tập tin kích thước terabyte mặc dù. – Gray

Trả lời

3

Chỉ cần định dạng phân vùng chuyên dụng với hệ thống tệp bạn chọn? Hệ thống tệp sẽ đáp ứng các yêu cầu 1-4 và yêu cầu 5 có thể được đáp ứng bằng cách di chuyển/sao chép hoặc xóa phân vùng đó.

+0

Ngay sau khi kích thước dữ liệu là "terabyte" và khóa một khóa ID, tôi đã suy nghĩ tương tự. Không biết về tham chiếu Java một cách dễ dàng, nhưng mọi máy chủ email trong bộ nhớ gần đây (exim, postfix, sendmail, qmail) đều hoạt động như thế này, tôi tin. – BRFennPocock

1

Tôi đề xuất MapDB, MapDB cung cấp Bản đồ đồng thời, Bộ và Hàng đợi được hỗ trợ bởi bộ nhớ đĩa hoặc bộ nhớ ngoài bộ nhớ. Nhẹ và có thể tấn công.