Upload
austin-hines
View
220
Download
0
Embed Size (px)
Citation preview
1
IT420: Database Management and Organization
Session ControlManaging Multi-user Databases
24 March 2006
Adina Crăiniceanuwww.cs.usna.edu/~adina
Kroenke, Database Processing 2
Goals
Session control
Managing multi-user databases
Kroenke, Database Processing 3
Session Control
HTTP – no built-in way to maintain state between two transactions
Want: Track a user during a single session on a website – remember state Show content personalized to user Implement shopping carts
Kroenke, Database Processing 4
PHP Session Control
Session ID – cryptographically random number Generated for each session Stored on client site
Cookie URL
Session variables Created by PHP script Stored on the server site If session id visible (cookie or URL), session variables
can be accessed by all scripts
Kroenke, Database Processing 5
Implementing Sessions in PHP
Start a session – session_start() Register session variables
$_SESSION[‘myvar’] = ‘some value’ Use session variables
session_start() if ( isset($_SESSION[‘myvar’] ) ) { //OK code}
Deregister variables unset($_SESSION[‘myvar’])
Destroy session session_destroy()
Kroenke, Database Processing 6
Session Demo
Kroenke, Database Processing 7
sesstart.php
<?php //Create session session_start(); //Create session variable - Save user name $_SESSION['login'] = $_POST[login]; //Display session variable echo 'Content of $_SESSION[\'login\'] is '.
$_SESSION['login']."<BR>"; echo '<br /><a href="ss1.php">page 1</a>'; ?>
Kroenke, Database Processing 8
ss1.php
<?php // Use session variable session_start(); echo 'Content of $_SESSION[\'login\'] is '.
$_SESSION['login']." <BR>"; echo '<br /><a href="ss2.php">page
2</a>'; ?>
Kroenke, Database Processing 9
ss2.php – Use, Unset
<?php // Use session variable session_start(); echo 'Content of $_SESSION[\'login\'] is '.
$_SESSION['login']." <BR>"; // Unset session variable- should not be visible
anymore unset($_SESSION['login']); echo 'We unset the session varible</br>'; echo '<br /><a href="ss3.php">page 3</a>'; ?>
Kroenke, Database Processing 10
ss3.php – Cannot Use Session Var
<?php //Try use session variable session_start(); if (empty($_SESSION['login'])) echo 'Empty <br>'; else echo 'Not Empty <br>'; echo 'Content of $_SESSION[\'login\'] is '.
$_SESSION['login']." <BR>"; //Destroy session session_destroy(); ?>
Kroenke, Database Processing 11
Class Exercise
Write PHP to implement db authentication Login page: get user info First page: check user Next pages: display only if user logged in Logout page
Kroenke, Database Processing 12
Overview
Session control Managing multi-user databases
Kroenke, Database Processing 13
Database Administration
All large and small databases need database administration
NCLCA database (small DB) Both “user” and “administrator” Easy to change and manage
What about large, multi-user DB? Much more difficult to manage May require a staff to manage (if large enough)
Kroenke, Database Processing 14
DBA Tasks
Managing database structure Controlling concurrent processing Managing processing rights and responsibilities Developing database security Providing for database recovery Managing the DBMS Maintaining the data repository
Kroenke, Database Processing 15
Managing Database Structure
Participate in database and application development Assist in requirements stage and data model creation Play an active role in database design and creation
Facilitate changes to database structure Seek community-wide solutions Assess impact on all users Provide configuration control forum Be prepared for problems after changes are made Maintain documentation
Kroenke, Database Processing 16
Concurrency Control
Concurrency control: ensure that one user’s work does not inappropriately influence another user’s work No single concurrency control technique is
ideal for all circumstances Trade-offs need to be made between level of
protection and throughput
Kroenke, Database Processing 17
Atomic Transactions
A transaction, or logical unit of work (LUW), is a series of actions taken against the database that occurs as an atomic unit Either all actions in a transaction occur or none of
them do
Kroenke, Database Processing 18
Errors Introduced WithoutAtomic Transaction
Kroenke, Database Processing 19
Errors Prevented WithAtomic Transaction
Make changes permanent
Undo changes
Kroenke, Database Processing 20
Concurrent Transaction
Concurrent transactions: transactions that appear to users as they are being processed at the same time
In reality, CPU can execute only one instruction at a time Transactions are interleaved
Concurrency problems Lost updates Inconsistent reads
Kroenke, Database Processing 21
Concurrent Transaction Processing
Kroenke, Database Processing 22
Lost-Update Problem
Kroenke, Database Processing 23
Inconsistent-Read Problem
Dirty reads – read uncommitted data
Unrepeatable reads
Kroenke, Database Processing 24
Resource Locking
Resource locking prevents multiple applications from obtaining copies of the same record when the record is about to be changed
Kroenke, Database Processing 25
Lock Terminology
Implicit locks are locks placed by the DBMS Explicit locks are issued by the application program Lock granularity refers to size of a locked resource
Rows, page, table, and database level
Large granularity is easy to manage but frequently causes conflicts
Types of lock An exclusive lock prohibits other users from reading the locked
resource A shared lock allows other users to read the locked resource,
but they cannot update it
Kroenke, Database Processing 26
Concurrent Processingwith Explicit Locks
Kroenke, Database Processing 27
Serializable Transactions
Serializable transactions refer to two transactions that run concurrently and generate results that are consistent with the results that would have occurred if they had run separately
Two-phased locking is one of the techniques used to achieve serializability
Kroenke, Database Processing 28
Two-phased Locking
Two-phase locking Transactions are allowed to obtain locks as necessary
(growing phase) Once the first lock is released (shrinking phase), no
other lock can be obtained Strict two-phase locking
All locks are released at the end of transaction (COMMIT or ROLLBACK)
More restrictive but easier to implement than two-phase locking
Kroenke, Database Processing 29
Deadlock
Deadlock: two transactions are each waiting on a resource that the other transaction holds
Preventing deadlock Allow users to issue all lock requests at one time Require all application programs to lock resources in the same
order Breaking deadlock
Almost every DBMS has algorithms for detecting deadlock When deadlock occurs, DBMS aborts one of the transactions
and rollbacks partially completed work
Kroenke, Database Processing 30
Deadlock
Kroenke, Database Processing 31
Optimistic versus PessimisticLocking Optimistic locking assumes that no transaction conflict
will occur: DBMS processes a transaction; checks whether conflict
occurred: If not, the transaction is finished If so, the transaction is repeated until there is no conflict
Pessimistic locking assumes that conflict will occur: Locks are issued before a transaction is processed, and then the
locks are released
Optimistic locking is preferred for the Internet and for many intranet applications
Kroenke, Database Processing 32
Optimistic Locking
Kroenke, Database Processing 33
Pessimistic Locking
Kroenke, Database Processing 34
Declaring Lock Characteristics
Most application programs do not explicitly declare locks due to its complication
Instead, they mark transaction boundaries and declare locking behavior they want the DBMS to use Transaction boundary markers: BEGIN, COMMIT, and
ROLLBACK TRANSACTION
Advantage If the locking behavior needs to be changed, only the lock
declaration need be changed, not the application program
Kroenke, Database Processing 35
Marking Transaction Boundaries
Kroenke, Database Processing 36
ACID Transactions
Acronym ACID transaction is one that is Atomic, Consistent, Isolated, and Durable
Atomic means either all or none of the database actions occur
Durable means database committed changes are permanent
Kroenke, Database Processing 37
ACID Transactions
Consistency means either statement level or transaction level consistency Statement level consistency: each statement
independently processes rows consistently Transaction level consistency: all rows impacted by
either of the SQL statements are protected from changes during the entire transaction With transaction level consistency, a transaction may not see
its own changes
Kroenke, Database Processing 38
ACID Transactions
Isolation means application programmers are able to declare the type of isolation level and to have the DBMS manage locks so as to achieve that level of isolation
SQL-92 defines four transaction isolation levels: Read uncommitted Read committed Repeatable read Serializable
Kroenke, Database Processing 39
Transaction Isolation Level