1 2 345

Research Project: Pathfinder

Research Project: Pathfinder

Our XQuery compiler Pathfinder turns relational database systems into scalable XQuery and XPath processors that can cope with huge XML inputs. Pathfinder comes packaged as a retargetable standalone compiler and also is integral part of MonetDB/XQuery.

Research Project: Ferry

Research Project: Ferry

Ferry establishes a new connection between two somewhat distant shores: programming languages and database technology: How far we can push the idea of relational database engines that directly and seamlessly participate in program evaluation?

Research Project: Nautilus

Research Project: Nautilus

Nautilus aims at providing database developers with tools that support them in analyzing, debugging, fixing, and testing data transformation processes within their database applications.

Download: MonetDB/XQuery

Download: MonetDB/XQuery

MonetDB/XQuery is the tight integration of our relational XQuery compiler Pathfinder with MonetDB, the super-efficient column store developed by our friends at CWI, Amsterdam. Open source. Try it out!

Research Project: Database Supported Haskell (DSH)

Research Project: Database Supported Haskell (DSH)

DSH, a Haskell library available on Hackage, translates idiomatic data-centric Haskell programs into SQL. Turn your relational database management system into a co-processor for your Haskell runtime. Use monad comprehensions and list-processing combinators to query your data!

<< >> Play > Stop

Research (Forschung)


Database Supported Haskell Print

News

DSH — Database-Supported Haskell

Database-Supported Haskell, DSH for short, is a Haskell library for database-supported program execution. Using the DSH library, a relational database management system (RDBMS) can be used as a coprocessor for the Haskell programming language, especially for those program fragments that carry out data-intensive and data-parallel computations. Rather than embedding a relational language into Haskell, DSH turns idiomatic Haskell programs into SQL queries.

 

Read more: Database Supported Haskell
 
True Language-Level SQL Debugging Print

We present Habitat, a declarative observational debugger for SQL. Habitat facilitates true language-level (not: plan-level) debugging of, probably flawed, SQL queries that yield unexpected results. Users may mark arbitrary SQL subexpressions—ranging from literals, over fragments of predicates, to entire subquery blocks—to observe whether these evaluate as expected.

From the marked SQL text, Habitat’s algebraic compiler derives a new query whose result represents the values of the desired observations. These observations are generated by the target SQL database host itself. Prior data extraction or extra debugging middleware is not required.

Habitat merges multiple observations into a single (nested) tabular display, letting a user explore the relationship of various observations. Filter predicates furthermore ease the interpretation of large results.

Read more: True Language-Level SQL Debugging
 
XQuery Join Graph Isolation Print

Join graphs in databases

SQL query optimizers strive to produce query plans whose primary components are join graphs—bundles of relations interconnected by join predicates—while a secondary, peripheral plan tail performs further filtering, grouping, and sorting. Plans of this particular type are subject to effective optimization strategies that, taking into account the available indexes and applicable join methods, derive equivalent join trees, ideally with a left-deep profile to enable pipelining. For more than 30 years now, relational query processing infrastructure has been tuned to excel at the evaluation of plans of this shape.

The approach

Based on the loop lifting compilation scheme, we compile XQuery queries into logical algebra plans. Both the compositional language and compilation scheme lead to stacked plans whose shapes differ considerably from the ideal join graph + plan tail. Instead, join operators occur in sections distributed all over the plan. A similar distribution can be observed for the blocking operators δ and ρ (duplicate elimination and row ranking). This is quite unlike the algebraic plans produced by SQL SELECT-FROM-WHERE block compilation.

The omnipresence of blocking operators obstructs join operator movement and planning and leads industrial-strength optimizers, e.g., IBM DB2 UDB V9, to execute the plan in stages that read and then again materialize temporary tables.

Here, we propose a plan rewriting procedure that derives join graphs from the initial plans. The resulting plan may be expressed as a single SELECT-DISTINCT-FROM-WHERE-ORDERBY block to be submitted for execution by an off-the-shelf RDBMS. The database system then evaluates this query over a schema-oblivious tabular encoding of XML documents to compute the encoding of the resulting XML node sequence (which may then be serialized to yield the expected XML text). Alternatively the isolated join graph plans represent the input for ROX: Run-time Optimization of XQueries.

Read more: XQuery Join Graph Isolation
 
Nautilus Print

News

  • 11/07/25: Paper got accepted at the QDB Workshop colocated with VLDB 2011.
  • 11/04/04: Tim Belhomme has joined the Nautilus team as a research assistant.
  • 11/03/01: Hanno Eichelberger has joined the Nautilus team as a student member.
  • 10/12/13: Project receives funding from the Baden-Württemberg Stiftung.
  • 10/06/14: Paper got accepted at the VLDB 2010 conference.

 

 

"The deepest parts of [data transformation] are totally unknown to us. No soundings have been able to reach them. What goes on in those distant depths? What [data and transformations] inhabit, or could inhabit, those regions [...]? What is the constitution of these [...]? It's almost beyond conjecture.” A slightly altered version of an excerpt of Jules Verne's 20,000 Leagues under the Sea, Chapter II.

Overview

Database developers may formulate a thought similar to the one above when designing or modifying database applications that derive data by applying queries or, in general, transformations to source data. Indeed, using declarative languages such as SQL to specify queries, developers often face the problem that they cannot properly inspect or debug their query or transformation code. All they see is the tip of the iceberg once the result data is computed. If it does not comply with the developers’ expectation, they usually perform one or more tedious and mostly manual analyze-fix-test cycles until the expected result occurs. The goal of Nautilus is to support developers in this process by providing a suite of algorithms and tools to accompany the process.

Read more: Nautilus
 
Ferry Print

News

 

Ferry — Database-Supported Program Execution

With project Ferry we try to establish a connection between two somewhat distant shores: programming languages and database technology. Ferry explores how far we can push the idea of relational database engines that directly and seamlessly participate in program evaluation to support the super-fast execution of data-intensive programs written in a variety of (general purpose) programming languages. Ferry builds on technology developed in the context of our project Pathfinder.

Read more: Ferry
 
Pathfinder: A Purely Relational XQuery Processor Print


We believe that relational database are the most researched and best engineered query processing infrastructures available today. They are able to efficiently query tons of data. By using a relational database as runtime environment for an XQuery processor we can port 30+ years of research to the XQuery domain and build a processor that is able to scale well with increasing input sizes.

Pathfinder is a re-targetable query compiler that turns XQuery expressions into table algebra queries. While Pathfinder is tightly coupled with MonetDB we also provide a SQL code generator that allows any database to become a faithful XQuery processor.

Read more: Pathfinder: A Purely Relational XQuery Processor