database abstract layer for several common backends