Hmm... unit tests ... Somehow I forgot about those :-)

In any event, I'll keep watching the evolution of DbMerger, as I am sure it will have many more good applications.

Andrus


On Jun 11, 2009, at 11:36 AM, Tore Halset wrote:
Hello.

Okay, I understand. We all have different setups and needs.

I am creating all the tokens and filter by type. I plan to clean up this by adding a method named something like mayRemoveInformation() to all the tokens. The startup merge (step 1 including metadata fetching and issuing of tokens) is done in 6 seconds on PostgreSQL with ~90 tables, so I have not bothered optimizing. A little bit slower with Derby.

For my setup, filtering out extra tables is not important. To speed up junit tests, I implemented support for this in DbMerger. You just override the includeTableName-method.

Regards,
- Tore.

On Jun 10, 2009, at 15:32 , Andrus Adamchik wrote:

Hi Tore,

We definitely looked at DbMerger, but for the implementation it was decided to go a parallel way, essentially because most strategies are using a much smaller subset of JDBC metadata operations for its schema analysis, and the analysis flow needed to be flexible. E.g. we don't care if there are extra tables in the DB, and we don't want to fetch the columns for those. Attribute rules checking is fairly lax (null/not null mismatch is ignored). All or nothing strategies would abort out early if they detect a certain single object presence/absence. Things like that, all affecting application startup speed (not only on Oracle).

Finally we decided against including a partial update strategy for the reasons we discussed before - production schema upgrade may require data migration, something the strategy won't know anything about. So essentially the conclusion was that the main strength of DbMerger wasn't applicable for the problem at hand. Users can still implement such strategy. With the help of DbMerger it will be trivial indeed.

I am open to reconciling the two, just thought that it will be too invasive on the DbMerger end. So is there optimized API for Step #1, or does it still get all tokens with DbLoader, and then throws away unsafe ones?

Andrus



Reply via email to