Embedded database

From Wikipedia, the free encyclopedia - View original article

 
Jump to: navigation, search

An embedded database system is a database management system (DBMS) which is tightly integrated with an application software that requires access to stored data, such that the database system is "hidden" from the application’s end-user and requires little or no ongoing maintenance. It is actually a broad technology category that includes

The term embedded database can be confusing because only a small subset of embedded database products is used in real-time embedded systems such as telecommunications switches and consumer electronics devices.[1] (See mobile database for small-footprint databases that could be used on embedded devices.)

Implementations[edit]

Major embedded database products include, in alphabetical order:

Comparisons of database storage engines[edit]

Accuracer Database System[edit]

Accuracer Database System from AidAim Software is a compact, embedded, single-file, multi-user (file-server and client-server) x86 and x64 Microsoft Windows and Linux cross-platform DBMS with SQL database engine released as independent packages for different IDEs and ODBC API as a DLL for Windows. Accuracer Database System supports Embarcadero Delphi, C++Builder, and Borland Kylix IDEs from the old versions to the newest ones. Accuracer Database System has Bold for Delphi support, a number of modules for visual query building, Manager, SQLConsole, as well as other utilities with full source code, and Accuracer Database Server, a server application for Microsoft Windows. Accuracer Database System provides wide set of data compression and encryption modes for network traffic in client-server mode as well as for a database file. Database file in Accuracer format can be compiled into EXE and accessed in read-only mode. All Accuracer Database System products, commercial and free, are released under royalty-free licenses.

Advantage Database Server[edit]

Sybase's Advantage Database Server (ADS) is a full-featured embedded database management system. It provides both ISAM and relational data access and is compatible with multiple platforms including Windows, Linux, and Netware. It is available as a royalty-free local file-server database or a full client-server version. ADS has been around for many years and is highly scalable, with no administration, and has support for a variety of IDEs including .NET Framework (.NET), Object Pascal (Delphi), Visual FoxPro (FoxPro), PHP, Visual Basic (VB), Visual Objects (VO), Vulcan, Clipper, Perl, Java, xHarbour, etc.

Apache Derby[edit]

Main article: Apache Derby

Derby is an embeddable SQL engine written entirely in Java. Fully transactional, multi-user with a decent SQL subset, Derby is a mature engine and freely available under the Apache license and is actively maintained. Derby project page. It is also distributed as part of Oracle's Java SE Development Kit (JDK) under the name of Java DB.

csharp-sqlite[edit]

C#-SQLite is a port of the SQLite embedded SQL database engine, version 3.7.7.1, from the original native C into fully managed C#. The port is complete aside from some minor optional features of SQLite. csharp-sqlite project page.

CSQL[edit]

CSQL is an open source transactional, persistent in-memory SQL database engine.csql project page

EffiProz[edit]

EffiProz is a transactional, persistent in-memory SQL database engine written entirely in C#. SQL features include SQL Stored Procedures, Functions, Triggers,etc. Support .NET Framework 3.5, Silverlight 3 and .NET Compact Framework.EffiProz project page

ElevateDB[edit]

ElevateDB is a royalty-free, SQL:2003-compliant, compact, embedded database engine available for Delphi (Win32), C++Builder (Win32), Lazarus (Win32/WinCE), Visual Studio (.NET and .NET CF), and any ODBC-compliant application. Under Delphi, Lazarus, and C++Builder, ElevateDB can be compiled directly into the application, whereas under .NET it is one assembly and the ODBC driver is implemented as one .DLL. ElevateDB operates in single-user, multi-user file-sharing, and client-server modes, and includes the ElevateDB Server for client-server operation.

HailDB, formerly Embedded InnoDB[edit]

Main article: InnoDB

HailDB is a standalone, embeddable form of the InnoDB Storage Engine. Given that HailDB is based on the same code base as the InnoDB Storage Engine, it contains many of the same features: high-performance and scalability, multiversion concurrency control (MVCC), row-level locking, deadlock detection, fault tolerance, automatic crash recovery, etc. However, because the embedded engine is completely independent from MySQL, it lacks server components such as networking, object-level permissions, etc. By eliminating the MySQL server overhead, InnoDB has a small footprint and is well-suited for embedding in applications which require high-performance and concurrency. As with most embedded database systems, HailDB is designed to be accessed primarily with an ISAM-like C API rather than SQL (though an extremely rudimentary SQL variant is supported) [2]

Empress Embedded Database[edit]

Empress Software, Inc., developer of the Empress Embedded Database, is a privately held company founded in 1979. Empress Embedded Database is a full-function, relational database that has been embedded into applications by organizations small to large, with deployment environments including medical systems, network routers, nuclear power plant monitors, satellite management systems, and other embedded system applications that require reliability and power.[3] Empress is an ACID compliant, SQL database engine with C, C++, Java, JDBC, ODBC, SQL, ADO.NET and kernel level APIs. Applications developed using these APIs may be run in standalone and/or server modes. Empress Embedded Database runs on Linux, Unix, Microsoft Windows and real-time operating systems.

Extensible Storage Engine[edit]

ESE is an Indexed Sequential Access Method (ISAM) data storage technology from Microsoft. ESE is notably a core of Microsoft Exchange Server and Active Directory. Its purpose is to allow applications to store and retrieve data via indexed and sequential access. Windows Mail and Desktop Search in the Windows Vista operating system also make use of ESE to store indexes and property information respectively.

eXtremeDB[edit]

Main article: eXtremeDB

McObject launched eXtremeDB as the first in-memory embedded database designed from scratch for real-time embedded systems. The initial product was soon joined by eXtremeDB High Availability (HA) for fault tolerant applications. The product family now includes 64-bit and transaction logging editions, and the hybrid eXtremeDB Fusion, which combines in-memory and on-disk data storage. In 2008, McObject introduced eXtremeDB Kernel Mode, the first embedded DBMS designed to run in an operating system kernel.[4] Today, eXtremeDB is used in millions of real-time and embedded systems worldwide. McObject also offers Perst, an open source, object-oriented embedded database for Java, Java ME, .NET, .NET Compact Framework and Silverlight.

Firebird Embedded[edit]

Firebird Embedded is a relational database engine. It's an open source fork of InterBase, is ACID compliant, supports triggers and stored procedures, and is available on Linux and Win32/Win64 systems. It has the same features as the classic and superserver version of Firebird, two or more threads (and applications) can access the same database at the same time starting with Firebird 2.5. So Firebird embedded acts as a local server for one threaded client accessing its databases (that means it works properly for ASP.NET web applications, because there, each user has its own thread, which means two users could access the same database at the same time, but they would not be in the same thread, because ASP.NET opens a new thread for each user). It exports the standard Firebird API entrypoints. The main advantage of Firebird embedded databases is, that unlike SQlite or Access databases, they can be plugged into a full Firebird server without any modifications at all also is multiplatform (runs on Linux, OS X with full ASP.NET Mono support)

H2[edit]

Main article: H2_(DBMS)

Written in Java Open source very fast database engine. Embedded and Server mode, Clustering support, can run inside the Google App Engine. Supports encrypted database files (AES or XTEA). The development of H2 was started in May 2004, but it was first published on December 14th 2005. H2 is dual licensed and available under a modified version of the MPL 1.1 (Mozilla Public License) or under the (unmodified) EPL 1.0 (Eclipse Public License).

hamsterdb[edit]

hamsterdb is a non-relational library for persistent and ephemeral (cached) record storage. Native support exists for transactions, compressing, and encrypting data. hamsterdb provides a native API for C and C++. API wrappers exist for Java, Python, .NET languages, and Erlang. hamsterdb is available under the Apache Public License 2.0. It is also possible to use hamsterdb as a network-accessed (non-embedded) database.

HSQLDB[edit]

Main article: HSQLDB

HSQLDB is an opensource relational database management system with a BSD-like license that runs in the same Java Virtual Machine as the embedded application. HSQLDB supports a variety of in-memory and disk-based table modes, Unicode and SQL:2008.

HSS Database[edit]

Main article: HSS Database

The HSS Database by HighSpeed-Solutions, is a client/embedded, zero-configuration, auto schema evolution, acid/transactional, LINQ Database engine with a common API for all platforms - MonoTouch, Mono for Android, .NET 4/4.5, Windows 8, Windows Phone 7.5/8 and Silverlight 5.

InfinityDB[edit]

Main article: InfinityDB

InfinityDB is an all Java B+Tree Database Engine that is embeddable in the smallest to the largest applications that run on hand held devices, workstations, servers, or in distributed systems. InfinityDB provides a data integrity guarantee through all non-media failures, provides a simple API with only a few basic methods, and requires no administrative support. Version 2 offers full ACID transactionality without a log and with fine-grained locks. Programmers can superimpose their own data model, or employ the entity–attribute–value model, by direct low-level access. The basic engine provides multi-valued or set attributes, all primitive Java types, unlimited large objects, heterogenous values, composite keys (Entities) and values, and unlimited sparse attributes, all extensible in-place with no schema changes.

Informix Dynamic Server[edit]

Informix Dynamic Server (IDS) is characterized as an enterprise class embeddable database server, combining embeddable features such as low footprint, programmable and autonomic capabilities with enterprise class database features such as high availability and flexible replication features.[5] IDS is used in deeply embedded scenarios such as IP telephony call-processing systems, point of sale applications and financial transaction processing systems.

InterBase[edit]

Main article: InterBase

InterBase is a cross-platform, Unicode enabled SQL database platform able to be embedded within turn-key applications. Out of the box SMP support and on disk AES strength 256bit encryption, SQL 92 & ACID compliance and support for Windows, Macintosh, Linux, Solaris, iOS and Android platforms. Ideal for small-to-medium enterprises and mobile application development.

ITTIA DB[edit]

ITTIA DB is a cross-platform embedded database for embedded system and intelligent mobile device software developers. ITTIA DB is a true relational database management system, supporting runtime SQL queries, isolation levels, write ahead logging, and B+ tree indexes. To support the wide variety of operating systems and hardware used in embedded development, ITTIA DB databases use a portable format that can be accessed with or without SQL through C and C++ application programming interfaces (API). Disk, memory, and hybrid databases are supported.

Kyoto Cabinet[edit]

Kyoto Cabinet is a straightforward implementation of a dbm, it compares well to Oracle Berkeley DB, but on large datasets fails more gracefully, it is released under the GPL (with commercial licensing available) by Mikio Hirabayashi in 2009.

LevelDB[edit]

Main article: LevelDB

LevelDB is an ordered key/value store created by Google as a lightweight implementation of the BigTable storage design. As a library (which is the only way to use LevelDB), its native API is C++. It also includes official C wrappers for most functionality. Third-party API wrappers exist for Python, PHP, Go (pure Go LevelDB implementation exists but is in progress still), Node.js and Objective C. Google distributes LevelDB under the New BSD License.

LightningDB[edit]

Main article: Lightning Memory-Mapped Database

LightningDB is a memory-mapped database for the OpenLDAP Project. It is written in C and the API is modeled after the Berkeley DB API, though much simplified. The library is extremely compact, compiling down to under 40KB of x86 object code, corruption proof, and orders of magnitude faster, more robust, more scalable, and more efficient than similar libraries like Berkeley DB, LevelDB, etc. The library implements B+trees with multiversion concurrency control (MVCC), Single_level_store, Copy_on_write and provides full ACID transactions with no deadlocks. The library is optimized for high read concurrency; readers need no locks at all. Readers don't block writers and writers don't block readers, so read performance scales perfectly linearly across arbitrarily many threads and CPUs. Third-party wrappers exist for C++, Erlang and Python. Lightning DB is distributed by the OpenLDAP Project under the OpenLDAP Public License. As of 2013 the OpenLDAP Project is deprecating the use of Berkeley DB, in favor of LightningDB.

MySQL Embedded Server Library[edit]

Main article: MySQL

The libmysqld, MySQL Embedded Server Library provides most of the features of regular MySQL as a linkable library that can be run in the context of a client process. After initialization clients can use the same C API calls as when talking to a separate MySQL server but with less communication overhead and with no need for a separate database process.

NexusDB[edit]

Main article: NexusDB

NexusDB is the commercial successor to the FlashFiler database which is now open source. They can both be embedded in Delphi applications to create stand-alone executables with full database functionality.

Oracle Berkeley DB[edit]

Main article: Berkeley DB

As the name implies, Oracle’s embedded database is actually Berkeley DB, which Oracle acquired from Sleepycat Software. It was originally developed at the University of California.[6] Berkeley DB is a fast, open-source embedded database and is used in several well-known open-source products, including the Linux and BSD Unix operating systems, Apache Web server, OpenLDAP directory, OpenOffice productivity suite.[7]

RDM Embedded[edit]

Main article: RDM Embedded

RDM Embedded, produced by Raima was one of the first database management systems to be categorized as an embedded database when it made its debut in 1984 under the name db_Vista. According to Raima's definition, the product is embedded in two senses: first, it is embedded within an application, becoming an extension to the application, second, it is possible to use it in embedded computer/OS or real-time environments because of its small footprint and efficient operation. Its APIs (for C/C++ and SQL) have been designed to support the limited resources of embedded environments. Since its initial release, RDM Embedded has been continually evolving and is currently released as version 10.1. Today Raima produces two products under the product names RDM Embedded and RDM Server.

ScimoreDB[edit]

Main article: ScimoreDB

Scimore is an embedded database running on Windows. It performs fast and can easily handle millions of rows. This database provides full data reliability (ACID properties), manages heavy loads and includes features such as support for T-SQL, Read/Merge replication with ScimoreDB server, full text search. Clients can access database via .NET provider or C++ library.

solidDB[edit]

Main article: solidDB

solidDB is a hybrid on-disk/in-memory, relational database and is often used as an embedded system database in telecommunications equipment, network software, and similar systems. In-memory database technology is used to achieve throughput of tens of thousands of transactions per second with response times measured in microseconds. High availability option maintains two copies of the data synchronized at all times. In case of system failure, applications can recover access to solidDB in less than a second without loss of data.

SQLite[edit]

Main article: SQLite

SQLite is a software library that implements a self-contained, server-less, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code, chiefly C, for SQLite is in the public domain. It includes both a native C library and a simple command line client for its database. It’s included in several operating systems; among them are Android, FreeBSD, iOS, and OS X.

SQL Server Compact[edit]

Main article: SQL Server Compact

Microsoft's SQL Server Compact is an embedded database with wide variety of features like multi-process connections, T-SQL, ADO.NET Sync Services to sync with any back end database, Merge Replication with SQL Server, Programming API: LINQ to SQL, LINQ to Entities, ADO.NET. The product runs on both Desktop and Mobile Windows platforms. It has been in the market for long time, used by many enterprises in production software (Case Studies). The product went through multiple re-brandings and was known with multiple names like: SQL CE, SQL Server CE, SQL Server Mobile, SQL Mobile.

TurboDB[edit]

Main article: TurboDB

TurboDB is the family name for various embedded in-process SQL database engines by dataweb. TurboDB for VCL is an implementation in Delphi and can be used as a compatible database replacement with additional features like transactions and full-text search. If it becomes necessary, a client for the embedded engine can easily be upgraded to the server version. TurboDB for ODBC is based on the Delphi implementation and can be accessed via the ODBC interface while still being an in-process database. TurboDB for .NET is implemented in C# and can be used with .NET Framework, .NET Compact Framework, Silverlight and Windows Phone.

Valentina DB[edit]

Main article: Valentina (database)

Paradigma Software Valentina DB is an embedded SQL database with wide variety of features, including broad support for native implementations on Windows, Linux and Mac OS X. It is available as a local engine for over 18 platforms. Developers can also use VDN to deploy a royalty free Embedded Server on Windows, Linux and Mac OS X, which also natively supports PHP and Ruby-on-Rails server side scripting.

VistaDB[edit]

Main article: VistaDB

VistaDB is an embedded SQL database written entirely in C# and supports a number of features to make it compatible with SQL Server like T-SQL datatypes and syntax. The product runs on .NET platforms, including Mono. It has been in the market since 2004, and is used by many companies (Customer List).

VistaDB was acquired by Gibraltar Software as of September 15, 2010.

See also[edit]

References[edit]

  1. ^ Graves, Steve. "COTS Databases For Embedded Systems", Embedded Computing Design magazine, January, 2007. Retrieved on August 13, 2008.
  2. ^ HailDB homepage
  3. ^ Mullins, Craig. "Empress Offers an Effective Embedded Database Solution", 2005. Retrieved on 2008-12-09
  4. ^ Gorine, Andrei and Krivolapov, Alexander. "Kernel Mode Databases: A DBMS Technology For High-Performance Applications", Dr. Dobb's Journal, April, 2008. Retrieved on August 13, 2008.
  5. ^ "Embedding Informix Dynamic Server", Retrieved on August 30, 2009.
  6. ^ See Berkeley DB
  7. ^ Niccolai, James. "Update: Oracle Buys Sleepycat open-source database vendor", "InfoWorld", 2006-02-14. Retrieved on June 12, 2008.