Jump to: navigation, search

CDO/MongoDB Store


The CDO MongoDB store is an implementation of a CDO Store that allows to store models and meta models to MongoDB databases.

The current implementation has been developed and tested with MongoDB 1.6.5. It supports all CDO 4.0 features with the following exceptions:

  • NoExternalReferences (hence no meta references)
  • NoQueryXRefs (hence no ensureReferentialIntegrity)
  • NoLargeObjects
  • NoFeatureMaps
  • NoHandleRevisions
  • NoRawAccess (hence no offline support)
  • NoBranching
  • NoCrashRecovery

Due to the lack of transactionality in MongoDB CDO's MongoDB store is implemented as a delta store. This means that a single CDO commit with all its change deltas is stored in a single MongoDB document. It may result in unexpected DB size and performance characteristics, e.g., the DB never shrinks (all history is kept) and write access is faster than read access (the state of a single object is assembled from the changes of multiple commit documents).

The remainder of this document will help users setup their environment and configure CDO to work with MongoDB.

Database Server

Windows Example:

   C:\Programs\MongoDB\bin\mongod.exe --dbpath "C:\develop\ws\cdo\databases\specificDB" --noauth --rest

Driver Bundle

The MongoDB driver bundle that is shipped with CDO is not identical to the one that is originally distributed via mongodb.com. The UTF-8 conversion class had to be replaced by a version that uses the JRE mechanism to fulfill the legal requirements of the Eclipse Foundation. Performance degradation or misbehaviour may result. It is highly recommended that you download and deploy the original version of the MongoDB driver via MongoDB Java Language Center.


The type identifier of the store configuration is "mongodb":

 <store type="mongodb">
   <property name="uri" value="mongodb://localhost"/>
   <property name="db" value="specificDB"/>
   <property name="drop" value="false"/>

The "db" property is optional. If omitted, the repository name is used as MongoDB database name.

The "drop" property is optional. If the value is "true" the MongoDB database is dropped before the store is activated.

Wikis: CDO | Net4j | EMF | Eclipse