Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP i Postgres
Forum PHP.pl > Forum > PHP
netmare
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.
MMX3
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
netmare
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.
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.