Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP i Postgres
netmare
post 20.12.2007, 11:32:54
Post #1





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Mam taki problem. Mam zakupioną aplikację z dużą bazą na Postgresie. Z przyczyn formlano-prawnych nie mogę dokonywać modyfikacji w strukturze bazy. Potrzebuję porównywać czy id w pewnej tabeli (nazwę ją A) występuje w innej tabeli (tą nazwę B) znajdującej się w innej bazie danych w obrębie tego samego Postgresa. Z tego co się orientuję nie da się joinować tabeli z innej bazy. Tabela B ma około 5000 rekordów i nie są w niej NIGDY dokonywane żadne modyfikacje, podczas gdy w A śr 200 modyfikacji dziennie (w interesującej mnie kwestii i wyniki tych zmian potrzebuję mieć na bieżąco w aplikacji). Tak naprawdę wystarczy mi porównanie czy identyfikator uzyskiwany z bazy A występuje w bazie B (resztę kolumn mogę pominąć). Porównanie to ma odbywać się na potrzeby skryptów php wspomagających działanie pracowników instytucji dostępnych przez www (wynik przedstawiany jest w table z wartością ostatniej kolumny zależną od wystąpienia indeksu w B) . Jak mogę to obejść nie obniżając zbytnio wydajności skryptu.

Pomysły jakie mam: drugi wskaźnik połączenia i po uzyskaniu id z A zapytanie do B(wynik zapytania A zwraca od 1 do 10 rekordów, a dla każdego z nich id jest różne więc może wystąpić do 10 osobnych zapytań do B) .

Drugi pomysł zapisanie wszystkich id z tabeli B w pliku tekstowym i skanowanie pliku po zuzyskaniu każdego id.

Tablica w php, zawierająca jako indeksy wartości id z B. (nie wiem czy da się stworzyć taką strukturę i jak ona wpłynie na wydajność bo to 5000 indeksów) i spradzenie czy jest ustawiona tablica[indexzB].

Doradźcie coś żebym głupoty nie zrobił. Musi być wydajnie. Jeśli plik tekstowy to prosiłbym o pomoc w konstrukcji wydajnego sprawdzania wystąpieniu indeksu.

Ten post edytował netmare 20.12.2007, 11:33:29
Go to the top of the page
+Quote Post
MMX3
post 20.12.2007, 15:10:37
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 9
Dołączył: 26.01.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


może zrobić osobną db jak już nie możesz edytować aktualnych. I wywoływać skrypt przy każdej aktualizacji, który będzie tworzył taki pseudo widok?
gdzie spokojnie możesz inner joiny robić.

Pozdro


--------------------
Go to the top of the page
+Quote Post
netmare
post 20.12.2007, 15:15:05
Post #3





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Nie znam się niestety na skryptach w postgresie, ale są one chyba przechowywane wenątrz bazy której dotyczą, a tam nie mogę grzebać ze względu na to że baza bywa kontrolowana. Jeżeli coś nie do końca zrozumiałem to wyjaśnij to, jeśli możesz.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.06.2025 - 14:48