Kann mir jemand ein gutes Beispiel für die Vorteile von MDX gegenüber regulärem SQL bei analytischen Abfragen zeigen? Ich möchte eine MDX-Abfrage mit einer SQL-Abfrage vergleichen, die ähnliche Ergebnisse liefert.
Während es möglich ist, einige davon in traditionelles SQL zu übersetzen, würde es häufig die Synthese von ungeschickten SQL-Ausdrücken erfordern, selbst für sehr einfache MDX-Ausdrücke.
Aber es gibt weder ein Zitat noch ein Beispiel. Ich bin mir völlig bewusst, dass die zugrunde liegenden Daten anders organisiert sein müssen und OLAP mehr Verarbeitung und Speicherung pro Einfügung erfordert. (Mein Vorschlag ist, von einem Oracle RDBMS zu Apache Kylin + Hadoop zu wechseln. )
Kontext: Ich versuche mein Unternehmen davon zu überzeugen, dass wir eine OLAP-Datenbank anstelle einer OLTP-Datenbank abfragen sollten. Die meisten SIEM-Abfragen verwenden häufig Gruppierung, Sortierung und Aggregation. Neben der Leistungssteigerung denke ich, dass OLAP (MDX) -Anfragen präziser und einfacher zu lesen / schreiben sind als das entsprechende OLTP-SQL. Ein konkretes Beispiel würde den Punkt nach Hause bringen, aber ich bin kein SQL-Experte, geschweige denn MDX ...
Wenn dies hilfreich ist, finden Sie hier ein Beispiel für eine SIEM-bezogene SQL-Abfrage für Firewall-Ereignisse, die in der letzten Woche aufgetreten sind:
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
OLAP-Cubes / -Datenbanken weisen die folgenden Merkmale auf:
MDX versus SQL:
MDX dient zum Navigieren in den mehrdimensionalen Datenbanken und zum Definieren von Abfragen für alle ihre Objekte (Dimensionen, Hierarchien, Ebenen, Elemente und Zellen), um (einfach) eine Darstellung von Pivot-Tabellen zu erhalten.
MDX verwendet viele identisch wie SQL - Schlüsselwörter, wie
SELECT
,FROM
,WHERE
. Der Unterschied besteht darin, dass SQL relationale Ansichten erzeugt, während MDX mehrdimensionale Ansichten von Daten erzeugt .Der Unterschied zeigt sich auch in der allgemeinen Struktur der beiden Sprachen:
SQL-Abfrage:
SELECT column1, column2, ..., column FROM table
MDX-Abfrage:
SELECT axis1 ON COLUMNS, axis2 ON ROWS FROM cube
FROM
Gibt die Datenquelle an:In SQL: eine oder mehrere Tabellen
In MDX: ein Cube
SELECT
gibt die Ergebnisse an, die von der Abfrage wiederhergestellt werden sollen:In SQL:
In MDX:
Beispiel für eine MDX-Abfrage:
Maßnahmen : Einzelpreis, Menge, Rabatt, SalesAmount, Fracht
Dimension : Zeit
Hierarchie : Jahr> Quarter> Monat> mit Mitgliedern:
Jahr: 2010, 2011, 2012, 2013, 2014
Quartal: Q1, Q2, Q3, Q4
Monat: Januar, Februar, März,…
Dimension :
Kundenhierarchie : Kontinent> Land> Staat> Stadt mit Mitgliedern:
Stadt: Paris, Lyon, Berlin, Köln, Marseille, Nantes…
Bundesland: Loire atlantique, Bouches du Rhône, Bas Rhin, Turin…
Land: Österreich, Belgien, Dänemark, Frankreich, ...
Kontinentalebene: Europa, Nordamerika, Südamerika, Asien
Dimension :
Produkthierarchie : Kategorie> Unterkategorie> Produkt mit Mitgliedern:
quelle
Update : Dieses Beispiel ist besser:
Abfrageziel: Ermitteln Sie die Verkaufsmenge und die Anzahl der Einheiten (in Spalten) aller Produktfamilien (in Zeilen), die im ersten Quartal 2010 in Kalifornien verkauft wurden
MDX
SQL
Quelle: Verwendungshinweise für Modrian (das MDX-Abfragen zur Verwendung in relationalen Datenbanken übersetzt)
Ich habe ein anständiges Beispiel gefunden, obwohl SQL nicht viel komplexer ist (im Vergleich zu SaasBase anstelle von MDX):
Quelle: Echtzeit-OLAP für Big Data (+ Anwendungsfälle) - bigdata.ro 2013
quelle