sql >> Database teknologi >  >> RDS >> PostgreSQL

Dynamisk Runtime PostgreSQL-skemavalg i jOOQ

Det ser ud til, at foreløbig i det mindste er indstilling af search_path noget uden for rækkevidde for jOOQ. Vi kunne i teorien bruge Java-migreringer i Flyway og tvinge alle referencer i en funktion til at have eksplicitte skemaer, men det lyder ret smertefuldt. Hvilket efterlader os med enten at indstille søgestien manuelt, potentielt tilføje den til vores transaktionsstyring eller skrive en smartere ConnectionProvider.

Vi har en ret streng model med én forespørgsel-per-transaktion på vores applikation, så der er ikke rigtig nogen transaktionsstyring på plads at tilføje "set search_path =..."-forespørgslen til. ConnectionProvider-løsningen ser ud til at være vores bedste løsning.

Vi har allerede en tilpasset ConnectionProvider-implementering til forbindelsespooling, så det var ikke for stort besvær at tilføje logikken (givet ovenfor i slutningen af ​​spørgsmålet) for at indstille søgestien. Vi kunne gøre den mere effektiv ved at dekorere forbindelsen med noget, der huskede, hvad dens nuværende søgesti er sat til, og sætte præfikset "set søgesti =...;" til forsiden af ​​ethvert udsagn, før det går ud af døren, hvis det er nødvendigt. Vi ser allerede en præstationspåvirkning af at indstille søgestien for hver anmodning, så det er kun et spørgsmål om tid, før dette bliver en nødvendighed. Nå, det eller at gå tilbage til smerten ved vores gamle proprietære databaseadgangslag.

I det mindste vil jeg ikke acceptere dette som svaret, før jeg skriver og åbner kildekoden for forbindelsespooling/search_path-indstillingen ConnectionProvider, i håbet om, at en anden vil komme med en bedre løsning, før jeg kommer omkring det.




  1. Hvordan vi kan finde domænenavn ved hjælp af MySQL og regulære udtryk

  2. Oracle datoforskel for at få antal år

  3. Skift type af en kolonne med tal fra varchar til int

  4. Hvordan bruger man forberedt erklæring til udvalgte forespørgsler i Java?