Czy ktoś może mi pokazać dobry przykład przewagi MDX nad zwykłym SQL podczas wykonywania zapytań analitycznych? Chciałbym porównać zapytanie MDX z zapytaniem SQL, które daje podobne wyniki.
Chociaż niektóre z nich można przetłumaczyć na tradycyjny SQL, często wymagałoby to syntezy niezgrabnych wyrażeń SQL, nawet w przypadku bardzo prostych wyrażeń MDX.
Ale nie ma ani cytatu ani przykładu. Jestem w pełni świadomy, że podstawowe dane muszą być zorganizowane inaczej, a OLAP będzie wymagał więcej przetwarzania i przechowywania na wkładkę. (Moja propozycja to przejście z Oracle RDBMS do Apache Kylin + Hadoop )
Kontekst: Próbuję przekonać moją firmę, że powinniśmy sprawdzać bazę danych OLAP zamiast bazy danych OLTP. Większość zapytań SIEM korzysta z grupowania według, sortowania i agregacji. Oprócz zwiększenia wydajności, myślę, że zapytania OLAP (MDX) byłyby bardziej zwięzłe i łatwiejsze do odczytu / zapisu niż równoważne SQL OLTP. Konkretny przykład doprowadziłby do sedna sprawy, ale nie jestem ekspertem od SQL, a tym bardziej MDX ...
Jeśli to pomaga, oto przykładowe zapytanie SQL związane z SIEM dotyczące zdarzeń zapory, które miały miejsce w ostatnim tygodniu:
SELECT 'Seoul Average' AS term,
Substr(To_char(idate, 'HH24:MI'), 0, 4)
|| '0' AS event_time ,
Round(Avg(tot_accept)) AS cnt
FROM (
SELECT *
FROM st_event_100_#yyyymm-1m#
WHERE idate BETWEEN trunc(sysdate, 'iw')-7 AND trunc(sysdate, 'iw')-3 #stat_monitor_group_query#
UNION ALL
SELECT *
FROM st_event_100_#yyyymm#
WHERE idate BETWEEN trunc(sysdate, 'iw')-7 AND trunc(sysdate, 'iw')-3 #stat_monitor_group_query# ) pm
GROUP BY substr(to_char(idate, 'HH24:MI'), 0, 4)
|| '0'
UNION ALL
SELECT 'today' AS term ,
substr(to_char(idate, 'HH24:MI'), 0, 4)
|| '0' AS event_time ,
round(avg(tot_accept)) AS cnt
FROM st_event_100_#yyyymm# cm
WHERE idate >= trunc(sysdate) #stat_monitor_group_query#
GROUP BY substr(to_char(idate, 'HH24:MI'), 0, 4)
|| '0'
ORDER BY term DESC,
event_time ASC