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="id613798"></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 <span class="trademark">Java</span>��� and all Java-based marks are a trademark 56 or registered trademark of Sun Microsystems, 57 Inc, in the United States and other countries. 58 </p> 59 <p> 60 To obtain a copy of this document's original source code, please 61 submit a request to the Oracle Technology Network forum at: 62 <a href="http://forums.oracle.com/forums/forum.jspa?forumID=271" target="_top">http://forums.oracle.com/forums/forum.jspa?forumID=271</a> 63 64 65 </p> 66 </div> 67 </div> 68 <div> 69 <p class="pubdate">4/25/2008</p> 70 </div> 71 </div> 72 <div></div> 73 <hr /> 74 </div> 75 <div class="toc"> 76 <p> 77 <b>Table of Contents</b> 78 </p> 79 <dl> 80 <dt> 81 <span class="preface"> 82 <a href="preface.html">Preface</a> 83 </span> 84 </dt> 85 <dd> 86 <dl> 87 <dt> 88 <span class="sect1"> 89 <a href="preface.html#conventions">Conventions Used in this Book</a> 90 </span> 91 </dt> 92 <dd> 93 <dl> 94 <dt> 95 <span class="sect2"> 96 <a href="preface.html#moreinfo">For More Information</a> 97 </span> 98 </dt> 99 </dl> 100 </dd> 101 </dl> 102 </dd> 103 <dt> 104 <span class="chapter"> 105 <a href="introduction.html">1. Introduction to Berkeley DB </a> 106 </span> 107 </dt> 108 <dd> 109 <dl> 110 <dt> 111 <span class="sect1"> 112 <a href="introduction.html#aboutthismanual">About This Manual</a> 113 </span> 114 </dt> 115 <dt> 116 <span class="sect1"> 117 <a href="javadplconcepts.html">Berkeley DB Concepts</a> 118 </span> 119 </dt> 120 <dd> 121 <dl> 122 <dt> 123 <span class="sect2"> 124 <a href="javadplconcepts.html#dplenvconcepts">Environments</a> 125 </span> 126 </dt> 127 <dt> 128 <span class="sect2"> 129 <a href="javadplconcepts.html#key-data">Key-Data Pairs</a> 130 </span> 131 </dt> 132 <dt> 133 <span class="sect2"> 134 <a href="javadplconcepts.html#storing-intro">Storing Data</a> 135 </span> 136 </dt> 137 <dt> 138 <span class="sect2"> 139 <a href="javadplconcepts.html#duplicatesintro">Duplicate Data</a> 140 </span> 141 </dt> 142 <dt> 143 <span class="sect2"> 144 <a href="javadplconcepts.html#replacedeleteIntro">Replacing and Deleting Entries</a> 145 </span> 146 </dt> 147 <dt> 148 <span class="sect2"> 149 <a href="javadplconcepts.html#secondary">Secondary Keys</a> 150 </span> 151 </dt> 152 <dt> 153 <span class="sect2"> 154 <a href="javadplconcepts.html#whichapi">Which API Should You Use?</a> 155 </span> 156 </dt> 157 </dl> 158 </dd> 159 <dt> 160 <span class="sect1"> 161 <a href="accessmethods.html">Access Methods</a> 162 </span> 163 </dt> 164 <dd> 165 <dl> 166 <dt> 167 <span class="sect2"> 168 <a href="accessmethods.html#selectAM">Selecting Access Methods</a> 169 </span> 170 </dt> 171 <dt> 172 <span class="sect2"> 173 <a href="accessmethods.html#BTreeVSHash">Choosing between BTree and Hash</a> 174 </span> 175 </dt> 176 <dt> 177 <span class="sect2"> 178 <a href="accessmethods.html#QueueVSRecno">Choosing between Queue and Recno</a> 179 </span> 180 </dt> 181 </dl> 182 </dd> 183 <dt> 184 <span class="sect1"> 185 <a href="databaseLimits.html">Database Limits and Portability</a> 186 </span> 187 </dt> 188 <dt> 189 <span class="sect1"> 190 <a href="coreExceptions.html">Exception Handling</a> 191 </span> 192 </dt> 193 <dt> 194 <span class="sect1"> 195 <a href="returns.html">Error Returns</a> 196 </span> 197 </dt> 198 <dt> 199 <span class="sect1"> 200 <a href="gettingit.html">Getting and Using DB </a> 201 </span> 202 </dt> 203 </dl> 204 </dd> 205 <dt> 206 <span class="chapter"> 207 <a href="Env.html">2. Database Environments</a> 208 </span> 209 </dt> 210 <dd> 211 <dl> 212 <dt> 213 <span class="sect1"> 214 <a href="Env.html#EnvOpen">Opening Database Environments</a> 215 </span> 216 </dt> 217 <dt> 218 <span class="sect1"> 219 <a href="EnvClose.html">Closing Database Environments</a> 220 </span> 221 </dt> 222 <dt> 223 <span class="sect1"> 224 <a href="EnvProps.html">Environment Properties</a> 225 </span> 226 </dt> 227 <dd> 228 <dl> 229 <dt> 230 <span class="sect2"> 231 <a href="EnvProps.html#envconfig">The EnvironmentConfig Class</a> 232 </span> 233 </dt> 234 <dt> 235 <span class="sect2"> 236 <a href="EnvProps.html#envhandleconfig">EnvironmentMutableConfig</a> 237 </span> 238 </dt> 239 </dl> 240 </dd> 241 </dl> 242 </dd> 243 <dt> 244 <span class="part"> 245 <a href="dpl.html">I. Programming with the Direct Persistence Layer</a> 246 </span> 247 </dt> 248 <dd> 249 <dl> 250 <dt> 251 <span class="chapter"> 252 <a href="persist_first.html">3. Direct Persistence Layer First Steps</a> 253 </span> 254 </dt> 255 <dd> 256 <dl> 257 <dt> 258 <span class="sect1"> 259 <a href="persist_first.html#entitystore">Entity Stores</a> 260 </span> 261 </dt> 262 <dd> 263 <dl> 264 <dt> 265 <span class="sect2"> 266 <a href="persist_first.html#persist-open">Opening and Closing Environments and Stores</a> 267 </span> 268 </dt> 269 </dl> 270 </dd> 271 <dt> 272 <span class="sect1"> 273 <a href="persistobject.html">Persistent Objects</a> 274 </span> 275 </dt> 276 <dt> 277 <span class="sect1"> 278 <a href="saveret.html">Saving a Retrieving Data</a> 279 </span> 280 </dt> 281 </dl> 282 </dd> 283 <dt> 284 <span class="chapter"> 285 <a href="persist_index.html">4. Working with Indices</a> 286 </span> 287 </dt> 288 <dd> 289 <dl> 290 <dt> 291 <span class="sect1"> 292 <a href="persist_index.html#dplindexaccess">Accessing Indexes</a> 293 </span> 294 </dt> 295 <dd> 296 <dl> 297 <dt> 298 <span class="sect2"> 299 <a href="persist_index.html#primaryindexaccess">Accessing Primary Indices</a> 300 </span> 301 </dt> 302 <dt> 303 <span class="sect2"> 304 <a href="persist_index.html#secondaryindexaccess">Accessing Secondary Indices</a> 305 </span> 306 </dt> 307 </dl> 308 </dd> 309 <dt> 310 <span class="sect1"> 311 <a href="dplindexcreate.html">Creating Indexes</a> 312 </span> 313 </dt> 314 <dd> 315 <dl> 316 <dt> 317 <span class="sect2"> 318 <a href="dplindexcreate.html#dplprimaryidxdecl">Declaring a Primary Indexes</a> 319 </span> 320 </dt> 321 <dt> 322 <span class="sect2"> 323 <a href="dplindexcreate.html#dplsecondaryidxdecl">Declaring Secondary Indexes</a> 324 </span> 325 </dt> 326 <dt> 327 <span class="sect2"> 328 <a href="dplindexcreate.html#foreignkey">Foreign Key Constraints</a> 329 </span> 330 </dt> 331 </dl> 332 </dd> 333 </dl> 334 </dd> 335 <dt> 336 <span class="chapter"> 337 <a href="persist_access.html">5. Saving and Retrieving Objects</a> 338 </span> 339 </dt> 340 <dd> 341 <dl> 342 <dt> 343 <span class="sect1"> 344 <a href="persist_access.html#simpleentity">A Simple Entity Class</a> 345 </span> 346 </dt> 347 <dt> 348 <span class="sect1"> 349 <a href="simpleda.html">SimpleDA.class</a> 350 </span> 351 </dt> 352 <dt> 353 <span class="sect1"> 354 <a href="simpleput.html">Placing Objects in an Entity Store</a> 355 </span> 356 </dt> 357 <dt> 358 <span class="sect1"> 359 <a href="simpleget.html">Retrieving Objects from an Entity Store</a> 360 </span> 361 </dt> 362 <dt> 363 <span class="sect1"> 364 <a href="getmultiple.html">Retrieving Multiple Objects</a> 365 </span> 366 </dt> 367 <dd> 368 <dl> 369 <dt> 370 <span class="sect2"> 371 <a href="getmultiple.html#dpl_cursor_initialize">Cursor Initialization</a> 372 </span> 373 </dt> 374 <dt> 375 <span class="sect2"> 376 <a href="getmultiple.html#dpl_dups">Working with Duplicate Keys</a> 377 </span> 378 </dt> 379 <dt> 380 <span class="sect2"> 381 <a href="getmultiple.html#dpl_cursor_range">Key Ranges</a> 382 </span> 383 </dt> 384 </dl> 385 </dd> 386 <dt> 387 <span class="sect1"> 388 <a href="dpl_entityjoin.html">Join Cursors</a> 389 </span> 390 </dt> 391 <dt> 392 <span class="sect1"> 393 <a href="dpl_delete.html">Deleting Entity Objects</a> 394 </span> 395 </dt> 396 <dt> 397 <span class="sect1"> 398 <a href="dpl_replace.html">Replacing Entity Objects</a> 399 </span> 400 </dt> 401 </dl> 402 </dd> 403 <dt> 404 <span class="chapter"> 405 <a href="dpl_example.html">6. A DPL Example</a> 406 </span> 407 </dt> 408 <dd> 409 <dl> 410 <dt> 411 <span class="sect1"> 412 <a href="dpl_example.html#vendorclass">Vendor.class</a> 413 </span> 414 </dt> 415 <dt> 416 <span class="sect1"> 417 <a href="inventoryclass.html">Inventory.class</a> 418 </span> 419 </dt> 420 <dt> 421 <span class="sect1"> 422 <a href="mydbenv-persist.html">MyDbEnv</a> 423 </span> 424 </dt> 425 <dt> 426 <span class="sect1"> 427 <a href="dataaccessorclass.html">DataAccessor.class</a> 428 </span> 429 </dt> 430 <dt> 431 <span class="sect1"> 432 <a href="dpl_exampledatabaseput.html">ExampleDatabasePut.class</a> 433 </span> 434 </dt> 435 <dt> 436 <span class="sect1"> 437 <a href="dpl_exampleinventoryread.html">ExampleInventoryRead.class</a> 438 </span> 439 </dt> 440 </dl> 441 </dd> 442 </dl> 443 </dd> 444 <dt> 445 <span class="part"> 446 <a href="baseapi.html">II. Programming with the Base API</a> 447 </span> 448 </dt> 449 <dd> 450 <dl> 451 <dt> 452 <span class="chapter"> 453 <a href="DB.html">7. Databases</a> 454 </span> 455 </dt> 456 <dd> 457 <dl> 458 <dt> 459 <span class="sect1"> 460 <a href="DB.html#DBOpen">Opening Databases</a> 461 </span> 462 </dt> 463 <dt> 464 <span class="sect1"> 465 <a href="coredbclose.html">Closing Databases</a> 466 </span> 467 </dt> 468 <dt> 469 <span class="sect1"> 470 <a href="DBConfig.html">Database Properties</a> 471 </span> 472 </dt> 473 <dt> 474 <span class="sect1"> 475 <a href="DBAdmin.html">Administrative Methods</a> 476 </span> 477 </dt> 478 <dt> 479 <span class="sect1"> 480 <a href="dbErrorReporting.html">Error Reporting Functions</a> 481 </span> 482 </dt> 483 <dt> 484 <span class="sect1"> 485 <a href="CoreEnvUsage.html">Managing Databases in Environments</a> 486 </span> 487 </dt> 488 <dt> 489 <span class="sect1"> 490 <a href="CoreJavaUsage.html">Database Example</a> 491 </span> 492 </dt> 493 </dl> 494 </dd> 495 <dt> 496 <span class="chapter"> 497 <a href="DBEntry.html">8. Database Records</a> 498 </span> 499 </dt> 500 <dd> 501 <dl> 502 <dt> 503 <span class="sect1"> 504 <a href="DBEntry.html#usingDbEntry">Using Database Records</a> 505 </span> 506 </dt> 507 <dt> 508 <span class="sect1"> 509 <a href="usingDbt.html">Reading and Writing Database Records</a> 510 </span> 511 </dt> 512 <dd> 513 <dl> 514 <dt> 515 <span class="sect2"> 516 <a href="usingDbt.html#databaseWrite">Writing Records to the Database</a> 517 </span> 518 </dt> 519 <dt> 520 <span class="sect2"> 521 <a href="usingDbt.html#databaseRead">Getting Records from the Database</a> 522 </span> 523 </dt> 524 <dt> 525 <span class="sect2"> 526 <a href="usingDbt.html#recordDelete">Deleting Records</a> 527 </span> 528 </dt> 529 <dt> 530 <span class="sect2"> 531 <a href="usingDbt.html#datapersist">Data Persistence</a> 532 </span> 533 </dt> 534 </dl> 535 </dd> 536 <dt> 537 <span class="sect1"> 538 <a href="bindAPI.html">Using the BIND APIs</a> 539 </span> 540 </dt> 541 <dd> 542 <dl> 543 <dt> 544 <span class="sect2"> 545 <a href="bindAPI.html#bindPrimitive">Numerical and String Objects</a> 546 </span> 547 </dt> 548 <dt> 549 <span class="sect2"> 550 <a href="bindAPI.html#object2dbt">Serializable Complex Objects</a> 551 </span> 552 </dt> 553 <dt> 554 <span class="sect2"> 555 <a href="bindAPI.html#customTuple">Custom Tuple Bindings</a> 556 </span> 557 </dt> 558 </dl> 559 </dd> 560 <dt> 561 <span class="sect1"> 562 <a href="dbtJavaUsage.html">Database Usage Example</a> 563 </span> 564 </dt> 565 </dl> 566 </dd> 567 <dt> 568 <span class="chapter"> 569 <a href="Cursors.html">9. Using Cursors</a> 570 </span> 571 </dt> 572 <dd> 573 <dl> 574 <dt> 575 <span class="sect1"> 576 <a href="Cursors.html#openCursor">Opening and Closing Cursors</a> 577 </span> 578 </dt> 579 <dt> 580 <span class="sect1"> 581 <a href="Positioning.html">Getting Records Using the Cursor</a> 582 </span> 583 </dt> 584 <dd> 585 <dl> 586 <dt> 587 <span class="sect2"> 588 <a href="Positioning.html#cursorsearch">Searching for Records</a> 589 </span> 590 </dt> 591 <dt> 592 <span class="sect2"> 593 <a href="Positioning.html#getdups">Working with Duplicate Records</a> 594 </span> 595 </dt> 596 </dl> 597 </dd> 598 <dt> 599 <span class="sect1"> 600 <a href="PutEntryWCursor.html">Putting Records Using Cursors</a> 601 </span> 602 </dt> 603 <dt> 604 <span class="sect1"> 605 <a href="DeleteEntryWCursor.html">Deleting Records Using Cursors</a> 606 </span> 607 </dt> 608 <dt> 609 <span class="sect1"> 610 <a href="ReplacingEntryWCursor.html">Replacing Records Using Cursors</a> 611 </span> 612 </dt> 613 <dt> 614 <span class="sect1"> 615 <a href="cursorJavaUsage.html">Cursor Example</a> 616 </span> 617 </dt> 618 </dl> 619 </dd> 620 <dt> 621 <span class="chapter"> 622 <a href="indexes.html">10. Secondary Databases</a> 623 </span> 624 </dt> 625 <dd> 626 <dl> 627 <dt> 628 <span class="sect1"> 629 <a href="indexes.html#DbAssociate">Opening and Closing Secondary Databases</a> 630 </span> 631 </dt> 632 <dt> 633 <span class="sect1"> 634 <a href="keyCreator.html">Implementing Key 635 Creators 636 637 </a> 638 </span> 639 </dt> 640 <dd> 641 <dl> 642 <dt> 643 <span class="sect2"> 644 <a href="keyCreator.html#multikeys">Working with Multiple Keys</a> 645 </span> 646 </dt> 647 </dl> 648 </dd> 649 <dt> 650 <span class="sect1"> 651 <a href="secondaryProps.html">Secondary Database Properties</a> 652 </span> 653 </dt> 654 <dt> 655 <span class="sect1"> 656 <a href="readSecondary.html">Reading Secondary Databases</a> 657 </span> 658 </dt> 659 <dt> 660 <span class="sect1"> 661 <a href="secondaryDelete.html">Deleting Secondary Database Records</a> 662 </span> 663 </dt> 664 <dt> 665 <span class="sect1"> 666 <a href="secondaryCursor.html"> 667 Using Secondary Cursors 668 669 </a> 670 </span> 671 </dt> 672 <dt> 673 <span class="sect1"> 674 <a href="joins.html">Database Joins</a> 675 </span> 676 </dt> 677 <dd> 678 <dl> 679 <dt> 680 <span class="sect2"> 681 <a href="joins.html#joinUsage">Using Join Cursors</a> 682 </span> 683 </dt> 684 <dt> 685 <span class="sect2"> 686 <a href="joins.html#joinconfig">JoinCursor Properties</a> 687 </span> 688 </dt> 689 </dl> 690 </dd> 691 <dt> 692 <span class="sect1"> 693 <a href="javaindexusage.html">Secondary Database Example</a> 694 </span> 695 </dt> 696 <dd> 697 <dl> 698 <dt> 699 <span class="sect2"> 700 <a href="javaindexusage.html#secondaryMyDbs">Opening Secondary Databases with MyDbs</a> 701 </span> 702 </dt> 703 <dt> 704 <span class="sect2"> 705 <a href="javaindexusage.html#exampleReadJavaSecondaries">Using Secondary Databases with ExampleDatabaseRead</a> 706 </span> 707 </dt> 708 </dl> 709 </dd> 710 </dl> 711 </dd> 712 <dt> 713 <span class="chapter"> 714 <a href="dbconfig.html">11. Database Configuration</a> 715 </span> 716 </dt> 717 <dd> 718 <dl> 719 <dt> 720 <span class="sect1"> 721 <a href="dbconfig.html#pagesize">Setting the Page Size</a> 722 </span> 723 </dt> 724 <dd> 725 <dl> 726 <dt> 727 <span class="sect2"> 728 <a href="dbconfig.html#overflowpages">Overflow Pages</a> 729 </span> 730 </dt> 731 <dt> 732 <span class="sect2"> 733 <a href="dbconfig.html#Locking">Locking</a> 734 </span> 735 </dt> 736 <dt> 737 <span class="sect2"> 738 <a href="dbconfig.html#IOEfficiency">IO Efficiency</a> 739 </span> 740 </dt> 741 <dt> 742 <span class="sect2"> 743 <a href="dbconfig.html#pagesizeAdvice">Page Sizing Advice</a> 744 </span> 745 </dt> 746 </dl> 747 </dd> 748 <dt> 749 <span class="sect1"> 750 <a href="cachesize.html">Selecting the Cache Size</a> 751 </span> 752 </dt> 753 <dt> 754 <span class="sect1"> 755 <a href="btree.html">BTree Configuration</a> 756 </span> 757 </dt> 758 <dd> 759 <dl> 760 <dt> 761 <span class="sect2"> 762 <a href="btree.html#duplicateRecords">Allowing Duplicate Records</a> 763 </span> 764 </dt> 765 <dt> 766 <span class="sect2"> 767 <a href="btree.html#comparators">Setting Comparison Functions</a> 768 </span> 769 </dt> 770 </dl> 771 </dd> 772 </dl> 773 </dd> 774 </dl> 775 </dd> 776 </dl> 777 </div> 778 <div class="list-of-examples"> 779 <p> 780 <b>List of Examples</b> 781 </p> 782 <dl> 783 <dt>7.1. <a href="CoreJavaUsage.html#MyDb">MyDbs Class</a></dt> 784 <dt>8.1. <a href="dbtJavaUsage.html#inventoryjava">Inventory.java</a></dt> 785 <dt>8.2. <a href="dbtJavaUsage.html#vendorjava">Vendor.java</a></dt> 786 <dt>8.3. <a href="dbtJavaUsage.html#InventoryJavaBinding">InventoryBinding.java</a></dt> 787 <dt>8.4. <a href="dbtJavaUsage.html#dbsStoredClass">Stored Class Catalog Management with MyDbs</a></dt> 788 <dt>8.5. <a href="dbtJavaUsage.html#EDL">ExampleDatabaseLoad.java</a></dt> 789 <dt>9.1. <a href="cursorJavaUsage.html#EDR">ExampleDatabaseRead.java</a></dt> 790 <dt>10.1. <a href="javaindexusage.html#ItemNameKeyCreator-Java">ItemNameKeyCreator.java</a></dt> 791 <dt>10.2. <a href="javaindexusage.html#mydbsSecondary">SecondaryDatabase Management with MyDbs</a></dt> 792 <dt>10.3. <a href="javaindexusage.html#secondaryWithEDR">SecondaryDatabase usage with ExampleDatabaseRead</a></dt> 793 </dl> 794 </div> 795 </div> 796 <div class="navfooter"> 797 <hr /> 798 <table width="100%" summary="Navigation footer"> 799 <tr> 800 <td width="40%" align="left">��</td> 801 <td width="20%" align="center">��</td> 802 <td width="40%" align="right">��<a accesskey="n" href="preface.html">Next</a></td> 803 </tr> 804 <tr> 805 <td width="40%" align="left" valign="top">��</td> 806 <td width="20%" align="center">��</td> 807 <td width="40%" align="right" valign="top">��Preface</td> 808 </tr> 809 </table> 810 </div> 811 </body> 812</html> 813