Có những giới hạn lý thuyết, như tôi sẽ trình bày bên dưới, nhưng ngay cả giới hạn dưới cũng là khá cao. Không dễ dàng để tính toán các giới hạn một cách chính xác, nhưng thứ tự độ lớn phải đủ.
mmapv1
Giới hạn thực tế phụ thuộc vào một số yếu tố như độ dài của các tên phân đoạn và các tên giống nhau (tổng cộng nếu bạn có vài trăm nghìn tên trong số chúng), nhưng đây là một phép tính sơ bộ với dữ liệu thực tế.
Mỗi phân đoạn cần một số không gian trong db cấu hình, được giới hạn như bất kỳ cơ sở dữ liệu nào khác ở mức 32TB trên một máy hoặc trong một tập hợp bản sao. Trên các máy chủ mà tôi quản lý, kích thước trung bình của một mục nhập trong config.shards
là 112 byte. Hơn nữa, mỗi đoạn cần khoảng 250 byte thông tin siêu dữ liệu. Hãy để chúng tôi giả định kích thước phân đoạn tối ưu là gần 64MB.
Chúng tôi có thể có tối đa 500.000 khối trên mỗi máy chủ. 500.000 * 250byte tương đương với 125 MB cho thông tin phân đoạn trên mỗi phân đoạn. Vì vậy, mỗi phân đoạn, chúng tôi có 125.000112 MB mỗi phân đoạn nếu chúng tôi tối đa hóa mọi thứ. Chia 32TB cho giá trị đó cho chúng ta thấy rằng chúng ta có thể có tối đa dưới 256.000 mảnh trong một cụm.
Mỗi phân đoạn lần lượt có thể chứa 32TB dữ liệu. 256.000 * 32TB là 8.19200 exabyte hoặc 8.192.000 terabyte. Đó sẽ là giới hạn cho ví dụ của chúng tôi.
Giả sử 8 exabyte của nó. Hiện tại, điều này có thể dễ dàng được dịch thành "Đủ cho mọi mục đích thực tế". Để bạn có ấn tượng:Tất cả dữ liệu do Thư viện Quốc hội Hoa Kỳ (được cho là một trong những thư viện lớn nhất trên thế giới về quy mô bộ sưu tập) chứa một lượng dữ liệu ước tính có kích thước khoảng 20TB bao gồm cả âm thanh, video và tài liệu kỹ thuật số. Bạn có thể đưa nó vào cụm MongoDB lý thuyết của chúng tôi khoảng 400.000 lần. Lưu ý rằng đây là giới hạn dưới của kích thước tối đa, sử dụng các giá trị thận trọng.
WiredTiger
Phần tốt là:Công cụ lưu trữ WiredTiger không có giới hạn này:Kích thước cơ sở dữ liệu không bị giới hạn (vì không có giới hạn về số lượng tệp dữ liệu có thể được sử dụng), vì vậy chúng tôi có thể có số lượng phân đoạn không giới hạn. Ngay cả khi chúng tôi có các phân đoạn đó chạy trên mmapv1 và chỉ máy chủ cấu hình của chúng tôi trên WT, kích thước của a trở nên gần như không giới hạn - giới hạn 16,8M TB RAM trên hệ thống 64 bit có thể gây ra sự cố ở đâu đó và gây ra các chỉ số của mã <> config.shard bộ sưu tập được hoán đổi vào đĩa, làm đình trệ hệ thống. Tôi chỉ có thể đoán, vì máy tính của tôi từ chối làm việc với các số trong khu vực đó (và tôi quá lười để làm điều đó bằng tay), nhưng tôi ước tính giới hạn ở đây trong khu vực yottabyte hai chữ số (và không gian cần thiết để lưu trữ nó ở đâu đó ở quy mô của Texas).
Kết luận
Đừng lo lắng về kích thước dữ liệu tối đa trong môi trường bị phân đoạn. Không có vấn đề gì, nó là đủ xa, ngay cả với cách tiếp cận thận trọng nhất. Sử dụng sharding, và bạn đã hoàn tất. Btw:ngay cả 32TB cũng là rất nhiều dữ liệu:Hầu hết các cụm mà tôi biết đều chứa ít dữ liệu và phân đoạn hơn vì việc sử dụng IOPS và RAM đã vượt quá dung lượng một nút.