免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2741 | 回复: 0
打印 上一主题 下一主题

spmemvfs: 在内存中加载/保存 sqlite3 数据库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-01 18:43 |只看该作者 |倒序浏览
关于 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

[ 本帖最后由 iunknown 于 2009-5-1 18:51 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP