Introduced DatabaseClient abstraction to isolate all database vendor specific logic.