An Embedded Database is one which can be embedded into software. Instead of the user having to install a database server, maintain the database, configure the database, etc., the embedded one is more invisible and pre-integrated instead.
Embedded databases can be an alternative to:
Embedded databases should also have the option for an advanced user to be able to access his data separately, too. For example, and advanced user may want to transport some of his data from his embedded database over to a larger normal database server. He should be able to at least get his data out. The data shouldn't necessarily be embedded permanently, but the database can be.
What are some current embedded databases that work today? Or do we need to invent these? Who is sick of the limits of ini files, XML, config files, arrays, streams? If anyone knows of some current working embedded databases, let us know. I think FireBird and SqLite are a bit too locked down (firebird syntax is different than sql, database A is not compatible with database B. I'd hope to have an embedded database in use with data that was directly transportable to other databases. Or at least, there should be ways to do this. Otherwise people won't see the power of embedded databases. There has to be a common format, or at least some converter tools. i.e to be able to pull data out of the embedded database, and place it in a MySql or Firebird one.
I think the common format for embedded databases could also do well with data feeds. Instead of shipping an XML or CSV file (or pipe delimited file) across the web, people should be able to grab databases and tables of data easier. CSV is too limited, and XML is too far from being a database. Instead of converting from XML to a database, a common database format which is more powerful than CSV should be used. But where is this format.. sleeping, just waiting to be implemented?
One possible solution is MetaKit, which is a C++ database code.
For Java, I've used the Derby database. It's located at http://db.apache.org/derby/ (though the Apache website seems to be down at the moment).
Derby is now included in the Java 6 SE with the name "JavaDB".