内存数据库
一般所谓内存数据库,是指能够与应用运行在同一个进程内的数据库,也就是说能够被嵌入到进程内运行的数据库。
比较著名的内存数据库软件,例如,Sqlite
;以及新生代的NOSql key-value
数据库bdb(Berkeley DB)
、lmdb(Lighning Memory-Mapped Database)
等。
数据库一般功能
- 对增删改查
CRUD
操作的支持 - 高效、丰富的索引,例如,对于
Blob
数据以及JSON
数据的支持 - 事务特性
- 持久化要求
我们的需求
- 能够直接操作结构体内存,避免数据库操作间的重复内存拷贝,要求内存数据库要面向结构体设计
- 能够完成增、删、改、查CRUD等数据库常规操作
- 提供高效、丰富的索引能力
- 因为是受限使用场景,可以接受其它方面数据库功能的弱化
深入分析需求
我们使用内存数据库的场景相对小众,因为能够直接操作结构体内存,虽然避免传统的在内存数据库接口层的内存隔离拷贝,但,因为内存对使用者直接曝露,应用修改内存后,特别是涉及到索引字段的修改时,必须特殊调用UpdateIndex(...)
接口,以保证数据库内信息的一致性。
但,特别地,如果不涉及索引字段修改,只