누구든지 분석 쿼리를 수행 할 때 일반 SQL에 비해 MDX의 장점에 대한 좋은 예를 보여줄 수 있습니까? MDX 쿼리와 비슷한 결과를 제공하는 SQL 쿼리를 비교하고 싶습니다.
이들 중 일부를 기존 SQL로 변환 할 수는 있지만 매우 간단한 MDX 식의 경우에도 서투른 SQL 식의 합성이 필요한 경우가 많습니다.
그러나 인용이나 예는 없습니다. 기본 데이터를 다르게 구성해야한다는 것을 잘 알고 있으며 OLAP에는 인서트 당 더 많은 처리 및 저장이 필요합니다. (제 제안은 Oracle RDBMS에서 Apache Kylin + Hadoop으로 이동하는 것입니다 )
컨텍스트 : 회사에 OLTP 데이터베이스 대신 OLAP 데이터베이스를 쿼리해야한다고 설득하려고합니다. 대부분의 SIEM 쿼리는 그룹 별, 정렬 및 집계를 많이 사용합니다. 성능 향상 외에도 OLAP (MDX) 쿼리는 동등한 OLTP SQL보다 더 간결하고 읽기 / 쓰기가 더 쉽다고 생각합니다. 구체적인 예는 요점을 이끌어 낼 것이지만 SQL의 전문가는 아니지만 MDX는 훨씬 적습니다 ...
도움이되는 경우 지난 주에 발생한 방화벽 이벤트에 대한 샘플 SIEM 관련 SQL 쿼리는 다음과 같습니다.
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