Client-server database systems and ODBC l Client-server architecture and components l More on reliability and security l ODBC standard
Database processing functions
The client-server architecture l The network “cut” is between applications and the DBMS l Database processing is on the server
DBMS Driver l Receive processing requests from applications l Format requests and deliver to DBMS l Receive responses from DBMS l Format responses for application l Communication layer on client and server to exchange messages between DBMS and driver
Roles of client and server Client »Manage the user interface »Enforce business rules »Process application logic »Generate database requests (SQL) »Transmit database requests to server »Receive results from server »Format results Server »Accept database request from clients »Process database requests »Format results and transmit to client »Enforce business rules »Perform integrity checking »Maintain database overhead data »Provide concurrent access control »Provide recovery and security services
Advantages & disadvantages l Pro »Applications use client CPUs in parallel –More powerful applications »Network traffic is reduced l Con »Concurrency control »Multiple client OS’s
Multithreading
Client requests l Native library calls (API) »DBMS-specific l Embedded SQL »Static SQL –SQL structure fixed at compile time –Faster »Dynamic SQL –SQL structure determined at run time –More flexible
Business rules: client-enforcement
Business rules: server-enforcement
Enforcement of business rules l Client »Triggers »Duplication »What about using DML directly? l Server »All in one place »What if DBMS cannot enforce business rules?
Concurrency control l Pessimistic locking »Assume things will go wrong »Prevent problems all the time l Optimistic locking »Assume things will go well »If problem, do it over
Pessimistic locking: same page, different records
Optimistic locking: same page, different records What if same record?
Concurrency control, take 2 l Pessimistic versus optimistic locking, which is better? »Depends on application... »What is the common case? –If conflict is frequent, use pessimistic! –If conflict is rare, use optimistic!
ODBC l Open DataBase Connectivity l Industry-standard interface between client applications and server DBMS products l The idea is to write DBMS-independent applications, as long as they conform to the ODBC standard l To conform or not to conform?
ODBC architecture
ODBC components l On the server: »Data source(s) - database, DBMS, OS, network platform l On the client: »DBMS drivers - one per data source –Receive ODBC request –Process if not standard SQL –Submit to specific data source »Driver manager - one per client –Receive ODBC request from application –Load appropriate driver and forward request
ODBC drivers l Single-tier: process both ODBC calls and SQL statements l Multiple-tier: process ODBC calls and pass SQL statements to data source
ODBC conformance levels l 3 levels of driver API conformance »Core (connect, commit/rollback, error...) »Level 1 (partial results, catalog, driver gestalt...) »Level 2 (browse, scrollable cursors...) l 3 levels of SQL conformance »Minimum (simple select, create, drop, insert, update, delete, simple expressions...) »Core (indices, views, grant, revoke, sub- queries, aggregate functions...) »Extended (outer joins, cursors, scalar functions, procedures...)