# Eingebettetes Datenbanksystem

Ein eingebettetes Datenbanksystem ist ein in einer Anwendungssoftware eingebettetes Datenbanksystem, das nach außen nicht sichtbar in Erscheinung tritt.

## Eigenschaften

Einige Datenbanksystem-Hersteller vertreiben ihre Datenbank-Produkte nicht nur als eigenständige Produkte, sondern auch als eingebettete Datenbanksysteme, die in andere Anwendungen integriert sind.
Ein eingebettetes Datenbanksystem ist von außen als solches nicht zu erkennen und kann auch nicht von Fremd-Systemen zur Datenspeicherung genutzt werden. Die Vorteile von eingebetteten Datenbanksystemen ergeben sich daraus, dass der Hersteller eine für die spezielle Anwendung ausgerichtete Anpassung vornehmen kann, die über die Möglichkeiten der normalen Administration und Beschleunigung hinausgeht.
Ein weiterer Vorteil ist eine einfachere Installation und Lizenzierung eines Produktes, das ein eingebettetes Datenbanksystem verwendet. Der Produkt-Hersteller kann sein Produkt als Ganzes an seine Kunden ausliefern. Lizenzen für sein Produkt können ohne Beteiligung des Datenbank-Herstellers zwischen dem Produkt-Hersteller und seinem Kunden verhandelt werden. Der Produkt-Hersteller kann ohne Beteiligung seiner Kunden mit dem Datenbank-Hersteller eine Lizenzvereinbarung erzielen. Ein Nachteil ist zum Beispiel, dass man die so gespeicherten Daten schwieriger auf ein System eines anderen Herstellers übertragen kann.
Das Marktvolumen für eingebettete Datenbanken wurde im Jahr 2005 auf zwei Milliarden USD geschätzt mit einem Anstieg auf 3,2 Milliarden USD für das Jahr 2009.
Der Begriff des eingebetteten Datenbanksystems ist breit aufgestellt und umfasst:
* Datenbanksysteme mit unterschiedlichen Anwendungsprogrammier-Schnittstellen (API)
* Datenbankarchitekturen
* Speichermodi
* Datenbankmodelle

## Einsatz in Klein- und Kleinstgeräten

Viele Datenbanksysteme (DBS) unterliegen der Forderung, immer größere Datenmengen verwalten zu können und immer umfangreichere Funktionen bereitzustellen. Es gibt aber auch einen wachsenden Bedarf an kleinen DBS für eingebettete Systeme und für mobile Geräte mit einer schwachen Rechnerleistung.
Designziel solcher DBS ist die Bereitstellung einer bestimmten Leistung in einer ressourcenbeschränkten Umgebung.
Die geforderte Leistung besteht oft nicht in der vollen SQL3-Funktionalität, sondern beinhaltet
* nur die SQL1-Funktionen
* nur den Zugriff auf persistente Tabellen über ein API
* nur den Zugriff auf Indexstrukturen wie z. B. B-Baum oder Hashtabellen.
Wenn ein DBS für den Einsatz in einer ressourcenbeschränkten Umgebung konfiguriert wird, dann kann es sein, dass Komponenten weggelassen werden, die zu den wesentlichen Eigenschaften eines DBS gezählt werden.
Beispiele:
* die Mehrbenutzerfähigkeit ist nicht erforderlich
* das System hat nur die Aufgabe, auf Indexstrukturen zuzugreifen
* Datenspeicherung in einem RFID-Chip (Speichervolumen < 1 MB)
In diesen Fällen handelt es sich nicht mehr um ein „eingebettetes Datenbanksystem“, sondern um ein „eingebettetes Dateisystem“.
Ein Beispiel für ein eingebettetes Dateisystem ist Prevayler.

## Liste der eingebetteten Datenbanksysteme

Liste von Client-Server-Datenbanken, die sich für den Einsatz als eingebettetes Datenbanksystem eignen:
* DB2
* Informix
* MySQL
Liste von Datenbanken, die direkt in andere Applikationen eingebettet werden können:
* Axion – in Java implementierte Open-Source-DB
* Berkeley DB
* DBM
* db4o – Objektorientierte Datenbank (eingestellt)
* Apache Derby – Java-Datenbank, Teil des JDKs ab Java 6.0
* Firebird
* H2 – Java-Datenbank, neues Projekt vom HSQLDB Initiator
* HSQLDB
* JetstreamDB – Java-Object-Graph-Storage-Engine und In-Memory-Datenbank
* LMDB – in C implementierte Schlüssel-Werte-Datenbank basierend auf B+-Bäumen
* Microsoft SQL Server Compact
* MetaKit mit Schnittstellen zu C++, Python und Tcl
* McKoi
* ObjectBox – in C/C++ implementierte Datenbank, die Objekte verschiedener Programmiersprachen speichert
* One$DB – in Java implementierte Open-Source-Variante der DaffodilDB
* Quadcap Embeddable Database (QED) von der Firma Quadcap Software, in Java implementierte Open-Source-Datenbank
* Raima RDM Embedded – Eingebettetes Datenbanksystem mit Schnittstellen zu C, C++, Java
* SmallSQL – eine 100%-pure-Java-Database
* SQLite – in C implementierte SQL-Datenbank, die sehr weit verbreitet ist
* Transbase – ein relationales SQL-Datenbanksystem
* TurboDB – eine SQL-Implementierung in ausschließlich verwaltetem .NET Code