views:

42

answers:

2

We're writing an open source tool that is designed to work against multiple database products (really, it's designed to work with any database that has a JDBC driver available). However, because it does DDL (not DML), we need to test against different products.

While MySQL, PostgreSQL and other open source db's are easy for us to test on (since we - the developers - all use these daily), testing those products is easy. But, finding different installations of other, commercial database products is a different story.

Does anyone know of a "database sandbox", or similar service that would allow us to test code against multiple database products without having to buy and install them?

Thanks in advance!

+2  A: 

I don't know of such a service but it may well be worthwhile contacting some of commercial vendors as it is often in their interests to have interoperability with open source libraries. The other way to approach it would be to find a company that would like to use your tool with one of the commercial db's (because they are already tied to that vendor in-house) and ask them if you can get access or spend some time in their office. This is an approach I used when developing a Continuous Integration tool which needed to work with different commercial source control systems and it worked surprisingly well.

You may also want to get in touch with open source orgs like Codehaus or Apache as they have established open-source links with commercial vendors and may be able to give you access to the DBs you need.

Supertux
A: 

You may want to use an ORM, such as Hibernate, or some other open-source ORM, as those will be tested on different databases, and you can then develop knowing that all you have to do is unit test the DAO, but not be so concerned about the different databases.

James Black
This approach works great for standard DML statements, but once you start using native SQL (which is required for DDL statements), you can no longer rely on Hibernate to abstract that stuff away. In general though, you're right - using an ORM would definitely remove a lot of the testing required.
Todd R
In a recent project where we used entity-attribute-value tables it was heavy in tsql and very light on DLINQ as dynamic queries where the norm, but it also wouldn't be easy to move to a new database. I checked that the assumption to not support other databases was correct.
James Black