Đã đọc một số câu hỏi về SO, bài viết trên blog và hướng dẫn sử dụng bên ngoài
- SO : Ràng buộc khóa ngoài đối với bảng được phân vùng trong PG
- dba.SE : Các cách xử lý FK khác nhau đối với bảng được phân vùng trong PG
- Hướng dẫn sử dụng : Kế thừa
- Hướng dẫn : Phân vùng
- Hướng dẫn sử dụng : Hạn chế kích hoạt
- Blog : Postgres mô hình với sự kế thừa
Tôi vẫn thấy mình băn khoăn không biết có nên đi phân vùng xem xét trường hợp của mình hay không.
Vụ án - đơn giản hóa
Lưu trữ dữ liệu khách hàng. Tất cả tên của các bảng được đề cập dưới đây được tạo nên cho rõ ràng.
Có các đối tượng được khách hàng nhận dạng và không phải là vật thể, cũng là các đối tượng vật lý mà chúng thực sự được lưu trữ trong trường hợp cần gửi một số đối tượng cho khách hàng theo yêu cầu hoặc xử lý theo một số cách khác. Chúng được ánh xạ trong một mối quan hệ nhiều-nhiều.
objects_nonphysical
,objects_physical
,objects_mapping_table
.Mối quan hệ nhiều-nhiều thứ hai là giữa các đối tượng phi vật lý và số liệu của chúng. Có những đối tượng bị ràng buộc với một số số liệu.
metrics
,metrics_objects_nonphysical
Cả hai đối tượng phi vật lý và vật lý đều có các bảng phân cấp là quan hệ cha-con.
objects_nonphysical_hierarchy
,objects_physical_hierarchy
Tùy thuộc vào nhu cầu và yêu cầu của từng khách hàng, dữ liệu về các đối tượng vật lý có thể được cung cấp hoặc có thể cần được tạo từ đầu. Về cơ bản, những gì tôi cần làm là:
Duy trì hệ thống nội bộ cho nhanh
INSERT
vàSELECT
báo cáo, bởi vì đây là nơi sẽ diễn ra ánh xạ.Duy trì hệ thống để khách hàng bên ngoài xem và vận hành trên các đối tượng phi vật lý của họ - truy xuất dữ liệu nhanh chóng. Nhu cầu hiệu quả cao cho các
SELECT
báo cáo - dữ liệu này có sẵn cho nhiều khách hàng tìm kiếm bất cứ khi nào họ muốn.
Tôi cân nhắc
Có thể có một khách hàng, những người có thể truy cập dữ liệu, xem và vận hành trên đó, nhưng đó không cần phải là nhà thầu mà chúng tôi đã nhận được dữ liệu từ / đang xử lý dữ liệu.
Điều này đã khiến tôi giới thiệu phân vùng bảng vào hệ thống của mình, xem xét rằng tôi luôn biết dữ liệu phân vùng nào sẽ rơi vào ( phân vùng cho nhà thầu ), sau đó đến hệ thống chính cho khách hàng bên ngoài nơi tôi cần phân vùng cho khách hàng (điều này sẽ được thực hiện với một số trì hoãn sử dụng các công cụ tự động hóa và bộ quy tắc để viết lại dữ liệu theo cách của khách hàng, do đó, đối với mỗi khách hàng, chúng tôi chỉ quét một phân vùng cho mỗi bảng.
Khối lượng dữ liệu
Dữ liệu của tôi sẽ tăng liên tục, đặc biệt là khi nhập đối tượng và số liệu của khách hàng mới. Tốc độ của dữ liệu mới vào hệ thống là không thể dự đoán được vào lúc này trong thời gian dài. Thực sự không có cách nào để đo lường nó mà không biết ai sẽ là khách hàng tiếp theo. Ngay bây giờ chỉ có 2 khách hàng với ít nhất 1M hàng cho mỗi khách hàng trong mỗi bảng. Nhưng trong tương lai, tôi dự đoán khách hàng mới sẽ có một khối lượng 10 triệu hàng.
Câu hỏi
Những câu hỏi này đều liên quan đến nhau.
- Phân vùng thực sự nên được xem xét ở đây, hoặc đó là một quá mức cần thiết? Tôi coi nó sẽ được sử dụng vì tôi luôn quét chính xác một phân vùng.
- Nếu phân vùng là cách để đi, làm thế nào để tôi thực thi
FK
ràng buộc xem xét nhu cầu của mình một cách hiệu quả nhất? Tôi nên điconstraint triggers
, hoặc chỉ giữ nó trong lớp ứng dụng cho hệ thống nội bộ, hoặc có thể một số phương pháp khác? - Nếu phân vùng không phải là cách để đi, tôi nên đi sâu vào vấn đề gì?
Nếu không có đủ dữ liệu được cung cấp, xin vui lòng cho tôi biết trong các ý kiến dưới đây.