Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Even without an ORM that supports both, as long as the DB layer is reasonably separated in your application it shouldn't be too much effort to switch. And if you've scaled to the point where it matters, you probably have the resources to do so.


>> as long as the DB layer is reasonably separated in your application

I find this is easy in retrospect but tricky when you’re building a system. It’s all shades of grey when you’re building:

Should I put my queue in my DB and just avoid the whole 2PC drama (saga is a more apt word but too much opportunity for confusion in this context).

I probably should implement that check constraint or that trigger but should I add a plugin to my DB to offer better performance and correctness of special type X or just use a trigger for that too?

Should I create my own db plugin so that triggers can publish messages themselves without going through an app layer?

In retrospect it’s easy to see when you went too far, or not far enough. At decision time the design document your team are refining starts to head past the ~10 page sweet spot limit.


That's true, even with "perfect" abstractions, switching gets more complicated as you use more complex database features.

It's only really easy if you push most of your constraints and triggers to the application. In practice, I've only ever switched databases with really simple CRUD stuff and have otherwise been able to predict that I'll eventually want Postgres/RabbitMQ/etc and build it in from the start.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: