Transcript ppt

Selecting and Implementing
An Embedded Database
System
Presented by Jeff Webb
March 2005
Article written by Michael Olson
IEEE Software, 2000
Overview
Strategy – Focus on application
requirements
 Embedded DB products vary
 Key
 Some
do less than what you need
 Some will do more
 Choose
the tool that most closely
matches your needs
Overview
 After
choosing OS, HW platform and DB
you must design for reliability
 Design for performance up front
 Evaluate performance once the
application is built
Evaluate Database Services
Available

High end RDM systems provide:




Concurrency
Transaction processing
Disaster recovery
Although these features may be needed,
enterprise systems are seldom a good choice
due to:


platform differences
packaging differences
Evaluate Database Services
Available
 Several
embedded DB systems use the
same techniques as enterprise systems
but in smaller packages.
 Often, full blown disaster recovery is not
needed
 Many embedded databases are
configurable allowing inclusion or
exclusion of services
Consider Services Required
 Now…
consider which services you
need. For example:
 Locking?
 Will
run faster without locking
 Recovery
 Lack
from failures matter?
of, or disabling will increase
performance
Operating Systems For
Embedded systems

Hundreds of OS for variety of processor
hardware
 DB developers have an enormous job porting
their software to the variety of platforms
 Few OS dominate the market




MS Win CE
Neutrino
VxWorks
Wind Rivers
Databases For Embedded
systems
 Classification
 Client
Server relational systems
 Client Server OO systems
 Embedded libraries
Classification
 Client
+
Server relational systems
Programmers already know SQL
 - Extra run-time cost of client server
communications
Classification
 Client
Server OO systems
 Appear
to be a good choice however
 Most are designed for Unix systems and
their deeply engrained assumptions about
memory management and interprocess
communications are difficult to port to
embedded OS.
Classification
 Embedded
 Created
libraries
specifically for embedded systems
 Provide simple language API that does not
require SQL
 + Faster execution, increased reliability
 - Require developers to master
nonstandard programming interfaces
Platform Support

Consider combination of:





OS
Processor
Storage system
Exotic processor boards
Rare combinations can be difficult to fit
 Often embedded OS vendors maintain lists of
partner companies whose products run on
their systems
Performance Considerations
 High
concurrency?
 Size of database
 Multiple control threads?
 Can not rely on standard benchmark
measuring systems
 Evaluation of actual performance is a
must
Designing the Application
 Design
for performance
 Consider:
 Speed
 Predictability
& Reliability
Designing the Application
Speed Predictability & Reliability
 Data
representation
 Access patterns
 Configuration
Designing for Speed
Data representation/Access patterns/Configuration
 Most
embedded DB tools operate on a
fixed set of data types
 Every fetch and store may require
translation
 A few systems, mostly library types
allow storage in program-native format
Designing for Speed
Data representation/
 Consider
Access patterns/Configuration
the queries that the
application will need to make
 Data should be laid out accordingly
 Can keys be used that will allow related
records to be physically stored
together?
 B+tree storage typically performs faster
than hash table algorithms
Designing for Speed
Data representation/Access patterns/
Configuration
 Must
understand the chosen systems
configuration options
 Memory
use for secondary cache
 Write data to disk or store in memory?
 Locking system granularity
 Entire locking system on/off
 Vendors often choose the wrong defaults
Designing the Application
 Design
for performance
 Consider:

Speed
 Predictability
& Reliability
Predictability & Reliability
 May
need to run with no humans
present
 Not easy
 Fanatically check return values and
error indicators
 Resource exhaustion
 More
common in embedded systems
 Track and release resources yourself
Predictability & Reliability
 Are
transactions required so that
changes won’t be lost after a crash?
 The
recovery system must be callable
from the application program on start
up?
Performance tuning
 Common
causes for poor performance
– 2 or more threads contending
for same data
 Disk-to-memory transfers
 Deadlocks
 Contention
Contention/Disk-to-memory transfers/ Deadlocks
 When
several threads are waiting for
the same resources
 Use
record level locking if possible
 Use smaller pages if possible to make
page level locks more like record level
locks
 Touch the Hot data last and hold it for short
periods of time
Disk-to-memory transfers/
Contention/
Deadlocks
latency – mechanical
 Flash RAM
 More memory for buffer cache
 Indexes
 Disk
Contention/Disk-to-memory transfers/
Deadlocks
T1 waits for a
lock on O2
T1
T2
Obj O2 locked
Obj O1 locked
T2 waits for a
lock on O1
Deadlocks

Turn off locking if it is not needed and if the
application permits
 Break large transactions into several smaller
transactions
 Write transactions so that they all acquire the
same resources in the same order
 Consider Optimistic Concurrency Control
Price

Helps make final decision
 Some are available at no cost
 Licensing methods vary





Per developer
Per application using it
Per deployment platform
Per user is less common in embedded systems
During development / deployment
Questions