* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Database - AMIS Technology Blog
Survey
Document related concepts
Commitment ordering wikipedia , lookup
Serializability wikipedia , lookup
Microsoft Access wikipedia , lookup
Entity–attribute–value model wikipedia , lookup
Extensible Storage Engine wikipedia , lookup
Ingres (database) wikipedia , lookup
Oracle Database wikipedia , lookup
Microsoft SQL Server wikipedia , lookup
Functional Database Model wikipedia , lookup
Concurrency control wikipedia , lookup
Microsoft Jet Database Engine wikipedia , lookup
Open Database Connectivity wikipedia , lookup
Versant Object Database wikipedia , lookup
Relational model wikipedia , lookup
Database model wikipedia , lookup
Transcript
Java developers: make the database work for you Lucas Jellema AMIS Java Applications & Database Cache “NO SQL” Plain JDBC Ibatis, Spring JPA (Hibernate) JDBC RDBMS EJB (CMP) WS* Data Grid Position of Database • It almost feels like “a necessary evil” • Database is abstracted away as much as possible • It’s the persistent data store – It does CRUD (Create, Retrieve, Update & Delete) • What else could there be to it? Database (Vendor) Independence • Applications should not depend on a specific vendor’s database – Only use common functionality (available in ‘all’) – Do not leverage special features of any database • Abstract database away through frameworks – Use generic and/or generated SQL • Do as little as possible relating to the RDBMS – … even if the organization happens to have enterprise editions and specialized db veterans “We could also do that in the database” • in the database? Huh? RDBMS ≈ Stored Procedures • Stored Procedures executing procedural programming units – PL/SQL, Transact-SQL, SQL/PL, SPL, pl/perl, pl/php, … – Java Stored Procedures After the polarization (peak 2002) pragmatism struck… • EJB 2.x => JPA and EJB 3.0 (JEE 5) • Consensus – Leverage enterprise database for what it is good at (you pay for it, may as well use it) – Most applications will only be used on one vendor’s database ever – Even portable applications should still leverage database strengths • Through generic APIs with database specific implementations Project: VP - Rich UI, Complex Data Manipulation JSF (Rich Faces) SEAM JPA (Hibernate) Oracle RDBMS Team & Design that combines strengths of all technologies… - Ease and Elegance of Implementation Functionality (in an affordable way) Productivity Performance JSF (Rich Faces) SEAM JPA (Hibernate) Oracle RDBMS Database Strengths • Integrity • Fine grained (data) security and auditing • Data Retrieval – joining tables together, leveraging indexes – hierarchical, network-like traversals – advanced analytics, historical queries, mining • Aggregation and Sorting • Complex & Massive Data Manipulation Zooming in – using Oracle • • • • Have to pick one Largest market-share Fairly representative (e.g. ANSI SQL) The one I personally know best Oracle RDBMS Sample Data Model: Departments & Employees Primary, Unique and Foreign Key Constraints • Definition in Database is Declarative • Implementation is optimized • Imagine the programming and performance cost of a middle tier based implementation RDBMS not always exclusively accessed through one Java API SOA, ESB, WebServices Batch Bulk Processes Standard Applications Database Data Replication & Synchronization Legacy Applications Other data constraints • Not Null • Data Type: – string, numeric, date (time), xml – maximum length, integer/floating point • Data Rules – COMM < 0.3 * SAL – COMM IS NULL or JOB = ‘SALESMAN’ – MGR != EMPNO • Implemented using Column Definitions and Check Constraints Database Triggers – decorating Data Manipulation • Triggers execute before or after Insert, Update or Delete of database records Before Insert trigger: sal=… Employees Purpose of triggers • Set default values on new records – if :new.job=‘SALESMAN’ then :new.comm = 1000 • Calculate & Derive values upon insert, update or delete • Notify third parties of data manipulation • Perform complex validation on the data changes applied by the transaction – Per Department: Max Salary < 1.8 * Average – Per Manager: #subordinates < 15 JPA refreshing entities after triggers have applied new values @Entity @Table(name = "EMP") public class Employee … @Column(name=“sal”) private Double salary Before Insert trigger: sal=… Employees @ReturnInsert //EclLnk @Generated (value= GenerationTime.INSERT) // Hibernate The far reaches of SQL vs the limit(itation)s of JPQL • Many Java ORM-frameworks – including JPA via Hibernate or EclipseLink – generate SQL – Usually “database independent” SQL – By and large only leveraging the common functionality across databases • As a consequence: – Many Java applications do not exploit the wealth of (the SQL of) their databases – And use what they do leverage in a what is possibly a suboptimal way Aggregation & Rollup • Data for reporting purposes can be prepared by database queries – Including aggregations (max/min/avg/count/sum) – and Sub Totals – and Grand Total – and String Aggregation Sub and Grand totals with Rollup • Rollup instructs database to aggregate at every level starting from the right – deptno, job – deptno – (grand total) • Also see: – Cube – Grouping Sets Analytical Functions – spreadsheet-style row processing • Analytical Functions allow SQL queries to perform inter-row comparison & aggregation • For example: in a single query, for each employee – show salary rank in department and job – show salary difference with colleague next higher in rank (on the list per department) – show average salary in the department – show csv list of colleagues in department Analytical Functions - example Flashback Query select emp.* , dept.dname from emp AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' DAY) , dept where emp.deptno = dept.deptno Flashback Versions • Retrieve all states each record has been in – Every transaction that touched a row left a version of it – Pseudocolumns: xid, operation, starttime, endtime Employee Version-history with Analytical and Flashback Trees Trees Retrieving Hierarchical data sets with single SQL statements • Database has optimized algorithms – – – – Starting at any node in the tree or network Drilling down to the specified number of levels Order siblings within parent Indicate leaf and parent nodes; detect cycles EMPID --------------7839 7698 7499 7900 7654 7844 7521 7782 7934 ENAME MGR DEPTNO LEVEL ---------- ---------- ---------- ---------KING 10 1 BLAKE 7839 30 2 ALLEN 7698 30 3 JAMES 7698 30 3 MARTIN 7698 30 3 TURNER 7698 30 3 WARD 7698 30 3 CLARK 7839 10 2 MILLER 7782 10 3 Encapsulate Database specific SQL in a View API • Views – for encapsulation of data model, multi-table join, (advanced) SQL hiding, authorization rules – Note: a view looks like a table to the client View The read-only cursor API • A Cursor is a reference to a query result set • Database can open a cursor JDBC for a SQL query ResultSet while rs.next { • And return it to the application …} to fetch the rows from • Cursor == JDBC Stored ResultSet Procedure Departments • A cursor can be Employees nested: contain details … Cursor for Master-Detail resultset Stored Procedure Using Complex Views for Hiding Legacy Data Models Providing a ‘business object’ API • DML API: a View – aided by an Instead Of trigger USERS • Insert of one new row in USERS_VW (e.g. a JPA persist operation) can actually be four new records – USER, PERSON, EMAIL_TYPE EMAIL_ADDRESS USERS * * PERSONS EMAIL_TYPE * * EMAIL_ ADDRESSES The Hollywood Principle: Query ResultSet Change Notification Cache Cache Refresh triggered by DB Cache SQL query PL/SQL Reaching out from the database Database Email conversations Database receiving and sending emails – from people or applications RESTful resource navigation RESTful architecture RESTful PL/SQL API exposed through dbms_epg Database informing and leveraging the middle tier JEE Application Server Web Application Web Service ? Enterprise Service Bus Other Database Features worth investigating • • • • • • • • • • • • • Virtual Private Database & Fine Grained Authorization XMLType, XMLDB & FTP/HTTP/WEBDAV server Object Types and Collections Data type Interval & Time Zone support Fine Grained Auditing System Triggers, for example “after logon” (Global) Application Context Autonomous Transaction Advanced Queuing (& JMS interaction) Creating advanced job execution schedules Edition Based Redefinition (versioning of database objects) Statistics and Data Mining Virtual Columns Summary & Conclusions • Databases can do much more than • Java applications can benefit! • Strike the right balance: – Leverage database for what it can do best • Make Java and Database work together in a smooth way Use the right tool for the job • Render HTML • Enforce Application Logic • Handle User Interaction • Create graphics • Interact with Internet • (bulk) copy of data • Guard Uniqueness • (large) Sort or Aggregation • (complex) SQL • Enforce data rules Summary & Conclusions • • • • • Databases can do much more than Java applications can benefit! Strike the right balance: Make Java and Database work together Cater for ‘multiple database consumers’ • Acquire expertise on your team • Arrive at architectural design choices and best development practices Best Practices & Principles • Prevent data to travel to the middle tier unless it has to – Performance (network and object instantiation) & Resource Usage (memory) • When data is on the middle tier: ensure it has the required freshness • Encapsulate database (specific) functionality – NO SQL (in the middle tier) – Decoupling and database (vendor) & framework independence Best Practices & Principles • Use Views and Stored Procedures to create APIs that encapsulate database functionality – Note: the database brings constraints and triggers to the party – weaved in like Aspects – Cursors mapping to ResultSets allow retrieval of nested data structures through simple calls • Leverage the database for what it’s worth • Include ‘database developer’ in your team • Never be dogmatic Want to know more? • Have the sources for the demos • Have this presentation presented & discussed at your organization • Learn about Java and the Database (Oracle) • Inject (Oracle) Database expertise – in the context of Java development - into your team • Receive a paper with more details on ‘making the database work for you & for ’ • Send me an email: [email protected] • Visit our blog: http://technology.amis.nl/blog Master Class ‘Java Developers make the database work for you’ • Friday 17 December 2010 (AMIS, Nieuwegein): – One day master class: ‘Java Developer make the database work for you’ • For information and registration: – [email protected]