Local vs.
Client/Server
Databases
Ted Blue
Web Apps are Client/Server
Request
(HTTP)
Web Browser Web Server
(Client)
Web Apps are Client/Server
Template
(*.cfm)
Request Request
(HTTP) (.CFM) ColdFusion
Application
Server
Web Browser Web Server
(Client)
Web Apps are Client/Server
Template
(*.cfm)
Request Request
(HTTP) (.CFM) ColdFusion
Application
Server
Web Browser Web Server
(Client)
Data
Web Apps are Client/Server
Template
(*.cfm)
Request Request
(HTTP) (.CFM) ColdFusion
Application
Server
Response
Web Browser Web Server (HTML)
(Client)
Data
Web Apps are Client/Server
Template
(*.cfm)
Request Request
(HTTP) (.CFM) ColdFusion
Application
Server
Response
Response (HTML)
Web Browser (HTML) Web Server
(Client)
Data
Local Databases
dBASE, FoxPro, Paradox, Microsoft
Access
Local Databases
dBASE, FoxPro, Paradox, Microsoft
Access
No Database Management System
Local Databases
dBASE, FoxPro, Paradox, Microsoft
Access
No Database Management System
Minimal Setup and Configuration
Local Databases
dBASE, FoxPro, Paradox, Microsoft
Access
No Database Management System
Minimal Setup and Configuration
Low Cost
Performance of Local
Databases
Unable to perform under load
Performance of Local
Databases
Unable to perform under load
Unable to handle large datasets
Performance of Local
Databases
Performance
Database Size and/or Number of Users
Performance of Local
Databases
Load limits:
– About 10-20 users maximum
Performance of Local
Databases
Load limits:
– About 10-20 users maximum
Dataset size limits:
– About 100-500k records maximum and/or
– About 1-5MB total size
Performance of Local
Databases
Load limits:
– About 10-20 users maximum
Dataset size limits:
– About 100-500k records maximum and/or
– About 1-5MB total size
Cannot be improved with hardware
Data Integrity and Local
Databases
Easily corrupted
Data Integrity and Local
Databases
Easily corrupted
– Corruption amplified under load
– Memo fields sensitive to corruption
Data Integrity and Local
Databases
Easily corrupted
Pessimistic record locking
Data Integrity and Local
Databases
Easily corrupted
Pessimistic record locking
– Relies on active connection to data
– Not possible in client/server web applications
Data Integrity and Local
Databases
Easily corrupted
Pessimistic record locking
Unmanaged indexes
Data Integrity and Local
Databases
Easily corrupted
Pessimistic record locking
Unmanaged indexes
– Indexes corrupt during modifications
– …Corrupt indexes cause invalid data retrieval
– …Invalid data retrieval damages data integrity
Data Integrity and Local
Databases
Easily corrupted
Pessimistic record locking
Unmanaged indexes
Concurrency
Data Integrity and Local
Databases
Easily corrupted
Pessimistic record locking
Unmanaged indexes
Concurrency
– Multiple users can update same data
– Concurrency problems do not generate errors
Data Integrity and Local
Databases
Easily corrupted
Pessimistic record locking
Unmanaged indexes
Concurrency
Transaction control
Data Integrity and Local
Databases
Easily corrupted
Pessimistic record locking
Unmanaged indexes
Concurrency
Transaction control
– No simultaneous commit
– No rollback capability
Client/Server Databases
Oracle, Sybase, SQL Server, Informix, etc.
Client/Server Databases
Oracle, Sybase, SQL Server, Informix, etc.
Database Management Systems (DBMS)
Client/Server Databases
Oracle, Sybase, SQL Server, Informix, etc.
Database Management Systems (DBMS)
More elaborate Setup and Configuration
Client/Server Databases
Oracle, Sybase, SQL Server, Informix, etc.
Database Management Systems (DBMS)
More elaborate Setup and Configuration
Higher Cost
Performance in Client/Server
Databases
Excellent performance under load
Performance in Client/Server
Databases
Excellent performance under load
Designed to handle large datasets
Performance in Client/Server
Databases
Performance
Database Size and/or Number of Users
Performance in Client/Server
vs. Local Databases
Performance
Database Size and/or Number of Users
Performance in Client/Server
Databases
Load limits:
– Hundreds or Thousands of Users
Performance in Client/Server
Databases
Load limits:
– Hundreds or Thousands of Users
Database size limits:
– Millions of records
– Size limited only by available storage
Performance in Client/Server
Databases
Load limits:
– Hundreds or Thousands of Users
Database size limits:
– Millions of records
– Size limited only by available storage
Scaleable with hardware
Data Integrity in Client/Server
Databases
Corruption Management
Data Integrity in Client/Server
Databases
Corruption Management
– Detects and corrects corruption dynamically
– Prevents corruption automatically
Data Integrity in Client/Server
Databases
Corruption Management
Optimistic Record Locking
– Locks occur during updates
– Manages record lock conflicts
– Perfectly suited to web applications
Data Integrity in Client/Server
Databases
Corruption Management
Optimistic Record Locking
Managed Indexes
– Indexes created as needed
– Automatic corruption detection and correction
– Accurate data retrieval
Data Integrity in Client/Server
Databases
Corruption Management
Optimistic Record Locking
Managed Indexes
Concurrency Control
Data Integrity in Client/Server
Databases
Corruption Management
Optimistic Record Locking
Managed Indexes
Concurrency Control
– Queues updates from multiple users
– Concurrency problems generate errors
– Invalid data not allowed into database
Data Integrity in Client/Server
Databases
Corruption Management
Optimistic Record Locking
Managed Indexes
Concurrency Control
Transaction Control
Data Integrity in Client/Server
Databases
Corruption Management
Optimistic Record Locking
Managed Indexes
Concurrency Control
Transaction Control
– Transaction Log tracks all changes by all users
– Commits multiple changes simultaneously
– Rollback for incomplete or inaccurate updates
Additional Client/Server
Database Features
Disaster Recovery
Additional Client/Server
Database Features
Disaster Recovery
Security
Additional Client/Server
Database Features
Disaster Recovery
Security
Views
Additional Client/Server
Database Features
Disaster Recovery
Security
Views
Stored Procedures
Additional Client/Server
Database Features
Disaster Recovery
Security
Views
Stored Procedures
Triggers
Additional Client/Server
Database Features
Disaster Recovery
Security
Views
Stored Procedures
Triggers
Replication
Additional Client/Server
Database Features
Disaster Recovery
Security
Views
Stored Procedures
Triggers
Replication
Advanced SQL Processing
Cost and Implementation
Local Databases Client/Server Databases
Low Cost Higher Cost
Cost and Implementation
Local Databases Client/Server Databases
Low Cost Higher Cost
No Licensing Fees Licensed Per User
Cost and Implementation
Local Databases Client/Server Databases
Low Cost Higher Cost
No Licensing Fees Licensed Per User
Minimal Setup and Configuration can be
Configuration complex
Cost and Implementation
Local Databases Client/Server Databases
Low Cost Higher Cost
No Licensing Fees Licensed Per User
Minimal Setup and Configuration can be
Configuration complex
Minimal maintenance May require DBA
Making a Choice
Local Databases Client/Server Databases
Small databases Medium/Large Databases
Making a Choice
Local Databases Client/Server Databases
Small databases Medium/Large Databases
Minimal Traffic Moderate or High Traffic
Making a Choice
Local Databases Client/Server Databases
Small databases Medium/Large Databases
Minimal Traffic Moderate or High Traffic
Read-only Data Updateable Data
Making a Choice
Local Databases Client/Server Databases
Small databases Medium/Large Databases
Minimal Traffic Moderate or High Traffic
Read-only Data Updateable Data
No Transactions Transaction-based Sites
Choose Wisely…