Lưu trữ và truy vấn dữ liệu cuộn trong PostgreSQL


11

Tôi có một lượng lớn dữ liệu mô hình thời tiết được đưa vào cơ sở dữ liệu PostgreSQL. Máy có 8 nhân và 16 GB RAM. Tôi đang chạy PostgreSQL 9.3 với PostGIS 2.1. Mỗi bảng sẽ có một loạt dữ liệu thời tiết khác nhau (nhiệt độ, điểm sương, gió, v.v.). Mỗi bảng sẽ có 6-7 cột: vĩ độ, kinh độ, hình học điểm, độ cao, ngày tháng mà mô hình có liên quan và 1-2 giá trị dữ liệu quan tâm. Dữ liệu sẽ được truy vấn chủ yếu cho một khung giới hạn theo thời gian và độ cao. Sẽ có khoảng 145.757.360 hàng trên mỗi bảng (dữ liệu cũ hơn bây giờ không còn phù hợp sẽ bị xóa). Tôi ước tính kích thước của các bảng là khoảng 10 GB mỗi bảng không có chỉ mục. (Đó là 52 byte dữ liệu cộng với 23 byte phí trên mỗi hàng). Dữ liệu sẽ được cập nhật / chèn thường xuyên khi dữ liệu mô hình mới có sẵn. Ghi chú:

Vì vậy, tôi đang xem xét hai kế hoạch này:

  1. Đơn giản chỉ mục và cụm theo (datetime, độ cao) với một chỉ mục bổ sung cho hình dạng điểm. Chạy một công việc định kỳ thông thường xóa các hàng cũ, chạy chân không / phân tích và phân cụm lại.
  2. Phân vùng theo datetime và sau đó cụm và chỉ mục theo độ cao trên mỗi bảng với một chỉ mục trên hình học. Chạy một công việc định kỳ thông thường để thêm các bảng mới về phía trước và loại bỏ các bảng cũ.

Thêm nữa,

  • Vì vậy, tôi biết rằng việc thả một cái bàn sẽ hiệu quả hơn rất nhiều và xóa và hút bụi. Nhưng tôi sẽ thấy một hiệu suất tăng khác?
  • Các phân vùng có phù hợp không khi tất cả các bảng sẽ được cập nhật và chọn đồng đều cho đến khi bị xóa là không liên quan (tài liệu chỉ ra rằng các phân vùng hoạt động tốt nhất khi chỉ một vài trong số chúng được chọn)?

Khi phân phối dữ liệu, các lựa chọn sẽ nhanh hơn chỉ số cụm? Câu trả lời có thay đổi nếu nhiều yêu cầu được thực hiện cùng một lúc không?

Cảm ơn bạn. Tôi hy vọng tôi đưa lên tất cả các dữ liệu cần thiết. Nếu không cho tôi biết và tôi sẽ thêm nó.


1
Ôi, những hàng hẹp này là nơi các tiêu đề hàng lớn của PostgreSQL bắt đầu thực sự đau đớn. Đáng tiếc không có nhiều thứ có thể được gỡ bỏ; nó không phải như chúng ta có thể bị mất xminhoặc xmax, vv Có một tính năng mà có thể làm cho nó thành 9.4 mà có thể sẽ kích thích bạn, được gọi là chỉ số minmax, mà sẽ làm cho mọi việc như thế này rất thuận tiện hơn.
Craig Ringer

1
Là sự kết hợp sau đây lặp đi lặp lại: "vĩ độ, kinh độ, hình học điểm, độ cao". Nếu có, bình thường hóa nó vào một bảng khác có thể tiết kiệm một số không gian.
AK

Chỉ một chút thôi. Hình học PostGIS là một mảng nhị phân và không thể đọc được. Tôi có thể lấy được các giá trị đó ở đầu ra, nhưng sau đó tôi không thể tập trung vào chúng. Tôi có thể sử dụng GeoHash để phân cụm, nhưng điều đó không thể đọc được nữa so với lat lon. Nhưng một trong hai cách không gian không phải là vấn đề. Họ cung cấp nhiều terrabyte như tôi có thể điền vào. Vấn đề là tôi không thể truy vấn terrabyte ở tốc độ. Cơ sở dữ liệu sẽ không phải là giao dịch. Chỉ có hai tập lệnh sẽ có quyền truy cập viết tất cả. Tất cả mọi thứ khác là chỉ đọc.
bshender

Craig: Họ có vẻ hấp dẫn Tôi mong muốn được thử nghiệm với họ khi họ ra ngoài. Bất kỳ suy nghĩ về thiết lập của tôi trong 9.3 mặc dù?
bshender

1
Bạn có thể cung cấp hai mẩu thông tin không: 1) Điều gì là quan trọng nhất đối với bạn, tốc độ chèn hoặc tốc độ truy vấn? 2) Những truy vấn nào là phổ biến nhất?
Thomas Kejser

Câu trả lời:


1

Tất cả mọi thứ được xem xét, tôi sẽ đi với tùy chọn 2. Ngày sẽ được chọn đều, nhưng tôi sẽ đoán rằng đối với một truy vấn nhất định sẽ chỉ có một hoặc hai phân vùng ngày được tham gia. Thật xấu hổ khi bạn không thể tập trung vào vị trí địa lý và phân vùng theo ngày, điều này sẽ rất lý tưởng. Độ cao có xu hướng tương quan với định vị địa lý, nếu các hộp giới hạn là đủ nhỏ.

Đưa ra các lựa chọn có sẵn, hoạt động dữ liệu sạch hơn và tránh máy hút bụi hàng ngày là một điều tốt để có.

Cung cấp các lựa chọn thể nhanh hơn với tùy chọn 1, mặc dù tôi nghi ngờ nó có thể sẽ là một rửa. Với tùy chọn 1, các bản ghi có cùng ngày và độ cao được đặt gần nhau trong một chỉ mục cụm lớn. Với tùy chọn 2, các bản ghi có cùng ngày và độ cao được đặt gần nhau trong nhiều chỉ mục được nhóm nhỏ hơ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.