下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

SQLite内存数据库

作者:课课家教育the     来源: http://www.kokojia.com点击数:1040发布时间: 2017-05-26 16:00:09

标签: 数据库内存数据库临时数据库

  在2012中国系统架构师大会上,有人曾做过一份有关大数据的调查,其中一项“在众多的技术趋势中,您所关注的数据管理的新技术是什么?”的调查结果中,“内存数据库”成为仅次于“分布式存储与计算”的最受关注的新技术。内存数据库之所以受到越来越多的关注,与其性能上的飞跃和性价比的不断提升有着密不可分的关系。下面小编将为大家介绍与内存数据库相关的一些知识。

  SQLite介绍

  一.SQLite是实现了SQL92标准的一个大子集的嵌入式数据库.其以在一个库中组合了数据库引擎和接口,能将所有数据存储于单个文件中而著名.我觉得SQLite的功能一定程度上居于MySQL和PostgreSQL之间.尽管如此,在性能上面,SQLite常常快2-3倍(甚至更多).这利益于其高度调整了的内部架构,因为它除去了服务器端到客户端和客户端到服务器端的通信。

  二.而令人印象深刻的特点是你可将你的整个数据库系统放在其中.利用非常高效的内存组织,SQLite只需在很小的内存中维护其很小的尺寸,远远比其它任何数据库系统都小.这些特点使得其成为在需要高效地应用数据库的任务中一个非常方便的工具.

  SQLite优势

  一.除了速度和效率,SQLite还有其它好多的优势使得其能成为许多任务中一个理想的解决方案.因为SQLite的数据库都是简单文件,因此无须一个管理队伍花时间来构造复杂的权限结构来保护用户的数据库.因为权限通过文件系统自动进行.这也同时意味着(数据库空间的大小只与环境有关,与本身无关)无段特殊的规则来了解用户磁盘空间.用户可以从创建他们想要的任意多的数据库和对其对这些数据库的绝对控制权而得到好处.

  二.数据库就是一个文件的事实使用SQLite可以轻易地在服务器间移动.SQLite也除去了需要大量内存和其它系统资源的伺候进程.即使当数据库在大量地使用时也是如此.

  一、内存数据库

  内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。内存数据库的最大特点是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。

  在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递":memory:",如:

  rc=sqlite3_open(":memory:",&db);

  在调用完以上函数后,不会有任何磁盘文件被生成,取而代之的是,一个新的数据库在纯内存中被成功创建了。由于没有持久化,该数据库在当前数据库连接被关闭后就会立刻消失。需要注意的是,尽管多个数据库连接都可以通过上面的方法创建内存数据库,然而它们却是不同的数据库,相互之间没有任何关系。事实上,我们也可以通过Attach命令将内存数据库像其他普通数据库一样,附加到当前的连接中,如:

  ATTACHDATABASE':memory:'ASaux1;

  创建内存数据库

  1.由于业务的需要,我使用SQLite内存数据库制作一个缓存,IIS停止内存数据库的数据全部丢失,不知道SQLite是否可以做分布式的内存数据管理。

  2.添加usingSystem.Data.SQLite引用,程序集请到这里http://sqlite.phxsoftware.com/下载

  3.创建内存数据库,DataSource=:memory:;Version=3;这个连接字符串折腾了很久,当然这里也可以使用文件来存储数据,只需要修改DataSource=:memory:为DataSource=Cache.db就ok!当然这个表需要在Global里面创建。

SQLite内存数据库_数据库_内存数据库_临时数据库_课课家教育

  全局属性,打开数据库连接后创建好表后赋值给这个属性,以后操作数据一致使用这个连接。

全局属性,打开数据库连接后创建好表后赋值给这个属性,以后操作数据一致使用这个连接。

  使用SQL语句操作表如下,sql是代表sql语句

使用SQL语句操作表如下,sql是代表sql语句

  二、临时数据库:

  在调用sqlite3_open()函数或执行ATTACH命令时,如果数据库文件参数传的是空字符串,那么一个新的临时文件将被创建作为临时数据库的底层文件,如:

  rc=sqlite3_open("",&db);

  或

  ATTACHDATABASE''ASaux2;

  和内存数据库非常相似,两个数据库连接创建的临时数据库也是各自独立的,在连接关闭后,临时数据库将自动消失,其底层文件也将被自动删除。

  尽管磁盘文件被创建用于存储临时数据库中的数据信息,但是实际上临时数据库也会和内存数据库一样通常驻留在内存中,唯一不同的是,当临时数据库中数据量过大时,SQLite为了保证有更多的内存可用于其它操作,因此会将临时数据库中的部分数据写到磁盘文件中,而内存数据库则始终会将数据存放在内存中。

  小编结语:

  更多精彩内容尽在课课家教育!

赞(23)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程