piątek, stycznia 15, 2010

HA-JDBC a Oracle

Fajnie by było mieć magiczny sterownik JDBC, który wie, że są dwa Oracle-a w konfiguracji active-standby. Jeśli połączenie się zepsuje w momencie, gdy aplikacja chce np. wykonać zbuforowany PreparedStatement, sterownik mógłby transparentnie przełączyć się na drugą bazę, tak żeby w żadnym momencie nie pojawił się wyjątek SQLException. Gdy pierwsza baza wróci do życia, sprytny sterownik mógłby zrobić synchronizację i przełączyć się na pierwszą bazę.

HA-JDBC nie obsługuje buforowanych PreparedStatementów - żeby taką funkcjonalność dodać trzeba napisać własnego DataSource-a i wszystko w dół. Drugi problem to problemy w obsłudze synchronizacji Oracle-a (przetwarzanie zbyt wielu obiektów, w tym takich, do których użytkownik nie ma uprawnień oraz nieprawidłowa gramatyka zapytań SQL). Trzeci problem to synchronizacja wewnątrz sterownika. Wątek aktywujący bazy współzawodniczy z wątkiem deaktywującym na tym samym obiekcie Javy, będącym zbiorem obiektów Database - w rezultacie mamy wyjątki przy używaniu iteratora...

Wersja testowa poprawionego HA-JDBC z plikiem konfiguracyjnym, który wyłącza wątek deaktywujący (nie jest potrzebny, bo jest sprytny DataSource) znajduje się tutaj.
HA-JDBC jest na licencji LGPL.

1 komentarze:

jakub007 pisze...

http://symmetricds.codehaus.org/