1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
|
<?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 19. Sequences</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 Programmer's Reference Guide" />
<link rel="up" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
<link rel="prev" href="txn_limits.html" title="Transaction limits" />
<link rel="next" href="tcl.html" title="Chapter 20. Berkeley DB Extensions: Tcl" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Chapter 19.
Sequences
</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="txn_limits.html">Prev</a> </td>
<th width="60%" align="center"> </th>
<td width="20%" align="right"> <a accesskey="n" href="tcl.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="sequence"></a>Chapter 19.
Sequences
</h2>
</div>
</div>
</div>
<div class="toc">
<p>
<b>Table of Contents</b>
</p>
<dl>
<dt>
<span class="sect1">
<a href="sequence.html#sequence_intro">Introduction to sequences</a>
</span>
</dt>
</dl>
</div>
<div class="sect1" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="sequence_intro"></a>Introduction to sequences</h2>
</div>
</div>
</div>
<p>Sequences provide an arbitrary number of persistent objects that return
an increasing or decreasing sequence of integers. Opening a sequence
handle associates it with a record in a database. The handle can
maintain a cache of values from the database so that a database update
is not needed as the application allocates a value.</p>
<p>A sequence is stored as a record pair in a database. The database may
be of any type, but may not have been configured to support duplicate
data items. The sequence is referenced by the key used when the
sequence is created, therefore the key must be compatible with the
underlying access method. If the database stores fixed-length records,
the record size must be at least 64 bytes long.</p>
<p>Since a sequence handle is opened using a database handle, the use of
transactions with the sequence must follow how the database handle was
opened. In other words, if the database handle was opened within a
transaction, operations on the sequence handle must use transactions.
Of course, if sequences are cached, not all operations will actually
trigger a transaction.</p>
<p>For the highest concurrency, caching should be used and the
<a href="../api_reference/C/envset_flags.html#envset_flags_DB_AUTO_COMMIT" class="olink">DB_AUTO_COMMIT</a> and <a href="../api_reference/C/envset_flags.html#envset_flags_DB_TXN_NOSYNC" class="olink">DB_TXN_NOSYNC</a> flags should be
specified to the <a href="../api_reference/C/seqget.html" class="olink">DB_SEQUENCE->get()</a> method call. If the allocation of the
sequence value must be part of a transaction, and rolled back if the
transaction aborts, then no caching should be specified and the
transaction handle must be passed to the <a href="../api_reference/C/seqget.html" class="olink">DB_SEQUENCE->get()</a> method.</p>
<div class="informaltable">
<table border="1" width="80%">
<colgroup>
<col />
<col />
</colgroup>
<thead>
<tr>
<th>Sequences and Related Methods</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<a href="../api_reference/C/seq.html" class="olink">Sequence class</a>
</td>
<td>Create a sequence handle</td>
</tr>
<tr>
<td>
<a href="../api_reference/C/seqclose.html" class="olink">DB_SEQUENCE->close()</a>
</td>
<td>Close a sequence</td>
</tr>
<tr>
<td>
<a href="../api_reference/C/seqget.html" class="olink">DB_SEQUENCE->get()</a>
</td>
<td>Get the next sequence element(s)</td>
</tr>
<tr>
<td>
<a href="../api_reference/C/seqopen.html" class="olink">DB_SEQUENCE->open()</a>
</td>
<td>Return a handle for the underlying sequence database</td>
</tr>
<tr>
<td>
<a href="../api_reference/C/seqopen.html" class="olink">DB_SEQUENCE->open()</a>
</td>
<td>Return the key for a sequence</td>
</tr>
<tr>
<td>
<a href="../api_reference/C/seqinitial_value.html" class="olink">DB_SEQUENCE->initial_value()</a>
</td>
<td>Set the initial value of a sequence</td>
</tr>
<tr>
<td>
<a href="../api_reference/C/seqopen.html" class="olink">DB_SEQUENCE->open()</a>
</td>
<td>Open a sequence</td>
</tr>
<tr>
<td>
<a href="../api_reference/C/seqremove.html" class="olink">DB_SEQUENCE->remove()</a>
</td>
<td>Remove a sequence</td>
</tr>
<tr>
<td>
<a href="../api_reference/C/seqstat.html" class="olink">DB_SEQUENCE->stat()</a>
</td>
<td>Return sequence statistics</td>
</tr>
<tr>
<td>
<span class="emphasis">
<em>Sequences Configuration</em>
</span>
</td>
<td> </td>
</tr>
<tr>
<td>
<a href="../api_reference/C/seqset_cachesize.html" class="olink">DB_SEQUENCE->set_cachesize()</a>
</td>
<td>Set the cache size of a sequence</td>
</tr>
<tr>
<td>
<a href="../api_reference/C/seqset_flags.html" class="olink">DB_SEQUENCE->set_flags()</a>
</td>
<td>Set the flags for a sequence</td>
</tr>
<tr>
<td>
<a href="../api_reference/C/seqset_range.html" class="olink">DB_SEQUENCE->set_range()</a>
</td>
<td>Set the range for a sequence</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="txn_limits.html">Prev</a> </td>
<td width="20%" align="center"> </td>
<td width="40%" align="right"> <a accesskey="n" href="tcl.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Transaction limits </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Chapter 20.
Berkeley DB Extensions: Tcl
</td>
</tr>
</table>
</div>
</body>
</html>
|