Difference between revisions of "CDO"

From Eclipsepedia

Jump to: navigation, search
 
(48 intermediate revisions by 7 users not shown)
Line 1: Line 1:
__NOTOC__
+
__NOTOC__<br>
CDO is a 3-tiers solution for '''distributed shared models''' and a complete '''model repository''' server.
+
 
<br>
+
{| border="0"
<br>
+
|-
 +
| valign="top" | [[Image:CDOOverview.png]]
 +
| &nbsp;<br>
 +
| &nbsp;<br>
 +
| &nbsp;<br>
 +
| width="500" valign="top" |
 +
CDO is both a development-time model repository and a run-time persistence framework. Being highly optimized it supports object graphs of arbitrary size.
 +
 
 +
CDO offers transactions with save points, explicit locking, change notification, queries, temporality, branching, merging, offline and fail-over modes, ...
 +
 
 +
The storage back-end is pluggable and migrations between direct JDBC, Hibernate, Objectivity/DB, MongoDB or DB4O are seamless for CDO applications.
 +
 
 +
You may also want to visit our '''[http://www.eclipse.org/cdo homepage]'''.
  
{|border="0"
 
|valign="top"|[[Image:CDOOverview.png]]
 
|&nbsp;<br>
 
|&nbsp;<br>
 
|&nbsp;<br>
 
|valign="top" width="400"|With CDO you can easily enhance your 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.
 
 
|}
 
|}
<br>
 
  
{|border="0" cellspacing="10"
+
<br>  
|valign="top"|'''Documentation'''<br>
+
[[CDO Architecture]]<br>
+
[[CDO User Interface]]<br>
+
[[CDO Client]]<br>
+
[[CDO Server Configuration Reference|CDO Server]]<br>
+
[http://www.eclipsecon.org/2008/index.php?page=sub/&id=58 CDO@EclipseCon2008]<br>
+
  
|valign="top"|'''Tutorials'''<br>
+
{| cellspacing="10" border="0"
[[Preparing EMF Models for CDO]]<br>
+
|-
[[Using the CDO User Interface]]<br>
+
| valign="top" | '''Documentation'''<br>  
[[Writing Standalone CDO Applications]]<br>
+
'''[http://wiki.eclipse.org/images/0/07/CDO-Poster.pdf CDO Poster]'''<br>
[[User Contributed CDO Documentation]]<br>
+
[[CDO/Client|Client Architecture]]<br>
[[Tweaking CDO Performance]]<br>
+
[[CDO/Server Configuration Reference|Server Configuration]]<br>
 +
[http://www.eclipse.org/cdo CDO Presentations]<br>
 +
[http://live.eclipse.org/node/884 Webinar 2010/04]<br>
  
|valign="top"|'''Resources'''<br>
+
| valign="top" | '''Tutorials'''<br>
 +
[[CDO/Preparing EMF Models|Preparing EMF Models for CDO]]<br>
 +
[[CDO/Using the User Interface|Using the CDO User Interface]]<br>
 +
[[CDO/Tweaking Performance|Tweaking CDO Performance]]<br>
 +
'''[[CDO/User Contributed Documentation | User Contributed Documentation]]'''<br>
 +
 
 +
| valign="top" | '''Resources'''<br>  
 
'''[[FAQ for CDO and Net4j|FAQ]]'''<br>
 
'''[[FAQ for CDO and Net4j|FAQ]]'''<br>
[[CDO Project Resources#Downloads|Downloads]]<br>
+
[http://www.eclipse.org/cdo/downloads/ Downloads and Updates]<br>
[[CDO Project Resources#Sources|Sources]]<br>
+
[[CDO Source Installation|Source Installation]]<br>
[[CDO Project Resources#Documentation|JavaDocs]]<br>
+
[[CDO Development Guidelines|Development Guidelines]]<br>
[[CDO Project Resources#Support and Feedback|Support and Feedback]]<br>
+
[[CDO/Release Engineering|Release Engineering]]<br>
[[CDO Project Resources#Miscellaneous|Miscellaneous]]<br>
+
[[CDO/Git|Dealing with Git]]<br>
 +
 
 +
| valign="top" | '''Features'''<br>
 +
[[#Model_Integration_Features|Model Integration]]<br>
 +
[[#User_Interface_Features|User Interface]]<br>
 +
[[#Client_Side_Features|Client Side]]<br>
 +
[[#Network_Protocol_Features|Network Protocol]]<br>
 +
[[#Server_Side_Features|Server Side]]<br>
 +
[[CDO/DB Store|DB Store]]<br>
 +
[[CDO/MongoDB Store|MongoDB Store]]<br>
 +
[[CDO/Hibernate Store|Hibernate Store]]: [[CDO/Hibernate_Store/Quick_Start|Quick Start]], [[CDO/Hibernate_Store/Tutorial|Tutorial]]<br>
 +
[[CDO/Objectivity Store|Objectivity Store]]<br>
 +
[[/New And Noteworthy for CDO 2.0/]]<br>
 +
[http://www.eclipse.org/cdo/documentation/relnotes_30/relnotes-3.0.html New And Noteworthy for CDO 3.0]<br>
 +
'''[https://bugs.eclipse.org/bugs/buglist.cgi?keywords=noteworthy;keywords_type=allwords;bug_severity=enhancement;resolution=FIXED;classification=Modeling;query_format=advanced;version=4.0;component=cdo.core;component=cdo.dawn;component=cdo.db;component=cdo.docs;component=cdo.hibernate;component=cdo.net4j;component=cdo.net4j.db;component=cdo.net4j.ui;component=cdo.objy;component=cdo.releng;component=cdo.ui;product=EMF New And Noteworthy for CDO 4.0]'''<br>
  
|valign="top"|'''Features'''<br>
 
[[#Model Integration Features|Model Integration]]<br>
 
[[#User Interface Features|User Interface]]<br>
 
[[#Client Side Features|Client Side]]<br>
 
[[#Network Protocol Features|Network Protocol]]<br>
 
[[#Server Side Features|Server Side]]<br>
 
[[#DB Store Features|DB Store]]<br>
 
[[#Hibernate Store Features|Hibernate Store]]<br>
 
[[New And Noteworthy for CDO 2.0]]<br>
 
[[CDO Explorer (work in progress)]]<br>
 
 
|}
 
|}
<br>
 
  
==Model Integration Features==
+
<br>  
* EMF integration at model level (as opposed to the edit level)
+
* Supported model types:
+
** Generated models (just switch two .genmodel properties)
+
** Dynamic models (just load .ecore file and commit to repository)
+
** Legacy models (for compiled models without access to .genmodel)
+
** Ecore meta meta model and descendants
+
<br>
+
  
==User Interface Features==
+
== Model Integration 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
+
<br>
+
  
==Client Side Features==
+
*EMF integration at model level (as opposed to the edit level)  
* Multiple sessions to multiple repositories on multiple servers
+
*Supported model types:
* Multiple transactions per session
+
**Generated models (just switch two .genmodel properties)  
* Multiple read-only views per session
+
**Dynamic models (just load .ecore file and commit to repository)  
* Multiple audit views per session (an audit is a view that shows a consistent, historical version of a repository)
+
**[[/Legacy Mode/|Legacy models]] (for compiled models without access to .genmodel)  
* Multiple resources per view (a view is always associated with its own EMF ResourceSet)
+
**Ecore meta meta model and descendants
* 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)
+
<br>
+
  
==Network Protocol Features==
+
<br>  
* [[Net4j]] based binary application protocol
+
* Pluggable transport layer (shipped with NIO socket transport, polling HTTP and JVM embedded transport)
+
* Pluggable fail over support
+
* Pluggable authentication (shipped with challenge/response negotiation)
+
* Multiple acceptors per server
+
<br>
+
  
==Server Side Features==
+
== User Interface Features ==
* Pluggable storage adapters
+
** See [[#DB Store Features|DB Store Features]]
+
** See [[#Hibernate Store Features|Hibernate Store Features]]
+
** Objectivity support coming soon
+
** Native memory storage adapter
+
* Multiple repositories per server
+
* Multiple models (packages) per repository
+
* Multiple resources (instance documents) per repository
+
* Expressive XML 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)
+
<br>
+
  
==DB Store Features==
+
*Eclipse view for working with CDO sessions, transactions, views and resources
* Supports all optional features of the [[#CDO Server|CDO Server]]
+
*Package Manager dialog per session
* Pluggable SQL dialect adapters
+
*Eclipse editor for working with resources and objects
* Includes support for Derby, HSQLDB, MySQL and Oracle (TBD)
+
*[http://wiki.eclipse.org/CDO/Explorer_%28work_in_progress%29 CDO Explorer]
* 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
+
<br>
+
  
==Hibernate Store Features==
 
* Integration with EMF Teneo
 
* Supports most of the Teneo features. See [[EMF/Teneo_1.0/New_and_Noteworthy|Teneo New and Noteworthy]]
 
<br>
 
 
<br>
 
<br>
 +
 +
== 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 [[EObject]]s 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)
 +
 +
<br>
 +
 +
== Network Protocol Features  ==
 +
 +
*[[Net4j]] based binary application protocol
 +
*Pluggable transport layer (shipped with NIO socket transport, polling HTTP and JVM embedded transport)
 +
*Pluggable fail over support
 +
*Pluggable authentication (shipped with challenge/response negotiation)
 +
*Multiple acceptors per server
 +
 +
<br>
 +
 +
== Server Side Features  ==
 +
 +
*Pluggable storage adapters
 +
**See [[#DB_Store_Features|DB Store Features]]
 +
**See [[CDO/Hibernate_Store|Hibernate Store Features]]
 +
**Objectivity support coming soon
 +
**Native memory storage adapter
 +
*Multiple repositories per server
 +
*Multiple models (packages) per repository
 +
*Multiple resources (instance documents) per repository
 +
*Expressive XML 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)
 +
 +
<br> <br>
 +
 
----
 
----
Wikis: [[Net4j]] | [[EMF]] | [[Eclipse]]
 
  
 +
Wikis: [[Net4j]] | [[EMF]] | [[Eclipse]]
  
[[Category:Modeling]] [[Category:EMF]] [[Category:CDO]]
+
[[Category:Modeling]] [[Category:EMF]] [[Category:CDO]] [[Category:Net4j]]

Latest revision as of 01:21, 18 November 2012


CDOOverview.png  
 
 

CDO is both a development-time model repository and a run-time persistence framework. Being highly optimized it supports object graphs of arbitrary size.

CDO offers transactions with save points, explicit locking, change notification, queries, temporality, branching, merging, offline and fail-over modes, ...

The storage back-end is pluggable and migrations between direct JDBC, Hibernate, Objectivity/DB, MongoDB or DB4O are seamless for CDO applications.

You may also want to visit our homepage.


Documentation

CDO Poster
Client Architecture
Server Configuration
CDO Presentations
Webinar 2010/04

Tutorials

Preparing EMF Models for CDO
Using the CDO User Interface
Tweaking CDO Performance
User Contributed Documentation

Resources

FAQ
Downloads and Updates
Source Installation
Development Guidelines
Release Engineering
Dealing with Git

Features

Model Integration
User Interface
Client Side
Network Protocol
Server Side
DB Store
MongoDB Store
Hibernate Store: Quick Start, Tutorial
Objectivity Store
New And Noteworthy for CDO 2.0
New And Noteworthy for CDO 3.0
New And Noteworthy for CDO 4.0


[edit] Model Integration Features

  • EMF integration at model level (as opposed to the edit level)
  • Supported model types:
    • Generated models (just switch two .genmodel properties)
    • Dynamic models (just load .ecore file and commit to repository)
    • Legacy models (for compiled models without access to .genmodel)
    • Ecore meta meta model and descendants


[edit] 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
  • CDO Explorer


[edit] 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)


[edit] Network Protocol Features

  • Net4j based binary application protocol
  • Pluggable transport layer (shipped with NIO socket transport, polling HTTP and JVM embedded transport)
  • Pluggable fail over support
  • Pluggable authentication (shipped with challenge/response negotiation)
  • Multiple acceptors per server


[edit] Server Side Features

  • Pluggable storage adapters
  • Multiple repositories per server
  • Multiple models (packages) per repository
  • Multiple resources (instance documents) per repository
  • Expressive XML 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)




Wikis: Net4j | EMF | Eclipse