I am searching for the very best database software for any new free application. The main criteria could it be needs to be lightning fast for searching among hundreds of 1000's of records. Ideally it might be entirely Java based but merely getting a Java API is alright. I am searching to license under GPL therefore the project would need to be suitable for that. To date SQLite appears to become probably the most ubiquitous solution but I'd rather not overlook another thing whether it could turn to be superior.

After I search the overall internet, most results appears to become for object databases. I do not care when the database is object-based or relational, and that i don't think I care whether it's "NoSQL" . I've plenty of experience with MySQL but I am not terribly scared of learning a brand new query language or interface whether it's faster this way. The primary type of data this is controlling is filenames with a minimum of 20 metadata fields attached I'd wish to have multiple datasets with similar fields, and it might be nice also to store some application preferences within the database.

I see from some reactions there might be confusion about my utilization of "embedded." I wish to clarify which i mean "baked into the applying and redistributed" and never "being used with an embedded device." The applying is presently focusing on full scale computer systems, although one good reason for "ideally it might be entirely java based" is really a dreamy aspiration of making an Android version.

Have a look at http://www.polepos.org/ there's a benchmark which clains thathttp://www.db4o.com/ is among the quickest embedded dbs.

Personally, i labored with db4o and it is very nice its licensed under GPL therefore it should possibly meet your needs

Ultimately it truly is dependent in your application. SQLite isn't made to be as robust as standard clientserver databases like Oracle and MySQL. In the FAQ for SQLite they are saying the next about them:

However, client/server database engines (for example PostgreSQL, MySQL, or Oracle) usually support a greater degree of concurrency and permit multiple ways to be conntacting exactly the same database simultaneously. You could do inside a client/server database because there's always just one well-controlled server process open to coordinate access. In case your application includes a need for a number of concurrency, then you should look at utilizing a client/server database. But experience indicates that many programs need a smaller amount concurrency than their designers imagine.

That being stated SQLite becomes manifest pretty quickly however again this is dependent how you will be utilizing it as well as on what platforms. If you're running with an embedded device you might see significant performance variations than when running on the regular desktopserver and that's why its difficult to provide a exact answer. SQlite does see significant performance gains from not abiding towards the standard clientserver model.

Your best choice would be to choose a couple of, like SQLite, PostgreSQL, MySQL, and find out the performance implications of every by running some tests which simulate common situations you will come across in your soul application.