You are on page 1of 24

Database Management Systems For Mobile

Devices
Robert L. Foster Jr. November 18, 2008

Light Weight DBMS?


Definition Purpose Examples Tradeoffs

Formal Definition
There isnt one... Major DBMSs can run on most
operating systems providing full functionality: MySQl Oracle etc...

What about embedded systems? Why do we need one?

DBMSs for For mobile DBMS Mobile Devices


device should be dedicated to optimizing at least one of the following, preferably both:

power
optimization

memory
management

commonality: small

Power Optimization
Mobile devices such as laptops, cell
phones, PDAs, and radios have a limited power supply. few resources as possible while providing the necessary functionality?

How can we optimize our DBMS to use as What is the necessary functionality for a
mobile device?

Power Optimization Continued...


Query Add Delete Atomicity?

Memory Management
How much memory is available on the
device at any given time?

How much of the devices internal


memory should be dedicated to the DB?

How frequently can disk accesses be


made before latency issues arise?

There are

Examples

numerous light weight DBMSs dedicated to addressing these specific issues. which system is the best for a given device?

How do we choose

Whats good for the goose is not


necessarily whats good for the gander...

Examples

Mobile phones have increasingly larger


amounts of memory, and faster internet connections.

Multi-Touch technology and GPS


capabilities are a drain on batteries, and memory.

Metrics

What should we consider when choosing a light weight DBMS for a device?

Operating System Acidity

Contents (Blobs, Clobs, etc...)


Max Sizes:

Database Tables Row Size Columns Per Row Views (caching)

Metrics Continued... Capabilities? Union


Intersect Inner Joins Outer Joins Merge Language? Cost

Options
SQLite SmallSQL Pyrrho DBMS ScimoreDB HSQLDB Embedded MySQL

Hyperthreaded Structured Query


Language

HSQLDB

Written in Java Offers JDBC Driver 100-600k Cross Platform OpenOffice & Mathematica

ScimoreDB Embedded

Distributed Query Language (DQL)

Text based query language

Windows Only C++ ACID Independent process or part of your application Free 4MB (A relatively small footprint in comparison)

SmallSQL
Java JDBC Driver 200k No Installation Required Provides no network interface or user
management...so whats it good for?

ACID C Cross Platform 500K

SQLite

Uses a Single Database File FREE!

SQLite Continued...
Not a stand alone process A library? Linked Function Calls Dynamically Typed (Read Weakly) C, C++, Java, C#, and LISP bindings
available

SQLite3

SQLite3 - Stand alone application provides: create database define tables insert and change rows run queries manage database Single application (Resides on the host
machine)

More on SQLite

SQLite Code Samples



Because of weak typing and the use of a single database file several layers may be necessary. SQLiteDatabaseCalls #include "sqlite3.h" /*Minimal SQLite3 Interface this provides the only access to SQLite3 library functions*/ sqlite3* createDatabase(char *pFilename); int getDataFromDB(sqlite3* db, const char* sqlCommand, char** & data, int & rows, int & cols); int clearOldData(sqlite3* db, const char* sqlCommand); int insertResults(sqlite3* db, int currentTime, const char* sqlCommand); int clearEntries(sqlite3* db, const char* sqlCommand);

Code Samples Continued...

DatabaseManager
#include "SQLDatabaseCalls.h" //Basic Interface Provided to Client Code void* int bool bool bool char** cols); void DbHandleCreate(); DbHandleClose(void* pHandle); addDatatoTable(const char* sqlCommand); clearTable(const char* sqlCommand); clearTableEntry(const char* sqlCommand); queryEntry(const char* sqlCommand, int & rows, int & freeTable(char** table);

Code Samples Continued...

Client Code
# include "DbManager.h" //Uses The DatabaseManager and handles all type issues and structures bool addPolicy(SPolicy* policy, SMode* oldMode, char* content); bool deletePolicy(const char * modeID, const char * policyID); bool queryPolicy(int argc, char** argv, int & messagelen, char*& xmlBuf); bool deleteComplaint(int argc, char** argv); bool deleteConflict(int argc, char** argv); bool deleteMode(int argc, char** argv); bool findComplaint(int argc, char** argv, int & messagelen, char*& xmlBuf); bool findConflict(int argc, char** argv, int & messagelen, char*& xmlBuf); bool findDecision(int argc, char** argv, int & messagelen, char*& xmlBuf);

SQLite IRL

125 million copies in Mozilla Firefox. 20 million Mac OS X computers, each of which contains multiple copies of SQLite. (In Mac OS X v10.4 Apple introduced SQLite as a persistence layer of the Core Data API.) 300 million downloads of Skype. (The Skype service has 100 million registered users.) Nokia phones with Symbian OS version 9.4 or later. (The first one is Nokia 5800) Every iPhone and iPod touch. Google Android phones like the T-Mobile G1

Tradeoffs
Incomplete Functionality Support ACID compliance Boundary Limitations (Max Sizes) Access Control Coding/Implementation overhead

References


Comparison of relational database management systems. Wikipedia: The Free Encyclopedia. 15 November 2008 <http://en.wikipedia.org/wiki/Comparison_of_relational_database_ma nagement_systems>
SQLite. Wikipedia: The Free Encyclopedia. 15 November 2008 <http://en.wikipedia.org/wiki/SQLite> HSQLDB. 15 November 2008 <http://hsqldb.org/> SmalSQL Database - the Java Desktop Database with JDBC interface. 15 November 2008 <http://www.smallsql.de/> Scimore - High performance distributed, client/server and fully feature embeded SQL database. 15 November 2008 <http://www.scimore.com/> SQLite Documentation. 15 November 2008 <http://www.sqlite.org/docs.html>