Showing posts with label liquibase. Show all posts
Showing posts with label liquibase. Show all posts

Wednesday, 15 August 2012

Generalization at all cost?

I'm participating in a long chat - yes that is usual to use chats to discuss long-long, sometimes useless things (let me rephrase: rarely useful things).

The topic is a new module - what requires advanced data storage approach due to amount of data to be stored. The head of operation decided to use a partitioned approach.

The developer in charge doesn't like this, since it makes his life difficult. They are using Liquibase - a database migration framework, and it doesn't support this on an elegant way. It uses an XML based DSL to describe database changes, and with this offers a database implementation independent solution. The second changeset the developers have to implement breaks this dream - because cannot be described with the DSL, and native SQL queries must be written. I understand that breaking a dream hurts - but that's life.

In my opinion, it is a fairy tale that a software can be database implementation independent. Well, if you use 3 tables, only for CRUD operations, it can be true - but seldom to have such database structure in enterprise environment. I've never seen it to happen - and I don't believe in it. I don't believe in Liquibase DSL approach too - it is a not necessary abstraction layer. I like Flyway. There is another fake promise from Liquibase what I don't like: you can do painless database downgrades. Flyway guys thinks differently - worth to read this. There is no free lunch.

The discussion in the chat is now like a flame war. The developer tries to get numbers from operation to proof their truth: the partitioned schema is performing better. That is not necessary - they took the responsibility to define the data storage method. That's it. The developer's task is to implement that.

Too much democracy hurts.