![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
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 -------------------- |
|
|
![]()
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.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.06.2025 - 14:48 |