
读时模式类似编程语言中的动态 运行时类型检査而写时模式类似于静态 编译时 类型检査通常建议文档应该尽量小且避免写入时增加文档大小融合关系模型与文档模型是未来数据库发展的一条很好的途径。与直觉相反内存数据库的性能优势并不是因为它们不需要从磁盘读取。如果有足够的内存即使是基于磁盘的存储引擎也可能永远不需要从磁盘读取因为操作系统将最近使用的磁盘块缓存在内存中。相反内存数据库可以更快是因为它们避免使用写磁盘的格式对内存数据结构编码的开销[441。除了性能外内存数据库的另一个有意思的地方是它提供了基于磁盘索引难以实现的某些数据模型。例如Redis为各种数据结构如优先级队列和集合都提供了类似数据库的访问接口。由于所有的数据都保存在内存中所以实现可以比较简单。最近的研究表明内存数据库架构可以扩展到支持远大于可用内存的数据集而不会导致以磁盘为中心架构的开销|451。所谓的反缓存方法当没有足够的内存时通过将最近最少使用的数据从内存写到磁盘并在将来再次被访问时将其加载到内存。这与操作系统对虚拟内存和交换文件的操作类似但数据库可以在记录级别而不是整个内存页的粒度工作因而比操作系统更有效地管理内存。不过这种方法仍然需要索引完全放入内存如本章开头的Bitcask示例。如果将来非易失性存储non-volatile memory, NVM) 技术得到更广泛普及可能还需要进一步改变存储引擎设计[461。目前这是一个新的研究领域但值得密切关注。