EmbedDB is a set of simple, language-neutral APIs for interacting with embedded database libraries in an intuitive fashion. Its goal is to implement each language-binding of this library in an identical way, enforcing binary compatibility of record payload, and leveraging the host language's standard structural types.
Why is a simple and intuitive Embedded Database API that is language-neutral necessary? Well, for a few of reasons:
* There aren't really any standards for embedded database.
* Many databases take the 'Scaled down SQL' approach which is bloated.
* Other databases take the 'Bag of Tools' approach which is a burden to developers.
* Simple and intuitive is exactly what developers want.
* Build an API that operates in the same way across several languages, and you reduce learning curve significantly.
EmbedDB is neither a SQL database nor an object-relational mapping tool. It is a drastically scaled down hybrid between a relational database and a persistent storage engine, developed as a library, and architected in such a way that it provides most of the benefits of these systems without the programmatic overhead, and with minimal bootstrapping.
This project is currently designated as being in the design-phase. There is not yet any working code. Also, any code that exists, is likely to change considerably before an initial release of the library. In spite of this, we do expect development of this library to progress rapidly, and a working 0.1 Alpha release should be available very soon.
Initially, EmbedDB will be implemented in Objective-C. Objective-C has been chosen because it is a very dynamic language, and there is a clear need for such a solution on the Macintosh platform. C++ and Java implementations are planned as a post Version 1.0 activity. An initial reference implementation will be built atop Berkeley DB, but the system will be architected in such a way that the backend database library is easily replaced.