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.73.2" /> 9 <link rel="start" 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="id1467010"></a>Getting Started with Berkeley DB</h1> 31 </div> 32 <div> 33 <div class="legalnotice"> 34 <a id="id1467186"></a> 35 <p class="legalnotice-title"> 36 <b>Legal Notice</b> 37 </p> 38 <p> 39 This documentation is distributed under an open source license. 40 You may review the terms of this license at: 41 <a class="ulink" 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> 42 43 44 </p> 45 <p> 46 Oracle, Berkeley DB, 47 48 49 and 50 Sleepycat are trademarks or registered trademarks of 51 Oracle. All rights to these marks are reserved. 52 No third-party use is permitted without the 53 express prior written consent of Oracle. 54 </p> 55 <p> 56 To obtain a copy of this document's original source code, please 57 submit a request to the Oracle Technology Network forum at: 58 <a class="ulink" href="http://forums.oracle.com/forums/forum.jspa?forumID=271" target="_top">http://forums.oracle.com/forums/forum.jspa?forumID=271</a> 59 60 61 </p> 62 </div> 63 </div> 64 <div> 65 <p class="pubdate">4/12/2010</p> 66 </div> 67 </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 <span>Extractors</span> 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 <span>Using Cursors with Secondary Databases</span> 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