konto usunięte

Temat: [PgSQL] Dwie bazy danych

Cześć :-)

Chcę zrobić prostego JOINa, w stylu:
SELECT * FROM table_1 AS t1 LEFT JOIN table_2 AS t2 ON t1.id = t2.id

Problem tylko (albo "aż") w tym, że obie tabele znajdują się w dwóch różnych bazach. Na jednym serwerze, ale jednak w innych bazach :-)

Wiem, że mogę np. wykonać jedno zapytanie, pobrać ID do zmiennej w PHP, a następnie na podstawie tej zmiennej, wyciągnąć rekord z drugiej tabeli łącząc się z inną bazą.

Tylko, że tutaj chodzi o wylistowanie po każdym przeładowaniu stron np. 50 Użytkowników, których część danych znajduje się w jednej bazie, a inna część danych w drugiej. I robienie wszystkiego w PHP, zapętlanie i wielokrotne łączenie z drugą bazą, raczej "zakatuje" serwer.

Czy Potgres, w połączeniu z PHP, oferuje jakiś ciekawe i inteligentne rozwiązania tego problemu? :-)

Pozdrawiam,
RafałRafał Nieckula edytował(a) ten post dnia 24.05.12 o godzinie 18:44

konto usunięte

Temat: [PgSQL] Dwie bazy danych

Hej!

Tak sobie myślę, że są 2 opcje

1. Z bazy 1 przenieść wszystkie tabele z jakimś prefiksem i po problemie.

2. Bawić się 2 connection stringami w PHP, jak opisano tutaj:
http://www.webhostingtalk.com/showthread.php?t=511588
lub tutaj:
http://stackoverflow.com/questions/1726139/php-multipl...

Daj znać - co wybrałeś :)

konto usunięte

Temat: [PgSQL] Dwie bazy danych

nie znam pgsql, ale w mysql możesz napisać :

SELECT * FROM baza_1.table_1 AS t1 LEFT JOIN baza_2.table_2 AS t2 ON t1.id = t2.id

może też tak można ?Krzysztof D. edytował(a) ten post dnia 24.05.12 o godzinie 19:31

konto usunięte

Temat: [PgSQL] Dwie bazy danych

Krzysztof Parjaszewski:
Hej!

Tak sobie myślę, że są 2 opcje

1. Z bazy 1 przenieść wszystkie tabele z jakimś prefiksem i po problemie.

2. Bawić się 2 connection stringami w PHP, jak opisano tutaj:
http://www.webhostingtalk.com/showthread.php?t=511588
lub tutaj:
http://stackoverflow.com/questions/1726139/php-multipl...

Daj znać - co wybrałeś :)
Pierwszą opcję uznałem już wczoraj za ostateczną, bo jednak trochę tych tabel mam, i jednak - mimo prefixów - będzie chaos, ale coś czuję, że tak będzie najbardziej przyjaźnie dla serwera, więc zapewne właśnie tą opcję wybiorę. Dzięki za 2 pozostałe linki :-)
nie znam pgsql, ale w mysql możesz napisać :

SELECT * FROM baza_1.table_1 AS t1 LEFT JOIN baza_2.table_2 AS t2 ON t1.id = t2.id

może też tak można ?

W MySQL można, ponieważ tam jest opcja przypisania jednego Użytkownika do kilku baz. Niestety nie mogę tego wypróbować na moim serwerze, chociaż już kilka dni temu chciałem, ponieważ mój dostawca hostingu, nie umożliwia przypisania jednego usera do kilku baz nawet w MySQL (chociaż także nie wiem, czy w PostgreSQL się da) :-)
Marek Wywiał

Marek Wywiał Programista,
administrator,
instruktor

Temat: [PgSQL] Dwie bazy danych

W postgresie można spokojnie użytkownikowi dać uprawnienia do kilku baz. Lub
można użyć schematów do oddzielenia tabel w osobne przestrzenie nazw:
* http://www.postgresql.org/docs/8.4/static/ddl-schemas....

konto usunięte

Temat: [PgSQL] Dwie bazy danych

zamiast przenosić tabele (cokolwiek masz na myśli) pewnie istnieje coś takiego jak alias do bazy.
w mysql jest np. "federated" type.

http://dev.mysql.com/doc/refman/5.0/en/federated-stora...Krzysztof D. edytował(a) ten post dnia 24.05.12 o godzinie 20:00

konto usunięte

konto usunięte

Temat: [PgSQL] Dwie bazy danych

Sebastian Białas:
http://www.postgresql.org/docs/9.1/static/dblink.html
Dzięki Sebastian za link, pomogło :-)

Ale zainteresowanych:
CREATE VIEW my_view AS
SELECT * FROM dblink('dbname=my_db', 'SELECT user_id, user_name FROM ho_user')
AS u (user_id int, user_name text);

SELECT * FROM my_view;


Pozdrawiam,
Rafał

Następna dyskusja:

Wydruk schematu bazy danych




Wyślij zaproszenie do