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.
See also The Object-Oriented Database System Manifesto
Definitely buzzword-compliant...
"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.
Dynamic Distributed OODBMS, written in Common Lisp, which interfaces to C, C++, Common Lisp, Java
MetaKit - The structured database which fits in the palm of your hand
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.
ObjectDB - an object database for use with Java applications.
Versant, Versant Object Database, Data Management, ODBMS, High Performance, High Availability
MinneStore(tm) version 2 - "Libre" OO DB for various Smalltalk implementations.
Persistent data in C++ Classes
GOODS - Generic Object Oriented Database System
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...
Comparison of characteristics of GOODS, POST++, ShMem and FastDB DBMSes
FastDB - Main-Memory Database with Object-Relational model
Uses T-Trees, Tight integration with C++, Small SQL subset
GigaBASE Database Management System - FastDB extended to use paging
Features include:
Fast query execution
Post-relational features
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.
goodmis.org - Gnu Object Oriented Database Management Information System
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 .
StoredObjects Java -based OODBMS Environment
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 ...
A C++ library that uses Metakit to provide persistent storage of graph-like data.
Coldstore is a set of C++ libraries to support attaching C++ objects to persistent databases.
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.
Tools associated with developing database applications in C++. There is a main memory database available under an open source license; they also have a C++ wrapper for Faircom c-tree Plus.
Freely available components include:
OOFile main memory C++ Database
A C++ wrapper for Jim Clark's expat library.
Cog: Simple Python Object Database
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 - Monet Database Management System
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.
These are databases intended to provide efficient direct storage of XML documents. They are commonly used in the context of XML Application Frameworks .
DB2XML - A tool for transforming relational databases into XML documents
Written in Java
A "native XML database" with pluggable storage backends, implemented in Java . Supports XPath processing.
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.
A native XML database built on a relational database. The database stores data in a set of PostgreSQL tables and includes a partial implementation of XPath . Written in C++.
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.