Object Oriented databases may be characterized quite simply; they typically represent database systems that integrate tightly with a language with object-oriented features such as C++, Java, or Smalltalk, that allow programs to link data structures to databases in such a way that the data structures trivially become "persistent."
Thus, once you tie a data structure to the database, you no longer need to be concerned about whether a piece of data is in memory or not; as soon as your program refers to it, the data will be pulled into memory if it is not already there. As soon as your program updates the data, it will be updated into the database.
"An object-relational, event-driven, real-time, memory-resident, persistent database management system (DBMS) with an active, relational, fault-tolerant, client-server architecture and a 4GL object-oriented graphic client; it is multi-platform, and capable of being used for fault-tolerant, distributed, real-time applications on a heterogeneous network of computers..."
A research system that conforms to the various OODBMS standards...
Objectivity/DB was notably used in the Iridium satellite-based telecom system.
Rumor has it that this may be deployed on Linux Real Soon Now.
MetaKit is an efficient embedded database library with a small footprint. It fills the gap between flat-file, relational, object-oriented, and tree-structured databases, supporting relational joins, serialization, nested structures, and instant schema evolution. There is a C++ API, a Python binding called Mk4py, and a Tcl binding called Mk4tcl. You can manipulate and exchange data with any of these. Datafiles are portable, using auto-sizing ints and strings, with the ability to efficiently store binary data, from single bytes to multi-Mb objects. The library has been used on Unix, Windows, Macintosh, VMS, and others, spanning a range of 16- to 64-bit architectures.
An "object oriented" database that works only on Microsoft OSes...
XDb is a simple object-oriented database for Windows 95/98/ME/NT/2K/XP & Pocket PCs. Instantiate, reference, cut, copy, paste, delete, query objects via File Explorer like GUI. Built-in server and browser allows data to be viewed over the Internet. Fast, flexible, compact (fits on a floppy). ActiveX DLL interface for VB, C, Delphi, ASP. API similar to ADO and XML DOM.
Persistent data in C++ Classes
GOODS is fully distributed multiplatform OODBMS, based on active client model with language independent interface. Database server is implemented using multithreaded kernel and provides high concurrency on client requests execution. Interfaces to C++ and Java are available...
Uses T-Trees, Tight integration with C++, Small SQL subset
GigaBASE Database Management System - FastDB extended to use paging
Fast query execution
Tight integration with C++
Automatic scheme evaluation
Efficient log-less transactions
Zero time recovery
AceDB is a genome database designed specifically for handling bioinformatic data flexibly. It supports a query language called AQL that borrows syntax and ideas from a number of object database systems including OQL. It includes various front end "methods" that are quite specific to browsing genomic data.
It allows one to setup non-relational databases consisting of text data and metadata files, and then access the data using a query language.
The Zope Object DataBase (ZODB) provides objects with Persistence storage and management. ZODB has a commercial component called Z Enterprise Objects, a client server package that works with ZODB. With ZEO, a ZODB Server can be run, and various ZODB Clients, which are Zope instances, can access the ZODB Server over TCP/IP.
ozone is an object-oriented database completely implemented in Java . It supports transactions, object-level access rights, RMI, multi-user access, and multi-threading and comes with an implementation of the DOM .
A Java library involving as little as 60k of code that provides an interface allowing you to tie Java class data structures to persistent data structures that might reside on disk. It includes a sort of "Query-by-Example" query scheme.
Some versions are usable gratis for "noncommercial use," but it's definitely not Free Software ...
The idea of this is to get rid of the notion of "manually" serializing data into files.
By attaching to persistent databases, you no longer "read files" or "save files;" you just attach and detach, and what needs to be read and written is read/written.
Interesting applications would include:
Attaching to parse trees so that rather than editing programs as text, you directly manipulate the parsed representation.
A document editor that has no notion of "load" and "save;" when you start it up, it automagically attaches itself to documents.
A Guile binding is under discussion.
Freely available components include:
Cog is the Checkpointed Object Graph object database, providing semi-transparent persistence for large sets of interrelated Python objects. It handles automatic loading of objects on reference, and saving of modified objects back to disk. Reference counting is used to automatically remove no longer referenced objects from storage, and objects will be automatically be attached to the database if a persistent object references them.
MonetDB is a database management system developed from a main-memory perspective using a fully decomposed storage model, automatic index management, extensibility of data types and search accelerators, SQL- and XML- frontends.
Mondrian is an OLAP (online analytical processing) database written in Java. It implements the MDX language, and the XML for Analysis and JOLAP specifications. It reads from SQL and other data sources, and aggregates data in a memory cache.
DB2XML - A tool for transforming relational databases into XML documents
Written in Java
XDBM uses an interface that is "based upon the DOM standard". It stores XML documents in a pre-parsed, indexed format and resolves memory problems by leaving parts of the document on disk until they are needed.
Xindice is a native XML database written in Java that is designed to store large numbers of small XML documents. It can index element and attribute values and compresses documents to save space. Documents are arranged into a hierarchy of collections and can be queried with XPath .
Castor is an XML data binding implementation that claims to be "the shortest path between Java™ objects, XML documents, SQL tables and LDAP directories. It provides Java to XML binding, Java to SQL/LDAP persistence, and then some." It supports optimistic and pessimistic locking modes, in-memory concurrency engine, and dead-lock detection, as well as support for Enterprise Java Beans, JTA transaction demarcation, inclusion as resource in transactional environment, and JDBC connection pooling.