Ich glaube, hier werden zwei Use Cases miteinander vermengt:
1.
Implementierung einer konkreten Anwendung. Hier ist es für 99% der Anwender sinnvoller, sich auf eine
DB einzuschießen. Die individuelle Implementierung irgendwelcher Speziallösungen kann vielleicht für eine bestimmte
DB gar nicht oder nur mit Klimmzügen suboptimal möglich sein. Paradebeispiel 'bulk updates' (eigentlich ein ETL-Prozess). Geht mal so, mal so und mal gar nicht (performant). Da kommt man um individuelle Lösungen gar nicht drum herum und muss die unterstützten
DB einschränken oder für eine bestimmte
DB eine Schrottlösung anbieten.
2.
Implementierung eines Dataaccess-Layers. Hier werden 'einfach' die unterschiedlichen
DB-Protokolle vereinheitlicht. Eine performante Umsetzung ist hier viel einfacher, denn es müssen nur Basistechnologien (Konnektieren, Befehle abschicken, Daten Empfangen, Fehlerbehandlung) unter einen Hut gebracht werden.
bulk updates gehören
imho bisher jedenfalls nicht dazu (aus genannten Gründen).