SlideShare a Scribd company logo
1 of 37
0 Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery  Dr. Vladimir Bacvanski, Vice President, InferData,  vladimir@inferdata.com Daniel Galvin, Consultant, Galvin Consulting, dang@galvinconsulting.com Session Number 2171
What is this revolution about? 1 NO SLOW APPS! NO BAD SQL! GET CONTROL BACK !
Show of Hands: What Data Access Technology Have You Used? 2 Hibernate EJB Entity Beans JDBC JPA iBatis SQLJ What’s most important to you? Productivity Performance Security Portability
Java Data Access – Two Views of the World Writing Java code is so easy with this eclipse environment.I wish it was that easy to get the SQL right. JSP QoS goals Spring Another runaway query!  Where are these coming from?  JDBC?  Hmmm… Runstats XML http Partition strategy Stored Procedures mashup SQL Response Time! REORG JSON JDBC This ORM doesn’t allow me to leverage all my database’s SQL. Inconsistent response time? How long will it take me to find the offending application sending bad SQL this time?  JDBC I can’t believe I got called out last week.  I wish I could see how these queries will run in production. SQLJ JPA These ad-hoc queries are dangerous.  We need a library of tested SQL interfaces.  Application Developer Database Developer& Administrator Spring Why does this query take so long? iBatis, . . . Sometimes I need POJOs, sometime JSON, sometimes XML, what should I use? Static SQL? Sounds like another delay to getting my program deployed Another GRANT request?  This security administration is out of control. Can I examine the SQL “before” the application is deployed?
Meet in the Middle Data Mapping Approaches Application-Centric Top-Down Start with Object Domain Model ORM Mapping Well supported in dynamic languages and frameworks Hybrid Meet in the middle Can be challenging w/o comprising Data-Centric Bottom-UP Start with Relational Data Model Not well supported in dynamic languages and frameworks Top Down Persistence Layer Bottom Up 4
EJB, JPA, and Hibernate  vs. The Database ,[object Object]
Where is the SQL coming from?
What is it?
Where is it?
How do we tune it?
How de we manage it?
Performance Concerns:
Some App Server vendors claim (unsurprisingly) that Managed objects performs fine.
There are many user claims of bad Managed object performance is bad on the web.
As always, the truth is in the middle.
And will depend on your app server, application, database, etc ..“Our top story: Large Customer moves from COBOL to Java to become more agile.  In other news, DBA develop amnesia.” 5 5
Introducing pureQuery A high-performance, data access platform to simplify developing, managing, securing, and optimizing data access. pureQuery Components: Simple and intuitive API Enables SQL access to databases or in-memory Java objects Facilitates best practices  Optim Development Studio (integrates with RAD/RSA) Integrated development environment with Java and SQL support  Improve problem isolation and impact analysis Optim pureQuery Runtime Flexible static SQL deployment for DB2
Add basic OR mapping and annotated-method style pureQuery pureQuery Balances Productivity and Control Managed objects  Object-relational mapping Full SQL control Code all your SQL JDBC / SQLJ Use SQL templates, inline only Spring  templates iBATIS Complex OR mapping and persistence management, but loss of controls Hibernate Adds container management option OpenJPA  (EJB3)
Design Phase pureQuery close-up Jump Start Application Design ,[object Object]
Setup basic DAO PatternExisting JDBC to Static ,[object Object],Code Development Productivity ,[object Object]
Database aware, Java SQL EditorSQL Replacement ,[object Object],SQL Performance Metrics ,[object Object],Oracle Support ,[object Object],Java to SQL Integration ,[object Object],Problem Determination ,[object Object]
Track back to SQL and line of code in the applicationStatic SQL ,[object Object],SQL Injection Prevention ,[object Object],[object Object]
Code Example: pureQuery 10 Employee myEmp= db.queryFirst(     "SELECT NAME, ADDRESS, PHONE_NUM FROM EMP      WHERE NAME=?", Employee.class, name); Even simpler, if we have a method getEmployee with a Java annotation or XML file with SQL for the query: Employee myEmp= getEmployee(name);
Why Should be the Data Specialists be interested in pureQuery? 11
Motivations of the Data Specialists ,[object Object]
Ease of Tuning
Autonomy of Developers
Predictability of an Optimized Data Access Path
Reduction of Costs to satisfy SQL statements
Optimized Access Paths
Reduction of CPU intensive components of SQL Execution
Utilization of Specialty Processors
Capacity Planning
Hardware Utilization
Problem Determination capabilities12
pureQuery Capabilities ,[object Object]
pureQuery can utilize SELECT INTO from a Java application

More Related Content

What's hot

JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...
JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...
JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...Danival Calegari
 
Ajp notes-chapter-05
Ajp notes-chapter-05Ajp notes-chapter-05
Ajp notes-chapter-05Ankit Dubey
 
J2EE and layered architecture
J2EE and layered architectureJ2EE and layered architecture
J2EE and layered architectureSuman Behara
 
Brian Oliver Pimp My Data Grid
Brian Oliver  Pimp My Data GridBrian Oliver  Pimp My Data Grid
Brian Oliver Pimp My Data Griddeimos
 
All of the Performance Tuning Features in Oracle SQL Developer
All of the Performance Tuning Features in Oracle SQL DeveloperAll of the Performance Tuning Features in Oracle SQL Developer
All of the Performance Tuning Features in Oracle SQL DeveloperJeff Smith
 
Building Enterprise Application with J2EE
Building Enterprise Application with J2EEBuilding Enterprise Application with J2EE
Building Enterprise Application with J2EECalance
 
JSR 236 Concurrency Utils for EE presentation for JavaOne 2013 (CON7948)
JSR 236 Concurrency Utils for EE presentation for JavaOne 2013 (CON7948)JSR 236 Concurrency Utils for EE presentation for JavaOne 2013 (CON7948)
JSR 236 Concurrency Utils for EE presentation for JavaOne 2013 (CON7948)Fred Rowe
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityPaul Withers
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts weili_at_slideshare
 
Dave Carroll Application Services Salesforce
Dave Carroll Application Services SalesforceDave Carroll Application Services Salesforce
Dave Carroll Application Services Salesforcedeimos
 
Moving to Java EE 6 and CDI and away from the clutter
Moving to Java EE 6 and CDI and away from the clutterMoving to Java EE 6 and CDI and away from the clutter
Moving to Java EE 6 and CDI and away from the clutterDan Allen
 
Three key concepts for java batch
Three key concepts for java batchThree key concepts for java batch
Three key concepts for java batchtimfanelli
 
Resume joseph gregory java
Resume   joseph gregory javaResume   joseph gregory java
Resume joseph gregory javaJoseph Gregory
 
Ari Zilka Cluster Architecture Patterns
Ari Zilka Cluster Architecture PatternsAri Zilka Cluster Architecture Patterns
Ari Zilka Cluster Architecture Patternsdeimos
 

What's hot (20)

Spring
SpringSpring
Spring
 
Kevinjohn Gallagher's Resume
Kevinjohn Gallagher's ResumeKevinjohn Gallagher's Resume
Kevinjohn Gallagher's Resume
 
JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...
JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...
JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...
 
Ajp notes-chapter-05
Ajp notes-chapter-05Ajp notes-chapter-05
Ajp notes-chapter-05
 
J2EE and layered architecture
J2EE and layered architectureJ2EE and layered architecture
J2EE and layered architecture
 
JavaOne 2010 Keynote
JavaOne 2010 Keynote JavaOne 2010 Keynote
JavaOne 2010 Keynote
 
Brian Oliver Pimp My Data Grid
Brian Oliver  Pimp My Data GridBrian Oliver  Pimp My Data Grid
Brian Oliver Pimp My Data Grid
 
Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g
Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11gRonald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g
Ronald van Luttikhuizen - Effective fault handling in SOA Suite and OSB 11g
 
All of the Performance Tuning Features in Oracle SQL Developer
All of the Performance Tuning Features in Oracle SQL DeveloperAll of the Performance Tuning Features in Oracle SQL Developer
All of the Performance Tuning Features in Oracle SQL Developer
 
JDBC
JDBC JDBC
JDBC
 
Rajesh jdbc
Rajesh   jdbcRajesh   jdbc
Rajesh jdbc
 
Building Enterprise Application with J2EE
Building Enterprise Application with J2EEBuilding Enterprise Application with J2EE
Building Enterprise Application with J2EE
 
JSR 236 Concurrency Utils for EE presentation for JavaOne 2013 (CON7948)
JSR 236 Concurrency Utils for EE presentation for JavaOne 2013 (CON7948)JSR 236 Concurrency Utils for EE presentation for JavaOne 2013 (CON7948)
JSR 236 Concurrency Utils for EE presentation for JavaOne 2013 (CON7948)
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts
 
Dave Carroll Application Services Salesforce
Dave Carroll Application Services SalesforceDave Carroll Application Services Salesforce
Dave Carroll Application Services Salesforce
 
Moving to Java EE 6 and CDI and away from the clutter
Moving to Java EE 6 and CDI and away from the clutterMoving to Java EE 6 and CDI and away from the clutter
Moving to Java EE 6 and CDI and away from the clutter
 
Three key concepts for java batch
Three key concepts for java batchThree key concepts for java batch
Three key concepts for java batch
 
Resume joseph gregory java
Resume   joseph gregory javaResume   joseph gregory java
Resume joseph gregory java
 
Ari Zilka Cluster Architecture Patterns
Ari Zilka Cluster Architecture PatternsAri Zilka Cluster Architecture Patterns
Ari Zilka Cluster Architecture Patterns
 

Similar to Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery and DB2

High Performance Jdbc
High Performance JdbcHigh Performance Jdbc
High Performance JdbcSam Pattsin
 
Basic Java Database Connectivity(JDBC)
Basic Java Database Connectivity(JDBC)Basic Java Database Connectivity(JDBC)
Basic Java Database Connectivity(JDBC)suraj pandey
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3Oracle
 
Impact2014 session # 1523 performance optimization using ibm java on z and w...
Impact2014  session # 1523 performance optimization using ibm java on z and w...Impact2014  session # 1523 performance optimization using ibm java on z and w...
Impact2014 session # 1523 performance optimization using ibm java on z and w...Elena Nanos
 
Vision_Academy_Ajava_final(sachin_sir9823037693)_22.pdf
Vision_Academy_Ajava_final(sachin_sir9823037693)_22.pdfVision_Academy_Ajava_final(sachin_sir9823037693)_22.pdf
Vision_Academy_Ajava_final(sachin_sir9823037693)_22.pdfVisionAcademyProfSac
 
Vision_Academy_Ajava_final(sachin_sir9823037693)_22 (1).pdf
Vision_Academy_Ajava_final(sachin_sir9823037693)_22 (1).pdfVision_Academy_Ajava_final(sachin_sir9823037693)_22 (1).pdf
Vision_Academy_Ajava_final(sachin_sir9823037693)_22 (1).pdfbhagyashri686896
 
Ajp notes-chapter-05
Ajp notes-chapter-05Ajp notes-chapter-05
Ajp notes-chapter-05JONDHLEPOLY
 
ASP.NET MVC Performance
ASP.NET MVC PerformanceASP.NET MVC Performance
ASP.NET MVC Performancerudib
 
JDBC with MySQL.pdf
JDBC with MySQL.pdfJDBC with MySQL.pdf
JDBC with MySQL.pdfArumugam90
 
JDBC with MySQL.pdf
JDBC with MySQL.pdfJDBC with MySQL.pdf
JDBC with MySQL.pdfArumugam90
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySqlDhyey Dattani
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySqlDhyey Dattani
 

Similar to Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery and DB2 (20)

High Performance Jdbc
High Performance JdbcHigh Performance Jdbc
High Performance Jdbc
 
jdbc
jdbcjdbc
jdbc
 
Prashanthi
PrashanthiPrashanthi
Prashanthi
 
Basic Java Database Connectivity(JDBC)
Basic Java Database Connectivity(JDBC)Basic Java Database Connectivity(JDBC)
Basic Java Database Connectivity(JDBC)
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3
 
Chap3 3 12
Chap3 3 12Chap3 3 12
Chap3 3 12
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Db trends final
Db trends   finalDb trends   final
Db trends final
 
Jdbc introduction
Jdbc introductionJdbc introduction
Jdbc introduction
 
Impact2014 session # 1523 performance optimization using ibm java on z and w...
Impact2014  session # 1523 performance optimization using ibm java on z and w...Impact2014  session # 1523 performance optimization using ibm java on z and w...
Impact2014 session # 1523 performance optimization using ibm java on z and w...
 
Vision_Academy_Ajava_final(sachin_sir9823037693)_22.pdf
Vision_Academy_Ajava_final(sachin_sir9823037693)_22.pdfVision_Academy_Ajava_final(sachin_sir9823037693)_22.pdf
Vision_Academy_Ajava_final(sachin_sir9823037693)_22.pdf
 
Vision_Academy_Ajava_final(sachin_sir9823037693)_22 (1).pdf
Vision_Academy_Ajava_final(sachin_sir9823037693)_22 (1).pdfVision_Academy_Ajava_final(sachin_sir9823037693)_22 (1).pdf
Vision_Academy_Ajava_final(sachin_sir9823037693)_22 (1).pdf
 
Ajp notes-chapter-05
Ajp notes-chapter-05Ajp notes-chapter-05
Ajp notes-chapter-05
 
KaranDeepSinghCV
KaranDeepSinghCVKaranDeepSinghCV
KaranDeepSinghCV
 
ASP.NET MVC Performance
ASP.NET MVC PerformanceASP.NET MVC Performance
ASP.NET MVC Performance
 
JDBC with MySQL.pdf
JDBC with MySQL.pdfJDBC with MySQL.pdf
JDBC with MySQL.pdf
 
JDBC with MySQL.pdf
JDBC with MySQL.pdfJDBC with MySQL.pdf
JDBC with MySQL.pdf
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySql
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySql
 

Recently uploaded

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Recently uploaded (20)

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery and DB2

  • 1. 0 Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery Dr. Vladimir Bacvanski, Vice President, InferData, vladimir@inferdata.com Daniel Galvin, Consultant, Galvin Consulting, dang@galvinconsulting.com Session Number 2171
  • 2. What is this revolution about? 1 NO SLOW APPS! NO BAD SQL! GET CONTROL BACK !
  • 3. Show of Hands: What Data Access Technology Have You Used? 2 Hibernate EJB Entity Beans JDBC JPA iBatis SQLJ What’s most important to you? Productivity Performance Security Portability
  • 4. Java Data Access – Two Views of the World Writing Java code is so easy with this eclipse environment.I wish it was that easy to get the SQL right. JSP QoS goals Spring Another runaway query! Where are these coming from? JDBC? Hmmm… Runstats XML http Partition strategy Stored Procedures mashup SQL Response Time! REORG JSON JDBC This ORM doesn’t allow me to leverage all my database’s SQL. Inconsistent response time? How long will it take me to find the offending application sending bad SQL this time? JDBC I can’t believe I got called out last week. I wish I could see how these queries will run in production. SQLJ JPA These ad-hoc queries are dangerous. We need a library of tested SQL interfaces. Application Developer Database Developer& Administrator Spring Why does this query take so long? iBatis, . . . Sometimes I need POJOs, sometime JSON, sometimes XML, what should I use? Static SQL? Sounds like another delay to getting my program deployed Another GRANT request? This security administration is out of control. Can I examine the SQL “before” the application is deployed?
  • 5. Meet in the Middle Data Mapping Approaches Application-Centric Top-Down Start with Object Domain Model ORM Mapping Well supported in dynamic languages and frameworks Hybrid Meet in the middle Can be challenging w/o comprising Data-Centric Bottom-UP Start with Relational Data Model Not well supported in dynamic languages and frameworks Top Down Persistence Layer Bottom Up 4
  • 6.
  • 7. Where is the SQL coming from?
  • 10. How do we tune it?
  • 11. How de we manage it?
  • 13. Some App Server vendors claim (unsurprisingly) that Managed objects performs fine.
  • 14. There are many user claims of bad Managed object performance is bad on the web.
  • 15. As always, the truth is in the middle.
  • 16. And will depend on your app server, application, database, etc ..“Our top story: Large Customer moves from COBOL to Java to become more agile. In other news, DBA develop amnesia.” 5 5
  • 17. Introducing pureQuery A high-performance, data access platform to simplify developing, managing, securing, and optimizing data access. pureQuery Components: Simple and intuitive API Enables SQL access to databases or in-memory Java objects Facilitates best practices Optim Development Studio (integrates with RAD/RSA) Integrated development environment with Java and SQL support Improve problem isolation and impact analysis Optim pureQuery Runtime Flexible static SQL deployment for DB2
  • 18. Add basic OR mapping and annotated-method style pureQuery pureQuery Balances Productivity and Control Managed objects Object-relational mapping Full SQL control Code all your SQL JDBC / SQLJ Use SQL templates, inline only Spring templates iBATIS Complex OR mapping and persistence management, but loss of controls Hibernate Adds container management option OpenJPA (EJB3)
  • 19.
  • 20.
  • 21.
  • 22.
  • 23. Code Example: pureQuery 10 Employee myEmp= db.queryFirst( "SELECT NAME, ADDRESS, PHONE_NUM FROM EMP WHERE NAME=?", Employee.class, name); Even simpler, if we have a method getEmployee with a Java annotation or XML file with SQL for the query: Employee myEmp= getEmployee(name);
  • 24. Why Should be the Data Specialists be interested in pureQuery? 11
  • 25.
  • 28. Predictability of an Optimized Data Access Path
  • 29. Reduction of Costs to satisfy SQL statements
  • 31. Reduction of CPU intensive components of SQL Execution
  • 36.
  • 37. pureQuery can utilize SELECT INTO from a Java application
  • 38. With Client Optimization, Static SQL from existing JDBC with no changes to the Application
  • 39. Homogeneous and Heterogeneous Batching of Statements
  • 40. Statically bound packages are easy to EXPLAIN and monitor for changes in access path
  • 41. pureQuery coupled with IBM Optim Performance Monitoring provides E2E Performance Monitoring and Problem Determination
  • 42. Impact analysis is greatly improved by the static packages and the ability to tie each statement to a method in the application code13
  • 43. Static vs. Dynamic SQL Execution 14
  • 45. Cost of Prepare CPU cost of Short Prepare on DB2 9 for z/OS – between 400µs and 1ms CPU cost of Full Prepare on DB2 9 for z/OS – approximately 30 to 50ms. Cost could be much higher and generally increase with complexity.
  • 46. Trial Results Estimated CPU Savings (In DB2 CPU)
  • 47. How well does it work? – Java applications In-house testing shows significant performance improvements IRWW – an OLTP workload, Type 4 driver Cache hit ratio between 70 and 85% 23 % improvement in throughput using pureQuery over dynamic JDBC 15% - 25% reduction on CPU per transaction over dynamic JDBC 18
  • 48.
  • 49. Application accesses DB2 for z/OS*Any performance data contained in this document were determined in various controlled laboratory environments and are for reference purposes only. Customers should not adapt these performance numbers to their own environments as system performance standards. The results that may be obtained in other operating environments may vary significantly. Users of this document should verify the applicable data for their specific environment. 19
  • 51. Homogeneous & Heterogeneous Batch Homogeneous Batch – all instances in the batch are the same statement and require only 1 line turn Heterogeneous Batch – allows different SQL statements to be included in batch. Both Utilize Multi-Row Insert Heterogeneous Batches may contain 0 to many Homogeneous Batches
  • 52. Heterogeneous Batch Example publicint[][] insertAgentAndPolicies(AgentTO agentTO, PolicyTO[] policyTO) { Data data = DataFactory.getData(ds, pdqProps); try { AgentData agentData = DataFactory.getData(AgentData.class, data); PolicyData policyData = DataFactory.getData(PolicyData.class, data);data.startBatch(HeterogeneousBatchKind.heterogeneousModify__); agentData.insertAgent(agentTO); policyData.insertPolicies(policyTO); returndata.endBatch(); } finally { data.close(); } }
  • 53. Client Optimization Allows you to bind static SQL packages from existing JDBC code Avoids the cost of rewriting the application to code to the pureQuery API Allows Heterogeneous batch with minor changes to the code None of the productivity advantages are realized. Code is still maintained in JDBC. End-to-End monitoring lacks some introspective capability into the coding Creation of the static packages requires that you run the code. Some overhead at runtime related to resolution of statements to static packages
  • 54. 24 Optimize Existing JDBC Applications Improve performance for DB2 – without changing a line of code Capture Configure Bind Execute pureQuery client optimization enables static execution for JDBC applications (custom-developed, framework-based, or packaged) Existing JDBC Application Captured SQL- related metadata JDBC Driver w/ pureQuery Dynamic SQL execution Static SQL execution DB2 Data Servers "The ability to use static SQL with pureQuery is huge. Recently, I worked with a client who could reduce CPU usage by 7 percent thanks to this one feature." — David Beulke, Pragmatic Solutions Inc.
  • 55. Design Develop Optimize Govern Models Policies Metadata Deploy Operate IBM Optim pureQuery Reduce costs Increase system throughput Improve developer productivity Move workload to zIIP and zAAP Improve quality of service for new and existing Java applications Improve performance Lock in access plans Speed up problem resolution Reduce development time for new Java applications Bridge Java and data Balance productivity and control Enhance developer and DBA collaboration Enhance security Limit user access Minimize SQL injection risk Improve audit readiness Developer Develop Code Debug Test Tune, Package Tester
  • 56. Why should DBAs care ? DBAs have little to no visibility of application SQL before deployment, no opportunity for review and optimization Problem isolation takes days with contemporary environments such as Java, PHP, .NET, etc due to inability to trace SQL to Java application and source code Constantly increasing Java application workload taxes existing systems – need to fit more work into existing systems SQL injection represents an increasing risk to data security
  • 57. Why should Developers care ? Get data access right the first time ! Get it done faster - Improved productivity Single environment that spans Java application and database development Improved problem isolation and resolution
  • 58. 28 Control performance Decide at deployment time how the SQL is executed Understand and lock down the access plan for SQL Replace suboptimal SQL without changing the application Control security Prevent SQL injection Prevent execution of unauthorized SQL Better manage database security See inside applications that are driving your database Understand where SQL comes from Understand when frameworks and ORM’s are getting in the way Simplify problem determination and troubleshooting Correlate problem SQL with applications, ORM’s and frameworks Optim pureQuery Runtime
  • 59. 29 How do I start with pureQuery? Existing applications Optimize existing JDBC (and .NET!) applications No code changes needed Have to go through the client optimization process to get to static SQL New applications Use the pureQuery API Development codes using one API regardless of whether it is deployed dynamically or statically DBA deploys statically No need to go through client optimization process Other JPA, iBatis, Hibernate
  • 60. 30 pureQuery Facilitates Best Practices Supports both inline SQL and Java annotations (method) Intuitive interfaces for common data retrieval and manipulation scenarios hides JDBC complexity Query First Homogeneous Batch Reduce network trips to the database Query Over Java Collections Heterogeneous Batch Use custom result handlers to map results to POJO’s, XML, JSON, … Write high performance Java data access applications, Part 3: Data Studio pureQuery API best practices -- VitorRodrigues http://www.ibm.com/developerworks/db2/library/techarticle/dm-808rodrigues/?S_TACT=105AGX01&S_CMP=LP
  • 61. 31 A TypicalApplication Architecture with pureQuery Presentation Layer Implements the U/I or network protocols using the business services Business Service Layer Never use the pureQuery API directly. Gets data from the Data Access Layer Data Access Layer Using the pure-query API to access the database. Provides a technology neutral API to the data used by the business services pureQuery pureQuery makes this layer easy, fast, consistent and traceable Database Sometimes additional layers are required Workflow Data federation Workspace
  • 62. RAD or RSA / Optim Development Studio Data Centric Development Scenario Write in JavaUsing RAD+WAS FP for Web 2.0 Write in Java with pureQueryUsing Optim Dev. Studio in RAD Access generated Java data objects from code developed in RAD WAS Feature Pack for Web 2.0
  • 64. 34 Conclusion: pureQuery Revolutionary Advantages Excellent performance Static and dynamic SQL is captured during test and optimized before deployment Enables lock-in of access path Great productivity Excellent tool support through Optim Development Studio Shell share with Rational tools Mapping from SQL to Java captured and traceable Facilitates collaboration between DBA’s and developers Performance tuning, impact analysis Better security Limits SQL injection Controlled database access
  • 65. Where to go Next? Resources and more… Optim Development Studio http://www.ibm.com/software/data/optim/development-studio/ IBM pureQuery http://www.ibm.com/software/data/optim/purequery-platform/faq.html pureQuery Custom Training InferData, IBM Business Partner http://www.inferdata.com Course: Developing Database Applications with Optim Development Studio and pureQuery http://www.inferdata.com/training/data/optim_purequery_training.html 35
  • 66. Web, Blogs Integrated Data Management (Optim and Data Studio) http://www.ibm.com/developerworks/spaces/optim Vladimir’s Blog: On Building Software http://www.OnBuildingSoftware.com Twitter: http://twitter.com/OnSoftware 36
  • 67. 37 Thank You!Your Feedback is Important to Us Please complete the survey for this session by: Accessing the SmartSite on your smart phone or computer at: iodsmartsite.com Surveys / My Session Evaluations Visiting any onsite event kiosk Surveys / My Session Evaluations Each completed survey increases your chance to win an Apple iPod Touch with daily drawling sponsored by Alliance Tech 37

Editor's Notes

  1. What do the Data Specialists care about? Things like SQL tuning, CPU Costs, Capacity Planning and Hardware Resources. They want to easily identify the SQL statements in an application, obtain the information about the access path and make appropriate adjustments. So how can pureQuery help address these concerns? In several critical and impressive ways.
  2. For SQL that is static in nature, it is advantageous to bind the SQL statically for many reasons. First, the bound package is easy to EXPLAIN. Second, the selected path is relatively assured and consistent. Third, the prepare process is eliminated. Each statement that is executed dynamically must be prepared on each execution. Statement caching in the container and on the DBMS can help reduce these costs, but still, the costs can be significant. The higher the volume of executions, the more pronounced the costs.
  3. Here is an example of a method in a Data Access Object (DAO) that actually contains both a Heterogeneous and Homogeneous batch. Notice the data objects are instantiated and then the start batch is invoked. The methods in the pureQuery interfaces are invoked which actually contain the SQL and then the endBatch is executed. This causes the batch to be executed in one line turn.How does this help?