sql >> データベース >  >> RDS >> PostgreSQL

jOOQでの動的ランタイムPostgreSQLスキーマ選択

    少なくとも当面は、search_pathの設定はjOOQの範囲外のようです。理論的には、FlywayでJavaマイグレーションを使用して、関数内のすべての参照に明示的なスキーマを強制することができますが、それはかなり苦痛に聞こえます。これにより、検索パスを手動で設定するか、トランザクション管理に追加するか、よりスマートなConnectionProviderを作成する必要があります。

    アプリケーションには非常に厳密なトランザクションごとに1つのクエリモデルがあるため、「set search_path=...」クエリを追加するトランザクション管理は実際にはありません。 ConnectionProviderソリューションが最善の選択肢のようです。

    接続プール用のカスタムConnectionProvider実装がすでにあるので、search_pathを設定するためのロジック(上記の質問の最後に記載)を追加するのはそれほど面倒ではありませんでした。現在のsearch_pathが何に設定されているかを記憶しているもので接続を装飾し、「set search_path =...;」というプレフィックスを付けることで、パフォーマンスを向上させることができます。必要に応じて、ドアを出る前にステートメントの前に。リクエストごとにsearch_pathを設定すると、パフォーマンスに影響が出ることがすでにわかっているため、これが必要になるのは時間の問題です。それか、古い独自のデータベースアクセス層の苦痛に立ち返ります。

    少なくとも、接続プール/ search_path設定ConnectionProviderを作成してオープンソース化するまでは、これを答えとして受け入れません。他の誰かがより良い解決策を思い付く前に、それを実現することを期待しています。




    1. postgresで2フェーズコミットを使用する

    2. データベースのカンマ区切り値を追加、編集、削除する方法。

    3. MySQLの`REPLACE`と`INSERT... ON DUPLICATE KEY UPDATE`の実際的な違いは何ですか?

    4. mysqlテーブルを編集します