Over the last three years, we built Predator, a full-fledged object-relational database system with support for complex data types and used it as a vehicle to explore efficient query processing techniques for complex content (like geographic and financial data). Our results indicate that the performance of existing database systems can be improved by orders of magnitude. The improvements arise from a novel software architecture based on the concept of an Enhanced Abstract Data Type (E-ADT). Every complex data type is modeled as an E-ADT, providing the database system with information about how it is to be stored, how it can be indexed, what methods can be applied to it, and how the execution of those methods can be optimized. Predator is used in graduate and undergraduate classes at Cornell and at several other universities and the source code is publicly available.
Recently, we started the Jaguar project, which seeks to answer the broad question: "how does Java influence the software architecture of a database system?". We have extended Predator to permit user-defined extensions written in Java. Interesting issues of portability, security, and efficiency arise. We are extending our work to implement large parts of database query processing (like join algorithms) in Java. The expected benefits will lie in the flexibility to move components of query executions across networks. A number of interesting issues arise, ranging from compiler techniques for query plans to novel compression techniques for relational data.
Finally, we are applying our Java-based database technology to a "portable device" computing environment, where large numbers of smartcards and computing devices interact to form a loosely structured but massive distributed database.
NSF Career Award 1997-2001
Program committee: ACM SIGMOD Conf. Management of Data, Seattle, WA, June 1998; Workshop on Internet Server Performance, in conjunction with ACM SIGMETRICS 1998, Madison WI, June 1998.
The Cornell Predator object-relational database system, Version 1.0, released summer 1998.