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">¶</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">¶</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">¶</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">¶</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