Merge branch 'master' of github.com:SpringSource/spring-data-keyvalue

This commit is contained in:
J. Brisbin
2010-12-10 11:09:36 -06:00
7 changed files with 260 additions and 17 deletions

View File

@@ -11,14 +11,6 @@
<firstname>Costin</firstname>
<surname>Leau</surname>
</author>
<author>
<firstname>Mark</firstname>
<surname>Pollack</surname>
</author>
<author>
<firstname>Thomas</firstname>
<surname>Risberg</surname>
</author>
</authorgroup>
<legalnotice>
@@ -35,13 +27,36 @@
<xi:include href="preface.xml"/>
<part>
<title>Reference</title>
<partintro>
<para>
This part of the reference documentation details the ...
</para>
</partintro>
<!-- <xi:include href="redis.xml"/> -->
<part id="introduction">
<title>Introduction</title>
<xi:include href="introduction/introduction.xml"/>
<xi:include href="introduction/why-sd-kv.xml"/>
<xi:include href="introduction/requirements.xml"/>
<xi:include href="introduction/getting-started.xml"/>
</part>
</book>
<part id="reference">
<title>Reference Documentation</title>
<xi:include href="reference/introduction.xml"/>
<xi:include href="reference/redis.xml"/>
</part>
<part id="resources">
<title>Other Documentation</title>
<partintro>
<para>
In addition to this reference documentation, there are a number of
other resources that may help you learn how to use the various key value
stores and Spring Data. These additional, third-party resources are
enumerated in this section.
</para>
</partintro>
<!--
<xi:include href="links.xml"/>
-->
</part>
</book>

View File

@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<chapter id="get-started">
<title>Getting Started</title>
<para>Learning a new framework is not always straight forward. In this section, we (the Spring Data team)
tried to provide, what we think is, an easy to follow guide for starting with Spring Data Key Value module.
Of course, feel free to create your own learning 'path' as you see fit and, if possible, please report back
any improvements to the documentation that can help others.</para>
<section id="get-started:first-steps">
<title>First Steps</title>
<para>As explained in <xref linkend="why-Spring Data-Key Value"/>, Spring Data Key Value (SDKV) provides integration
between Spring framework and key value (KV) stores. Thus, it is important to become acquainted with both of these
frameworks (storages or environments depending on how you want to name them). Throughout the SDKV documentation,
each section provides links to resources relevant however, it is best to become familiar with these topics beforehand.</para>
<section id="get-started:first-steps:spring">
<title>Knowing Spring</title>
<para>Spring Data uses heavily Spring framework's <ulink url="http://static.springframework.org/spring/docs/3.0.x/reference/spring-core.html">core</ulink> functionality,
such as the <ulink url="http://static.springframework.org/spring/docs/3.0.x/reference/beans.html">IoC</ulink> container,
<ulink url="http://static.springframework.org/spring/docs/3.0.x/reference/resources.html">resource</ulink> abstract or
<ulink url="http://static.springframework.org/spring/docs/3.0.x/reference/aop.html">AOP</ulink> infrastructure. While it is not important
to know the Spring APIs, understanding the concepts behind them is. At a minimum, the idea behind IoC should be familiar.
These being said, the more knowledge one has about the Spring, the faster she will pick Spring Data Key Value.
Besides the very comprehensive (and sometimes disarming) documentation that explains in detail the Spring Framework,
there are a lot of articles, blog entries and books on the matter - take a look at the Spring framework
<ulink url="http://www.springsource.org/documentation">home page</ulink> for more information. In general, this should be the starting point for
developers wanting to try Spring DKV.</para>
</section>
<section id="get-started:first-steps:nosql">
<title>Knowing NoSQL and Key Value stores</title>
<para>NoSQL stores have taken the storage world by storm. It is a vast domain with a plethora of solutions, terms and patterns (to make things worth even the
term itself has multiple <ulink url="http://www.google.com/search?q=nosoql+acronym">meanings</ulink>).
While some of the principles are common, it is crucial that the user is familiar to some degree with the stores supported by SDKV.
The best way to get acquainted to this solutions is to read their documentation and follow their examples - it usually doesn't take more then 5-10 minutes
to go through them and if you are coming from an RDMBS-only background many times these exercises can be an eye opener.
</para>
</section>
<section id="get-started:first-steps:samples">
<title>Trying Out The Samples</title>
<para>Unfortunately the SDKV project is very young and there are no samples available yet. However we are working on them and plan to make them available
as soon as possible. In the meantime however, one can use our test suite as a code example (assuming the documentation is not enough) - we provide extensive
integration tests for our code base.
</para>
<!--
<para>The current distribution contains:</para>
<itemizedlist>
<listitem>
<para>Simple Service Sample</para>
<para>A simple example that illustrates OSGi service publication and consumption through Spring DM. This is a good starting point
for users learning the basics.</para>
</listitem>
<listitem>
<para>Weather Sample</para>
<para>A demo that shows more advanced features of Spring DM and OSGi. The application creates a very simple weather information services
presenting some best practices in designing an application to take advantage of the modularity offered by OSGi.</para>
</listitem>
<listitem>
<para>Simple Web App Sample</para>
<para>As the name implies, this is a simple web application, containing Servlets, JSPs and JSP tags, that runs inside OSGi through Spring DM.</para>
</listitem>
<listitem>
<para>Web Console Sample</para>
<para>A more complicated sample that demos a Spring MVC annotation based, web application that runs inside OSGi through Spring DM, featuring
class path scanning and various Spring taglib. Additionally, the web application interacts with the OSGi environment through the web UI.</para>
</listitem>
</itemizedlist>
<para>Each project contains instructions regarding its content and startup procedure. Users are encouraged to experiment with the samples to get a better
understanding of the technologies used.</para>
-->
</section>
</section>
<section id="get-started:help">
<title>Need Help?</title>
<para>If you encounter issues or you are just looking for an advice, feel free to use one of the links below:</para>
<section id="get-started:help:community">
<title>Community Support</title>
<para>The Spring Data <ulink url="http://forum.springframework.org/forumdisplay.php?f=80">forum</ulink> is a message board for all Spring Data (not just Key Value) users to
share information and help each other. Note that registration is needed <emphasis>only</emphasis> for posting.
</para>
</section>
<section id="get-started:help:professional">
<title>Professional Support</title>
<para>Professional, from-the-source support, with guaranteed response time, is available from <ulink url="http://www.springsource.com">SpringSource</ulink>,
the company behind Spring Data and Spring.
</para>
</section>
</section>
<section id="get-started:up-to-date">
<title>Following Development</title>
<para>For information on the Spring Data source code repository, nightly builds and snapshot artifacts please see the Spring Data home
<ulink url="http://www.springsource.org/spring-data">page</ulink>.
</para>
<para>You can help make Spring Data best serve the needs of the Spring community by interacting with developers through the Spring Community
<ulink url="http://forum.springsource.org">forums</ulink>.</para>
<para>If you encounter a bug or want to suggest an improvement,
please create a ticket on the Spring Data issue <ulink url="https://jira.springframework.org/browse/DATAKV">tracker</ulink>.</para>
<para>To stay up to date with the latest news and announcements in the Spring eco system, subscribe to the
Spring Community <ulink url="http://www.springframework.org/">Portal</ulink>.</para>
<para>Lastly, you can follow the SpringSource Data <ulink url="http://blog.springsource.com/category/data-access/">blog</ulink> or the project team on Twitter
(<ulink url="http://twitter.com/costinl">Costin</ulink>)</para>
</section>
</chapter>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<partintro>
<para>
<para>This document is the reference guide for Spring Data - Key Value Support.
It explains Key Value module concepts and semantics and the syntax for various
stores namespaces.</para>
<para>For an introduction to key value stores or Spring, or Spring Data examples, please refer to
<xref linkend="get-started"/> - this documentation refers only to Spring Data Key Value Support and
assumes the user is familiar with the key value storages and Spring concepts.</para>
</para>
</partintro>

View File

@@ -0,0 +1,11 @@
<chapter id="requirements">
<title>Requirements</title>
<para>Spring Data Key Value 1.x binaries requires JDK level 6.0 and above,
and <ulink url="http://www.springsource.org/documentation">Spring Framework</ulink>
3.0.x and above.</para>
<para>
In terms of key value stores, <ulink url="http://code.google.com/p/redis/">Redis</ulink> 2.0.x
and <ulink url="http://www.basho.com/Riak.html">Riak</ulink> 0.13 are required.
</para>
</chapter>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<chapter id="why-Spring Data-Key Value">
<title>Why Spring Data - Key Value?</title>
<para>The Spring Framework is the leading full-stack Java/JEE
application framework. It provides a lightweight container and a
non-invasive programming model enabled by the use of dependency
injection, AOP, and portable service abstractions.</para>
<para><ulink url="http://en.wikipedia.org/wiki/NoSQL">NoSQL</ulink>
storages provide an alternative to classical RDBMS for horizontal scalability
and speed. In terms of implementation, Key Value stores represent one of the
largest (and oldest) member in the NoSQL space.</para>
<para>The Spring Data Key Value (or SDKV) framework makes it easy to
write Spring applications that use a Key Value store by eliminating the redundant
tasks and boiler place code required for interacting with the store through
Spring's excellent infrastructure support.</para>
</chapter>

View File

@@ -0,0 +1,9 @@
<partintro>
<title>Document structure</title>
<para>This part of the reference documentation explains the core functionality
offered by Spring Data Key Value.</para>
<para><xref linkend="redis"/> introduces the Redis module feature set.</para>
</partintro>

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<chapter id="redis">
<title>Redis support</title>
<para>One of the key value stores supported by SDKV is <ulink url="http://code.google.com/p/redis/">Redis</ulink>.
To quote the project home page:
<quote>
Redis is an advanced key-value store. It is similar to memcached but the dataset is not volatile, and values can be strings,
exactly like in memcached, but also lists, sets, and ordered sets. All this data types can be manipulated with atomic operations
to push/pop elements, add/remove elements, perform server side union, intersection, difference between sets, and so forth.
Redis supports different kind of sorting abilities.</quote>
<para>Spring Data Key Value provides easy configuration and access to Redis from Spring application. Offers both low-level and
high-level abstraction for interacting with the store, freeing the user from infrastructural concerns.</para>
</para>
<section id="redis:requirements">
<title>Redis Requirements</title>
<para>SDKV requires Redis 2.0 or above (work is underway to support the upcoming (at the time this document was written) 2.2) and
Java SE 6.0 or above.
In terms of language bindings (or connectors), SDKV integrates with <ulink url="http://github.com/xetorthio/jedis">Jedis</ulink> and
<ulink url="http://github.com/alphazero/jredis">JRedis</ulink>, two popular open source Java libraries for Redis. If you are aware of
any other connector that we should be integrating is, please send us feedback.
</para>
</section>
<section id="redis:architecture">
<title>Redis Support High Level View</title>
<para>The Redis support provides several components (in order of dependencies):</para>
<itemizedlist>
<listitem><emphasis>Low-Level Abstractions</emphasis> - for configuring and handling communication with Redis through the various connector libraries supported as
described in <xref linkend="redis:connectors"/>. </listitem>
<listitem><emphasis>High-Level Abstractions</emphasis> - providing a generified, user friendly template classes for interacting with Redis.
<xref linkend="redis:template"/> explains the abstraction builds on top of the low-level <interfacename>Connection</interfacename> API to handle the
infrastructural concerns and object conversion.</listitem>
<listitem><emphasis>Support Services</emphasis> - that offer reusable components (built on the aforementioned abstractions) such as
<interfacename>java.util.Collection</interfacename> backed by Redis as documented in <xref linkend="redis:support"/></listitem>
</itemizedlist>
<para>For most tasks, the high-level abstractions and support services are the best choice. Note that at any point, one can move between layers - for example, it's very
easy to get a hold of the low level connection (or even the native libray) to communicate directly with Redis.</para>
</section>
<section id="redis:connectors">
<title>Connecting to Redis</title>
</section>
<section id="redis:template">
<title>Working with Objects through <classname>RedisTemplate</classname></title>
</section>
<section id="redis:support">
<title>Support Services</title>
</section>
</chapter>