Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Integracja wielu baz danych
Forum PHP.pl > Forum > PHP
integer111
Witam mistrzów klawiatury.
Od paru miesięcy jestem zatrudniony w pewnej dość dużej firmie zorientowanej na branżę artykułów dziecięcych. Firma, a tak naprawdę spółka czterech firm pracuje na czterech takich samych programach (po jednym dla każdej części spółki). Każdy program korzysta z własnej bazy danych - i dobrze, pomaga to w rozliczaniu podatków. Ale z drugiej strony są dane które mogły by być wspólne dla wszystkich 4 baz (firm) z ewentualną perspektywą na więcej. I to jest moje zadanie winksmiley.jpg. Ja realizuję integracje danych z czterech baz za pomocą tablic (array) w php. Na przykład moduł do wyświetlenia cen produktów ze wszystkich baz ładuje wszystkie cenniki z każdej bazy po kolei i zapamiętuję w tablicy. Następnie przeprowadza pętle która sprawdza w każdej bazie czy już istnieje taki produkt (w moim wypadku na podstawie nazwy które są identyczne) i jeżeli tak to modyfikuje tablicę tak aby dany produkt występował w niej tylko raz, ale miał ceny z wszystkich baz. I to działa - nie za szybko, ale działa. A jak wy radzicie / poradzili byście sobie z takim problemem? (bazy są na firebird'zie)
Pozdrawiam.
CuteOne
Nie łatwiej zrzucić cztery bazy do jednej i na niej przeprowadzać operacje ?
sniver
1 sposób
a. Zrób sobie tabele z produktami.
b. Dowiedz się co to są samowyzwalacze (trigery) i stwórz odpowiedni kod by dodawał, usówał i uaktualniał rekordy po wykonaniu odpowiednich operacji na "rodzimych" tablicach.
c. Zrób skrypt i odpalaj go z crona (np. wtedy gdy najmniej sie robi w bazie - być może w nocy). Skrypt ten powinien kasować zawartość tej tabeli (gdyby sie coś popsuło), a potem na nowo kopiować zawartość - dzięki temu codziennie wszystko powinno być spójne...

II sposób
Istnieje inna ewentualność - czyli zbudowanie widoku, ale nie będzie to działać szybko (w sumie zależy od serwera i wielkości bazy danych)...
integer111
Stworzenie widoku między różnymi bazami danych? blinksmiley.gif Wydaje mi się, że widok może operować na różnych tabelach ale tylko w jednej bazie.

EDIT:
@CuteOne: Nie mam takiej możliwości, bo po pierwsze wymagało by to przebudowania całego gotowego już kodu, a po drugie te bazy to twory żywe, a przy każdym module potrzebna jest inne połączenie danych więc stworzenie następnej bazy nie miało by za bardzo sensu / zastosowania w moim przypadku
Albert1984
Cytat(integer111 @ 6.11.2010, 10:46:34 ) *
Stworzenie widoku między różnymi bazami danych? blinksmiley.gif Wydaje mi się, że widok może operować na różnych tabelach ale tylko w jednej bazie.


Widok działa między różnymi bazami danych. Ale jak zostało wspomniane wcześniej nie jest to zbyt szybkie rozwiązanie, ewentualnie można pobawić się w cachowanie danych jeżeli te dane są prezentowane gdzieś dla większej ilości użytkowników.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.