BDB Java Sample Program Backing enterprise and embedded Java applications with BDB Copyright © 2014 Oracle and/or its affiliates.
Download ReportTranscript BDB Java Sample Program Backing enterprise and embedded Java applications with BDB Copyright © 2014 Oracle and/or its affiliates.
BDB Java Sample Program
Backing enterprise and embedded Java applications with BDB
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB
Berkeley DB
• A high-performance key-value database – Designed for high-throughput applications requiring in-process, bullet-proof management of mission-critical data – Scale gracefully from managing a few bytes to terabytes of data • Full ACID transaction support – Concurrent transactional operations with multiple isolation levels – Full transactional recovery support • Cursor and secondary index support – Fast and flexible data access • Cross platform support Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 2
Berkeley DB for Java
• Why Java?
– Cross platform, write once run everywhere – Scale gracefully from tiny embedded devices to clustered enterprise applications • How?
– Base key-value API – Direct persistence layer (DPL) API – JDBC API Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 3
Base key-value API
• Lower level API – Full control over persisted data format – Resemble closely to the C API – Work with Java 4+ – More verbose • Handles – Environment – Database – Cursor Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 4
Base key-value API - Example
• Opening the environment and database EnvironmentConfig envConfig = new EnvironmentConfig(); envConfig.setInitializeCache(true); envConfig.setInitializeLocking(true); envConfig.setInitializeLogging(true); envConfig.setTransactional(true); Environment env = new Environment(“envHome”, envConfig); DatabaseConfig dbConfig = new DatabaseConfig(); dbConfig.setTransactional(true); dbConfig.setType(DatabaseType.BTREE); Database db = env.openDatabase(null, “myDatabase.db”, null, dbConfig); Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 5
Base key-value API – Example cont.
• Writing and getting values with binding DatabaseEntry key = new DatabaseEntry(); DatabaseEntry value = new DatabaseEntry(); TupleBinding
Base key-value API – Example cont.
• Using cursors DatabaseEntry key = new DatabaseEntry(); DatabaseEntry value = new DatabaseEntry(); TupleBinding
Direct persistence layer API
• Higher level API – Work with objects instead of key-value pairs – Use annotation, less cluttered code – Work better with relatively static schema – Require Java 5+ • Core classes – EntityStore – PrimaryIndex/SecondaryIndex – EntityCursor Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 8
Direct persistence layer API - Example
• Opening the environment and entity store EnvironmentConfig envConfig = new EnvironmentConfig(); envConfig.setInitializeCache(true); envConfig.setInitializeLocking(true); envConfig.setInitializeLogging(true); envConfig.setTransactional(true); Environment env = new Environment(“envHome”, envConfig); StoreConfig storeConfig = new StoreConfig(); storeConfig.setAllowCreate(true).setTransactional(true); EntityStore store = new EntityStore(env, name, storeConfig); Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 9
Direct persistence layer API – Example cont.
• Annotate entity classes @Entity public class Ticket { @PrimaryKey private Long ticketId; private String meterId; public Ticket() {} public Ticket(Long id, String mId) { ticketId = id; meterId = mId; } public Long getTicketId() { return ticketId; } } public String getMeterId() { return meterId; } Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 10
Direct persistence layer API – Example cont.
• Writing and getting objects PrimaryIndex
JDBC API
• Use SQLite dialect • Support JDBC 4 • Work with Java 4 - Java 7 • JDBC URL jdbc:sqlite:/
The sample program
• The story – Simulates a parking lot with one parking meter • OLTP & OLAP – Ticket transactions (CRUD) follow the OLTP paradigm – Operational analysis (BI/Data mining) follow the OLAP paradigm • Cross platform/IDE support – Linux / Unix / Windows – IntelliJ / Eclipse / JDeveloper Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 13
The sample program – cont.
• Support all three APIs – Base key-value API – DPL API – JDBC API • Cover many features – Transaction – Cursor – Primary and secondary index Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 14
The sample program – Data model
TICKET ( TICKET_ID INTEGER PRIMARY KEY, METER_ID TEXT, ISSUE_TIME INTEGER) TICKET_LOG( LOG_TIME INTEGER PRIMARY KEY, METER_ID TEXT, TICKET_ID INTEGER, ACTION TEXT, CHARGE_FEE INTEGER) SEQUENCE “TICKET_ID_SEQ” INDEX METER_IDX ON TICKET_LOG(METER_ID, LOG_TIME) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 15
The sample program – Data access layer
• DbManager – Manages an environment or a JDBC connection – Manages transactions – Creates DAOs • TicketDAO – CRUD operations on Tickets • TicketLogDAO – Append TicketLogs and query TicketLogs given a meterId and a period Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 16
The sample program – Application components
• Meter – Represent a parking meter – Create Tickets and compute parking fees • Reporting – Represent a BI reporting module – Create reports using TicketLog queries • Driver – A demo driver program Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 17
The sample program - Run
• General steps: – Build the following Berkeley DB components on your platform • • • Core SQL API Java API • JDBC API – Import the sample program into your IDE – Configure the project’s build path to include the Java and JDBC jars – Configure ‘java.library.path’ to point to native Berkeley DB libraries in your run configuration Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 18
Resources
• We need to figure out where to put the following and add that here – Code – Word & PPT – 5 videos • Main (PPT + code walk through) • • BDB build 3 IDEs Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Berkeley DB 19