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

Lựa chọn lược đồ PostgreSQL thời gian chạy động trong jOOQ

Có vẻ như ít nhất trong thời điểm hiện tại, việc đặt search_path là điều gì đó nằm ngoài phạm vi đối với jOOQ. Về lý thuyết, chúng ta có thể sử dụng các di chuyển Java trong Flyway và buộc tất cả các tham chiếu trong một hàm phải có các lược đồ rõ ràng, nhưng điều đó nghe có vẻ khá khó khăn. Điều này khiến chúng tôi phải đặt đường dẫn tìm kiếm theo cách thủ công, có khả năng thêm đường dẫn đó vào quản lý giao dịch của chúng tôi hoặc viết một Trình cung cấp kết nối thông minh hơn.

Chúng tôi có một mô hình một truy vấn cho mỗi giao dịch khá nghiêm ngặt trên ứng dụng của mình, vì vậy thực sự không có bất kỳ quản lý giao dịch nào để thêm truy vấn "set search_path =..." vào. Giải pháp ConnectionProvider dường như là lựa chọn tốt nhất của chúng tôi.

Chúng tôi đã có một triển khai ConnectionProvider tùy chỉnh để tổng hợp kết nối, vì vậy không quá phức tạp khi thêm logic (được đưa ra ở trên ở cuối câu hỏi) để đặt search_path. Chúng tôi có thể làm cho nó hoạt động hiệu quả hơn bằng cách trang trí Kết nối với một cái gì đó ghi nhớ những gì mà search_path hiện tại của nó được đặt thành và đặt tiền tố là "set search_path =...;" ở phía trước của bất kỳ tuyên bố nào trước khi nó được đưa ra khỏi cửa nếu cần. Chúng tôi đã nhận thấy tác động đến hiệu suất đối với việc đặt search_path cho mọi yêu cầu, vì vậy chỉ là vấn đề thời gian trước khi điều này trở thành điều cần thiết. Chà, đó là hoặc quay trở lại nỗi đau của lớp truy cập cơ sở dữ liệu độc quyền cũ của chúng tôi.

Ít nhất, tôi sẽ không chấp nhận đây là câu trả lời cho đến khi tôi viết và mở nguồn kết nối pooling / search_path thiết lập ConnectionProvider, với hy vọng rằng ai đó sẽ đưa ra giải pháp tốt hơn trước khi tôi tiếp cận nó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm truy vấn động Postgres

  2. Tôi đang cố gắng cài đặt psycopg2 vào Mac OS 10.6.3; nó tuyên bố nó không thể tìm thấy stdarg.h nhưng tôi có thể thấy nó ở đó; tôi nên làm gì?

  3. Sự cố khi xây dựng mệnh đề where để bao gồm các giá trị null / 0

  4. Django:chọn các giá trị có dấu thời gian tối đa hoặc tham gia vào cùng một bảng

  5. Làm cách nào để tạo một hàm băm của tập kết quả trong Hậu kỳ?