Có thực tế không khi thiết lập cơ sở dữ liệu 100 TB (thực tế khoảng 90 TB) trên PostgreQuery mà không cần bảo vệ dữ liệu giữa một số nút? Có câu chuyện / ví dụ thành công nào về các thiết lập tương tự không?
Có thực tế không khi thiết lập cơ sở dữ liệu 100 TB (thực tế khoảng 90 TB) trên PostgreQuery mà không cần bảo vệ dữ liệu giữa một số nút? Có câu chuyện / ví dụ thành công nào về các thiết lập tương tự không?
Câu trả lời:
50K viết mỗi giây cần được hấp thụ nhiều hơn một thách thức thường. Ngay cả trong các điểm chuẩn tổng hợp có chèn khá đơn giản, giới hạn của PostgreSQL có xu hướng tối đa khoảng 10 K / s - và ở đó bạn thậm chí không có một con thú lớn như vậy về kích thước cơ sở dữ liệu.
Ngoài ra, hệ thống I / O cho nút PostgreSQL duy nhất đó sẽ rất thú vị vì ngay cả với RAID 10 và giả sử rằng các phần chèn 50K sẽ chỉ bằng 50K IOPS (có thể sai, nhưng nó phụ thuộc vào sơ đồ và chỉ mục cơ sở dữ liệu của bạn ), bạn sẽ cần khoảng một trăm đĩa được ghép nối với một mảng rất tốt giúp bạn tiết kiệm từ việc mua hàng trăm đĩa để phục vụ việc ghi kịp thời.
Nếu shending là dễ dàng và bạn mong đợi một tải ghi lớn như vậy thì hãy đi shending. Viết có thể rất khó để mở rộng quy mô.
Đó là thực tế và sẽ làm việc. Hiệu suất lớn hơn phụ thuộc vào lượng RAM bạn có. RAM càng lớn, bộ đệm càng lớn và PostgreSQL càng dài có thể lưu trữ dữ liệu trước khi giảm tải vào đĩa.
PostgreSQL sẽ ghi dữ liệu vào bộ đệm và thỉnh thoảng giảm bộ nhớ cache. Vì vậy, 50k INSERT mỗi giây sẽ không được dịch thành 50k IOPS. Nó sẽ ít hơn, bởi vì nó sẽ nhóm các bản ghi lại với nhau và viết tất cả chúng cùng một lúc.
Một cơ sở dữ liệu lớn không phải là vấn đề nếu phần lớn công việc là INSERT. PostgreSQL sẽ phải thay đổi các chỉ mục ở đây và đó, nhưng đó thực sự là một công việc dễ dàng. Nếu bạn có nhiều CHỌN trên cơ sở dữ liệu kích thước này, bạn sẽ thực sự cần phải hủy bỏ.
Tôi đã từng làm việc trên Oracle DB (Oracle 10g) với 400TB trên máy chủ 16 GB, chỉ một trường hợp. Khối lượng công việc của cơ sở dữ liệu cũng là các INSERT chính, do đó, một vài CHỌN mỗi ngày và hàng triệu INSERT mỗi ngày. Hiệu suất không phải là một vấn đề.
Với 100TB bạn có một số thách thức quan trọng. Việc nó sẽ làm việc cho bạn hay không phụ thuộc vào cách bạn muốn giải quyết những điều này.
Bạn cần đủ cách để hấp thụ tải ghi. Điều này phụ thuộc vào tải ghi. Nhưng với lưu trữ đủ tuyệt vời, nó có thể được giải quyết. Vận tốc là một vấn đề lớn ở đây. Tương tự đọc truy cập phải được xem xét cẩn thận.
Hầu hết các cơ sở dữ liệu không bao gồm một loạt các bảng nhỏ nhưng thường có một hoặc hai bảng thực sự lớn, có thể lên đến một nửa kích thước db. PostgreSQL có giới hạn cứng là 32TB mỗi bảng. Sau đó, loại tid chạy ra khỏi quầy trang. Điều này có thể được xử lý bằng bản dựng tùy chỉnh của PostgreSQL hoặc bằng cách phân vùng bảng nhưng đây là một thách thức nghiêm trọng cần được giải quyết lúc đầu.
PostgreSQL có giới hạn thực sự về dung lượng RAM có thể sử dụng cho các tác vụ khác nhau. Vì vậy, có nhiều RAM hơn có thể hoặc không thể giúp bạn vượt quá một điểm nhất định.
Sao lưu .... Sao lưu rất thú vị ở quy mô này. Db 60TB mà tôi biết đã phải sử dụng các bản sao lưu ảnh chụp nhanh fs và sau đó giả mạo các bản sao lưu cho barman để lưu trữ wal. Những bản sao lưu giả này là proxy cho bản sao lưu ảnh chụp nhanh fs. Như tôi đã nói "Chúng không phải là bản sao lưu giả. Chúng là bản sao lưu thay thế!"
Có những người có cơ sở dữ liệu tiếp cận phạm vi này. Tôi đã gặp ít nhất một cá nhân làm việc cho một ngân hàng ở Hà Lan có cơ sở dữ liệu PostgreQuery 60TB. Tuy nhiên, nó thực sự, thực sự phụ thuộc vào khối lượng công việc và kích thước của bạn không phải là vấn đề.