PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Избор на схема за динамично изпълнение на PostgreSQL в jOOQ

Изглежда, че поне за момента настройката на search_path е нещо извън обхвата на jOOQ. На теория бихме могли да използваме Java миграции във Flyway и да принудим всички препратки в рамките на една функция да имат изрични схеми, но това звучи доста болезнено. Което ни оставя или да зададем пътя за търсене ръчно, потенциално да го добавим към нашето управление на транзакциите, или да напишем по-интелигентен ConnectionProvider.

Имаме доста строг модел с една заявка за транзакция в нашето приложение, така че всъщност няма никакво управление на транзакциите, към което да добавим заявката „set search_path =...“. Решението ConnectionProvider изглежда е най-добрият ни вариант.

Вече имаме персонализирана реализация на ConnectionProvider за обединяване на връзки, така че не беше много трудно да добавим логиката (посочена по-горе в края на въпроса), за да зададем search_path. Можем да го направим по-ефективно, като украсим връзката с нещо, което запомня на какво е зададен текущият му search_path и поставим префикс "set search_path =...;" в началото на всяко изявление, преди да излезе през вратата, ако е необходимо. Вече виждаме влияние върху производителността при настройването на search_path при всяка заявка, така че е само въпрос на време това да стане необходимост. Е, това или да се върнем към болката на нашия стар патентован слой за достъп до база данни.

Най-малкото, няма да приема това като отговор, докато не напиша и отворя настройката ConnectionProvider pooling/search_path за свързване, с надеждата, че някой друг ще измисли по-добро решение, преди да се захвана с него.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 начина да получите размера на база данни в PostgreSQL

  2. Има ли по-добър начин за извличане на времето от деня?

  3. ГРЕШКА в PostgreSQL:функция to_tsvector(променлив знак, неизвестен) не съществува

  4. Lumen - Създаване на връзка с базата данни по време на изпълнение

  5. Кой е най-елегантният начин за съхраняване на времеви печат с nanosec в postgresql?