You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bu...@apache.org on 2015/09/15 19:02:24 UTC

svn commit: r965549 - in /websites/staging/sling/trunk/content: ./ documentation/bundles/nosql-resource-providers.html

Author: buildbot
Date: Tue Sep 15 17:02:24 2015
New Revision: 965549

Log:
Staging update by buildbot for sling

Modified:
    websites/staging/sling/trunk/content/   (props changed)
    websites/staging/sling/trunk/content/documentation/bundles/nosql-resource-providers.html

Propchange: websites/staging/sling/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Sep 15 17:02:24 2015
@@ -1 +1 @@
-1703252
+1703258

Modified: websites/staging/sling/trunk/content/documentation/bundles/nosql-resource-providers.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/nosql-resource-providers.html (original)
+++ websites/staging/sling/trunk/content/documentation/bundles/nosql-resource-providers.html Tue Sep 15 17:02:24 2015
@@ -117,25 +117,40 @@ h2:hover > .headerlink, h3:hover > .head
 <li><a href="#introduction">Introduction</a></li>
 <li><a href="#mongodb-nosql-resource-provider">MongoDB NoSQL Resource Provider</a></li>
 <li><a href="#couchbase-nosql-resource-provider">Couchbase NoSQL Resource Provider</a></li>
+<li><a href="#writing-your-own-nosql-resource-provider">Writing your own NoSQL Resource Provider</a></li>
 </ul>
 </div>
 <h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">&para;</a></h2>
 <p>Apache Sling provides resource-based access to NoSQL document stores like MongoDB and Couchbase via its Resource API using the NoSQL resource providers. This is possible in combination with a JCR-based repository (e.g. only on a special path in the resource tree), or a only persistence for the whole resource tree depending on the resource provider configuration.</p>
-<p>The general concept of retrieving from and storing resource data in NoSQL document stores is the same independently from the NoSQL product used:
-<em> For each resource a structured document is stored (usually in JSON format)
-</em> The path of the resource is the key of the document
-<em> The properties of the resource are stored in a map-like form in the document
-</em> Special mapping applies to convert special data types like numbers, dates and binary data to a format that can safely stored in the document event if the format is not natively supported (e.g. converting dates to strings and binary to base64)
-<em> The Sling CRUD support defines a simple transaction model with buffering all changes in memory until a call to "commit()" persists them to the NoSQL database
-</em> Iterating over child resources and deleting a resource including all descendants requires some basic query capabilities in the NoSQL store</p>
+<p>The general concept of retrieving from and storing resource data in NoSQL document stores is the same independently from the NoSQL product used:</p>
+<ul>
+<li>For each resource a structured document is stored (usually in JSON format)</li>
+<li>The path of the resource is the key of the document</li>
+<li>The properties of the resource are stored in a map-like form in the document</li>
+<li>Special mapping applies to convert special data types like numbers, dates and binary data to a format that can safely stored in the document event if the format is not natively supported (e.g. converting dates to strings and binary to base64)</li>
+<li>The Sling CRUD support defines a simple transaction model with buffering all changes in memory until a call to "commit()" persists them to the NoSQL database</li>
+<li>Iterating over child resources and deleting a resource including all descendants requires some basic query capabilities in the NoSQL store</li>
+</ul>
 <p>All these general features are implemented in an abstraction layer called <a href="https://svn.apache.org/repos/asf/sling/trunk/contrib/nosql/generic">"Apache Sling NoSQL Generic Resource Provider"</a>, which is used by the resource provider implementations per NoSQL product. Those implementation than only implement a thin "adapter" which maps the resource data to the NoSQL product-specific storage formats and query capabilities, without having to care about all the complex resource provider handling.</p>
 <p>This generic resource provider also contains a set of integration tests covering the most relevant resource read- and write usecases which can be used to test a NoSQL product-specific  resource provider implementation and the underlying NoSQL database.</p>
 <h2 id="mongodb-nosql-resource-provider">MongoDB NoSQL Resource Provider<a class="headerlink" href="#mongodb-nosql-resource-provider" title="Permanent link">&para;</a></h2>
-<p>tbd.</p>
+<p>Resource provider for <a href="https://www.mongodb.org/">MongoDB</a> NoSQL database.</p>
+<p>Tested with MongoDB Server 3.0.6 and MongoDB Java Driver 3.0.4.</p>
+<p>Configuration example:</p>
+<p><code>org.apache.sling.nosql.mongodb.resourceprovider.MongoDBNoSqlResourceProviderFactory.factory.config
+    provider.roots=["/"]
+    connectionString="localhost:27017"
+    database="sling"
+    collection="resources"</code></p>
+<p>See Apache Felix OSGi console for detailed documentation of the parameters. All resource data is stored in one Collection of one MongoDB database. Each resource is stored as a document with the path stored in an "_id" property.</p>
+<p>Source code: <a href="https://svn.apache.org/repos/asf/sling/trunk/contrib/nosql/mongodb-resourceprovider">Apache Sling NoSQL MongoDB Resource Provider</a></p>
+<p>Please note: there is an <a href="https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/mongodb">alternative MongoDB resource provider implementation</a> from 2012 which has less features, a slightly different concept for storing resource data (in multiple collections), and it does not use the "Generic Resource Provider".</p>
 <h2 id="couchbase-nosql-resource-provider">Couchbase NoSQL Resource Provider<a class="headerlink" href="#couchbase-nosql-resource-provider" title="Permanent link">&para;</a></h2>
 <p>tbd.</p>
+<h2 id="writing-your-own-nosql-resource-provider">Writing your own NoSQL Resource Provider<a class="headerlink" href="#writing-your-own-nosql-resource-provider" title="Permanent link">&para;</a></h2>
+<p>tbd.</p>
       <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
-        Rev. 1703252 by sseifert on Tue, 15 Sep 2015 16:49:44 +0000
+        Rev. 1703258 by sseifert on Tue, 15 Sep 2015 17:02:17 +0000
       </div>
       <div class="trademarkFooter"> 
         Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project