Connected Data Objects (CDO) is a free implementation of a
Distributed Shared Model Distribution may refer to:
Mathematics
*Distribution (mathematics), generalized functions used to formulate solutions of partial differential equations
*Probability distribution, the probability of a particular value or value range of a varia ...
on top of the
Eclipse Modeling Framework
Eclipse Modeling Framework (EMF) is an Eclipse (software), Eclipse-based Model-driven architecture, modeling framework and Automatic programming, code generation facility for building tools and other applications based on a structured data model. ...
(EMF).
With CDO, programmers can easily enhance existing EMF models in such a way that they can be stored and subsequently maintained in a central model repository. While
object relational mapping against a
JDBC data source on the server side is the shipped default, CDO provides for ''pluggable storage adapters'' that allow you to develop and use different mappers (like
Hibernate- or
OODB-based). On the client side, CDO provides a default integration with EMF, the Eclipse Modeling Framework, although other model integrations on top of the ''CDO protocol'' are imaginable as well.
Model integration features
* EMF integration at model level (as opposed to the edit level)
* Support for generated models (just switch two .genmodel properties)
* Support for dynamic models (just load .ecore file and commit to repository)
* Support for legacy models (for compiled models without access to .genmodel)
* Support for the Ecore meta model and descendants
User interface features
* Eclipse view for working with CDO sessions, transactions, views and resources
* Package Manager dialog per session
* Eclipse editor for working with resources and objects
Client side features
* Multiple sessions to multiple repositories on multiple servers
* Multiple transactions per session
* Multiple read-only views per session
* Multiple audit views per session (an audit is a view that shows a consistent, historical version of a repository)
* Multiple resources per view (a view is always associated with its own EMF ResourceSet)
* Inter-resource
proxy resolution
* Multiple root objects per resource
* Object state shared among all views of a session
* Object graph internally unconnected (unused parts of the graph can easily be reclaimed by the garbage collector)
* Only new and modified objects committed in a transaction
* Transactions can span multiple resources
* Demand loading of objects (resources are populated as they are navigated)
* Partial loading of collections (chunk size can be configured per session)
* Adaptable pre-fetching of objects (different intelligent usage analyzers are available)
*
Asynchronous object invalidation (optional)
* Clean API to work with sessions, views, transactions and objects
* CDOResources are EObjects as well
* Objects carry meta information like id, state, version and life span
* Support for OSGi environments (headless, Eclipse RCP, ...)
* Support for standalone applications (non-OSGi)
Network protocol features
* Net4j based binary application protocol
* Pluggable transport layer (shipped with NIO socket transport and JVM embedded transport)
* Pluggable fail over support
* Pluggable authentication (shipped with challenge/response negotiation)
* Multiple acceptors per server
Server side features
* Pluggable storage adapters
* Multiple repositories per server
* Multiple models (packages) per repository
* Multiple resources (instance documents) per repository
* Expressive
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. ...
configuration file
* Configurable storage adapter per repository (see below)
* Configurable caching per repository
* Clean
API to work with repositories, sessions, views, transactions and revisions
* Support for OSGi environments (usually headless)
* Support for standalone applications (non-OSGi)
DB store features
* Supports all optional features of the CDO Server
* Pluggable
SQL dialect adapters
* Includes support for Derby, HSQLDB,
MySQL
MySQL () is an open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter My, and "SQL", the acronym for Structured Query Language. A relational database ...
and
Oracle
An oracle is a person or agency considered to provide wise and insightful counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. As such, it is a form of divination.
Description
The wor ...
(TBD)
* Pluggable mapping strategies
* Includes horizontal mapping strategy (one table per concrete class)
* Includes vertical mapping strategy (TBD, one table per class in hierarchy)
* Supports different mapping modes for collections
External links
CDO Homepage
Eclipse (software)