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

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


分享到:
评论

相关推荐

    SQLite数据库 sqlitedll库文件 sqlite驱动JAR包 sqlite工具

    在Java下连接SQLite数据库 一、下载SQLite数据库的JDBC:http://www.zentus.com/sqlitejdbc/ 二、将下载到的包解压后得到jar包放到%JAVA_HOME%\lib下,并且将其添加到ClassPath系统环境变量中。一定要保证在类路径...

    Delphi使用SQLite3内存数据库

    在本文中,我们将深入探讨如何在Delphi编程环境中利用SQLite3数据库系统,特别是关于本地数据库与内存数据库的使用。SQLite3是一种轻量级、自包含的数据库引擎,它不需要独立的服务器进程,使得在Delphi应用程序中...

    Linux下使用sqlite3数据库详解

    SQLite是一款轻量级的数据库管理系统,被广泛应用于各种场景,特别是在嵌入式系统及移动设备中。它以源码形式发布,支持跨平台特性,并且可以作为一个独立的库集成到应用程序中。本文将详细介绍在Linux环境下使用...

    C/S结构sqlite数据库管理器V1.2

    在本案例中,“C/S结构sqlite数据库管理器V1.2”是一个基于C/S架构设计的用于管理和操作SQLite数据库的工具。 SQLite是一个轻量级的、开源的、自包含的SQL数据库引擎,它无需单独的服务器进程,可以直接嵌入到各类...

    sqlite3数据库查看工具

    DLL(动态链接库)文件在Windows系统中是共享函数库,MediaMonkey.dll可能包含了SQLite3相关的函数,用于读取和写入MediaMonkey的数据库。 SQLite3数据库的一些核心特性包括: 1. **事务支持**:SQLite3支持ACID...

    Nodejs操作Sqlite3数据库封装

    在Node.js环境中,SQLite3是一个常用的轻量级数据库,它不需要单独的服务进程,可以直接在内存中或磁盘上创建数据库文件。本篇文章将深入探讨如何使用`node-sqlite3`库来操作SQLite3数据库,并对其进行封装,以便于...

    基于TCP/IP和Sqlite3数据库的网络通讯录

    在这个通讯录项目中,Sqlite3作为本地数据存储的主要工具,用于保存联系人的各项信息,如姓名、电话、邮箱等。 - 使用Sqlite3的优点包括:简单易用的API、高效的数据存储、支持事务处理、跨平台兼容性好等。 - ...

    Unity数据库Sqlite.dll和Data.dll

    5. **数据持久化**:Unity项目打包后,SQLite数据库文件通常会被包含在应用中,数据在游戏运行过程中可以被保存并跨会话保留。 总的来说,`Unity数据库Sqlite.dll和Data.dll`的使用使得Unity开发者能够方便地在游戏...

    易语言SQLite3数据库操作类模块源码

    易语言SQLite3数据库操作类模块源码是一种使用易语言编程实现的SQLite3数据库接口,它通过调用sqlite3.dll动态链接库的API函数,为易语言开发者提供了与SQLite3数据库进行交互的能力。SQLite3是一款轻量级、开源的...

    sqlite3.exe

    SQLite3.exe是一个小巧而强大的命令行工具,用于与SQLite数据库引擎进行交互。SQLite是一个开源、无服务器、自包含、高度可靠的关系型数据库系统,适用于各种规模的应用程序,从嵌入式设备到大型服务器。它的轻量级...

    Delphi内存数据库

    本文将深入探讨如何在Delphi中利用内存数据库进行数据操作,以及如何将这些内存中的数据保存到文件中。 内存数据库,也称为临时或挥发性数据库,其特点是所有数据都存储在内存中,不涉及磁盘I/O,因此读写速度极快...

    sqlite3数据库so库_sqlite3数据库_so库_动态库_

    SQLite3是一个轻量级的开源数据库系统,常用于嵌入式设备和移动应用程序,因为它不需要独立的服务器进程,且整个数据库存储在一个文件中。在Android等基于Linux内核的平台上,SQLite3通常以动态库(.so文件)的形式...

    数据库sqlite 小型数据库

    7. **内存优化**:SQLite允许在内存中创建数据库,提高读写速度。 在使用SQLite时,我们通常需要与之交互的Java开发环境会用到`sqlitejdbc-v056.jar`,这是一个SQLite的Java驱动,它允许Java应用程序通过JDBC接口...

    IOS 下SQLite3数据库的连接工具类

    在iOS开发中,SQLite3是一种常用的轻量级数据库,它被广泛用于存储应用程序的数据。本文将详细介绍如何在iOS环境下利用SQLite3进行数据库操作,并重点讲解一个名为"TestSqlite"的压缩包中的代码示例。 SQLite3是一...

    sqlite3 not found的解决办法

    在使用Linux或Unix类操作系统时,可能会遇到"sqlite3 not found"这样的错误提示,这通常意味着系统中没有安装SQLite3这个数据库引擎或者其路径没有被正确地添加到系统的PATH环境变量中。SQLite3是一个轻量级、开源的...

    Qt中 SQlite 数据库 加密 SqliteCipher 实例

    Qt中SQlite数据库加密SqliteCipher 操作实例,打开多个数据库,附着数据库跨库查询, 对应说明:https://blog.csdn.net/woguanni/article/details/120524602

    sqlite3数据库权威指南

    由于其体积小、速度快、无需管理的特点,SQLite3在许多应用中取代了传统的大型数据库系统。 二、C语言API SQLite3提供了丰富的C语言接口,允许开发者直接与数据库进行交互。API包括创建、打开、关闭数据库,执行SQL...

    SQLite数据库文件自收缩_sqlite3_

    在SQLite3中,实现数据库文件自收缩通常有两种方式:VACUUM操作和PRAGMA语句。 1. VACUUM操作: VACUUM是一个内置的SQL命令,它的主要作用是重新组织数据库的存储结构,清理并回收不再使用的页面,同时也会收缩...

    SQLite3资料C++

    SQLiteSpy_1.8.5 数据库查看UI程序 :查看SQLIte3 数据库的UI小程序 _SQLite权威指南.pdf SQLite学习手册_中文全本.pdf CppSQLite3U国外牛人的sqlite封装.zip C++封装类使用方法:...

    【实测有效,真正解决】VB.NET C# VS sqlite 无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块

    同时还阔以解决System.DllNotFoundException: 无法加载 DLL“SQLite.Interop.DLL”问题。 判断32位进程还是64位进程可以用 Environment.Is64BitProcess 资源全部来自官网...

Global site tag (gtag.js) - Google Analytics