IndexedDB abstraction layer