1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4  <head>
5    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6    <title>Getting Started with Berkeley DB</title>
7    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
8    <meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
9    <link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
10    <link rel="next" href="preface.html" title="Preface" />
11  </head>
12  <body>
13    <div class="navheader">
14      <table width="100%" summary="Navigation header">
15        <tr>
16          <th colspan="3" align="center">Getting Started with Berkeley DB</th>
17        </tr>
18        <tr>
19          <td width="20%" align="left"> </td>
20          <th width="60%" align="center"> </th>
21          <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
22        </tr>
23      </table>
24      <hr />
25    </div>
26    <div class="book" lang="en" xml:lang="en">
27      <div class="titlepage">
28        <div>
29          <div>
30            <h1 class="title"><a id="id613728"></a>Getting Started with Berkeley DB</h1>
31          </div>
32          <div>
33            <div class="legalnotice">
34              <p class="legalnotice-title">
35                <b>Legal Notice</b>
36              </p>
37              <p>
38        This documentation is distributed under an open source license.
39        You may review the terms of this license at:
40        <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
41        
42        
43    </p>
44              <p>
45            Oracle, Berkeley DB,
46            
47            
48            and
49            Sleepycat are trademarks or registered trademarks of
50            Oracle. All rights to these marks are reserved.
51            No third-party use is permitted without the
52            express prior written consent of Oracle.
53    </p>
54              <p>
55        To obtain a copy of this document's original source code, please
56        submit a request to the Oracle Technology Network forum at:
57        <a href="http://forums.oracle.com/forums/forum.jspa?forumID=271" target="_top">http://forums.oracle.com/forums/forum.jspa?forumID=271</a>
58        
59        
60    </p>
61            </div>
62          </div>
63          <div>
64            <p class="pubdate">4/25/2008</p>
65          </div>
66        </div>
67        <div></div>
68        <hr />
69      </div>
70      <div class="toc">
71        <p>
72          <b>Table of Contents</b>
73        </p>
74        <dl>
75          <dt>
76            <span class="preface">
77              <a href="preface.html">Preface</a>
78            </span>
79          </dt>
80          <dd>
81            <dl>
82              <dt>
83                <span class="sect1">
84                  <a href="preface.html#conventions">Conventions Used in this Book</a>
85                </span>
86              </dt>
87              <dd>
88                <dl>
89                  <dt>
90                    <span class="sect2">
91                      <a href="preface.html#moreinfo">For More Information</a>
92                    </span>
93                  </dt>
94                </dl>
95              </dd>
96            </dl>
97          </dd>
98          <dt>
99            <span class="chapter">
100              <a href="introduction.html">1. Introduction to Berkeley DB </a>
101            </span>
102          </dt>
103          <dd>
104            <dl>
105              <dt>
106                <span class="sect1">
107                  <a href="introduction.html#aboutthismanual">About This Manual</a>
108                </span>
109              </dt>
110              <dt>
111                <span class="sect1">
112                  <a href="concepts.html">Berkeley DB Concepts</a>
113                </span>
114              </dt>
115              <dt>
116                <span class="sect1">
117                  <a href="accessmethods.html">Access Methods</a>
118                </span>
119              </dt>
120              <dd>
121                <dl>
122                  <dt>
123                    <span class="sect2">
124                      <a href="accessmethods.html#selectAM">Selecting Access Methods</a>
125                    </span>
126                  </dt>
127                  <dt>
128                    <span class="sect2">
129                      <a href="accessmethods.html#BTreeVSHash">Choosing between BTree and Hash</a>
130                    </span>
131                  </dt>
132                  <dt>
133                    <span class="sect2">
134                      <a href="accessmethods.html#QueueVSRecno">Choosing between Queue and Recno</a>
135                    </span>
136                  </dt>
137                </dl>
138              </dd>
139              <dt>
140                <span class="sect1">
141                  <a href="databaseLimits.html">Database Limits and Portability</a>
142                </span>
143              </dt>
144              <dt>
145                <span class="sect1">
146                  <a href="environments.html">Environments</a>
147                </span>
148              </dt>
149              <dt>
150                <span class="sect1">
151                  <a href="returns.html">Error Returns</a>
152                </span>
153              </dt>
154              <dt>
155                <span class="sect1">
156                  <a href="gettingit.html">Getting and Using DB </a>
157                </span>
158              </dt>
159            </dl>
160          </dd>
161          <dt>
162            <span class="chapter">
163              <a href="DB.html">2. Databases</a>
164            </span>
165          </dt>
166          <dd>
167            <dl>
168              <dt>
169                <span class="sect1">
170                  <a href="DB.html#DBOpen">Opening Databases</a>
171                </span>
172              </dt>
173              <dt>
174                <span class="sect1">
175                  <a href="coredbclose.html">Closing Databases</a>
176                </span>
177              </dt>
178              <dt>
179                <span class="sect1">
180                  <a href="DBOpenFlags.html">Database Open Flags</a>
181                </span>
182              </dt>
183              <dt>
184                <span class="sect1">
185                  <a href="CoreDBAdmin.html">Administrative Methods</a>
186                </span>
187              </dt>
188              <dt>
189                <span class="sect1">
190                  <a href="dbErrorReporting.html">Error Reporting Functions</a>
191                </span>
192              </dt>
193              <dt>
194                <span class="sect1">
195                  <a href="CoreEnvUsage.html">Managing Databases in Environments</a>
196                </span>
197              </dt>
198              <dt>
199                <span class="sect1">
200                  <a href="CoreDbUsage.html">Database Example</a>
201                </span>
202              </dt>
203            </dl>
204          </dd>
205          <dt>
206            <span class="chapter">
207              <a href="DBEntry.html">3. Database Records</a>
208            </span>
209          </dt>
210          <dd>
211            <dl>
212              <dt>
213                <span class="sect1">
214                  <a href="DBEntry.html#usingDbEntry">Using Database Records</a>
215                </span>
216              </dt>
217              <dt>
218                <span class="sect1">
219                  <a href="usingDbt.html">Reading and Writing Database Records</a>
220                </span>
221              </dt>
222              <dd>
223                <dl>
224                  <dt>
225                    <span class="sect2">
226                      <a href="usingDbt.html#databaseWrite">Writing Records to the Database</a>
227                    </span>
228                  </dt>
229                  <dt>
230                    <span class="sect2">
231                      <a href="usingDbt.html#CoreDatabaseRead">Getting Records from the Database</a>
232                    </span>
233                  </dt>
234                  <dt>
235                    <span class="sect2">
236                      <a href="usingDbt.html#recordDelete">Deleting Records</a>
237                    </span>
238                  </dt>
239                  <dt>
240                    <span class="sect2">
241                      <a href="usingDbt.html#datapersist">Data Persistence</a>
242                    </span>
243                  </dt>
244                </dl>
245              </dd>
246              <dt>
247                <span class="sect1">
248                  <a href="cstructs.html">Using C Structures with DB</a>
249                </span>
250              </dt>
251              <dd>
252                <dl>
253                  <dt>
254                    <span class="sect2">
255                      <a href="cstructs.html#cstructdynamic">C Structures with Pointers</a>
256                    </span>
257                  </dt>
258                </dl>
259              </dd>
260              <dt>
261                <span class="sect1">
262                  <a href="DbUsage.html">Database Usage Example</a>
263                </span>
264              </dt>
265            </dl>
266          </dd>
267          <dt>
268            <span class="chapter">
269              <a href="Cursors.html">4. Using Cursors</a>
270            </span>
271          </dt>
272          <dd>
273            <dl>
274              <dt>
275                <span class="sect1">
276                  <a href="Cursors.html#openCursor">Opening and Closing Cursors</a>
277                </span>
278              </dt>
279              <dt>
280                <span class="sect1">
281                  <a href="Positioning.html">Getting Records Using the Cursor</a>
282                </span>
283              </dt>
284              <dd>
285                <dl>
286                  <dt>
287                    <span class="sect2">
288                      <a href="Positioning.html#cursorsearch">Searching for Records</a>
289                    </span>
290                  </dt>
291                  <dt>
292                    <span class="sect2">
293                      <a href="Positioning.html#getdups">Working with Duplicate Records</a>
294                    </span>
295                  </dt>
296                </dl>
297              </dd>
298              <dt>
299                <span class="sect1">
300                  <a href="PutEntryWCursor.html">Putting Records Using Cursors</a>
301                </span>
302              </dt>
303              <dt>
304                <span class="sect1">
305                  <a href="DeleteEntryWCursor.html">Deleting Records Using Cursors</a>
306                </span>
307              </dt>
308              <dt>
309                <span class="sect1">
310                  <a href="ReplacingEntryWCursor.html">Replacing Records Using Cursors</a>
311                </span>
312              </dt>
313              <dt>
314                <span class="sect1">
315                  <a href="CoreCursorUsage.html">Cursor Example</a>
316                </span>
317              </dt>
318            </dl>
319          </dd>
320          <dt>
321            <span class="chapter">
322              <a href="indexes.html">5. Secondary Databases</a>
323            </span>
324          </dt>
325          <dd>
326            <dl>
327              <dt>
328                <span class="sect1">
329                  <a href="indexes.html#CoreDbAssociate">Opening and Closing Secondary Databases</a>
330                </span>
331              </dt>
332              <dt>
333                <span class="sect1">
334                  <a href="keyCreator.html">Implementing Key 
335        
336        Extractors
337        </a>
338                </span>
339              </dt>
340              <dd>
341                <dl>
342                  <dt>
343                    <span class="sect2">
344                      <a href="keyCreator.html#multikeys">Working with Multiple Keys</a>
345                    </span>
346                  </dt>
347                </dl>
348              </dd>
349              <dt>
350                <span class="sect1">
351                  <a href="readSecondary.html">Reading Secondary Databases</a>
352                </span>
353              </dt>
354              <dt>
355                <span class="sect1">
356                  <a href="secondaryDelete.html">Deleting Secondary Database Records</a>
357                </span>
358              </dt>
359              <dt>
360                <span class="sect1">
361                  <a href="secondaryCursor.html">
362        
363        Using Cursors with Secondary Databases
364    </a>
365                </span>
366              </dt>
367              <dt>
368                <span class="sect1">
369                  <a href="joins.html">Database Joins</a>
370                </span>
371              </dt>
372              <dd>
373                <dl>
374                  <dt>
375                    <span class="sect2">
376                      <a href="joins.html#joinUsage">Using Join Cursors</a>
377                    </span>
378                  </dt>
379                </dl>
380              </dd>
381              <dt>
382                <span class="sect1">
383                  <a href="coreindexusage.html">Secondary Database Example</a>
384                </span>
385              </dt>
386              <dd>
387                <dl>
388                  <dt>
389                    <span class="sect2">
390                      <a href="coreindexusage.html#edlWIndexes">Secondary Databases with example_database_load</a>
391                    </span>
392                  </dt>
393                  <dt>
394                    <span class="sect2">
395                      <a href="coreindexusage.html#edrWIndexes">Secondary Databases with example_database_read</a>
396                    </span>
397                  </dt>
398                </dl>
399              </dd>
400            </dl>
401          </dd>
402          <dt>
403            <span class="chapter">
404              <a href="dbconfig.html">6. Database Configuration</a>
405            </span>
406          </dt>
407          <dd>
408            <dl>
409              <dt>
410                <span class="sect1">
411                  <a href="dbconfig.html#pagesize">Setting the Page Size</a>
412                </span>
413              </dt>
414              <dd>
415                <dl>
416                  <dt>
417                    <span class="sect2">
418                      <a href="dbconfig.html#overflowpages">Overflow Pages</a>
419                    </span>
420                  </dt>
421                  <dt>
422                    <span class="sect2">
423                      <a href="dbconfig.html#Locking">Locking</a>
424                    </span>
425                  </dt>
426                  <dt>
427                    <span class="sect2">
428                      <a href="dbconfig.html#IOEfficiency">IO Efficiency</a>
429                    </span>
430                  </dt>
431                  <dt>
432                    <span class="sect2">
433                      <a href="dbconfig.html#pagesizeAdvice">Page Sizing Advice</a>
434                    </span>
435                  </dt>
436                </dl>
437              </dd>
438              <dt>
439                <span class="sect1">
440                  <a href="cachesize.html">Selecting the Cache Size</a>
441                </span>
442              </dt>
443              <dt>
444                <span class="sect1">
445                  <a href="btree.html">BTree Configuration</a>
446                </span>
447              </dt>
448              <dd>
449                <dl>
450                  <dt>
451                    <span class="sect2">
452                      <a href="btree.html#duplicateRecords">Allowing Duplicate Records</a>
453                    </span>
454                  </dt>
455                  <dt>
456                    <span class="sect2">
457                      <a href="btree.html#comparators">Setting Comparison Functions</a>
458                    </span>
459                  </dt>
460                </dl>
461              </dd>
462            </dl>
463          </dd>
464        </dl>
465      </div>
466      <div class="list-of-examples">
467        <p>
468          <b>List of Examples</b>
469        </p>
470        <dl>
471          <dt>2.1. <a href="CoreDbUsage.html#stock-db">The stock_db Structure</a></dt>
472          <dt>2.2. <a href="CoreDbUsage.html#stock-db-functions">The stock_db Utility Functions</a></dt>
473          <dt>2.3. <a href="CoreDbUsage.html#open-db">open_database() Function</a></dt>
474          <dt>2.4. <a href="CoreDbUsage.html#databasesetup">The databases_setup() Function</a></dt>
475          <dt>2.5. <a href="CoreDbUsage.html#database_close">The databases_close() Function</a></dt>
476          <dt>3.1. <a href="DbUsage.html#VENDORStruct">VENDOR Structure</a></dt>
477          <dt>3.2. <a href="DbUsage.html#exampledbload">example_database_load</a></dt>
478          <dt>4.1. <a href="CoreCursorUsage.html#CoreEIR">example_database_read</a></dt>
479        </dl>
480      </div>
481    </div>
482    <div class="navfooter">
483      <hr />
484      <table width="100%" summary="Navigation footer">
485        <tr>
486          <td width="40%" align="left"> </td>
487          <td width="20%" align="center"> </td>
488          <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
489        </tr>
490        <tr>
491          <td width="40%" align="left" valign="top"> </td>
492          <td width="20%" align="center"> </td>
493          <td width="40%" align="right" valign="top"> Preface</td>
494        </tr>
495      </table>
496    </div>
497  </body>
498</html>
499