[omniORB] Announce: new project - Zdb

Huw Rogers count0@building2.co.jp
Tue, 22 Jan 2002 13:58:56 +0900


I've developed a CORBA database server named Zdb
released under the LGPL that uses OmniORB, Berkeley DB,
and CORBA::ORBit (Perl CORBA mapping).

It's at http://www.metavector.com/software.htm

If anyone finds it interesting/useful, please let
me know.

Blurb follows.

        -Huw

Zdb is a fully transactional open source multithreaded CORBA database
server designed for rapid development of high-volume Internet
applications, released under the GNU Lesser General Public License.

Zdb uses Berkeley DB from Sleepycat Software http://www.sleepycat.com
and OmniORB from AT&T Research Labs Cambridge
http://www.uk.research.att.com

Download the Zdb source distribution for Solaris or Linux from
MetaVector
at http://www.metavector.com/software.htm#zdb 

Data is passed in/out of Zdb as CORBA sequence<any> data streams. 

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 joins across
multiple tables. 

Mapping object hierarchies with multiple indexed 1-n, n-1 and n-n
relationships is relatively straightforward. Indexes can be run on
single fields or combinations of multiple fields. All tables have one
primary index, and can have any number of additional secondary indexes. 

Individual values (fields) can be any CORBA base type, sequence<octet>,
or one of two specific IDL types that are defined by Zdb for
representing dates and times. 

The on-disk format is a space and CPU efficient architecture neutral
self-describing data stream that parallels the sequence<any> format used
externally. String/BLOB fields are always variable size with no
application imposed limits. Data streams can be compared and indexed
even if the number of values in the streams or the base types of the
individual values vary - values of differing types are automatically
upcast for comparison. This lets you mix e.g. strings and integers in
the same field (column), even if it is indexed. 

Schema migration (adding fields to records or changing the base type of
fields) can be performed without downtime, incrementally updating older
records while continuing to provide service. 

Although the IDL can be used directly from any CORBA supported language,
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 supplied
client libraries also provide facilities that simplify coding clients,
such as automatic transaction retry/resumption on deadlock, etc. 

Future plans include clustering and replication for fault tolerance
based on Berkeley DB 4's replication facilities, and support for Zdb
participation in distributed 2-phase commit transactions.