sql >> Databáze >  >> RDS >> PostgreSQL

Dynamický runtime výběr schématu PostgreSQL v jOOQ

Zdá se, že alespoň prozatím je nastavení search_path něčím mimo rozsah jOOQ. Teoreticky bychom mohli použít migraci Java v Flyway a vynutit, aby všechny odkazy ve funkci měly explicitní schémata, ale to zní docela bolestivě. Což nám zbývá buď nastavit cestu vyhledávání ručně, případně ji přidat do správy transakcí, nebo napsat chytřejší ConnectionProvider.

V naší aplikaci máme docela přísný model jednoho dotazu na transakci, takže ve skutečnosti není zavedena žádná správa transakcí, do které by bylo možné přidat dotaz „set search_path =...“. Řešení ConnectionProvider se zdá být naší nejlepší volbou.

Již máme vlastní implementaci ConnectionProvider pro sdružování připojení, takže nebyl příliš velký problém přidat logiku (uvedenou výše na konci otázky) pro nastavení vyhledávací_cesty. Mohli bychom to udělat výkonnější, kdybychom spojení ozdobili něčím, co si pamatovalo, na co je jeho aktuální vyhledávací_cesta nastavena, a předponou "set search_path =...;" na začátek jakéhokoli prohlášení, než v případě potřeby vyjde ze dveří. Již nyní vidíme dopad na výkon nastavení search_path každého požadavku, takže je jen otázkou času, kdy se to stane nutností. No, to nebo se vrátíme k bolesti naší staré proprietární vrstvy přístupu k databázi.

Přinejmenším to nepřijmu jako odpověď, dokud nenapíšu a neotevřem zdroj nastavení sdružování připojení/vyhledávání_cesty ConnectionProvider, v naději, že někdo jiný přijde s lepším řešením, než se k tomu dostanu.




  1. Jak provést stránkování v SQL Server 2008

  2. Příkaz SQL mezi dvěma datumy a časy pro rezervaci tabulky

  3. Jak načíst řádky v požadovaném pořadí v mysql

  4. Mohou modely Django používat funkce MySQL?