2009-05-08 10 views
0

Ich habe eine Datenbank, die Daten über Artikel enthält, Strukturen und Hersteller. Das heißt, ein Artikel ist mit 1 Hersteller und mit N Strukturknoten verknüpft (denke an Artikel-Klassifikationsknoten).Umgang mit großen Ergebnismengen in SQL Server Analysis Services

Das Abfragen von Artikeln mit T-SQL mit vielen Bedingungen ist derzeit zu langsam, um für einen E-Shop verwendet zu werden, selbst mit guter Hardware und ordnungsgemäß indizierten Tabellen. (Sollte unter 1 Sekunde liegen). Jetzt frage ich mich, ob es sinnvoll wäre, auf diese Daten über einen OLAP Cube zuzugreifen. Ich habe bereits eine entwickelt, um Aggregationen zu erhalten, wie zum Beispiel: Wie viele Artikel des Herstellers X existieren unter dem Knoten Y rekursiv?

Diese Aggregationen sind ziemlich schnell, jetzt frage ich mich, ob es sinnvoll ist, ganze Artikel-Ergebnis-Sets auch über Cubes abzurufen. Bedeutung: Geben Sie mir jede einzelne Artikel ID des Herstellers X, die unter Knoten Y rekursiv. Da die Ergebnismengen sehr groß sein können, dauert die Abfrage noch länger.

Deshalb meine Frage, gibt es einen Weg, mit großen Ergebnismengen in SSAS umzugehen, oder ist das völlig die falsche Richtung, die ich nehme?

Antwort

1

Sie können auf jeden Fall mit großen Datenmengen umgehen und sie in SSAS anständig ausführen, indem Sie Aggregationen nutzen. Natürlich, wenn Sie über den Draht gehen, müssen Sie immer noch eine Menge Daten bewegen, also denken Sie daran. Ihre Abfrage wird schnell zurückkehren. Die Übertragung der Ergebnisse dauert eine Weile.

Die wahre Stärke von SSAS ist es, in Ihrem Ansatz gezielt eingesetzt zu werden. Anstatt zu sagen: "Gib mir alles", können wir auf einer hohen Ebene beginnen, einen Drilldown durchführen, den gewünschten Level finden und weiter bohren, runter, runter, bis du zu den Daten kommst, die du wirklich willst.

+0

Ja, aber Dinge wie Sortieren und Paging berücksichtigen: Angenommen, der Endbenutzer auf der Benutzeroberfläche wählte einen der eher oberen Strukturknoten, das Ergebnis sind 30'000 Artikel. Jetzt möchte ich sie nach Namen sortiert und nur auf die ersten 100 (oder 200-300 usw.) beschränkt haben. Es ist nicht mehr wirklich möglich .. – driAn

+0

Ja ist es. Unabhängig davon, welche Frontend Sie verwenden, können Sie das Rowset begrenzen und die ORDER-Funktion in MDX verwenden (die meisten Frontends haben eine Schaltfläche dafür), um sie zu sortieren. Ich würde argumentieren, dass Top-10-Listen in SSAS einfacher als SQL sind. Davon abgesehen, wie gut kennen Sie MDX? – Eric

+0

Nun, das Problem mit TOP ist, es funktioniert schlecht, wenn Sie Artikel 29'500 bis 30'000 greifen wollen, mit T-SQL können Sie alle Arten von Optimierungen vornehmen, um nur die 'Zeilenseite' zu holen, die Sie wirklich brauchen. Wie gehen Sie damit in MDX um? Ich sauge an MDX, deshalb suche ich nach Meinungen wie deiner. – driAn