Research Project Ferry



Ferry PDF Print

With project Ferry we try to establish a connection between to two somewhat distant shores: programming languages and database technology. Ferry explores of how far we can push the idea of relational database engines that directly and seamlessly participate in program evaluation. Programmers continue to use their language's very own syntax, idioms, and functions — Ferry is in charge to decide where the computation described by a given program will take place: on the programming language's heap or inside the relational database back-end.

Programs that touch and move huge amounts of data, think Computational Science, benefit the most. You may continue to analyse your experimental data using, say, Ruby scripts — Ferry will compile selected fragments of your Ruby code into (sequences of collaborating) database queries.

To this end, we search for, design, and implement new compilation strategies that allow programming and scripting language concepts like complex types (e.g., ordered lists, arrays, dictionaries) and control structures (e.g., nested iteration, conditionals, variable assignment and reference) to be mapped into efficient set-oriented algebraic programs. Ferry builds on technology developed in the context of our project Pathfinder.

Ferry targets relational database engines, but any platform that implements some variant of a set-oriented execution model can assume the role of a Ferry back-end. We've got IBM's DB2, CWI's MonetDB, and kx Systems' kdb+ on the workbench, currently.