Temat: Data Warehouse - Co polecacie?
Tomasz B.:
Witam
Nareszcie zapowiada się że znajdę czas i w tym tygodniu zajmę się tym projektem. Obecnie wygląda to tak jest aplikacja ma jakieś 100 baz danych rozsianych po świecie, do każdej bazy danych spływają dane które w sumie muszą być analizowane w czasie rzeczywistym.
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.
Najlepiej pasowało by mi zrobić taki wspólny view table integrujący bazy danych, w tym view table chciałby by istniała kolumna z nazwą źródła (bazy danych).
Integracja danych i przeinstalowanie lub zimna struktury baz danych z których dane są czerpane nie ma takiej opcji, bazy muszą zostać takie jakie są.
Dane muszą być nie kopiowane ale czerpane z baz danych.
Moje pytanko jest takie czy ktoś z was robił takie sztuczki i ma praktyczne doświadczenie.
Moim zdaniem potrzebne są Ci procedury ETL. Masz MySQLa, więc możesz sam takie procedury przenosząco-mapujące naklepać. Miej jednak na uwadze jedną rzecz - ETL nie oznacza (tak mi się wydaje) czasu rzeczywistego, on jest raczej czasu quasi rzeczywistego.
Co więcej, należy sobie zadać pytanie co się stanie, jeżeli narost danych źródłowych będzie tak duży, że ETL nie wyrobi w jakimkolwiek wymiarze czasowym. Uważam, że musisz sobie przemyśleć na przykład ładowanie różnicowe danych/zasilenia bazy docelowej okresowo (np. nocą).
Tabele logujące nazwy źródeł czy jakiekolwiek inne rzeczy mogą być w np. w oddzielnym schemacie, gdzie będą insertować procedury ETL.
Jednym z rozwiązań jest tworzenie triggerów reagujących na operacje DML na źródle - wydaje mi się jednak, że to będzie mało wydajne.
Co do oprogramowania to tworzenia analiz - jeżeli nie są to bardzo zaawansowane raporty itd., to możesz pokusić się o stworzenie czegoś samemu , używając czy to procedur, czy tworząc zewnętrzną aplikację - wydaje mi się, że nie jest to trudne.
Moje doświadczenie z hurtowniami danych jest małe, ale być może to Ci pomoże :D
Pozdrawiam.
Daniel Kmieć:
Tym samym nie musisz budować hurtowni danych. Minus jest taki, że w momencie odświeżania raportu najpierw będzie musiał wykonać się ETL, który zassa dane, przetransformuje i wyrzuci do Twojego raportu.
Oczywiście jeśli nie masz potrzeby przeglądania zmian z dokładnością do minuty to wystarczy zaharmonogramować raport, który wykona się przed Twoim przyjściem do pracy i po sprawie.
Daniel
Też uważam, że nie jest to do końca dobre rozwiązanie. Dajmy na to, że raport wykonujemy cyklicznie, raz na dzień. Odświeżanie raportu uruchamia zawsze ETL - w momencie, kiedy raportów mamy określoną ilość, to wydajność takiego rozwiązania jest słaba. Faktycznie, jest to minus.
Lepiej wykonać SELECT'a na zmapowanych danych niż odpalać ETL.
Bartłomiej Pietraszuk edytował(a) ten post dnia 02.08.12 o godzinie 23:12