PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

PostgreSQL đến Data-Warehouse:Cách tiếp cận tốt nhất cho ETL gần thời gian thực / trích xuất dữ liệu

Giả sử rằng các bảng quan tâm của bạn có (hoặc có thể được tăng cường bằng) một khóa tuần tự, được lập chỉ mục, duy nhất, thì bạn sẽ nhận được giá trị tốt hơn nhiều khi chỉ cần phát hành SELECT ... FROM table ... WHERE key > :last_max_key với đầu ra là một tệp, trong đó last_max_key là giá trị khóa cuối cùng từ lần trích xuất cuối cùng (0 nếu lần trích xuất đầu tiên.) Cách tiếp cận tăng dần, tách rời này tránh giới thiệu thời gian chờ kích hoạt trong đường dữ liệu chèn (có thể là trình kích hoạt tùy chỉnh hoặc Slony đã sửa đổi) và tùy thuộc vào thiết lập của bạn có thể mở rộng quy mô tốt hơn với số lượng CPU, v.v. (Tuy nhiên, nếu bạn cũng phải theo dõi UPDATE s và khóa tuần tự đã được bạn thêm vào, sau đó là UPDATE của bạn câu lệnh nên SET cột chính thành NULL vì vậy nó nhận một giá trị mới và được chọn trong lần trích xuất tiếp theo. Bạn sẽ không thể theo dõi DELETE s mà không cần kích hoạt.) Đây có phải là điều bạn nghĩ đến khi nhắc đến Talend?

Tôi sẽ không sử dụng phương tiện ghi nhật ký trừ khi bạn không thể triển khai giải pháp ở trên ; việc ghi nhật ký rất có thể liên quan đến việc khóa chi phí để đảm bảo các dòng nhật ký được ghi tuần tự và không chồng chéo / ghi đè lên nhau khi nhiều phần phụ trợ ghi vào nhật ký (kiểm tra nguồn Postgres.) Chi phí khóa có thể không quá nghiêm trọng, nhưng bạn có thể làm mà không có nó nếu bạn có thể sử dụng SELECT thay thế. Hơn nữa, ghi nhật ký câu lệnh sẽ bị át đi bất kỳ thông báo CẢNH BÁO hoặc LỖI hữu ích nào và bản thân quá trình phân tích cú pháp sẽ không diễn ra ngay lập tức .

Trừ khi bạn sẵn sàng phân tích cú pháp WAL (bao gồm theo dõi trạng thái giao dịch và sẵn sàng viết lại mã mỗi khi bạn nâng cấp Postgres), tôi cũng sẽ không nhất thiết phải sử dụng WAL - nghĩa là, trừ khi bạn có sẵn phần cứng bổ sung , trong trường hợp đó, bạn có thể chuyển WAL đến một máy khác để trích xuất (trên máy thứ hai, bạn có thể sử dụng trình kích hoạt một cách đáng xấu hổ - hoặc thậm chí ghi nhật ký câu lệnh - vì bất cứ điều gì xảy ra đều không ảnh hưởng đến INSERT / UPDATE / DELETE hiệu suất trên máy chính.) Lưu ý rằng hiệu suất khôn ngoan (trên máy chính), trừ khi bạn có thể ghi nhật ký vào SAN, bạn sẽ nhận được hiệu suất tương đương (chủ yếu là về việc xóa bộ nhớ cache của hệ thống tệp) từ việc vận chuyển WAL sang một máy khác khi chạy SELECT gia tăng .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL cách nối giá trị khoảng thời gian '2 ngày'

  2. Heroku Postgres Error:PGError:ERROR:các tổ chức quan hệ không tồn tại (ActiveRecord ::StatementInvalid)

  3. Truy vấn Rails 4 LIKE - ActiveRecord thêm dấu ngoặc kép

  4. Vai trò Postgresql Docker không tồn tại

  5. Lỗi pgsql:Bạn có thể cần thêm phôi loại rõ ràng