I’ve had great success by not using a database abstraction layer:
- you can invest the time you spend on being a generalist on many databases to be a real expert on one
- no more fighting the abstraction layer; use any persistence feature directly
- better perfomance is easier to achieve
- simpler data modelling and execution
- simpler backups
The list goes on tbh.
Drawbacks? Well yes: you have to make a really good decision on your dbms (hint: psql). But that’s actually an advantage deguised as a drawback: wanting to be able to easily change the dbms is just fearing making decisions. It’s like requestibg a car where you can swap out any type of engine.
(Also, use a single dbms. Really. There’s nothing any nosql can do that psql/mysql can’t do (mayve vice verca) unless maybe in really specific cases).