From commits-return-13240-apmail-jackrabbit-commits-archive=jackrabbit.apache.org@jackrabbit.apache.org Tue Mar 20 15:14:30 2012 Return-Path: X-Original-To: apmail-jackrabbit-commits-archive@www.apache.org Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9862E91DD for ; Tue, 20 Mar 2012 15:14:30 +0000 (UTC) Received: (qmail 1250 invoked by uid 500); 20 Mar 2012 15:14:30 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 1211 invoked by uid 500); 20 Mar 2012 15:14:30 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 1203 invoked by uid 99); 20 Mar 2012 15:14:30 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 20 Mar 2012 15:14:30 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.131] (HELO eos.apache.org) (140.211.11.131) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 20 Mar 2012 15:14:27 +0000 Received: from eos.apache.org (localhost [127.0.0.1]) by eos.apache.org (Postfix) with ESMTP id 447E96C6; Tue, 20 Mar 2012 15:14:06 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Apache Wiki To: Apache Wiki Date: Tue, 20 Mar 2012 15:14:05 -0000 Message-ID: <20120320151405.45901.26428@eos.apache.org> Subject: =?utf-8?q?=5BJackrabbit_Wiki=5D_Update_of_=22RepositoryMicroKernel=22_by_?= =?utf-8?q?stefan?= Auto-Submitted: auto-generated X-Virus-Checked: Checked by ClamAV on apache.org Dear Wiki user, You have subscribed to a wiki page or wiki category on "Jackrabbit Wiki" fo= r change notification. The "RepositoryMicroKernel" page has been changed by stefan: http://wiki.apache.org/jackrabbit/RepositoryMicroKernel?action=3Ddiff&rev1= =3D8&rev2=3D9 Comment: cleanup wiki page, remove references to sandbox project =3D=3D Repository MicroKernel API =3D=3D December 2010 I started drafting an API representing the core MVCC-based = persistence engine of a next-gen Jackrabbit version: = - [[http://svn.apache.org/repos/asf/jackrabbit/sandbox/microkernel/src/main= /java/org/apache/jackrabbit/mk/api/MicroKernel.java|MicroKernel.java]] + [[http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-mk/src/main/ja= va/org/apache/jackrabbit/mk/api/MicroKernel.java|MicroKernel.java]] = =3D=3D=3D API Design Goals =3D=3D=3D * stateless @@ -14, +14 @@ * 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 DataS= tore API) + * integrated API for storing/retrieving large binaries * human-readable data serialization (e.g. JSON, YAML) = =3D=3D=3D Data Model =3D=3D=3D @@ -24, +24 @@ can only refer to a property or a child node, not both at the same tim= e. * properties are represented as name/value 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 = - =3D=3D=3D Prototype (work in progress...!) =3D=3D=3D + =3D=3D=3D Implementation (work in progress...!) =3D=3D=3D - To test the feasibility i wrote a first primitive prototype implementatio= n of the MicroKernel API. = * GIT/SVN-inspired revision model * writes don't interfere with readers * single and very narrow point of synchronization on commit: concurrent = commits are persisted in parallel and only synchronized while the symbolic = HEAD reference is rewritten; interfering commits are merged top-down using = a 3-way merge algorithm, i.e. large concurrent commits at different paths s= hould be processed in parallel with only minimal synchronization overhead. * DAG-based content-addressable loose object store (DAG: Directed Acycli= c Graph) - * uses embedded H2 database engine for persistence - = - =3D=3D=3D Open Issues =3D=3D=3D - * 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. - * the size of the loose object store is expected to grow significantly a= nd rapidly (mainly due to the MVCC approach); furthermore, the chosen optim= ization strategy for concurrent writes (write first and merge later on if n= ecessary) may leave garbage, i.e. dangling objects not connected to any rev= isions. there clearly needs to be some independant gc and packing/compactin= g mechanism (e.g. aggregating multiple revisions in a single file/object). - = - =3D=3D=3D Architecture (overview) =3D=3D=3D - * JCR (full TCK-compliant implementation) - * SPI (node types, workspaces, namespaces, access control, search, locki= ng, ...) - * MicroKernel = =3D=3D=3D Source Code =3D=3D=3D - [http://svn.apache.org/repos/asf/jackrabbit/sandbox/microkernel/] + [http://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-mk/] =20