28
NASI SPONSORZY I PARTNERZY

SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Embed Size (px)

Citation preview

Page 1: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

NASI SPONSORZY I PARTNERZY

Page 2: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

OLAP czasu rzeczywistego

Grzegorz Stolecki

Page 3: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Agenda

• Zasada działania

• MOLAP, ROLAP, HOLAP

• Proactive Caching

SQLDay 2013

Page 4: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Tryby magazynowania danych

• ROLAP, HOLAP, MOLAP.

• Tryb magazynowania danych jest niewidoczny dla aplikacji klienckiej.

• Tryb magazynowania to właściwość partycji i wymiaru.

SQLDay 2013

Page 5: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Tryby magazynowania danych

ROLAP

• Relational OLAP.

• Dane wymiarów i faktów znajdują się w bazie relacyjnej.

• Jeśli używany jest SQL Server – SSAS może tworzyć widoki indeksowane na potrzeby agregacji.

SQLDay 2013

Page 6: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Tryby magazynowania danych

HOLAP

• Hybrid OLAP.

• Dane faktów przechowywane są w bazie relacyjnej.

• Agregacje przechowywane są na serwerze SSAS.

• Tryb niedostępny dla wymiarów .

SQLDay 2013

Page 7: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Tryby magazynowania danych

MOLAP

• Multidimensional OLAP.

• Wszystkie partie danych (wymiary, fakty, agregacje) przechowywane są na serwerze SSAS.

SQLDay 2013

Page 8: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Tryby magazynowania danych

• Jeśli partycja pracuje w trybie MOLAP jeden z wymiarów musi również pracować w trybie MOLAP.

• Jeśli wymiar jest w trybie ROLAP i w zapytaniu użyjemy elementów-liści – odczyt wartości faktów nastąpi z bazy relacyjnej – niezależnie od trybu partycji.

• Wymiar ROLAP – przy bardzo dużej liczbie elementów lub przy partycjach tylko ROLAP.

SQLDay 2013

Page 9: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Pobieranie danych przez zapytanie

• Bufor w pamięci (cache)

• Magazyn MOLAP

• Magazyn ROLAP

SQLDay 2013

ROLAP MOLAP CACHE

Page 10: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Problem

• Gdy zmienią się dane w bazie relacyjnej zawartość bufora CACHE oraz magazynu MOLAP staje się nieaktualna.

• Konieczne jest przetworzenie (procesowanie) magazynu MOLAP.

SQLDay 2013

Page 11: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Rozwiązanie

• Samodzielne procesowanie magazynu MOLAP.

• Wykorzystanie aktywnego buforowania (ProactiveCaching) – tylko edycja Enterprise.

SQLDay 2013

Page 12: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Proactive caching - pytania

• Kiedy powinno nastąpić procesowanie – w ustalonych odstępach czasowych czy gdy zmienią się dane wejściowe?

• Skąd brać dane dla zapytań podczas procesowania?

– Stara wersja kostki – dane mogą być nieaktualne

– Baza relacyjna – dane aktualne, ale zapytania wolniejsze

• W jaki sposób SSAS ma być powiadomiony o zmianie danych wejściowych?

SQLDay 2013

Page 13: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Tryby procesowania

• MOLAP MOLAP

– Po notyfikacji zmian następuje procesowanie nowej wersji obiektu. Po zakończeniu nowa wersja jest dostępna dla użytkowników.

• MOLAP ROLAP MOLAP

– Po notyfikacji tryb jest zmieniany z MOLAP na ROLAP, rozpoczyna się procesowanie nowej wersji MOLAP, po zakończeniu włączana jest nowa wersja, podczas procesowania na zapytania odpowiada obiekt ROLAP.

SQLDay 2013

Page 14: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Częstotliwość odświeżania

• SSAS nie pozwala na dwie równoległe operacje procesowania tego samego obiektu.

• Jeśli w trakcie procesowania nadejdzie notyfikacja zmian – aktualne procesowanie jest anulowane, rozpoczyna się nowe.

• Przy częstych zmianach danych SSAS może wpaść w otchłań nieprzerwanego procesowania obiektu.

SQLDay 2013

Page 15: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Ustawienia

• SilenceInterval– Okres oczekiwania od otrzymania notyfikacji do

rozpoczęcia procesowania.

• SilenceOverrideInterval– Okres czasu po jakim bezwarunkowo rozpocznie się

procesowanie obiektu – nawet jeśli nie wystąpił okres ciszy zdefiniowany przez Silence Interval.

• OnlineMode (Bring Online Immediately)– Immediate (Włączone): Zapytania będą rozwiązywane z

obiektu w trybie ROLAP.– OnCacheComplete (Wyłączone): Zapytania nie mogą być

wykonywane, czekamy na nową wersję obiektu.

SQLDay 2013

Page 16: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Ustawienia

• Latency– Ile czasu powinno upłynąć od notyfikacji zmian w

danych do zmiany trybu obiektu z MOLAP na ROLAP

– Inaczej okres po jakim cache MOLAP zostanie usunięty ze względu na „przeterminowanie”

– Domyślnie (-1) zmiana nie następuje

• AggregationStorage– Regular: agregacje będą tworzone jako widoki

indeksowane w bazie relacyjnej

– MolapOnly: agregacje w trybie ROLAP nie są tworzone

SQLDay 2013

Page 17: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Ustawienia

• ForceRebuildInterval

– Sztywne ustawienie okresu czasu od ostatniego procesowania obiektu po jakim nastąpi kolejne procesowanie.

SQLDay 2013

Page 18: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Scenariusze

• Ustawienie odświeżania wymaga uważnego zdefiniowania właściwości

– SilenceInterval

– SilenceIntervalOverride

– Latency

– ForceRebuildInterval

SQLDay 2013

Page 19: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Scheduled MOLAP

• SilenceInterval = -1 (nieskończoność)

• SilenceIntervalOverride = -1

• Latency = -1

• ForceRebuildInterval = 1 dzień

• Proactive Caching wyłączony

• Uwaga: nie należy polegać na ustawieniu czasu procesowania, zależy on od LastProcessed. Precyzyjnie można ustawić procesowanie przy pomocy SQL Server Agent

SQLDay 2013

Page 20: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Automatic MOLAP

• SilenceInterval = 10 sec

• SilenceIntervalOverride = 10 min

• Latency = -1

• ForceRebuildInterval = -1

• Proactive Caching włączony

• Scenariusz optymalny dla okresowych zasileń przez proces ETL

SQLDay 2013

Page 21: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Tajemnice ROLAP

• Nawet w trybie ROLAP SSAS utrzymuje wewnętrzne bufory pozwalające na szybszą odpowiedź na podobne zapytania.

• Jest możliwy chwilowy brak synchronizacji danych z buforem.

• Ponieważ Latency = 0 – każda notyfikacja o zmianie danych powoduje usunięcie tych buforów.

SQLDay 2013

Page 22: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Tryby notyfikacji

• SQL Server

– SSAS śledzi wystąpienie zdarzeń dla wybranej bazy danych i tabeli przy pomocy SQL Trace.

– Wymagane jest posiadanie przez SSAS uprawnień administracyjnych (ALTER TRACE).

– Przy bardzo dużym obciążeniu SQL Server może ominąć zdarzenie – nie ma gwarancji notyfikacji.

SQLDay 2013

Page 23: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Tryby notyfikacji

• Client Initiated

– Aplikacja kliencka wysyła do serwera SSAS komendę XML/A NotifyTableChange

SQLDay 2013

<Command>

<NotifyTableChange>

<Provider>SQLOLEDB</Provider>

<DataSource>localhost</DataSource>

<InitialCatalog>AdventureWorksDW</InitialCatalog>

<TableNotifications>

<TableNotification>

<DBTableName>FactInternetSales</DBTableName>

<DBSchemaName>dbo</DBSchemaName>

</TableNotification>

</TableNotifications>

</NotifyTableChange>

</Command>

Page 24: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Tryby notyfikacji

• Scheduled Polling

– SSAS wysyła zapytanie SQL do bazy relacyjnej

– Zapytanie musi zwracać jedną wartość liczbową

– SSAS porównuje wartość otrzymaną z poprzednią –jeśli są różne następuje notyfikacja

– RefreshInterval określa co jaki okres czasu jest wysyłane zapytanie

SELECT COUNT(*) FROM dbo.Produkt

SQLDay 2013

Page 25: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Tryby notyfikacji

• Enable incremental updates

– Włącza tryb procesowania przyrostowego

– Należy zdefiniować zapytanie (Processing Query), które będzie zwracać tylko nowe wiersze

– Uwaga! SSAS nie sprawdza, czy nowe wiersze nie duplikują dotychczasowych faktów – mogą się pojawić trudne do namierzenia błędy

SQLDay 2013

Page 26: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Generalne uwagi

• Operacja procesowania obiektu w SSAS zawsze jest kosztowna jeśli chodzi o czas i zasoby serwera.

• Mechanizm Proactive Caching powinien być używany na partycjach zawierających najświeższe dane.

• Należy rozważyć użycie procesowania inkrementalnego (ProcessAdd).

• Używanie takich samych ustawień dla wielu obiektów pozwoli serwerowi SSAS na grupowanie operacji procesowania.

SQLDay 2013

Page 27: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

Dziękuję za uwagę!

Q & A

SQLDay 2013

Page 28: SQLDay2013_GrzegorzStolecki_RealTimeOLAP

NASI SPONSORZY I PARTNERZY

Organizacja: Polskie Stowarzyszenie Użytkowników SQL Server - PLSSUGProdukcja: DATA MASTER Maciej Pilecki