Ai đó có thể chỉ cho tôi một ví dụ hay về lợi thế của MDX so với SQL thông thường khi thực hiện các truy vấn phân tích không? Tôi muốn so sánh một truy vấn MDX với một truy vấn SQL cho kết quả tương tự.
Mặc dù có thể dịch một số trong số này sang SQL truyền thống, nhưng nó thường yêu cầu tổng hợp các biểu thức SQL vụng về ngay cả đối với các biểu thức MDX rất đơn giản.
Nhưng không có một trích dẫn cũng như ví dụ. Tôi hoàn toàn biết rằng dữ liệu cơ bản phải được tổ chức khác nhau và OLAP sẽ yêu cầu xử lý và lưu trữ nhiều hơn trên mỗi lần chèn. (Đề xuất của tôi là chuyển từ Oracle RDBMS sang Apache Kylin + Hadoop )
Bối cảnh: Tôi đang cố gắng thuyết phục công ty của mình rằng chúng ta nên truy vấn cơ sở dữ liệu OLAP thay vì cơ sở dữ liệu OLTP. Hầu hết các truy vấn SIEM sử dụng nhiều nhóm, sắp xếp và tổng hợp. Bên cạnh việc tăng hiệu năng, tôi nghĩ các truy vấn OLAP (MDX) sẽ ngắn gọn và dễ đọc / dễ đọc hơn so với SQL OLTP tương đương. Một ví dụ cụ thể sẽ lái xe về nhà, nhưng tôi không phải là chuyên gia về SQL, ít MDX hơn ...
Nếu nó hữu ích, đây là một truy vấn SQL liên quan đến SIEM mẫu cho các sự kiện tường lửa đã xảy ra trong tuần qua:
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