2009-01-07 55 views
24

Một số địa điểm có trạng thái 2GB. Một số nơi cho biết nó phụ thuộc vào số lượng các nút.Dung lượng lưu trữ của cơ sở dữ liệu Mnesia là gì?

+0

Ví dụ đề xuất giới hạn cao hơn cho 'disc_copies':" Trên máy tính 16 GB, bạn có thể [...] giữ bảng 10 GB + disc_copy in mnesia ", từ http://erlang.org/pipermail /erlang-questions/2005-November/017730.html – legoscia

Trả lời

58

Khá lớn nếu câu hỏi của bạn là "dung lượng lưu trữ của một cơ sở dữ liệu mnesia tạo thành từ một số lượng lớn các disc_only_copies bảng là những gì" - bạn đang chủ yếu bị giới hạn bởi không gian đĩa có sẵn.

Câu hỏi dễ dàng hơn để trả lời là dung lượng tối đa của một bảng loại độc thân thuộc các loại khác nhau. ram_copies bảng bị giới hạn bởi bộ nhớ khả dụng. Các bảng disc_copies bị giới hạn bởi phụ trợ dets của chúng tôi (Hakan Mattsson on Mnesia) - giới hạn này là 4Gb dữ liệu vào lúc này.

Vì vậy, câu trả lời đơn giản là bảng đơn giản disc_copies có thể lưu trữ tối đa 4Gb dữ liệu trước khi chúng gặp sự cố. (Mnesia không thực sự sụp đổ nếu bạn vượt quá giới hạn kích thước trên đĩa - phần ram_copies của bảng tiếp tục chạy, vì vậy bạn có thể sửa lỗi này bằng cách xóa dữ liệu hoặc sắp xếp khác tại thời gian chạy)

Tuy nhiên nếu bạn xem xét các tính năng khác của Mnesia, sau đó câu trả lời phức tạp hơn.

  • local_content bảng. Nếu bảng là một bảng local_content, sau đó nó có thể có nội dung khác nhau trên mỗi nút trong cluster mnesia, nên công suất của bảng là 4Gb * <number of nodes>
  • fragmented tables. Mnesia hỗ trợ phân vùng bảng có thể định cấu hình hoặc phân vùng bằng cách sử dụng các đoạn bảng. Trong trường hợp này, bạn có thể phân phối và phân phối lại dữ liệu trong bảng của bạn một cách hiệu quả trên một số bảng nguyên thủy. Các bảng nguyên thủy này có thể có cấu hình riêng của chúng - nói một bảng ram_copies và các bảng disc_only_copies còn lại. Những bảng nguyên thủy này có cùng giới hạn kích thước như đã đề cập trước đó và bây giờ dung lượng hiệu dụng của bảng phân mảnh là 4Gb * <number of fragments>. (Đáng buồn nếu bạn mảnh bảng của bạn, sau đó bạn phải thay đổi mã truy cập bảng của bạn để sử dụng mnesia:activity/4 thay vì mnesia:write và bạn bè, nhưng nếu bạn có kế hoạch này trước đó là dễ quản lý)
  • external copies Nếu bạn thích sống trên chảy máu cực cạnh, bạn có thể áp dụng các bản vá lỗi mnesiaex cho chứng mất trí nhớ và lưu trữ dữ liệu bảng của bạn trong một hệ thống bên ngoài như Amazon S3 hoặc Tokyo Cabinet. Trong trường hợp này, dung lượng của bảng bị giới hạn bởi bộ nhớ phụ trợ.
+0

Brilliant, câu trả lời tuyệt vời. –

+0

Điều này thật hoàn hảo. Cám ơn rất nhiều. – user52543

+4

Theo như tôi biết dets chỉ có thể xử lý các tệp 2GB không phải 4GB, đó sẽ là giới hạn cho disc_copies. Có một thử nghiệm 64-bit dets có thể xử lý các tập tin lớn hơn nhiều nhưng không có ai đã sử dụng nó trong sản xuất nào được nêu ra. – Happi

5

Theo tài liệu, đây là 4GB. Mục 11,5

http://erlang.org/faq/mnesia.html

+1

Điều này có bị ảnh hưởng bởi số lượng nút không? Liệu Mnesia có phân phối/phân hủy chính nó? – user52543

+0

Nó vẫn là trường hợp của tháng 6 năm 2017 – amirouche

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