Sens stosowania dwóch różnych baz danych
Zibi - 30-06-2006 00:08
Sens stosowania dwóch różnych baz danych
Witam wszystkich. Zastanawia mnie pewne rozwiązanie i chciałbym poznać opinię osób bardziej doświadczonych. Otóż pracuję nad pewnym nazwijmy to 'projektem', w którym wykorzystywany jest PostgreSQL jako silnik bazy danych. Ilość obsługiwanych tabel i przechowywanych danych jest raczej niewielka. Sama baza stoi na mało wydajnej maszynie i to wystarcza do obecnych zastosowań.
Pojawił się jednak pewien pomysł 'od góry' aby rozszerzyć funkcjonalność i przetwarzać dodatkowe dane, które pod względem ilości rekordów i ważności informacji (ochrona przed utratą danych) będą potrzebowały dużo wydajniejszego środowiska. Zastanawiam się nad wykorzystaniem DB2 w wersji express, z którą można działać większe cuda. Bynajmniej bardziej podoba mi się możliwość zapewnienia większego bezpieczeństwa danych. Ponieważ prace są dosyć zaawansowane i wykorzystuję parę funkcji zarezerowowanych dla Postgresa nie chciałbym dokonywać zmian w kodzie. Pomyślałem nad rozwiązaniem z wykorzystaniem dwóch typów baz danych. Krótko mówiąc aplikacja pracowałaby sobie na postgresie a w przypadkach określonych operowałaby na bazie DB2 (np. do tej bazy importowane byłyby dane z źródeł zewnętrznych, generowanie raportów, statystyk, itp).
Wiem, że najładniejszym rozwiązaniem byłoby postawienie wszystkiego na DB2. Ale czy takie rozwiązanie jest do przyjęcia? Będę wdzięczny za opinie.
Pozdrawiam, Zibi
Marcin A. Guzowski - 30-06-2006 00:08
Zibi napisał(a): > Witam wszystkich. > (..)
Połączenia do kilku baz (też na różnych silnikach) to nic złego z punktu widzenia większości technologii, w których tworzone są aplikacje. Wydaje mi się, że można sobie obmyślić całkiem fajne rozwiązanie, oczywiście pod pewnymi warunkami: 1) przepływ informacji między tymi bazami jest minimalny, a najlepiej - nie istnieje; jeżeli sporą część czasu aplikacja będzie przerzucała rekordy z jednej bazy do drugiej - np. żeby zrobić spójny raport - to będzie to złe rozwiązanie. 2) zbiory informacji potrzebne do opracowania wyniku (czyli np. zbiór wszystkich danych o płatnościach, żeby dokonać jakieś agregacji typu średnia cena sprzedaży akcji per dzień) znajdują się na poszczególnych bazach i są kompletne; w przeciwnym razie: albo przerzucanie rekordów między bazami, albo zaciąganie dużej ilości danych do aplikacji z kilku baz - i mielenie sumy tych zbiorów w jej pamięci - nie jest to dobre rozwiązanie, bo miejscem na wykonywanie takich działań w sposób optymalny jest baza danych a nie aplikacja dostępowa
IMHO nie wolno z założenia przekreślać samej idei wykorzystania różnych silników w jednym systemie, ale należy uszyć rozwiązanie pod konkretny scenariusz, bo może się okazać, że w danej sytuacji taki pomysł nie wypali.
-- Pozdrawiam, Marcin Guzowski http://guzowski.info
Kmail - 02-07-2006 00:14
> Postgresa nie chciałbym dokonywać zmian w kodzie. Pomyślałem nad > rozwiązaniem z wykorzystaniem dwóch typów baz danych. Krótko mówiąc > aplikacja pracowałaby sobie na postgresie a w przypadkach określonych > operowałaby na bazie DB2 (np. do tej bazy importowane byłyby dane z źródeł > zewnętrznych, generowanie raportów, statystyk, itp).
Uzywając dwuch silników/baz moze przyjsc czas ze nalezy dane miksowac między nimi. Ja w takim wypadku zrobiłem TaskManagera który pracujac na jednym z serwerow cyklicznie przenosił dane między bazami. Danych niewiele i ruch jednostronny ( tzn. dane mają jedne żródło raz w jednej a raz w drugiej bazie). Naszczesie obie bazy maja triggery dzieki ktorym moglem powiadamac o zmianach. Swojego czasu tez miłem jeden silnik ale dwie bazy, za pomoca BDE daje sie normalnie zadawac pytanie do baz jak do jednej, chodz predkosc nie jest oszałamiająca.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
=?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?=
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
[mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?=
Zrywanie =?ISO-8859-2?Q?po=B3aczen_z_baza_danych_-_pos?==?ISO-8859-2?Q?tgresql_=3C-=3E_odbc?=
Połączenie bazy danych z wykonaniem polaczenia telefonicznego
[mssql] insert do tabeli na podstawie danych z innej tabeli
[oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ?
[MySQL] - Wstawianie aktualnej daty do bazy danych - PHP i MySQL
Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird)
zanotowane.pldoc.pisz.plpdf.pisz.plponland.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|