OMII-UK Home

Re-implementation of the OGSA-DAI Distributed Query Processor in Clojure

Google Summer of Code 2010 ideas

Primary Mentor: Bartosz Dobrzelecki
Secondary Mentor: Amy Krause
Project: OGSA-DAI.

Background

Java is rather verbose and requires special care when you want to ensure immutability in your collections of objects. Also, the object oriented programming paradigm is not the best fit for rapid prototyping and evolutionary design. Modern IDEs can help with re-factoring but still, once you set a type structure it gets harder and harder to change it as your project progresses specially, when you are developing your understanding of the problem domain while you code. It is this inflexibility that has started to creep into the OGSA-DAI Distributed Query Processor (DQP). The code is full of design patterns: factories, strategies, visitors but these do not make the finding subtle bugs any easier. Our code is highly extensible, but we are starting to discover previously unanticipated extensibility points - the addition of these strains our type structure to the limits. We have also discovered that most of the data structures in our code are lists or trees (nested lists) and many of the algorithms transform lists. Thus now is the time to revisit this problem. Forget about using Java for this project though. Since lists are everywhere, the plan is to use a list processing language - Clojure.

Project Goals

The goals for this project are thus:

1. Re-implement the OGSA-DAI DQP query compiler in Clojure.

2. Asses how well the new code responds to new requirements.

3. Re-implement query optimisers in Clojure.

Project Description

The DQP compiler code that this project aims to replace takes an abstract syntax tree of an SQL query and translates it into an executable logical query plan (a tree of relational operators). Such a query plan is then rewritten by a set of query optimisers to produce a more efficient query plan.

The DQP compiler/optimiser code is part of a larger Java framework. We will need to ensure flawless interoperability with this. The query plans generated by the Clojure code will need to be mapped into an equivalent data structure in Java, so they can be translated by the existing Java code into the runtime representations that are used by OGSA-DAI.

Project Requirements

  • previous experience with LISP
  • Java
  • relational databases (theory of, optional)

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-9) was last changed on 15-Mar-2010 14:00 by MarioAntonioletti [RSS]

© The University of Southampton on behalf of OMII-UK. All Rights Reserved. | Terms of Use | Privacy Policy | PageRank Checker