HSQLDB vs Java DB
I am considering to use one of these DB.
Java DB comes with Java 6 and it is big plus.
I plan to use it in desktop app and I wish to be able to upload a lot of data.
I made a test on PC with 1 GB of memory.
Both database started to work (SELECT/INSERT) when DB grown bigger then 768MB.
It seems that these DBs work well when data is in memory.
While MySQL was more stable when DB was bigger then available memory.
May be I made a wrong test.
Could you advise what DB is better or what pitfalls do they have?
I could be wrong, but I thought HSQL DB and Java DB were meant specifically for development purposes and not for production use. So they'd be fine for developing your application and testing, but they're meant to be replaced eventually by a real DB. I've only ever used HSQL DB for some Hibernate tutorials. Never tried Java DB.
hsqldb is used in OpenOffice.
I think it is good choice for embed DB
I found H2. It is DB from author of HSQLDB
It has comparison of databases.
Personally, I use mysql for dev and for production. Only because they have a nifty mysql tools available. Plus, MySql is owned by Sun so not sure if that makes any difference.
It is not that easy to create desktop cross platform app like mail client that have to store emails with MySQL.
MySQL license is gpl or commercial. (not good for if you wish to make cheap or free tool)
With HSQLDB I can have embed DB in JVM. No port or sockets. No firewalls.
Has MySQL always been under the GPL license or did they recently change that?
This link shows it was updated on October 9, 2008.
MySQL was always dual licensed GPL and Commercial license.
Commercial license costs $500
If you buy thousands DBs as OEM then you get a smaller price. I am not sure where I saw pricing but I think 1000 embed mysql servers cost $35 per instance.
I could be wrong.
What I do not like is that they license JDBC driver and other drivers under GPL.
(Let me know if that wrong now)
If you are commercial software vendor you can say that your require MySQL server. GPL and sockets are OK.
But you can't supply software with JDBC driver and you have to ask customer to download and install JDBC manually.
Your software may have some folder where customer must copy JDBC driver and edit configure file to enter MySQL JDBC driver class name.
Last thing is bad.
That last part really stinks.. jeez~ who knew
I actually talked to a co-worker about this the other day and he said MySQL has been licensed like this for quite a while...
Developers start using MySQL because it's open source, but then after their application is written around it, legal finds out they are using MySQL and actually have to pay for a license... Instead of switching to a database under a better license (and fixing all the code, sql, etc...), it's cheaper to just pay the money to MySQL.
I thought that was fairly interesting and quite cleaver of the MySQL team.