ops-6: beginners guide to openedge ® sql via odbc or jdbc brian werne sr. engineering manager...

46
OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

Upload: millicent-poole

Post on 13-Jan-2016

268 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

OPS-6: Beginners Guide to OpenEdge® SQL via ODBC or JDBC

Brian WerneSr. Engineering Manager

OpenEdge SQL and OpenEdge Management

Page 2: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation2 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Agenda:

OpenEdge SQL component overview and your initial connection

Setup and maintenance of the OpenEdge database for control and performance

Specifics of the OpenEdge with the SQL based tools and applications

Goal: Make you successful with SQL applications!

Page 3: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation3

OpenEdge is Open

SSL HTTP

HTTP/S HTML

.NETJava

HTML Open Clients

(Non-OpenEdge)OpenEdge

ABL ClientsODBCClients

ServiceInterfaces

OpenEdgeRDBMS

OpenEdgeDataServer

s

OpenEdgeABL Server

OpenEdgeSQL Server

JDBCClients

Oracle®

MSSQLODBC

ABL: Open Clients:Java™

.NET™

Web services

(ABL works with relational DBs)

OpenEdge SQL

Crystal ReportsWebSphere®

JBOSS / JRunJava / JDBC appsJ2EE™ / JTA.NET / ODBC appsADO.NET / VB

Data is fully interoperable: ABL & SQL

(works with OpenEdge RDBMS)

Page 4: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation4 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Getting Connected – Client side: ODBC and JDBC drivers

Page 5: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation5 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

CLASSPATH ( run ‘sql_env’)

Class loader

URL

JDBC driver

Type 4 JDBC driver (10.1a+)

com.ddtek.jdbc.openedge.OpenEdgeDriver

jdbc:datadirect:openedge://localhost:6748;databaseName=db1

$DLC/java: openedge.jar, util.jar, base.jar

Page 6: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation6 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

ODBC DSN – single connection

Page 7: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation7 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

ODBC DSN Advanced Tab

Page 8: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation8 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Isolation Level Affect on Lock Type

Isolation Level

Update Fetch

Table Lock

Record Lock

Table Lock

Record Lock

Read Uncommitted

--- --- NoLock NoLock

Read

Committed IX Exclusive IS Share

Repeatable Read

IX Exclusive IS Share

Serializable SIX Exclusive Share None

Page 9: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation9 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

ODBC : Multi-DataBase configuration

Page 10: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation10 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Connection – server side

Page 11: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation11 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Default server settings

SQL Servers

SQL & ABLBroker

SQL client

ABL client

Sh

ared M

emo

ry Database

ABL Servers

ABL client

SQL client

Page 12: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation12 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

“Recommended” server setup

SQL Servers

SQL client

ABL client ABL onlyBroker

SQL onlyBroker

SQL client

ABL client

Sh

ared M

emo

ry Database

ABL Servers

Page 13: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation13 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Recommended parameters example

Example: Start a ABL Primary broker

Example: Start a Secondary SQL broker

Separating ABL and SQL brokers/servers … examples

proserve Sports2000 -S 6000 -H localhost -n 45 -Mn 8 -Mpb 4 -ServerType 4GL -Mi 1 -Ma 5 -minport 6100 -maxport 6300

proserve Sports2000 -S 5000 -H localhost -m3 –Mpb 3 -ServerType SQL –Mi 5 –Ma 5 -minport 5100 -maxport 5300

Page 14: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation14 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Security

Who am I?

Authentication Authorization

What am I allowed to do?

Page 15: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation15 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Security Considerations

Database authentication• SQL

– Always requires a user ID and password to establish a connection

• ABL– Does not specifically require a user ID and

password to establish a connection

ID and passwords

Page 16: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation16 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

SQL Authentication (Who am I?)

Case 1: Users have not been created

(no rows in _User table)

• Password validation is not enabled

• No check is performed at connection time

• No error message at connection time

ID and passwords scenarios

Page 17: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation17 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

SQL Authentication (Who am I?)

Case 2: Users exist in the OpenEdge RDBMS

(rows exist in _User table)

• Password Validation is enabled

• Check is performed at connection time

• Valid users defined by a DBA

• Error message if login is incorrect / invalid:– “Access Denied (8933)”

ID and passwords scenarios…cont’d

Page 18: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation18 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Comparing ABL & SQL Security Systems

ABL SQL

Security model GRANT GRANT

Default DBA n/a <db-owner>SYSPROGRESS

Default security administrator

“*” n/a

Default table access “*” <none>

Default field access “*” <none>

Page 19: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation19 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Encountering errors

Possible reason for this:• No authorization privileges

• Schema scope

Access denied (Authorization failed) (7512)

Page 20: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation20 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Authorization – What can I do?

SQL follows GRANT security model By default, a connected userid is not allowed

to do anything. Exceptions: - the DBA account (full operations)

- the TABLE owner

DBA controls operation privileges with GRANT / REVOKE syntax

Page 21: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation21 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Authorization – What can I do?

Database wide (system admin or general creation)

For specified Tables or Views

– Where ‘privilege’ is:

{ SELECT | INSERT | DELETE | INDEX | UPDATE [ ( column , column , ... ) ] | REFERENCES [ ( column , column , ... ) ] }

Privileges – Syntax: GRANT (2 types)

GRANT { DBA, RESOURCE }TO user_name [, user_name ] , …;

GRANT { privilege [, privilege ], … | ALL }ON table_nameTO { user_name [, user_name ] , … | PUBLIC }[ WITH GRANT OPTION ];

Page 22: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation22 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Encountering errors

Possible reasons for this:• Not authorized

• Schema scope

Table/View/Synonym not found (7519)

Page 23: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation23 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

What is a Schema?

PUB schema PUB

Customer table Inventory

bwerne

Mysports database

AuxCat Database

Page 24: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation24 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

What is a default Schema?• A user has by default a schema attached to their ID

SET SCHEMA { 'string_literal'}

OpenEdge ABL uses one schema – ‘PUB’

Another option: Synonyms:

Schemas

CREATE PUBLIC SYNONYM customer FOR pub.customer;

SET SCHEMA ‘pub’

Page 25: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation25 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Solutions:

or

Schema example

SELECT count(*) FROM pub.customer;

SET SCHEMA ‘pub’;SELECT count(*) FROM customer;

Table/View/Synonym not found (7519)

SELECT count(*) FROM customer;SELECT count(*) FROM customer;

Page 26: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation26 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Four level naming convention

Example

ABL has 3 level naming convention

4 Part Naming – Multi-Database Query

Fully Qualified Names

catalog.schema.table.column-name

SELECT Pub.Customer.CustNum,

SportsPrimary.Pub.Customer.Name,

SportsAux1.Pub.Order.OrderNum …

catalog.table.column-name

Page 27: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation27 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

OpenEdge Specifics

SQL is a standard,

but each vendor has it’s own dialect

Page 28: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation28 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

OpenEdge Specifics - Quoting

Hyphenated names:

Solution: quoting

Non-SQLStandard names

SELECT cust-num FROM PUB.Customer;

SELECT “cust-num” FROM PUB.Customer;

Column CUST cannot be found (13865)

Page 29: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation29 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Overstuffed fields - error

ABL allows more data than column definition

Column abc in table PUB.Ranking has value exceeding it’s max length.

SELECT abc from PUB.Ranking;

Page 30: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation30 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

OpenEdge Specifics - Overstuffed fields

Strategies for managing: Dbtool : percentage option ($DLC/bin/dbtool)

1. SQL Width & Date Scan w/Report Option

2. SQL Width Scan w/Fix Option

Choice: 2

<connect>: (0=single-user 1=self-service >1=#threads)? 3

Padding % above current max: 25

<table>: (Table number or all)? all

<area>: (Area number or all)? all

Page 31: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation31 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

OpenEdge Specifics - Overstuffed fields

Strategies for managing ABL client startup parameter -checkwidth

<progress-client>.exe –checkwidth n

where "n" can be one of the following:

0 — Ignore _width value. Default.

1 — Store the data and generate a warning.

2 — Do not store data and generate an error.

Page 32: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation32 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

OpenEdge Specifics – Arrays / Extents

Selecting array columns as a whole

Result: semi-colon separated varchar value

102332.67;330002.77;443434.55;333376.50

Selecting array column individually – SQL99

Result: numeric value

102332.67

SELECT quarterlySales from PUB.MySales;

SELECT quarterlySales[1] from PUB.MySales;

Page 33: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation33 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

OpenEdge Specifics – Arrays / Extents

Strategies: Using views to break out array elements

Result: numeric values

102332.67 330002.77 443434.55 333376.50

CREATE VIEW PUB.QuarterSales AS SELECT quarterlySales[1], quarterlySales[2],quarterlySales[3], quarterlySales[4] FROM PUB.MySales;

SELECT * FROM PUB.QuarterSales;

Page 34: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation34 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Q: What’s it gonna cost to run my query?

Query Performance

TIME =

Page 35: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation35 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

What is the cost?

Database without statistics

Customers Orders

SalesHist

Distributors

Parts

Suppliers

OrderLines

Employees

ABC Corp DB

Page 36: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation36 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Basic Performance - What is the cost?

Database with Update Statistics

Customers

Orders

SalesHist

Distributors

Parts

Suppliers

OrderLines

Employees

ABC Corp DB

Page 37: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation37 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

All Statistics: Table Cardinality, indexes and all columns

Statistics - particular table

Query Performance: Update Statistics

UPDATE TABLE STATISTICS AND INDEX STATISTICS AND [ALL] COLUMN STATISTICS;

UPDATE STATISTICS syntax

UPDATE TABLE STATISTICS AND INDEX STATISTICS AND [ALL] COLUMN STATISTICS FOR pub.customer;

Page 38: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation38 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Query trees : Defined

relational algebraic tree representation(query tree / execution tree )

Result set

Database access

Data

Page 39: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation39 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Basic Performance – Query Plans

Query Plans Located in VST _SQL_QPLAN

SELECT SUBSTRING("_Description",1,80)

FROM pub."_Sql_Qplan“WHERE "_Pnumber" =

(SELECT MAX( "_Pnumber" )FROM pub."_Sql_Qplan" WHERE "_Ptype" > 0 );

Viewing query plan constructed by cost-based optimizer

Page 40: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation40 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Simple single table select• “select … from pub.customer where custnum between 1000 and 1100 [NoExecute]”

Query plan – what to look for

SELECT COMMAND. PROJECT [66] (| PROJECT [64] ( | | PUB.CUSTOMER. [0](| | | INDEX SCAN OF ( | | | | CustNum, | | | | | (PUB.CUSTOMER.CustNum) between (1000,1100))

table

index

index keys, predicates

Page 41: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation41 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

In Summary

Initial SQL connection

Setup and maintenance in OpenEdge database for security and performance

Specifics of OpenEdge with SQL applications

Page 42: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation42 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

For More Information, go to…

PSDN• Developing Performance-Oriented ODBC/JDBC OpenEdge

Applications • OpenEdge SQL: Authorization Explained• OpenEdge SQL in a 10.1B Multi-Database Environment • OpenEdge® Database Run-time Security Revealed

OpenEdge Technical Support - KBases• Basic Guide to Defining Progress SQL Database Permissions &

Security

Progress eLearning Community• Using OpenEdge SQL

Documentation• 10.1C OpenEdge Data Management: SQL Development   • 10.1C OpenEdge Data Management: SQL Reference

Page 43: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation43 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Relevant Exchange Sessions

OPS-27: Understanding Record and Table Locking In OpenEdge SQL

OPS-10: Moving V8/V9 RDBMS to OpenEdge 10 OPS-15: What was Happening with My Database,

AppServer, Operating System OPS-18: Data Management and Platforms Roadmap OPS-24: Success with OpenEdge Replication

Page 44: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation44 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Questions?

Page 45: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation45 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC

Thank You

Page 46: OPS-6: Beginners Guide to OpenEdge ® SQL via ODBC or JDBC Brian Werne Sr. Engineering Manager OpenEdge SQL and OpenEdge Management

© 2008 Progress Software Corporation46 OPS-6: Beginners Guide to OpenEdge SQL via ODBC or JDBC