Rafał Toboła

Rafał Toboła Razor s.c. -
współwłaściciel

Temat: Data Warehouse - Co polecacie?

Tomasz B.:
Teraz to tak jest że w programie mam pętle gdzie sobie czytam w kółko z każdej z osobna dane, analizuję podejmuję działania. Lipa jest taka że te bazy danych mają różną strukturę i dla jednej mam zapytanie select a,b from z a na innej mam select b,a from d.

Jeżeli to jest największy problem, to może po prostu naklikaj w każdej z baz widoki, które ujednolicą nazwy i kolejności kolumn, wtedy będziesz miał zawsze te same zapytania a łączył się do różnych baz.
Bartłomiej Głowacki

Bartłomiej Głowacki BI Support Manager

Temat: Data Warehouse - Co polecacie?

wow ;-)

100 baz danych dostępnych on line, chłopie :) to nie ma prawa działać, oto przyczyny:

1. Aby raporty na bazie wykonywały się szybko, nie może to być baza danych systemu transakcyjnego. Wykonując dużego SELECTa na tabeli używanej do paru insertów/updatów/deletów jednocześnie przez parę sesji, zajedziesz bazę. Ty chcesz to robić na 100 bazach na raz...

2. Systemy transakcyjne (rozumiem że to Twoje źródła) są zwykle w 3 postaci normalnej, posiadają dużo tabel i referencji, to wszystko obniża ich wydajność podczas dużych agregacji, znowu.... zajedziesz bazę

3. Systemy transakcyjne nie przechowują danych historycznych, nie posiadają tzw. "snapshot tables" ani "summary tables", jeśli posiadają i robi się hybryda baza-hurtownia, nie działa to dobrze (performance)

Pracowałem na wielu różnych platformach, od systemów dla rezerwacji lotów (Teradata), przez logi połączeń telefonicznych (Teradata, Oracle, SQL Server) po systemy monitorujące sprzedaż (Oracle, SQL Server). Problemy tam zaczynały się przy dużo mniejszych ilościach danych niż Ty chciałbyś przenosić, więc niestety potrzebujesz:
1. hurtowni danych
2. jakiegoś procesu ETL który ładuje dane w paczkach (batchach) co jakiś czas, najlepiej w nocy gdy systemy transakcyjne nie pracują zbyt intensywnie

Hurtownią danych może być nawet MySQL (sam pisałęm kiedyś prototyp takiego systemu), ważne aby stworzyć uniwersalny model danych. Co do procesu ETL to tak samo, może to być parę skryptów SQL które pobierają dane ze źródła i ładują do Twojej hurtowni.

Tak na prawdę widzę, że brak Ci trochę podstawowej wiedzy, na prawdę polecam książki Kimballa, dla Ciebie najbardziej odpowiedni byłby "Data Warehouse Toolkit" a zaraz potem "Data Warehouse ETL Toolkit".

Jedno jest pewne, nie jest to projekt na weekend, albo nawet parę dni. Połączyć i zunifikować 100 baz to parę miesięcy dla paru osób, jeśli nie masz takiego budżetu, lepiej sobie odpuścić, bo nie będzie to działać :-/
Piotr D.

Piotr D. Tester
Oprogramowania

Temat: Data Warehouse - Co polecacie?

Tomasz B.:
Szukam rozwiązania typu data warehouse. Mam taką sytuację techniczną że mam dużą ilość baz danych MySQL o troszkę różnych schema.

Czy to bazy tej samej aplikacji, tylko o drobnych różnicach ? Jeżeli tak, to proponuję najpierw ściągnać sobie same schemy, potem porównać i opracować rozwiązanie problemu u źródła: ujednolicić struktury tych baz. Jest do tego mnóstwo narzędzi, nawet darmowych. Co prawda przy tej liczbie baz będzie potrzebne coś co da się oskryptować, ale i takie biblioteki (np. do pythona) są i robią przynajmniej zadowalającą robotę.

Upychanie tego pod kolejną warstwą abstrakcji (hurtowania) tylko skomplikuje problem, a jeżeli struktury tych baz nadal ulegają zmianie, to mordęgą będzie utrzymanie narzędzia zasilającego tę hurtownię (tj. ETLa) bo z czasem wyjdzie że każda baza będzie potrzebowała własnej wersji.

No, chyba że niektóre zmiany są nie do pogodzenia ze sobą, ale wtedy to już pytanie do architekta całego rozwiązania i ew. szefa developmentu.

Byłoby dobrze też wymusić wersjonowanie zmian w bazie.
Tomasz B.

Tomasz B. Senior Software
Engineer

Temat: Data Warehouse - Co polecacie?

Witam wszystkich, na pewno nie jestem ekspertem z ETL i DW, dlatego zadałem te pytanie na forum, kto pyta nie błądzi
Tak na prawdę widzę, że brak Ci trochę podstawowej wiedzy, na prawdę polecam książki Kimballa, dla Ciebie najbardziej odpowiedni byłby "Data Warehouse Toolkit" a zaraz potem "Data Warehouse ETL Toolkit".

Na razie poradziłem sobie bez ETL i DW po prostu poprawiając kod mojej aplikacji, chciałem użyć ETL dla większej elastyczności rozwiązania i ciągle myślę że można by było to tak rozwiązać i w ramach eksperymentu pewnie to tak zrobię.

W każdym razie na pewno nie będę kopiował danych i zmieniał struktur baz danych, takiej opcji nie ma i nie będzie. Z tych baz korzystają inne ważne aplikacje które by nie były zadowolone jak bym im coś pozmieniał ;)

Jak wykonam ten ETL to na pewno się podzielę rezultatem moich dokonań.
Bartłomiej Głowacki

Bartłomiej Głowacki BI Support Manager

Temat: Data Warehouse - Co polecacie?

Data Warehouse to baza danych do przechowywania dużej ilości danych historycznych pochodzących z różnych źródeł w celu raportowania/data miningu. nie ma hurtowni bez kopiowania/ładowania :)

skoro udało się to rozwiązać bez hurtowni, to po prostu nie potrzebowałeś hurtowni, czyli zagadnienie bardziej z rozproszonych baz danych niż data warehousingu
Marcin Badtke

Marcin Badtke Administrator Baz
Danych, Citibank
Europe plc

Temat: Data Warehouse - Co polecacie?

Moim zdaniem (i biorąc pod uwagę potrzeby) pomysł Przemka Kapicy z dblinkami jest najlepszy. Niestety nie sprawdziłem jeszcze tego pomysłu, ale można zrobić tak: postawić Oracle (być może darmowa wersja wystarczy) z niego zrobić dblinki do pozostałych 100 MySQLi i odpytywać tylko Oracle. Pytanie czy Oracle potrafi podłączyć się do MySQL ? Skoro Oracle produkuje oba motory to jest taka szansa. Dodatkowa zaleta jest taka, że jakieś mało zmienne dane z MySQLi (np. referencyjne) mogłyby być trzymane lokalnie na Oracle i przeładowywane w interwałach czasowych lub na życzenie. Byłoby to wydajniejsze niż odpytywanie za każdym razem zdalnego MySQL.

Wygląda, że się da, ale przez ODBC. Tutaj link do forum. Jest kilka linków do dokumentacji. Coś da się wygrzebać.
https://forums.oracle.com/forums/thread.jspa?messageID=...Marcin Badtke edytował(a) ten post dnia 10.08.12 o godzinie 22:36
Przemysław Pikoń

Przemysław Pikoń Menedżer ds. Danych,
Leroy Merlin Polska

Temat: Data Warehouse - Co polecacie?

ETL nie sprawdzi w formie jakiej sobie życzysz. Oczywiście mógłbyś stworzyć lokalną hurtownię i za pomocą narzędzia ETL (choćby najprostszego Jaspera) zasilać ją. Jednak to by się wiązało z budowaniem narzędzi kontrolujących jakość danych a później generujących wymagany raport.
Plusy i minusy takiego rozwiązania:
- stworzenie dodatkowych narzędzi do kontroli danych
- koszta (w zależności czy zainwestujesz w sprzęt i dodatkowe licencje)
- więcej pracy i narzędzi do codziennej kontroli
+ nie interesuje cię obciążenie baz zewnętrznych, ty tylko ściągasz proste dane, moc wymagana na stworzenie raportu wymagana jest po Twojej stronie.

Czy można to inaczej rozwiązać? W wątku tym padło hasło linki do innych baz danych. Szczerze mówiąc nie wiem czy jest to realne. Możesz sprawdzić nowego MSSQL 2012. Oprócz tego, że ma własne narzędzie ETL to ma sporo udogodnień dla administratorów (sam się dziwię, że polecam MSSQL, ale może w Twoim przypadku sprawdzi się). Jest na pewno jest tańsze od Oracle i łatwo z niego podłączyć się do innych baz danych (odbc, .net connector)

Co innego? Dłubać samemu. Ja mam podobny problem jak Ty. Stworzyłem własne narzędzie ETL za pomocą bash, SQL, PL/SQL. Codziennie zbieram informacje z różnych systemów (Ingres, Oracle, MSSQL) w jedno miejsce (nie robię pętli, tylko ściągam dane równolegle). Dzięki temu rozwiązaniu łatwiej mi zarządzać interfejsem (bo jest tylko 1), łatwiej mi dodawać nowe tabele do interfejsu (repozytorium tabel w formie pliku płaskiego), łatwiej mi tworzyć raporty (bo mam wszystko w jednym miejscu), mam wpływ na strukturę tabel (odpowiednio zmieniając strukturę tabel mogę wpłynąć na czas generowania danego raportu).

pozdr

Następna dyskusja:

SQL 2000 - Data Transpormat...




Wyślij zaproszenie do