Leveraging sort-merge for processing temporal data

2016 
Sorting is, together with partitioning and indexing, one of the core paradigms on which current Database Management System implementations base their query processing. It can be applied to efficiently compute joins, anti-joins, nearest neighbour joins (NNJs), aggregations, etc. It is efficient since, after the sorting, it makes one sequential scan of both inputs, and does not fetch redundantly tuples that do not appear in the result. However, sort-based approaches loose their efficiency in the presence of temporal data: i) when dealing with time intervals, backtracking to previously scanned tuples that are still valid refetches in vain also tuples that are not anymore valid and will not appear in the result; ii) when dealing with timestamps, in computing NNJs with grouping attributes, blocks storing tuples of different groups are refetched multiple times. The goal of this thesis is to provide support to database systems for performing efficient sort-merge computations in the above cases. We first introduce a new operator for computing NNJ queries with integrated support of grouping attributes and selection predicates. Its evaluation tree avoids false hits and redundant fetches, which are major performance bottlenecks in current NNJ solutions. We then show that, in contrast to current solutions that are not group- and selection-enabled, our approach does not constrain the scope of the query optimizer: query trees using our solution can take advantage of any optimization based on the groups, and any optimization on the selection predicates. For example, with our approach the Database Management System can use a sorted index scan for fetching at once all the blocks of the fact table storing tuples with the groups of the outer reviolation and, thus, reducing the tuples to sort. With Lateral NNJs, instead, groups are processed individually, and blocks storing tuples of different groups are fetched multiple times. With our approach the selection can be pushed down before the join if it is selective, or evaluated on the fly while computing the join if it’s not. With an indexed NNJ, instead, selection push down causes a nested loop which makes the NNJ inefficient due to the quadratic number of pairs checked. We applied our findings and implemented our approach into the kernel of the open-source database system PostgreSQL. We then introduce a novel partitioning technique, namely Disjoint Interval Partitioning (DIP), for efficiently computing sort-merge computations on interval data. While current partitioning techniques try to place tuples with similar intervals into the same partitions, DIP does exactly the opposite: it puts tuples that do not overlap into the same partitions. This yields more merges between partitions but each of those no longer requires a nested-loop but can be performed more efficiently using sort-merge. Since DIP outputs the partitions with their elements already sorted, applying a temporal operator to two DIP partitions is performed in linear time, in contrast to the quadratic time of the state of the art solutions. We illustrate the generality of our approach by describing the implementation of three basic database operators: join, anti-join, and aggregation. Extensive analytical evaluations confirm the efficiency of the solutions presented in this thesis. We experimentally compare our solutions to the state of the art approaches using real-world and synthetic temporal data. v Die Sortierung ist, zusammen mit der Partitionierung und der Indexierung, eines der Kernparadigmen, auf der die Verarbeitung von Anfragen durch Datanbanksysteme beruht. Sie wird unter anderem fur die effiziente Berechnung von Joins, Anti-Joins, Nearest Neighbour Joins (NNJs) und Aggregationen angewandt. Die Effizienz der Sortierung ruhrt daher, dass nach ihr lediglich ein sequenzieller Scan zweier sortierter Relationen fur die Beantwortung der eingangs erwahnten Anfragen durchgefuhrt werden muss und auf Tupel, welche nicht Bestandteil des Ergebnisses sind, nicht mehrfach zugegriffen wird. Allerdings verlieren Ansatze, die auf der Sortierung basieren, ihre Effizienz bei Anfragen uber zeitabhangigen Daten: i) bei Zeitintervallen wird beim Zuruckgreifen auf vorgangig zugegriffene und immer noch gultige Tupel erneut auf inzwischen ungultige und in der Ergebnismenge nicht enthaltene Tupel zugegriffen; ii) bei Zeitpunkten wird bei der Berechnung von NNJs mit Attributgruppierung auf Blocke mit Tupeln verschiedener Gruppen mehrfach zugegriffen. Das Ziel dieser Arbeit besteht in der Weiterentwicklung von Datenbanksystemen hinsichtlich der effizienten Verarbeitung von Sort-Merge-Berechnungen in den obengenannten Fallen. Zuerst stellen wir einen neuen Operator fur die Berechnung von NNJ-Abfragen mit integrierter Unterstutzung von Attributgruppierung und Auswahlpradikaten vor. Sein Evaluationsbaum vermeidet erfolglose und redundante Zugriffe auf Daten, welche die hauptsachlichen Engpasse in der Performanz von aktuellen NNJ-Losungen darstellen. Wir zeigen, dass im Gegensatz zu herkommlichen Losungen, die keine Attributgruppierungen und Auswahlpradikate unterstutzen, vi) unser Ansatz die Moglichkeiten des Abfrageoptimierers signifikant erweitert: Abfragebaume, die unseren Ansatz anwenden, profitieren von samtlichen Optimierungen aus dem Einsatz von Attributgruppierungen und Auswahlpradikaten. Beispielsweise konnen Datenbanksysteme mit unserem Ansatz einen sortierten Indexscan einsetzen, der genau einmal auf einen Block der Fak- tentabelle zugreift, der Tupel mit den Gruppen der ausseren Relation speichert, und dadurch die Anzahl der zu sortierenden Tupel verringert. Im Unterschied dazu werden mit gangigen lateralen NNJs die Gruppen einzeln verarbeitet und auf Blocke, die Tupel verschiedener Gruppen beinhalten, wird mehrmals zugegriffen. Mit unserem Ansatz kann die Selektion bereits vor dem Join ausgewertet werden, sofern sie selektiv ist, oder die Selektion kann wahrend des Scans der Da- ten ausgwertet werden. Mit einem indexierten NNJ fuhrt eine standardmassig fruhe Auswertung der Selektionsbedingung (selection push down) zu einer geschachtelten Schleife (nested loop), was den NNJ auf Grund der quadratischen Anzahl zu prufender Paare ineffizient macht. Wir haben die gewonnenen Erkenntnisse angewandt und unseren Ansatz im Kern des Open Source Datenbanksystems PostgreSQL umgesetzt. Wir fuhren eine neue Art der Partitionierung, namlich Disjoint Interval Partitioning (DIP), zur effizienten Verarbeitung von Sort-Merge-Berechnungen auf Intervalldaten ein. Aktuelle Ansatze zur Partitionierung versuchen Tupel mit ahnlichen Intervallen in dieselbe Partition zu packen. Unser Ansatz macht genau das Gegenteil: er weist nicht-uberlappende Tupel denselben Partitionen zu. Dies fuhrt zu mehr Kombinationen von Partitionen, aber da jede dieser Kom- binationen keine geschachtelte Schleife erfordert, konnen Sort-Merge-Berechnungen effizienter durchgefuhrt werden. Da DIP die Elemente bereits sortiert ausgibt, kann ein Operator auf zwei DIP-Partitionen in linearer Zeit durchgefuhrt werden, im Unterschied zur quadratischen Zeit herkommlicher Losungen. Wir zeigen die Allgemeingultigkeit unseres Ansatzes auf, indem wir die Umsetzung von drei Datenbankoperatoren beschreiben: Join, Anti-Join und Aggregation. Umfassende analytische Auswertungen bestatigen die Effizienz der in dieser Arbeit vorgestellten Losungen. Wir vergleichen unsere Losungen mit aktuellen Ansatzen mit echten und synthetischen zeitabhangigen Daten.
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    0
    References
    0
    Citations
    NaN
    KQI
    []