Cơ sở dữ liệu 100 terabyte trên PostgreSQL mà không cần shending


9

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?


4
Tôi tưởng tượng nó phụ thuộc vào khối lượng công việc của bạn. Dữ liệu được phân phối như thế nào và nó sẽ được truy vấn như thế nào? Bạn cần loại thời gian đáp ứng nào?
Nông dân Frank

Chà, cấu hình tải có thể được mô tả là chèn thường xuyên (khoảng 50K mỗi giây ở mức cao nhất), các lựa chọn tương đối hiếm khi (phạm vi hàng theo người dùng và dấu thời gian). Dữ liệu có thể dễ dàng được phân chia / phân vùng bởi người dùng và ngày / dấu thời gian

Câu trả lời:


9

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ô.


Đồng ý. Đây là miền của hệ thống loại ExaData. Điều đó thật đáng buồn, việc kiếm được 50 nghìn IOPS ngày nay khá tầm thường với SSD - otoh những thứ này sẽ rất tốn kém. Tôi sẽ mong đợi một ngân sách 7 chữ số lớn hơn ở đây cho phần cứng, bao gồm cả SAN tầm trung đến cao cấp.
TomTom

Có, ExaData là một tùy chọn nếu bạn muốn sử dụng "ngăn xếp giải pháp tích hợp theo chiều dọc", điều này có lẽ không tệ khi xem xét các yêu cầu.
pfo

Vâng. Có những lợi thế nghiêm trọng cho một cái gì đó như thế, cả hai, 100tb cũng như 50.000 iops không thực sự hét lên "giá rẻ". Exadata làm gì - 1 triệu IOPS khi được nạp đầy đủ SSD?
TomTom

2
Để thêm vào những nhận xét này, tôi nghĩ rằng với ngân sách cần có để có được khối lượng dữ liệu đó với khối lượng chèn đó, tôi sẽ muốn sử dụng một công cụ SQL trả tiền, nó sẽ chiếm một tỷ lệ nhỏ trong tổng ngân sách và bạn Sẽ có sự hỗ trợ tốt hơn nhiều.
Chopper3

Tôi hoàn toàn đồng ý. Thời điểm ngân sách của bạn cho SAN đạt được vài trăm ngàn thay đổi định giá.
TomTom

1

Đó 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 đề.


1

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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 đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.