libdb/docs/collections/tutorial/intro.html

218 lines
8.6 KiB
HTML
Raw Normal View History

2011-09-13 17:44:24 +00:00
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Chapter 1.  Introduction</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
<link rel="start" href="index.html" title="Berkeley DB Collections Tutorial" />
<link rel="up" href="index.html" title="Berkeley DB Collections Tutorial" />
<link rel="prev" href="moreinfo.html" title="For More Information" />
<link rel="next" href="developing.html" title="Developing a DB Collections Application" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 11.2.5.2</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Chapter 1. 
Introduction
</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="moreinfo.html">Prev</a> </td>
<th width="60%" align="center"> </th>
<td width="20%" align="right"> <a accesskey="n" href="developing.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="chapter" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="intro"></a>Chapter 1. 
Introduction
</h2>
</div>
</div>
</div>
<div class="toc">
<p>
<b>Table of Contents</b>
</p>
<dl>
<dt>
<span class="sect1">
<a href="intro.html#features">Features</a>
</span>
</dt>
<dt>
<span class="sect1">
<a href="developing.html">Developing a DB Collections Application</a>
</span>
</dt>
<dt>
<span class="sect1">
<a href="tutorialintroduction.html">Tutorial Introduction</a>
</span>
</dt>
</dl>
</div>
<p>
The DB Java Collections API is a Java framework that extends
the well known
<a class="ulink" href="http://download.oracle.com/javase/1.5.0/docs/guide/collections/" target="_top">Java Collections</a>
design pattern such that collections can now be
stored, updated and queried in a transactional manner. The
DB Java Collections API is a layer on top of DB.
</p>
<p>
Together the DB Java Collections API and Berkeley DB provide an
embedded data management solution with all the benefits of a full
transactional storage and the simplicity of a well known Java API.
Java programmers who need fast, scalable, transactional data
management for their projects can quickly adopt and deploy the
DB Java Collections API with confidence.
</p>
<p>
This framework was first known as
<a class="ulink" href="http://greybird-db.sourceforge.net/" target="_top">Greybird DB</a>
written by Mark Hayes. Mark collaborated with us to
permanently incorporate his excellent work into our distribution
and to support it as an ongoing part of Berkeley DB and Berkeley DB Java
Edition. The repository of source code that remains at SourceForge at version 0.9.0 is
considered the last version before incorporation and will remain
intact but will not be updated to reflect changes made as part of
Berkeley DB or Berkeley DB Java Edition.
</p>
<div class="sect1" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="features"></a>Features</h2>
</div>
</div>
</div>
<p>
<span>Berkeley DB has always provided a Java API which can be roughly
described as a map and cursor interface, where the keys and values
are represented as byte arrays. This API is a Java (JNI) interface
to the C API and it closely modeled the Berkeley DB C API's
interface.</span>
The DB Java Collections API is a layer on top of
<span>that
thin JNI mapping of the C API to Berkeley DB.</span>
It adds significant new functionality in several ways.
</p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p>
An implementation of the Java Collections interfaces (Map,
SortedMap, Set, SortedSet,
<span>List</span>
and Iterator) is provided.
</p>
</li>
<li>
<p>
Transactions are supported using the conventional Java
transaction-per-thread model, where the current transaction is
implicitly associated with the current thread.
</p>
</li>
<li>
<p>
Transaction runner utilities are provided that automatically
perform transaction retry and exception handling.
</p>
</li>
<li>
<p>
Keys and values are represented as Java objects rather than
byte arrays. Bindings are used to map between Java objects and the
stored byte arrays.
</p>
</li>
<li>
<p>
The tuple data format is provided as the simplest data
representation, and is useful for keys as well as simple compact
values.
</p>
</li>
<li>
<p>
The serial data format is provided for storing arbitrary Java
objects without writing custom binding code. Java serialization is
extended to store the class descriptions separately, making the
data records much more compact than with standard Java
serialization.
</p>
</li>
<li>
<p>
Custom data formats and bindings can be easily added. XML data
format and XML bindings could easily be created using this feature,
for example.
</p>
</li>
<li>
<p>
The DB Java Collections API insulates the application
from minor differences in the use of the Berkeley DB Data Store,
Concurrent Data Store, and Transactional Data Store products.
This allows for development with one and deployment with another
without significant changes to code.
</p>
</li>
</ul>
</div>
<p>
Note that the DB Java Collections API does not support caching
of programming language objects nor does it keep track of their stored
status. This is in contrast to "persistent object" approaches such
as those defined by
<a class="ulink" href="http://www.odmg.org/odmg.html" target="_top">ODMG</a>
and JDO
(<a class="ulink" href="http://www.jcp.org/en/jsr/detail?id=12" target="_top">JSR 12</a>).
Such approaches have benefits but also require sophisticated object
caching. For simplicity the DB Java Collections API treats data
objects by value, not by reference, and does not perform object
caching of any kind. Since the DB Java Collections API is a thin
layer, its reliability and performance characteristics are roughly
equivalent to those of Berkeley DB, and database tuning is
accomplished in the same way as for any Berkeley DB database.
</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="moreinfo.html">Prev</a> </td>
<td width="20%" align="center"> </td>
<td width="40%" align="right"> <a accesskey="n" href="developing.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">For More Information </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Developing a DB Collections Application</td>
</tr>
</table>
</div>
</body>
</html>