Farrago Project FAQ
We already have MySQL, PostgreSQL, Derby, etc. Why does the
world need another open-source DBMS?
Farrago is not an end-user product like these databases, which are
focused on specific domains such as transaction processing, where they
can already meet the needs of many users. Instead, Farrago provides a
generic framework which can be specialized for a variety of DBMS
domains such as federated query processing, data warehousing,
multimedia, or replication. While it is possible to adapt a project
like PostgreSQL for novel uses, significant customization requires
permanently forking the codebase, because the architecture wasn't
designed for extensibility beyond the type system. By contrast,
Farrago has been designed for system-level extensibility via plugins,
so the specialization process involves adding new components and
behavior instead of replacing existing components with incompatible
versions. The Farrago project model is very similar to Eclipse in this respect.
Why would I be interested in Farrago?
If you are a developer interested in creating a product with DBMS
capabilities of some kind, using Farrago as a starting point can save
you a lot of time. The Farrago architecture spans all of the layers
required for a full DBMS, including: API's such as JDBC; SQL query
parsing, validation, and optimization; query execution; storage and
transaction managment; distributed data; and metadata management. And
the implementation is fully component-based, with careful attention
paid to dependencies, so that if you only want to reuse a
self-contained subset such as storage management or SQL parsing, it's
possible to do this without dragging in unrelated layers.
If you are an end user, you're more likely to be interested in a
prepackaged distribution customized for a specific use such as
data warehousing or
I would like to use Farrago to develop commercial software,
but the GPL is a dead end for me. Do you offer dual licensing?
Farrago is being developed under the stewardship of The Eigenbase Project, a
California non-profit. We strongly support open-source
principles, and we believe that the GPL is the best vehicle for
creating and protecting strong communities of software developers and
users. So we encourage you to distribute your software under the GPL
as well. However, if your organization prohibits development of or
integration with GPL software, Eigenbase offers commercial licensing
in exchange for significant contributions of code or other resources;
contact us for more
Why does Farrago require Java?
Farrago's hybrid Java/C++ architecture opens up a number of opportunities
not available to traditional DBMS implementations (or much more difficult):
Tight integration with Java-based application servers. For example,
rather than reinventing cluster management, a clustered service based
on Farrago could be managed through generic J2EE facilities such as
JMX. There are similar opportunities for features such as distributed
transactions, resource pooling, software update distribution, hot
Better extensibility environment. Writing a UDF in Java (with garbage
collection) means the UDF can run in-process without having to worry
about memory corruption and leaks affecting the server.
Seamless implementation for SQL standard Java stored procedures and
object-oriented user-defined types.
JIT compilation of SQL expression and procedure code. Farrago is
already able to implement many SQL scalar expressions and some
relational expressions by generating Java code on the fly. (The same
technique will be used for stored procedures.) This can be
automatically compiled further into native code by JIT. This is
a big win for commonly re-executed transactional statements as well
as long-running complex queries.
Less security risk. Java is not perfect in this respect, but it
reduces the chance of common exploits such as buffer overruns in
non-performance-critical code. And the C++ portions use modern memory
management techniques (string, vector, shared_ptr, etc), with STLport
bounds-checking turned on for all debug builds.
Isn't Java slow? Doesn't that mean Farrago can't possibly compete
with systems implemented entirely in C/C++?
Careful attention has been paid to keep Java out of the most important
data processing paths. Where Java is used (metadata management,
parsing, validation, and optimization, plus a limited role in
executing generated code), its performance is acceptable.
What version of the SQL standard does Farrago implement?
We are developing towards SQL:2003.
What's with the name?
See the dictionary.
But that's not the whole
Why a jackalope for the mascot?
The wily jackalope combines the speed of a jackrabbit with the fluid
grace and complex headgear of an antelope, which seems appropriate for
a hybrid Java/C++ system. In addition, the jackalope symbolizes a
vision of elegance beyond our mundane reality (and is also reputed to be
surprisingly savage when cornered).