The current dbi only supports a single database backend. Add an abstraction layer to allow multiple database backends. Introduce a dbi backend struct containing all database functions.