SourceForge Logo

The Zource

The home of Zdb - "just say no to SQL".

Zdb

The Zdb Sourceforge project page is here.

Zdb is a fully transactional open source multithreaded CORBA database server. Sophisticated data access is supported by a dedicated application-programming interface (API) that is designed to considerably ease application development and eliminate the overhead of SQL and SQL-centric interfaces such as ODBC, JDBC and other RDBMS APIs. Studies indicate that up to 70% of project development time is typically taken up with mapping and interfacing to databases.

Zdb processes "data streams" that are passed in/out as sequences of data values (sequence in CORBA IDL). Each data stream is like a row in a relational database; a field position within a stream is like a column. Multiple tables are supported with multiple indexes on each table, specified by field positions. In addition to insertion, update and deletion, sophisticated query operations are supported, including selection on multiple indexes per table, batch transfer of query results, range queries, and both inner and outer joins across multiple tables.

Data streams can be stored, retrieved and indexed even if the numbers or types of fields vary - field values of differing types are automatically up-cast for comparison. For example, strings and integers can be mixed in the same field position (column) within a table, even if that field forms part of an index. Schema migration (adding fields to records or changing the base type of a field) can be performed without application downtime.

Mapping object hierarchies with multiple indexed 1-n and n-n relationships is straightforward. Indexes can be run on single fields or any combination of multiple fields. Tables have a defined primary index and any number of additional secondary indexes.

Individual field values can be any of the CORBA base types (various sized integers, floating point values and strings), a sequence, or one of two specific types that are defined by the Zdb API for representing dates and times.

At the core of Zdb is a space- and CPU-efficient architecture-neutral self-describing data format that efficiently converts to/from the sequence format used externally. String and sequence fields are variable size with no application-imposed limits.

The API is declared in CORBA IDL and can be used directly from any language supporting CORBA (including C++, Java and Python). Specific C++ and Perl client libraries are provided for efficient processing and conversion of the supported date/time formats to other standard formats and strings such as Unix time, struct tm, ISO8601, etc. The client libraries also provide facilities that accelerate coding, such as automatic transaction retry/resumption on deadlock, etc.

Zdb License

Zdb itself is released under the GNU General Public License (GNU GPL). The underlying Z class libraries are released under the GNU Lesser General Public License (GNU LGPL) (previously known as the GNU Library General Public License). The GNU licenses are available from http://www.gnu.org.

Zdb uses Berkeley DB. For licensing information about Berkeley DB, please see http://www.sleepycat.com.

Implementation

Zdb is coded in C++ and makes extensive use of the Portable Object Adapter and ORB facilities specified by OMG CORBA. Zdb does not depend on more than a CORBA-compliant ORB/POA core - no Naming Service, Interface Repository or other CORBA service implementation is required.

Zdb uses Berkeley DB. Berkeley DB is a widely used open source embedded database originally developed at the University of California Berkeley, and is now maintained and supported by Sleepycat Software. Zdb is both platform- and ORB-neutral. The currently supported ORB is OmniORB originally from AT&T Laboratories Cambridge, one of the highest-performing open source C++ ORBs available.

Planned enhancements include: