Jump to content

Embedded database

From Wikipedia, the free encyclopedia

Anembedded databasesystem is adatabase management system(DBMS) which is tightly integrated with anapplication software;it is embedded in the application. It is a broad technology category that includes:[1]

The termembedded databasecan be confusing because only a tiny subset of embedded database products are used inreal-timeembedded systemssuch astelecommunications switchesandconsumer electronics.[2](Seemobile databasefor small-footprint databases that could be used on embedded devices.)

Implementations[edit]

Major embedded database products include, in alphabetical order:

Storage engine comparison[edit]

Advantage Database Server[edit]

Sybase's Advantage Database Server (ADS) is an embedded database management system. It provides both Indexed Sequential Access Method (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 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]

Derby is an embeddable SQL engine written entirely in Java. Fully transactional and multi-user, 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.

Empress Embedded Database[edit]

Empress Software, Inc., developer of theEmpress 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 anACIDcompliant,SQLdatabase engine with C,C++,Java,JDBC,ODBC,SQL,ADO.NETand kernel levelAPIs.Applications developed using these APIs may be run in standalone and/or server modes. Empress Embedded Database runs on Linux,Unix,Microsoft Windows andreal-time operating systems.

Extensible Storage Engine[edit]

ESE is an ISAM data storage technology from Microsoft, 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]

McObject LLC launchedeXtremeDBas 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) forfault tolerantapplications. The product family now includes 64-bit andtransaction loggingeditions, 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 systemkernel.[4]Today, eXtremeDB is used in millions of real-time and embedded systems worldwide. McObject also offersPerst,anopen source,object-oriented embedded database for Java,Java ME,.NET,.NET Compact FrameworkandSilverlight.

Firebird Embedded[edit]

Firebird Embedded is a relational database engine. As an open-source fork of InterBase, it isACIDcompliant, supports triggers and stored procedures, and is available on Linux, OSX and Windows 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. Therefore, 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 entry points. 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)
Firebird is not truly embedded since it cannot be statically linked

H2[edit]

Written in Java Open source database engine. Embedded and Server mode, Clustering support, can run inside theGoogle 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 14, 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).

HailDB, formerly Embedded InnoDB[edit]

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, including high-performance and scalability,multiversion concurrency control(MVCC), row-level locking, deadlock detection, fault tolerance and automatic crash recovery. 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 anISAM-like C API rather than SQL (though an extremely rudimentary SQL variant is supported).[5]

The project is no longer maintained as of 2015.[6]

HSQLDB[edit]

HSQLDB is an opensourcerelational database management systemwith aBSD-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:2016.

InfinityDB[edit]

InfinityDB Embedded Java DBMS is a sorted hierarchical key/value store. It now has an Encrypted edition and a Client/Server edition. The multi-core speed is patent-applied-for. InfinityDB is secure, transactional, compressing, and robust, in a single file for instant installation and zero administration. APIs include the simple fast 'ItemSpace', a ConcurrentNavigableMap view, and JSON. A RemoteItemSpace can transparently redirect the embedded APIs to other db instances. Client/Server includes a light-weight Servlet server, web admin and database browsing, and REST for python.

Informix Dynamic Server[edit]

Informix Dynamic Server (IDS) is characterized as anenterprise 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.[7]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]

InterBase is an IoT Award-winning 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 both small-to-medium and large enterprises supporting hundreds of users and mobile application development. InterBase Light is a free version that can be used on any mobile device and is ideal for mobile applications. Enterprises can switch to a paid version as requirements for change management and security increase. InterBase has high adoption in defense, airspace, oil and gas, and manufacturing industries.

LevelDB[edit]

LevelDB is an orderedkey/value storecreated byGoogleas a lightweight implementation of theBigtablestorage 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 forPython,PHP,Go(pure Go LevelDB implementationexists but is in progress still),Node.jsand Objective C. Google distributes LevelDB under theNew BSD License.

LMDB[edit]

Lightning Memory-Mapped Database(LMDB) is amemory-mappedkey-value databasefor theOpenLDAPProject. It is written in C and the API is modeled after theBerkeley DBAPI, though much simplified. The library is extremely compact, compiling down to under 40KB of x86 object code, being usually faster than similar libraries likeBerkeley DB,LevelDB,etc. The library implements B+trees withmultiversion concurrency control(MVCC),single-level store,Copy on writeand provides fullACIDtransactions 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 forC++,ErlangandPython.LMDB 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 LMDB.

Mimer SQL[edit]

An embedded zero maintenance version of the proprietary Mimer SQL relational database server is available. It has a small footprint due to its modular design, full support for the SQL standard, and with ports toWindows,Linux,Automotive Grade Linux,Android,QNX,INTEGRITY,among others.

MonetDB/e[edit]

MonetDB/eis the embedded version of the open source MonetDB SQL column store engine. Available for C, C++, Java (JDBC) and Python. MonetDB License, based onMPL2.0. The predecessor MonetDBLite (for R, Python and Java) is no longer maintained. It's replaced by MonetDB/e.

MySQL Embedded Server Library[edit]

TheEmbedded MySQL Server Libraryprovidesmost of the featuresof 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]

NexusDB is the commercial successor to theFlashFilerdatabase 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]

As the name implies, Oracle's embedded database is actuallyBerkeley DB,which Oracle acquired from Sleepycat Software. It was originally developed at the University of California.[8]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, OpenOffice productivity suite. Nonetheless, over recent years many well-known projects switched to usingLMDB,because it outperform Berkeley DB in key scenarios on the ground of "less is more"design, as well due to the license changing.[9]

RocksDB[edit]

RocksDB, created atFacebook,began as a fork ofLevelDB.[10]It focuses on performance, especially onSSDs.It adds many features, includingtransactions,[11]backups,[12]snapshots,[13]bloom filters,[14]column families,[15]expiry,[16]custom merge operators,[17]more tunable compaction,[18]statistics collection,[19]and geospatial indexing.[20]It is used as a storage engine inside of several other databases, includingArangoDB,[21]Ceph,[22]CockroachDB,[23]MongoRocks,[24]MyRocks,[25]Rocksandra,[26]TiKV.[27][28]andYugabyteDB.[29]

solidDB[edit]

solid DB 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 solid DB in less than a second without loss of data.

SQLite[edit]

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 areAndroid,FreeBSD,iOS,OS XandWindows 10.[30]It's also used byChromiumweb browser and derivatives.[31]

SQL Server Compact[edit]

SQL Server Compact is an embedded database by Microsoft 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.

See also[edit]

References[edit]

  1. ^"What is a Database Model".Lucidchart.Retrieved2022-11-06.
  2. ^Graves, Steve."COTS Databases For Embedded Systems"Archived2007-11-14 at theWayback Machine,Embedded Computing Designmagazine, January, 2007. Retrieved on August 13, 2008.
  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. ^HailDB homepage
  6. ^Shutting down HailDB,By Stewart Smith on August 19, 2015, HailDB
  7. ^"Embedding Informix Dynamic Server",Retrieved on August 30, 2009.
  8. ^SeeBerkeley DB
  9. ^Niccolai, James."Update: Oracle Buys Sleepycat open-source database vendor"Archived2008-06-13 at theWayback Machine,"InfoWorld", 2006-02-14. Retrieved on June 12, 2008.
  10. ^"RocksDB Basics".GitHub.Retrieved2018-07-19.
  11. ^"RocksDB transactions".GitHub.Retrieved2016-04-04.
  12. ^"How to backup RocksDB?".GitHub.Retrieved2017-07-19.
  13. ^"Checkpoints".GitHub.Retrieved2017-07-19.
  14. ^"RocksDB bloom filters".GitHub.Retrieved2016-04-04.
  15. ^"Column families in RocksDB".GitHub.Retrieved2016-04-04.
  16. ^"RocksDB TTL support".GitHub.Retrieved2016-04-04.
  17. ^"RocksDB merge operator".GitHub.Retrieved2016-04-04.
  18. ^"Universal compaction".GitHub.Retrieved2016-04-04.
  19. ^"RocksDB perf context and IO stats context".GitHub.Retrieved2016-04-04.
  20. ^"Spatial indexing in RocksDB".rocksdb.org.Retrieved2018-07-19.
  21. ^"Comparing new RocksDB and MMFiles storage engines".Retrieved2018-07-19.
  22. ^"Storage Devices — Ceph Documentation".Retrieved2018-07-19.
  23. ^"Storage Layer - CockroachDB".Retrieved2018-07-19.
  24. ^"mongodb-partners/mongo-rocks: MongoDB storage integration layer for the Rocks storage engine".GitHub.Retrieved2018-07-19.
  25. ^"MyRocks - A RocksDB storage engine with MySQL".Retrieved2018-07-19.
  26. ^"Open-sourcing a 10x reduction in Apache Cassandra tail latency".5 March 2018.Retrieved2018-07-19.
  27. ^"RocksDB in TiKV - PingCAP".15 September 2017.Retrieved2018-07-19.
  28. ^"A Glimpse into the World of Embedded Database Feat. RocksDB".21 November 2019.
  29. ^Bautin, Mikhail (2019-02-20)."How We Built a High Performance Document Store on RocksDB?".The Distributed SQL Blog.Retrieved2022-01-09.
  30. ^Answer, Usman (29 October 2015)."Shipping a New Mindset with SQLite in Windows 10".Microsoft. Archived fromthe originalon 2016-01-31.Retrieved6 March2016.
  31. ^"SQLite abstraction layer".chromium.googlesource.com.Retrieved2023-09-27.