`
iunknown
  • 浏览: 403826 次
社区版块
存档分类
最新评论

spmemvfs: 在内存中加载/保存 sqlite3 数据库

阅读更多
关于 sqlite3 有很多的介绍文章,这里就不提了。

说一下 memory vfs for sqlite3 可能用在什么场景下。

一个常见的场景是用户地址本功能。地址本应用中,把一个用户的所有联系人列出来,是最常用的操作,增加/删除/修改 的操作相对显的比较少。

常规的做法可能是把多个用户的数据保存在一个表中(比如用 mysql),至少包含两个字段 ( username, address ) ,username 指明这条记录所属的用户,address 是用户的一个联系人。一般都会对 username 建索引,这样列举一个用户的所有联系人,速度通常还是很快的。不过如果请求数逐渐增多的时候,数据库就会开始显的比较吃力了。

设想另外一种做法,为每个用户建一个 database ,当然不是用 mysql ,而是用 sqlite3 。然后把 sqlite3 的内容保存在 dbm 这类数据库中(比如最近很热门的 tokyo cabinet)。即在 dbm 数据库中保存 (username,buffer)。这个 buffer 就是 sqlite3 database 序列化之后的内容,一般是保存到一个单独的文件中的。现在有了 memvfs ,那么就可以先把这个 buffer 保存到内存中,然后就可以把 buffer 保存到 dbm 数据库了。如果 dbm 数据库足够快,那么整体的速度就会比用前一种方案好。

另外,用 dbm 保存单用户的数据,这个很早之前也有人这样做了。不过以前是直接保存一些自定义的数据结构进去,这样通常扩展性不是很好,而且接口也不再是 sql 了。现在如果把 sqlite3 和 dbm 用这种方式集成起来,就可以保证数据格式的扩展性,并且还可以直接用 sql 。

下载地址:
http://spserver.googlecode.com/files/spmemvfs-0.1.src.tar.gz


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics