Oracle Berkeley DB Java Edition: Simple Java Object Persistence

32
<Insert Picture Here> Oracle Berkeley DB Java Edition: Simple Transactional Java Object Storage

Transcript of Oracle Berkeley DB Java Edition: Simple Java Object Persistence

Page 1: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

<Insert Picture Here>

Oracle Berkeley DB Java Edition:Simple Transactional Java Object Storage

Page 2: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 2

Agenda

• Code to store, access, and modify objects• Overview of Berkeley DB Java Edition• Performance versus ORM Solutions• Customers of Berkeley DB Java Edition• Q&A

Page 3: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 3

Prepare an object to be persistent

@Persistentclass Address { String street; String city; String state; int zipCode; private Address() {}}

streetcitystatezipCode

Address

Page 4: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 4

Create a persistent Entity object

@Entityclass Employer { @PrimaryKey(sequence="ID") long id;

@SecondaryKey(relate=ONE_TO_ONE) String name;

Address address;

private Employer() {}}

streetcitystatezipCode

Address

idnameaddress

Employer

Page 5: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 5

@Entityclass Person { @PrimaryKey String ssn;

String name; Address address;

@SecondaryKey(relate=MANY_TO_ONE, relatedEntity=Person.class) String parentSsn;

@SecondaryKey(relate=MANY_TO_MANY, relatedEntity=Employer.class) Set<Long> employerIds;

Person(String name, String ssn, Address addr) { ... }}

Relationships between objects

ssnnameaddressparentSsnemployerIds

Person

idnameaddress

Employer

streetcitystatezipCode

Address

Page 6: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 6

Quick access to object as Collections

EntityStore store = new EntityStore(...);

PrimaryIndex<String,Person> personBySsn = store.getPrimaryIndex(String.class, Person.class);

Map<String,Person> map = personBySsn.map();

ssnnameaddressparentSsnemployerIds

Person

222-11-9292 | Jon Pont | 21 | 111-11-1111 | { 32 }333-99-5534 | Biff Pont | 24 | 443-76-7483 | { 18 }666-22-7422 | Jane Doe | 22 | 747-01-1701 | { 32 }222-11-9292 | Craig Bon | 23 | 273-01-1132 | { 18, 32 }

Map from “ssn” string to “Person” instances

Page 7: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 7

Quickly store new object instances

// Earlier in the codestoreConfig.setTransactional(true);

personBySsn.put(new Person("Bob Pont", "111-11-1111", null));

ssnnameaddressparentSsnemployerIds

Person

222-11-9292 | Jon Pont | 21 | 111-11-1111 | { 32 }333-99-5534 | Biff Pont | 24 | 111-11-1111 | { 18 }666-22-7422 | Jane Doe | 22 | 747-01-1701 | { 32 }222-11-9292 | Craig Bon | 23 | 273-01-1132 | { 18, 32 }111-11-1111 | Bob Pont | | | {}

New “Person” instance added to data store

Page 8: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 8

Sub-indexes and cursors

EntityCursor<Person> children = personByParentSsn.subIndex("111-11-1111").entities();try { for (Person child : children) { System.out.println(child.ssn + ' ' + child.name); }} finally { children.close();}

ssnnameaddressparentSsnemployerIds

Person

222-11-9292 | Jon Pont | 21 | { 32, 17, 19 }333-99-5534 | Biff Pont | 24 | { 18 }

Children of “Person” with “ssn” 111-11-1111

Page 9: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 9

Agenda

• Code to store, access, and modify objects• Overview of Berkeley DB Java Edition• Performance versus ORM Solutions• Customers of Berkeley DB Java Edition• Q&A

Page 10: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 10

Berkeley DB Java Edition vs. RDBMS

Java Persistence API

JDBC

TCP/IP

TCP/IP

SQL Parser

Query Optimizer

Your Application Code

Direct Persistence Layer

Berkeley DB JEStorage Manager

Your Application Code

Page 11: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 11

What is Berkeley DB Java Edition?

• Reliable, scalable, flexible, fast and transactional data management• A single, small JAR loaded into the JVM along with your application• Enterprise database functionality with:

• Full transactional access to Java POJO Objects• Simple Direct Persistence Layer (DPL) for fast and easy development• Ability to use Java Collections as persistent, transactional data• Programmatic administration eliminates the need for a DBA• Scalable to TB of data, predictable cache size in memory• Highly concurrent design, hundreds of threads concurrently transacting• Open source, dual license

• Simple yet sophisticated data management hidden within an application

A database engine for your specialized data management needs.

Page 12: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 12

Agenda

• Code to store, access, and modify objects• Overview of Berkeley DB Java Edition• Performance versus ORM Solutions• Customers of Berkeley DB Java Edition• Q&A

Page 13: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 13

JE Compared to Apache Derby - Derby is a good Java RDBMS/SQL Engine - But sometimes SQL and ORM is overhead

JE Derby %JE

WithDPL

DerbyWithHibernate

%

Random Create 9,082 3,571 154% 7,773 1,906 308%

Random Read 101,626 13,925 630% 47,824 6,094 685%

Random Update 33,692 8,694 288% 18,850 4,824 291%

Random Delete 16,652 5,621 196% 16,155 3,962 308%

SerialScan

131,319 114,351 15% 55,617 7,612 631%

Page 14: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 14

The Performance Gap between RDBMS and JE - functionally similar, fundamentally different

Java Persistence API

JDBC

TCP/IP

TCP/IP

SQL Parser

Query Optimizer

Your Application Code

Direct Persistence Layer

Berkeley DB JEStorage Manager

Your Application Code

Page 15: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 15

Agenda

• Code to store, access, and modify objects• Overview of Berkeley DB Java Edition• Performance verses ORM Solutions• Customers of Berkeley DB Java Edition• Q&A

Page 16: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 16

• Internet Archive (www.archive.org)• Library that stores historical copies of the entire Web• Over 70 billion URLs and growing• Petabytes of data

• Berkeley DB Java Edition is the repository for Heritrix, the webcrawler for Internet Archive, soon it will manage the index data as well

• Very large crawls (tens of millions of URLs in queue at a given time)bounded by RAM

• Berkeley DB Java Edition used to persistdata to disk with minimal performance penalty

• Why Berkeley DB Java Edition?• Very high scalability• Very high performance• Simple Java Collections API• Pure Java

Internet Archive –Heritrix and the WayBack Machine

“The Oracle Berkeley DB Java Edition database allows us to crawl and rank all those URLs efficiently. Because the crawler is written entirely in Java, we needed a highly scalable, very fast, 100% pure Java database engine.”Gordon Mohr, Chief Architect, Internet Archive

Page 17: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 17

Sun - OpenDS

• Open Source• Pure Java LDAP/JNDI• Sun’s existing non-Java LDAP

server uses Berkeley DB (ANSI C)

• OpenDS is as fast, faster in some cases

• JE’s highly concurrent design is exploited by Java 6 and the Niagara line of servers

Page 18: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 18

Cisco License Manager

• Business critical data• Accurate, fast and available at all times• A software server requiring fast local persistence• Pure Java database• Simple schema• Queries known in advance, no dynamic requirement

“Cisco License Manager (CLM) is a secure client/server application that manages Cisco IOS Software activation and licenses for Cisco network devices.”

Cisco.com FAQ on the CLM product

Page 19: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 19

Oracle Coherence

• Coherence & Berkeley DB JE• Fast J2EE data grid solution• JE manages the grid’s node local

information when data within the data grid exceeds memory

• Rebuilding the data grid’s distributed information wastes time and resources

• JE is the consistent, local and recoverable database maintaining the grid’s distributed information

Page 20: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 20

Amazon.com’s Carbonado Framework

• Database neutral• Allows migration• Support for

• Berkeley DB• Berkeley DB JE• many different RDBMS

• Allows for dynamic queries, joins, indexes

• JE is the default storage engine

• Open Source

Page 21: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 21

TIBCO BusinessEvents UsesBerkeley DB Java Edition

• TIBCO BusinessEvents• Monitors disparate systems for interesting

activity• Correlates business and IT events based on

rules

• Berkeley DB Java Edition stores:• Rules identifying “interesting activity” and

“business events”• Event descriptions• Log for audit and reporting• System state saved every 20-30 seconds

• Why Berkeley DB Java Edition?• High throughput and reliability• Scalability• Integration with Java runtime

“Berkeley DB Java Edition is the optimal choice for an internal database for BusinessEvents, because it provides fast, transactional persistence in a pure Java package.”

Matt QuinnVP Product Strategy

TIBCO

Page 22: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 22

• CoMotion Visualization Software – collaborative visualization software for decision-making

• Applications:• Battlefield decision support in Iraq• Supply-chain visibility• Patient records• Financial monitoring

• Berkeley DB Java Edition provides the repository for CoMotion

• Why Berkeley DB Java Edition?• High performance• Reliability• Lightweight and pure Java

Command Post of the Future (CPOF)

General Dynamics

Page 23: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 23

For More Information

http://search.oracle.com

orhttp://www.oracle.com/database/berkeley-db

Berkeley DB

Page 24: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 24

The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions.The development, release, and timing of any features or functionality described for Oracle’s products remain at the sole discretion of Oracle.

Page 25: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 25

AQ&

Page 26: Oracle Berkeley DB Java Edition: Simple Java Object Persistence
Page 27: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 27

• Fast indexed or sequential lookup• API is get/put, or through cursors• DPL and Collections APIs for easy access

• Concurrent threaded access to data• Transactions

• ACID – Atomic, Consistent, Isolated, Durable• Recovery after failure

key data

Fundamental Concepts

key data

key data

key data

Conceptual View of Data

Data organized in memory as a BTREE, stored on disk as a set of transactional log files.

000003.jdb000004.jdb

000002.jdb000001.jdb

Cleaner Thread

Page 28: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 28

Log-based Storage on Disk

• Data is written only once (even updates)• Writes are sequential, not random• Disk head generally stays on same track• Inserts and updates are fast

• Data experiences temporal (not spatial) locality • Assumption: working set fits in memory • Dynamic re-clustering• No random I/O on checkpoints

• Log and data (the “material DB”) are the same• Backup and restore are simplified• Cleaner reclaims unused disk space

Page 29: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 29

Features of Berkeley DB Java Edition

• Full transactional semantics• Transactions may be disabled• Multiple durability options• All ANSI serialization levels supported

• Record level locking• Locking may be disabled

• No IPC required for data access• High-concurrency BTREE storage• Optimized for write performance• Architecture neutral on-disk format• No SQL, JDBC – no query processing overhead

Page 30: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 30

Highly Concurrent, by Design

• Record-level locking• Finer-grained than the page-level locking

• Logical locking on key/data pairs• Provide ACID properties and cursor stability• User-visible effects

• Non-transactional latching on internal nodes• Short-term latches improve concurrency• Invisible to user; never held across API calls

• Recoverability and transactional semantics on user data are guaranteed in all cases

Page 31: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 31

Administration

• Command line or application-embedded• All the utilities you expect:

• Dump, load, verify, salvage• Recover• Checkpoint and log file archival and removal• Hot backup• Deadlock detection• Statistics

Page 32: Oracle Berkeley DB Java Edition: Simple Java Object Persistence

© 2007 Oracle Corporation – Berkeley DB Java Edition – JavaOne 2007 32

• Persistent Java Objects are not accessed outside of the ORM• Queries are known in advance• Performance matters• Queries are (relatively) simple• The system must run without administrator support• Build once, deploy with confidence 1000s of times• Speed, scale and concurrency are important

Berkeley DB Java Edition

The right answer when: