Deutsch   |   English
   
 digg.com  del.icio.us 

Multipath SQL

Konventionelle Herangehensweise: (Temporäre) Tabellen 

Sehr oft, wenn eine Auswertung komplex genug ist, wird es sehr schwer, sie in einem einzigen SQL Statement zu formulieren. Die häufig verwendete Lösung in solchen Fällen ist, temporäre Tabellen mit Zwischenergebnissen anzulegen und diese dann zu einem abschließenden Select-Statement zu kombinieren:

CREATE TABLE german_cities AS 
(
       SELECT cities.* FROM cities, countries
       WHERE 
              cities.country_id=countries.country_id 
              AND countries.name='Germany'
);
 
SELECT b.name, c.name, COUNT(*)  
FROM
       customer_moves a,
       german_cities b, german_cities c
WHERE
        a."from" = b.city_id AND
        a."to" = c.city_id
GROUP BY b.name, c.name;

Diese Herangehensweise hat allerdings Ihre Nachteile:

  • Der Nutzer / die Anwendung muss dafür sorgen, dass der Namensraum nicht 'zugemüllt' wird, da jede Session ihre eindeutig benannten Tabellen erzeugen muss.
  • Filter, die an den abschließenden Select angewandt werden sollen, müssen bereits bei die Erzeugung von temporären Tabellen (manuell) angewandt werden, ansonsten wären sie unnötig groß.
  • Bei jeder Änderung der darunterliegenden Daten müssen die (temporären) Tabellen aktualisiert werden, ansonsten kann die Auswertung veraltete Ergebnisse liefern.

Bitte beachten Sie, dass EXASolution das Konzept von temporären Tabellen nicht kennt. Da EXASolution ein In-Memory DBMS ist und ein durchgängiges Transaktionskonzept implementiert, kann jede Tabelle als temporär interpretiert werden, solange sie nicht commited ist.

Wenn sie Multipath SQL mit Hilfe von Zwischentabellen implementieren, empfehlen wir Ihnen, autocommit abzuschalten und die Zwischentabellen zu droppen, wenn Ihre Auswertung fertig ist. Danach ist es 'sicher', eventuelle Änderungen zu commiten.

Bessere Lösung: Views

Die bessere Lösung in einem solchem Fall ist, die temporären Tabellen durch Views zu ersetzen, was folgende Vorteile bringt:

  • Der Query-Optimizer kann das 'Big Picture' im abschließenden Select sehen. Er kann ggf. Join-Reihenfolgen ändern oder sogar lokale Bedingungen aus verschiedenen Views in Verbindung bringen.
  • Das selbe Prinzip wird bei zusätzlichen Bedingungen im finalen Select angewandt: sie können i.d.R. bis auf die untersten Ebenen propagiert werden, was bereits in sehr früheren Stadien der Queryberechnung eine Reduzierung der Datenmen bewirkt.
  • Es gibt keine veralteten Daten. Die Views haben immer Zugriff auf die aktuell gültigen (commited) Daten.
CREATE VIEW german_cities AS 
(
       SELECT cities.* FROM cities, countries
       WHERE 
              cities.country_id=countries.country_id 
              AND countries.name='Germany'
);
 
SELECT b.name, c.name, COUNT(*)  
FROM
       customer_moves a,
       german_cities b, german_cities c
WHERE
        a."from" = b.city_id AND
        a."to" = c.city_id
GROUP BY b.name, c.name;
 

Im Falle, wenn die Multipath-Query on-the-fly von einer Applikation generiert wird, haben Sie immer noch den Overhead von Viewerstellung und mögliche Konflikte im Namespace.

All-in-one: Named subselects

In solchen Fällen können benannte Subselects (oder Common Table Expressions) eine Lösung für Sie sein.

Im Grunde funktionieren sie ähnlich wie Views, aber sie stellen keine Datenbankobjekte dar, sondern sind ein Teil Ihrer Query. Sie brauchen nicht erstellt, gedroppt oder commited zu werden: kein Overhead und volle Flexibilität.

WITH german_cities AS 
(
       SELECT cities.* FROM cities, countries
       WHERE 
              cities.country_id=countries.country_id 
              AND countries.name='Germany'
)
SELECT b.name, c.name, COUNT(*)  
FROM
       customer_moves a,
       german_cities b, german_cities c
WHERE
        a."from" = b.city_id AND
        a."to" = c.city_id
GROUP BY b.name, c.name;
 
Sie kommen nicht weiter?
Von den Experten lernen:
Referenzen
  • AHOOLY
  • COOP
  • „Mit EXASolution sind wir für zukünftiges Datenwachstum bestens gerüstet. Dadurch, dass wir jetzt Geodaten verarbeiten, sprich die Dimension des Raumbezugs mit auswerten können, bieten wir unseren Kunden ganz neue Analysemöglichkeiten und noch umfassendere Marktübersichten. Wir sind sehr zufrieden mit der neuen Lösung, können flexibel auf zukünftige Anforderungen reagieren und trotzdem unsere Total Cost of Ownership reduzieren, da der so gewählte BI-Stack unsere Vision eines „Lean-BI“ in vollem Umfang unsterstützt.“

    Guido Niermann, IT-Leiter, Dataforce GmbH

    Dataforce
  • "Durch die Einbindung von EXASOL können wir unseren Kunden ein ganz neues Erlebnis bezüglich der explorativen Datenanalyse bieten… Neben der Technologie waren wir vor allem mit der Pre-Sales Beratung und dem Support während der Integration äußerst zufrieden."

     Martin Heink
    Geschäftsführer und Inhaber, econda GmbH 

    Econda
  • "Entscheidend für die IMS Health war insbesondere, dass wir uns durch einen sehr schnell aufgesetzten Proof of Concept von der Leistungsfähigkeit von EXASolution direkt überzeugen konnten."

     Michael Kempke
    Director Data Collection Global Operations, IMS Health GmbH & Co. OHG

    IMS
  • "Mit der innovativen Datenbank von EXASOL können wir komplexe Berechnungen genauer und umfangreicher durchführen. Das gibt uns einen signifikanten Technologievorsprung gegenüber der Konkurrenz."

     Tobias Kiessling
    CTO, intelliAd 

    Intelliad
  • "Die durchgängig hohe Leistung und die Möglichkeit, Echtzeitanalysen fahren zu können, waren für uns ausschlaggebend bei der Wahl von EXASolution."

     Tobias Kroha, Geschäftsführer der für das m-pathy-Projekt verantwortlichen seto GmbH

    m-pathy
  • Media Control
  • Olympus
  • "Wir haben uns für EXASolution entschieden, da die Hochleistungsdatenbank mit den zu erwartenden großen Datenmengen sehr gut umgehen kann und optimale Flexibilität bietet."

     Dr. Michael Röbbecke
    (ehem.) Geschäftsführer, RatePAY 

    RatePAY
  • "Mit EXASolution können wir unsere Geschäftsprozesse deutlich optimieren." 

     Gerhard Zapf
    Projektleiter, Semikron 

    Semikron
  • "Ein zuverlässiger und schneller Support, eine bessere Kundenbetreuung sowie eine bewiesene Fachkompetenz…"

     David Hodge
    IT Director, Sony Music Entertainment Germany 

    Sony Music
  • SOQUERO
  • SponsorPay
  • Stayfriends
  • "Die Datenbank von EXASOL ist Technik made in Germany, auf die wir uns langfristig verlassen können. Da sie bei steigendem Datenvolumen selbstständig skaliert und auch physisch beliebig erweitert werden kann, wächst unsere Datenbank mit unserem Unternehmen, und wir können auch in Zukunft flexibel und schnell auf neue Anforderungen reagieren."

     Heinrich Zetlmayer
    Geschäftsführer, Turtle Entertainment 

    Turtle Entertainment
  • United Internet Dialog
  • "Mit EXASolution haben wir eine Lösung erworben, die unsere hohen Leistungsansprüche komplexer Analysen bei steigenden Datenmengen für unsere Kunden optimal erfüllt." 

     Christian Sauer
    Geschäftsführer, Webtrekk GmbH 

    Webtrekk
  • "Wir haben uns nach einem ausgiebigen Benchmark-Test für die Lösung von EXASOL entschieden. Die hohe Performance des Systems, das Preis-/Leistungs-Verhältnis und der Service haben uns vollauf überzeugt"

    Dr. Ulrich Fricke
    Leiter Business Intelligence, XING AG 

    Xing
  • "Neben Wirtschaftlichkeit, Geschwindigkeit und hoher Leistungsfähigkeit war Flexibilität eines der entscheidenden Kriterien bei der Wahl unserer Datenbank… Die neue Datenbank bietet uns diese Skalierbarkeit bei reduzierten Total Cost of Ownership. So können wir auch in Zukunft immer die optimale Analyseleistung für unsere Kunden erbringen…"

     Sebastian Hoop
    Head of Operations, xplosion interactive gmbh 

    Xplosion
  • Zalando