Połączenie danych z dwóch różnych baz

0

Cześć,
mam problem z połączeniem baz danych, mianowicie chciałbym z dwóch różnych baz danych z dwóch tabel ściągnąć dane i wyświetlić w aplikacji desktopowej w tabeli łącząc to po id np.
Mam stworzone dwa połączenia do baz i teraz nie za bardzo wiem w jaki sposób to połączyć. Może ktoś coś podpowie?

0

@rchudy:

To zależy

Np jak chodzi o Microsoft dwie bazy siedzące na tej samej instancji, to się robi na jednym połączeniu, a nawet select join
Ale Łaskawy Kolega zapomniał podac jaka baza.

3

Ściągasz z jedne bazy, ściągasz z drugiej łączysz, po czym ci pasuje i wyświetlasz.

1

jedna baza mysql druga postgres, ściągam ale do czego do listy najlepiej czy jak je zapisywać? — rchudy dziś, 13:04

Już taki jestem, że we mnie budzi się złośliwość, jak człowiek na 4p męczy Springa, a ma mocne braki z fundamentach OOP i algorytmiki.
Nie kolego, lista nie jest dobrą strukturą. Znasz jeszcze jakieś?

No to ci napisałem co trzeba zrobić. Jak masz jakiś problem konkretny techniczny to pokaż co masz to ktoś pomoże. — S4t dziś, 13:17

@S4t: 100% tak

jest jakaś opcja żeby dodawać do bazy h2 wartości wyciągane selectem z inne bazy? — rchudy dziś, 14:02

<złośliwość id="nr2">
tak
</złośliwość>

0

Potrzebujesz trzeciej bazy, najlepiej Oracle, do której replikujesz te dwie, tworzysz na nich materialized view i powinno śmigać.

1
pocotoiczemu napisał(a):

Potrzebujesz trzeciej bazy, najlepiej Oracle, do której replikujesz te dwie, tworzysz na nich materialized view i powinno śmigać.

Ciągle kol nie określił się, czy tych różnych numerów telefonów jest 50, czy 5 mln

2

jedna baza mysql druga postgres, ściągam ale do czego do listy najlepiej czy jak je zapisywać?

Kiedyś testowałem coś takiego jak zdalne tabele w PostgreSQL. Masz tabelę która wygląda i zachowuje się jakby była w Postgresie (mozesz po niej normalnie robić selecty i inserty), ale dane sa gdzieś zdalnie, w twoim przypadku w MySQLu (w moim były w brzydkiej bazie na O)

3

@rchudy: nie kombinuj z jakimiś magiami. Jest taka biblioteczka Assembler, która jest wymyślona, by łączyć dane z różnych źródeł. Ciebie interesuje Core, który działa na strumieniach. Jeżeli masz dwa zapytania to, zamiast zwracać listy, niech zwracają strumienie (Stream). Łączysz je, wskazując, które metody zwracają „klucz główny”, oraz metodę, która będzie produkować obiekty wynikające z takiego połączenia.

2

Widzę, że dyskusja poszła w jakimś dziwnym kierunku :D

  1. Najprostszy, i najbardziej prymitywny sposób, żeby owe dane połączyć to zrobić dwa zapytania do dwóch baz danych i je po prostu połączyć po stronie middleware'u, tj. Javy/Scali/czy czegokolwiek tam używasz. Proste, być może rozwiąże twój problem.
  2. Schody się zaczynają, kiedy chcesz to zrobić jakoś bardziej inteligentnie. Jeśli spodziewasz się dużo tego typu zapytań to możesz wyniki wrzucić w jakiegoś cache'a, który będzie co jakiś czas odpytywał bazy. W zależności od potrzeb - możesz użyć zwyczajnego Caffeine lub czegoś rozproszonego typu Apache Ignite lub Redis.
  3. Jeszcze bardziej ciekawie się robi, jeśli chcesz rozwiązania, które pozwoli ci na łatwe i elastyczne łączenie danych z różnych baz przez developerów. Tutaj pomoże Spark, który przy odpowiedniej konfiguracji pozwoli na pisanie pojedyńczego query SQLowego, które zawoła obie bazy danych i przerobi je na jeden wynik.
  4. No i top level to interfejs dla użytkowników przez jakiś silnik SQL, np. Presto.

Punkt 1 to coś, co możesz ogarnąć sam bez dodatkowych robót. Punkt 2 to coś, co może, ale nie musi wymagać instalacji cache'a. Punkty 3 i 4 to takie armaty, ale część firm ma np. klaster Sparkowy do wspólnego użycia, więc można się rozejrzeć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1