Yes, I meant this only for relational databases. As far as I’m aware, non-relational datastores don’t have a single unifying concepts such as transactions, connections, rows, columns, etc.
I don’t believe so. I’d imagine it would be a set of common interfaces all database drivers would agree to implement.
I don’t believe this is the case. Right now we have a bunch of different implementation with their own custom drivers - see example rust-postgres, sqlite, mysql, and diesel* that essentially implement their own drivers.
Without standardization on some level, everyone that wants to write some database middleware needs to write their own drivers or create adapters for each existing drivers. For example, if I want to write something akin to jooQ in Rust, I need to rewrite the drivers from scratch, fork existing drivers or try to fit a round peg through a square hole.
* diesel reuses some low level drivers from sqlite crate.