jackrabbit-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Jackrabbit Wiki] Update of "RepositoryMicroKernel" by stefan
Date Wed, 11 May 2011 15:28:41 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jackrabbit Wiki" for change notification.

The "RepositoryMicroKernel" page has been changed by stefan.


New page:
== Repository MicroKernel API ==

December 2010 I startet drafting an API representing the core 
MVCC-based persistence engine of a next-gen Jackrabbit version:

=== API Design Goals ===

 * stateless
 * small set of operations
 * simple data model
 * manage huge trees of nodes and properties efficiently
 * MVCC-based
 * highly scalable concurrent read & write operations
 * easily portable to other programming languages
 * efficient support for large number of sibling child nodes
 * integrated API for storing/retrieving large binaries (similar to DataStore API)
 * human-readable data serialization (e.g. JSON, YAML)

=== Data Model ===

 * simple JSON-inspired data model: just nodes and properties
 * a node is represented as an object, consisting of an unordered collection of properties
and an array of (child) node objects
 * properties are represented as name/value pairs
 * MVPs are represented as name/array-of-values pairs
 * supported property types: string, number
 * other property types (weak/hard reference, date, etc) would need to be encoded/mangled
in name or value
 * no support for JCR/XML-like namespaces, "foo:bar" is just an ordinary name
 * properties and child nodes share the same namespace, i.e. a property and
 * a child node sharing the same parent node cannot have the same name

=== Prototype (work in progress...!) ===

To test the feasibility i wrote a first primitive prototype implementation of the MicroKernel

 * GIT/SVN-inspired revision model
 * DAG-based content-addressable loose object store 

=== Open Issues ===

 * JCR-style access by identifier/mix:referenceable support will require a separate index
maintained by the MicroKernel. The implementation will be non-trivial, given the nature of
the underlying DAG-based revision model.

=== Architecture (overview) ===

 * JCR (full TCK-compliant implementation)
 * SPI (node types, workspaces, namespaces, access control, search, locking, ...)
 * MicroKernel 
=== Source Code ===


View raw message