Чи може хто-небудь показати мені хороший приклад переваг MDX перед звичайними SQL, коли робите аналітичні запити? Я хотів би порівняти запит MDX із запитом SQL, який дає подібні результати.
Хоча можливо перекласти деякі з них у традиційний SQL, він часто вимагає синтезу незграбних SQL-виразів навіть для дуже простих виразів MDX.
Але немає ні цитування, ні прикладу. Мені повністю відомо, що основні дані повинні бути організовані по-різному, і для OLAP буде потрібно більше обробки та зберігання на кожну вкладку. (Моя пропозиція - перейти з RDBMS Oracle до Apache Kylin + Hadoop )
Контекст: Я намагаюся переконати свою компанію, що нам слід запитувати базу даних OLAP, а не базу даних OLTP. Більшість запитів SIEM широко використовують групування, сортування та агрегацію. Крім підвищення продуктивності, я думаю, що запити OLAP (MDX) були б більш короткими та легшими для читання / запису, ніж еквівалентний OLTP SQL. Конкретний приклад міг би донести справу додому, але я не експерт у SQL, тим більше MDX ...
Якщо це допомагає, ось зразок SEM-запиту, пов'язаного з SIEM, щодо подій брандмауера, що відбулися за минулий тиждень:
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