Embedded Databases

    December 9, 2004

An Embedded database is a specific database genus that does not run as a separate process, instead, it is directly linked (“embedded”) into the application. Herein, the database is integrated into the application and the end-user has little or no knowledge that the database exists. Embedded databases are sometimes referred to as “fire and forget” or “implement and forget” databases, since they require no or minimal database administration.

So, restating again, the term embedded database’ refers to a database engine that is packaged with (or even within) an application. For example, if you are writing an address-book utility and want to provide your own database for handling records, rather than repeatedly establishing contact with a large remote database, you could package your utility with an embedded database.

The embedded database, once a backwater of the database market, is starting to become an important player in the industry as leading database vendors are competing to introduce embedded editions of their RDBMS’s. The embedded database fray includes enterprise players like Microsoft Corp., who started shipping their SQL Server 2000 with a small footprint of 1MB and Oracle Corp. with their Oracle Database 10g targeted at the embedded market.

Need for Embedded databases:

We live in an era of information explosion, where the world has become a global village, and information and technologies are at the fingertips of technologists the world over. This information society is characterized by the exponential growth of markets like e-commerce, packaged applications, distributed (particularly mobile) computing, Java-based applications and Web-based appliances, devices and set-top boxes.

The packaged applications market is seeing an increasing need for simple and easily manageable tools and applications with complex data management capabilities. Additionally, the increase in distributed, mobile computing has engendered the demand for increasingly functional portable devices that require local data storage for autonomous, disconnected operations. These mobile products have similar, if not more rigorous, requirements than packaged applications and are fueling the demand for embedded databases.

As new functionalities and features are being added to devices like cell phones, sensors, smartcards and PDA’s – simultaneously, an increasing number of applications are being developed, many of them dealing with significant amounts of data leading to the need of embedded database support on these devices. The queries go beyond simple Select-Project-Join queries but still have to be locally executed on the device.

As the use of Java continues to expand, particularly towards the low-end, it drives the need for local persistent storage for both Java programs and data. Applications in these areas require high-performance, small-footprint, tunable, self-managing, embedded databases.

Lastly, for Internet appliances, a recent IDC research report predicted that shipments of such devices will outstrip sales of PCs by 2005. These trends are driving the increasing need for embedded databases to support applications that enable e-commerce, workforce mobility, and Internet appliance computing.

Important features of embedded databases:

Small size – Size of an embedded database is very small (usually a few mega bytes), when compared to very large size of enterprise databases.

Affordable prize – most of the enterprise databases are highly priced and it is very difficult for a vendor making applications to obtain such databases. On the other hand, embedded databases are now available for minimum cost.

Performance – Even with a small size, embedded databases are designed to offer greater performance and can even scale up when needed.

Benefits of Embedded databases:

From the perspective of ISVs and VARs:

– Reduced installation and management time

– Reduced installation and management support

– Developers can focus on developing the application/solution rather than working with the databases.

– Affordable

From the perspective of end-user:

– DBA is not required

– Reduced software license costs

– Reduced maintenance cost

– Deliver a complete solution to the customer: Eliminate the need for the customer to evaluate, buy, and implement a separate database.

– Eliminate the time required for development and testing cycles to implement a new database.

– Reduce the total cost of ownership (TCO) for the customer.

Java Embedded Databases:

Java is already a major development language and its future looks even more promising.
With potentially millions of applications being developed with Java, the benefits of using a Java embedded database are numerous.

In an Embedded Java database, the application uses JDBC or PHP to access the application-specific data, but the RDBMS resides on the same JVM (Java Virtual Machine) as the application. It is transparent to the user and is self-administered.

Java embedded databases can utilize the unique features of Java, like:

– Multiple Platform Portability

– Small Size

– Java Stored Procedures

– Transparent to End User

– Zero Administration Efforts

The compelling reasons behind the growth of Java embedded database market are:

– Problems Related to Flat-Files and Proprietary RDBMS Databases

– Lower Total Cost of Ownership

– Shorter Development Cycles

– Easier Deployment

– Greater customer satisfaction

Choosing an Embedded Database for Java Application Development – an eight point checklist:

Choosing the right embedded database for your Java application is very important and sometimes difficult too. What drives the actual choice of a particular embedded database is the purpose of the application/solution/device, available processing speed and memory, the capabilities of the embedded database, migration requirements, and software design considerations such as language and SQL support.

The following factors make an important contribution to the cost-effectiveness of the embedded database, and they should each be made a key requirement by vendors in search of the right database technology for their Java applications.

The database should be written in Java – While developing Java applications, the various capabilities of Java can be exploited to the maximum only if the database is also written in Java. Having the ability to deploy embedded application on multiple platforms is critical for both ISVs and VARs to maximize their revenue potential.
With this capability, ISVs and VARs can better accommodate diverse customer platform requirements as well as a broader range of application types. All this is possible if the database is written in Java.

The database should be standards based – The database should be compliant with all leading standards like J2EE certification by Sun, SQL standards by ANSI, roles, views, stored procedures, triggers etc.

Lower price and Total Cost-of-Ownership (TCO) – While embedding a database into an application, software vendors must be able to reduce price and TCO, in order to gain competitive advantage in the market. So the embedded database should come at an affordable price.

The database should have full SQL features – The database should be compliant with all major SQL features.

Small footprint – Unbelievingly small size of a few mega bytes is the most important and distinguishing factor of embedded databases when compared to enterprise databases.
It allows developers to ensure minimal download time and enable easier migrations and upgrades.

The database should not require any administration – A self-tuning, completely integrated database does not need a DBA at any point in its usage, sparing developers concerns about constantly tuning the database. This feature shortens development cycles and brings products to market more quickly. At the same time, end-users should be able to deploy the database without concerning themselves over potential conflicts with existing databases within the environment.

The database should be transparent to the end user and easy to deploy– an embedded database user is interested in concentrating on his tasks, rather than starting the server, configuring the databases etc. Deployment to the customer should be a simple, one-step process in which the application and database are downloaded together in the same executable file. The user is able to immediately make use of the application (including having instant access to tutorials and demos stored in the embedded database) without requiring the services of a DBA or systems specialist to oversee and maintain the database.

The database should be robust – It is essential to take care that performance is not compromised for the small size of the database. The database should be robust in terms of availability, reliability and recoverability.

Major players in Java Database market

Daffodil DB

Derby/ Cloudscape




This article has been contributed by (Mr.) Parveen Aggarwal, Technical Consultant to DSL India (http://www.daffodildb.com). With more than 6 years of industry experience in Java and allied technologies, he has an in-depth understanding of J2EE, J2ME and database management systems. Parveen is currently working on the concept of data-archiving in embedded databases. He can be contacted at parveenaggarwal@hotmail.com