Jump to content

Connected Data Objects

From Alfawiki
Connected Data Objects (CDO)
Company typeOpen source software framework
IndustrySoftware development
ProductsDistributed Shared Model framework atop Eclipse Modeling Framework (EMF)

Connected Data Objects (CDO) represents a no-cost realization of a Distributed Shared Model constructed atop the Eclipse Modeling Framework (EMF).

CDO facilitates developers in enhancing EMF models to enable centralized storage and administration within a model repository. Its standard server-side persistence employs object relational mapping through JDBC, while also accommodating pluggable storage adapters that allow alternative mappers such as Hibernate (framework) or OODB. On the client end, CDO is natively integrated with EMF, though other model integrations can be achieved using the CDO protocol.

Model integration features

  • Integration with EMF at the model layer
  • Compatibility with generated models by adjusting two .genmodel settings
  • Capability to handle dynamic models by loading .ecore files for commits
  • Support for legacy compiled models without needing access to .genmodel files
  • Full compatibility with the Ecore meta model and its derivatives

User interface features

  • Eclipse views designed for managing CDO sessions, transactions, views, and resources
  • Package Manager dialog available per session
  • Eclipse editors provided for resource and object manipulation

Client side features

  • Ability to open multiple sessions connecting to various repositories and servers
  • Support for numerous transactions and read-only views within each session
  • Audit views presenting consistent historical snapshots of repository states
  • Multiple resources managed per view, each associated with its own EMF ResourceSet
  • Resolution of proxies between resources
  • Support for multiple root objects within a single resource
  • Shared state of objects maintained across different session views
  • Unconnected internal object graph architecture enabling effective garbage collection
  • Transactions commit only new or altered objects, even when spanning multiple resources
  • Demand-driven and partial object loading configurable via chunk sizes
  • Adaptive pre-fetching powered by intelligent usage analyzers
  • Optional asynchronous invalidation of objects
  • Well-structured API for managing sessions, views, transactions, and objects
  • CDOResources function as EObjects containing metadata such as id, state, version, and lifespan
  • Compatibility with OSGi environments (headless setups, Eclipse RCP) as well as standalone applications

Network protocol features

  • Binary application protocol based on Net4j
  • Transport layer designed to be pluggable, including NIO socket and JVM embedded transports out of the box
  • Support for pluggable failover strategies
  • Pluggable authentication mechanisms utilizing challenge/response negotiation
  • Servers can host multiple acceptors
  • Storage adapters designed to be pluggable
  • Servers support multiple repositories and models (packages) simultaneously
  • Each repository can contain multiple resources (instance documents)
  • Configuration via expressive XML files
  • Storage adapter and caching options configurable on a per-repository basis
  • Clean API provided for repositories, sessions, views, transactions, and revision management
  • Supports OSGi environments (commonly headless) alongside standalone applications

DB store features

  • Incorporates all optional CDO Server capabilities
  • Supports pluggable SQL dialect adapters
  • Compatible with Derby, HSQLDB, MySQL, and Oracle (to be determined) databases
  • Offers pluggable mapping strategies including horizontal mapping (one table per concrete class)
  • Vertical mapping strategy (one table per class in hierarchy) is planned for future implementation
  • Supports multiple mapping modes tailored for collections