内存数据库(sqllite)使用介绍

合集下载

sqlite数据库的介绍与java操作sqlite的实例讲解

sqlite数据库的介绍与java操作sqlite的实例讲解

sqlite数据库的介绍与java操作sqlite的实例讲解sqlite是啥?1、⼀种轻型数据库2、关系型数据库3、占⽤资源很低,⼏百K内存,适合嵌⼊式设备4、⽀持windows、linux、unix5、可与java、php、c#、python等结合6、处理速度快于mysql7、不需要配置、不需要安装、不需要管理8、⼀个完整的 SQLite 数据库是存储在⼀个单⼀的跨平台的磁盘⽂件,简单的说⼀个数据库就是⼀个单⼀⽂件为啥要⽤它?之前的web项⽬⼀直⽤的mysql数据库,因为⽬前的项⽬需要做⼀个桌⾯应⽤,可以在不同地⽅复⽤的,⽽我们不能保证是否所有的应⽤环境都安装了mysql环境,所以我们选择sqlite这款免安装、单⼀⽂件的数据库,部署这个应⽤到别的环境时,把数据库⽂件这个单⼀⽂件放在项⽬⾥⼀起传过去就OK咯!java操作sqlite下载⼀个sqlite-jdbc的jar包,放⼊项⽬中;写⼀个测试类表达如何使⽤sqlite:public class TestSQLite{public static void main(String[] args){try{//连接SQLite的JDBCClass.forName("org.sqlite.JDBC");//建⽴⼀个数据库名zieckey.db的连接,如果不存在就在当前⽬录下创建之Connection conn = DriverManager.getConnection("jdbc:sqlite:zieckey.db");Statement stat = conn.createStatement();stat.executeUpdate( "create table tbl1(name varchar(20), salary int);" );//创建⼀个表,两列stat.executeUpdate( "insert into tbl1 values('ZhangSan',8000);" ); //插⼊数据stat.executeUpdate( "insert into tbl1 values('LiSi',7800);" );stat.executeUpdate( "insert into tbl1 values('WangWu',5800);" );stat.executeUpdate( "insert into tbl1 values('ZhaoLiu',9100);" );ResultSet rs = stat.executeQuery("select * from tbl1;"); //查询数据while (rs.next()) { //将查询到的数据打印出来System.out.print("name = " + rs.getString("name") + " "); //列属性⼀System.out.println("salary = " + rs.getString("salary")); //列属性⼆}rs.close();conn.close(); //结束数据库的连接}catch( Exception e ){e.printStackTrace ( );}}}和其他数据库的java操作差不多,主要是利⽤它的免安装与单⼀⽂件的特性。

sqlite中文注释版

sqlite中文注释版

sqlite中文注释版SQLite中文注释版是一种非常流行的嵌入式数据库管理系统,它具有轻量级、高效性和易用性的特点。

本文将重点介绍SQLite中文注释版的特点和使用方法,帮助读者更好地理解和应用这一工具。

一、SQLite中文注释版的特点1. 嵌入式数据库管理系统:SQLite是一种嵌入式数据库,意味着它可以直接嵌入到应用程序中,不需要额外的服务器进程。

这使得SQLite非常适合于那些资源有限的设备和应用场景,比如移动设备和嵌入式系统。

2. 轻量级:SQLite的代码量非常小,占用资源较少。

它的核心库文件只有几百KB大小,极大地降低了内存和存储空间的需求。

这也使得SQLite在性能方面表现出色,可以快速地处理大量的数据。

3. 高效性:SQLite采用了一种独特的存储引擎,可以将整个数据库存储在一个单一的文件中。

这种设计使得SQLite在读取和写入数据时非常高效,减少了磁盘寻址的开销。

同时,SQLite还支持事务和并发控制,保证数据的完整性和一致性。

4. 易用性:SQLite使用简单而直观的SQL语言进行操作,开发者可以很轻松地创建、查询和修改数据库中的数据。

同时,SQLite还提供了丰富的API接口,方便开发者进行二次开发和集成。

二、SQLite中文注释版的使用方法1. 安装SQLite:首先,需要下载并安装SQLite的二进制文件。

安装完成后,可以在命令行终端中输入“sqlite3”命令来启动SQLite。

2. 创建数据库:使用SQLite,可以通过执行“CREATE DATABASE 数据库名”命令来创建一个新的数据库。

在创建数据库时,可以指定数据库的名称和路径。

3. 创建表:在创建数据库后,可以使用“CREATE TA BLE 表名 (列1 数据类型, 列 2 数据类型, ...)”命令来创建表。

在创建表时,需要指定每个列的名称和数据类型。

4. 插入数据:通过执行“INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...)”命令,可以向表中插入一条新的数据。

SQLite性能-inmemory模式。

SQLite性能-inmemory模式。

SQLite性能-inmemory模式。

SQLite创建的数据库有⼀种模式IN-MEMORY,但是它并不表⽰SQLite就成了⼀个内存数据库。

IN-MEMORY模式可以简单地理解为,(2020 表述勘误:本来创建的数据库⽂件是基于磁盘的,现在整个⽂件使⽤内存空间来代替磁盘空间,没有了⽂件作为backingstore,不必在修改数据库后将缓存页提交到⽂件系统),其它操作保持⼀致。

也就是数据库的设计没有根本改变。

inmemory与tempdb是两种节约模式,节约的对象为(rollback)⽇志⽂件以及数据库⽂件,减少IO。

inmemory将⽇志写在内存,并且去除数据库⽂件作为backingStore,缓存页不⽤提交到⽂件系统。

tempdb只会在只会在脏的缓存页超过当前总量的25%才会同步刷写到⽂件,换句话说在临时数据库模式下,事务提交时并不总同步脏页,因此减少了IO数量,事务⽇志也受这种机制影响,所以在临时数据库模式下,事务⽇志是不是MEMORY并不重要。

回过头来看,内存模式则是临时模式的⼀种极致,杜绝所有的IO。

这两种模式都只能存在⼀个sqlite3连接,关闭时销毁。

提到内存,许多⼈就会简单地理解为,内存⽐磁盘速度快很多,所以内存模式⽐磁盘模式的数据库速度也快很多,甚⾄有⼈望⽂⽣意就把它变成等同于内存数据库。

它并不是为内存数据库应⽤⽽设计的,本质还是⽂件数据库。

它的数据库存储⽂件有将近⼀半的空间是空置的,这是它的B树存储决定的,(2020 勘误:对于固定长度记录,页⾯使⽤率最⼤化,对于⾮⾃增计数键的索引,页⾯⼀般会保留20~60%的空间,⽅便插⼊)请参看。

内存模式只是将数据库存储⽂件放⼊内存空间,但并不考虑最有效管理你的内存空间,其它临时⽂件也要使⽤内存,事务回滚⽇志⼀样要⽣成,只是使⽤了内存空间。

它的作⽤应该偏向于临时性的⽤途。

(2020 补充:下⾯的测试有局限性,)我们先来看⼀下下⾯的测试结果,分别往memory和disk模式的sqlite数据库进⾏1w, 10w以及100w条数据的插⼊,采⽤⼀次性提交事务。

SQLite的介绍操作Sqlite具体实例

SQLite的介绍操作Sqlite具体实例

SQLite的介绍操作Sqlite具体实例1.SQLite简介SQLite是⼀款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计⽬标是嵌⼊式的,⽽且⽬前已经在很多嵌⼊式产品中使⽤了它,它占⽤资源⾮常的低,在嵌⼊式设备中,可能只需要⼏百K的内存就够了。

它能够⽀持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语⾔相结合,⽐如Tcl、PHP、Java、C++、.Net等,还有ODBC接⼝,同样⽐起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度⽐他们都快。

2.SQLite的特点:轻量级SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。

使⽤SQLite⼀般只需要带上它的⼀个动态库,就可以享受它的全部功能。

⽽且那个动态库的尺⼨也挺⼩,以版本3.6.11为例,Windows下487KB、Linux下347KB。

不需要"安装"SQLite的核⼼引擎本⾝不依赖第三⽅的软件,使⽤它也不需要"安装"。

有点类似那种绿⾊软件。

单⼀⽂件数据库中所有的信息(⽐如表、视图等)都包含在⼀个⽂件内。

这个⽂件可以⾃由复制到其它⽬录或其它机器上。

跨平台/可移植性除了主流操作系统 windows,linux之后,SQLite还⽀持其它⼀些不常⽤的操作系统。

弱类型的字段同⼀列中的数据可以是不同类型开源3.SQLite数据类型⼀般数据采⽤的固定的静态数据类型,⽽SQLite采⽤的是动态数据类型,会根据存⼊值⾃动判断。

SQLite具有以下五种常⽤的数据类型:NULL: 这个值为空值VARCHAR(n):长度不固定且其最⼤长度为 n 的字串,n不能超过 4000。

CHAR(n):长度固定为n的字串,n不能超过 254。

INTEGER: 值被标识为整数,依据值的⼤⼩可以依次被存储为1,2,3,4,5,6,7,8.REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.TEXT: 值为⽂本字符串,使⽤数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).BLOB: 值是BLOB数据块,以输⼊的数据格式进⾏存储。

SQLite数据库利用详解程序

SQLite数据库利用详解程序

1.SQLite数据库的优势:1.1 轻量级SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,利用SQLite一样只需要带上它的一个动态库。

以版本为例,Windows下487KB、Linux下347KB。

1.2 绿色软件它的核心引擎本身不依托第三方的软件1.3 单一文件确实是数据库中所有的信息(比如表、视图、触发器、等)都包括在一个文件内。

那个文件能够copy到其它目录或其它机械上,也照用不误。

CSV也是单一文件格式。

它本身确实是用来表示二维的数据信息的。

一个CSV文件能够明白得为数据库的一张表。

CSV的缺点要紧在于:不便于存储非文本的数据信息(比如BLOB类型的信息);若是需要同时存储多张表的信息,就需要对应有多个CSV文件(文件一多,就嫌麻烦)。

1.4 跨平台/可移植性除主流操作系统,SQLite还支持了很多其他的操作系统。

如对很多嵌入式系统(比如Android、Windows Mobile、Symbin、Palm、VxWorks等)的支持。

Access数据库最要紧的缺点确实是不能跨平台。

另外还有几个小缺点:文件大小有限制(2GB)、不支持内存数据库。

1.5 内存数据库(in-memory database)现在内存愈来愈廉价,很多一般PC都开始以GB为单位来衡量内存(效劳器就更甭提了)。

这时,SQLite的内存数据库特性就越发显得好用。

SQLite的API不区分当前操作的数据库是在内存仍是在文件(关于存储介质是透明的)。

因此若是你感觉磁盘I/O有可能成为瓶颈的话,能够考虑切换为内存方式。

切换的时候,操作SQLite的代码大体不用大改,只要在开始时把文件Load到内存,终止时把内存的数据库Dump回文件就OK了。

1.6 编程语言接口由于SQLite本身是C写的,它自带的API也是C接口的。

2.SQLite数据库的缺点:2.1并发访问的锁机制SQLite在并发(包括多进程和多线程)读写方面的性能不太理想。

SQLite详细教程

SQLite详细教程

SQLite教程(360doc)--201103031:sqlite常用接口2个重要结构体和5个主要函数:sqlite3 *pdb, 数据库句柄,跟文件句柄FILE很类似sqlite3_stmt *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句sqlite3_open(), 打开数据库sqlite3_exec(), 执行非查询的sql语句sqlite3_prepare(), 准备sql语句,执行select语句或者要使用parameter bind时,用这个函数(封装了sqlite3_exec).Sqlite3_step(), 在调用sqlite3_prepare后,使用这个函数在记录集中移动。

Sqlite3_close(), 关闭数据库文件还有一系列的函数,用于从记录集字段中获取数据,如sqlite3_column_text(), 取text类型的数据。

sqlite3_column_blob(),取blob类型的数据sqlite3_column_int(), 取int类型的数据…2:sqlite数据类型介绍在进行数据库Sql操作之前,首先有个问题需要说明,就是Sqlite的数据类型,和其他的数据库不同,Sqlite支持的数据类型有他自己的特色,这个特色有时会被认为是一个潜在的缺点,但是这个问题并不在我们的讨论范围之内。

大多数的数据库在数据类型上都有严格的限制,在建立表的时候,每一列都必须制定一个数据类型,只有符合该数据类型的数据可以被保存在这一列当中。

而在Sqlite 2.X中,数据类型这个属性只属于数据本生,而不和数据被存在哪一列有关,也就是说数据的类型并不受数据列限制(有一个例外:INTEGER PRIMARY KEY,该列只能存整型数据)。

但是当Sqlite进入到3.0版本的时候,这个问题似乎又有了新的答案,Sqlite 的开发者开始限制这种无类型的使用,在3.0版本当中,每一列开始拥有自己的类型,并且在数据存入该列的时候,数据库会试图把数据的类型向该类型转换,然后以转换之后的类型存储。

sqlite 连接 语句

sqlite 连接 语句

sqlite 连接语句SQLite是一种嵌入式的关系型数据库管理系统,它是公共领域的开源软件。

SQLite数据库使用轻量级的、零配置的嵌入式SQL数据库引擎,它的设计目标是尽可能的简单和轻量,而不是追求高并发和高吞吐量。

在SQLite中,连接是指在应用程序和数据库之间建立通信的过程,通过连接,应用程序可以发送SQL语句给数据库执行,并获取执行结果。

下面是一些常见的SQLite连接语句示例:1. 连接到内存数据库:```pythonconn = sqlite3.connect(':memory:')```这个语句会创建一个在内存中的SQLite数据库连接对象,所有的数据都会保存在内存中,而不会写入到磁盘上。

2. 连接到磁盘上的数据库文件:```pythonconn = sqlite3.connect('path/to/database.db')```这个语句会创建一个连接到指定磁盘上的SQLite数据库文件的连接对象,数据库文件的路径需要根据实际情况进行修改。

3. 连接到远程SQLite数据库:```pythonconn = sqlite3.connect('host:port/path/to/database.db')```这个语句会创建一个连接到指定主机和端口上的远程SQLite数据库的连接对象,数据库文件的路径需要根据实际情况进行修改。

4. 连接到加密的SQLite数据库:```pythonconn = sqlite3.connect('path/to/database.db', key='encryption_key')```这个语句会创建一个连接到指定磁盘上的加密SQLite数据库文件的连接对象,使用指定的密钥进行解密。

5. 连接到只读的SQLite数据库:```pythonconn = sqlite3.connect('path/to/database.db', uri=True)```这个语句会创建一个连接到指定磁盘上的只读SQLite数据库文件的连接对象,只能执行查询操作,不能执行写入操作。

sqlite in用法

sqlite in用法

sqlite in用法SQLite是一种嵌入式关系型数据库管理系统(RDBMS),适用于需要在内存中存储和管理数据的应用程序。

SQLite主要用于轻量级应用程序、移动设备和嵌入式系统。

下面是SQLite中的"in"用法的准确回答:在SQLite中,“in”用于在查询语句中指定一个条件范围,以匹配多个值。

语法如下:```SELECT column_name(s) FROM table_name WHERE column_nameIN (value1, value2, ...);```在这个语法中,column_name是表中的列名,table_name是要查询的表名,value1, value2, ...是要匹配的值。

"in"可以与其他SQL关键字一起使用,例如"NOT"和"LIKE"。

例如: ```NOT IN (value1, value2, ...);```这个查询将返回不匹配指定值的行,相当于NOT操作符与"in"结合使用。

```SELECT column_name(s) FROM table_name WHERE column_name IN (SELECT column_name FROM another_table WHERE condition);```在这个查询中,"in"与子查询结合使用。

它将返回满足子查询的条件的行。

而在SQLite中,"in"还可以扩展用于连接多个表的子查询,即在子查询中使用"IN"子句。

例如:```IN (SELECT column_name2 FROM table_name2);```这个查询将返回表table_name1中column_name1列的值,在表table_name2中column_name2列的值下进行匹配。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

内存数据库(sqllite)使用介绍数据库的发展数据库技术的发展,已经成为先进信息技术的重要组成部分,是现代计算机信息系统和计算机应用系统的基础和核心。

数据库技术最初产生于20世纪60年代中期,根据数据模型的发展,可以划分为三个阶段:第一代的网状、层次数据库系统;第二代的关系数据库系统;第三代的以面向对象模型为主要特征的数据库系统。

第一代数据库的代表是1969年IBM公司研制的层次模型的数据库管理系统IMS和70年代美国数据库系统语言协商CODASYL下属数据库任务组DBTG提议的网状模型。

层次数据库的数据模型是有根的定向有序树,网状模型对应的是有向图。

这两种数据库奠定了现代数据库发展的基础。

这两种数据库具有如下共同点:1.支持三级模式(外模式、模式、内模式)。

保证数据库系统具有数据与程序的物理独立性和一定的逻辑独立性;2.用存取路径来表示数据之间的联系;3.有独立的数据定义语言;4.导航式的数据操纵语言第二代数据库的主要特征是支持关系数据模型(数据结构、关系操作、数据完整性)。

关系模型具有以下特点:1.关系模型的概念单一,实体和实体之间的连系用关系来表示;2.以关系数学为基础;3.数据的物理存储和存取路径对用户不透明;4.关系数据库语言是非过程化的。

第三代数据库产生于80年代,随着科学技术的不断进步,各个行业领域对数据库技术提出了更多的需求,关系型数据库已经不能完全满足需求,于是产生了第三代数据库。

主要有以下特征:1.支持数据管理、对象管理和知识管理;2.保持和继承了第二代数据库系统的技术;3.对其它系统开放,支持数据库语言标准,支持标准网络协议,有良好的可移植性、可连接性、可扩展性和互操作性等。

第三代数据库支持多种数据模型(比如关系模型和面向对象的模型),并和诸多新技术相结合(比如分布处理技术、并行计算技术、人工智能技术、多媒体技术、模糊技术),广泛应用于多个领域(商业管理、GIS、计划统计等),由此也衍生出多种新的数据库技术。

分布式数据库允许用户开发的应用程序把多个物理分开的、通过网络互联的数据库当作一个完整的数据库看待。

并行数据库通过cluster 技术把一个大的事务分散到cluster中的多个节点去执行,提高了数据库的吞吐和容错性。

多媒体数据库提供了一系列用来存储图像、音频和视频对象类型,更好地对多媒体数据进行存储、管理、查询。

模糊数据库是存储、组织、管理和操纵模糊数据库的数据库,可以用于模糊知识处理。

内存数据库的起因,分类一、雏形期从上个世纪60年代末到80年代初。

在这个时期中,出现了主存数据库的雏形。

1969年IBM 公司研制了世界上最早的数据库管理系统------基于层次模型的数据库管理系统IMS,并作为商品化软件投入市场。

在设计IMS时,IBM考虑到基于内存的数据管理方法,相应推出了IMS/VS Fast Path。

Fast Path是一个支持内存驻留数据的商业化数据库,但它同时也可以很好地支持磁盘驻留数据。

在这个产品中体现了主存数据库的主要设计思想,也就是将需要频繁访问,要求高响应速度的数据直接存放在物理内存中访问和管理。

在这个阶段中,包括网状数据库、关系数据库等其他各种数据库技术也都逐渐成型。

二、技术理论成熟期1984年,D J DeWitt等人发表了《主存数据库系统的实现技术》一文。

第一次提出了Main Memory Database(主存数据库)的概念。

预言当时异常昂贵的计算机主存价格一定会下降,用户有可能将大容量的数据库全部保存在主存中,提出了AVL树、哈希算法、主存数据库恢复机制等主存数据库技术的关键理论,为主存数据库的发展指出了明确的方向。

1984年,D J DeWitt等人提出使用非易逝内存或预提交和成组提交技术作为主存数据库的提交处理方案,使用指针实现主存数据库的存取访问。

1985年,IBM推出了IBM 370上运行的OBE主存数据库1986年,RB Hagman提出了使用检查点技术实现主存数据库的恢复机制。

威斯康星大学提出了按区双向锁定模式解决主存数据库中的并发控制问题。

并设计出MM-DBMS主存数据库。

贝尔实验室推出了DALI主存数据库模型。

1987年,ACM SIGMOD会议中提出了以堆文件(HEAP FILE)作为主存数据库的数据存储结构。

Southern Methodist大学设计出MARS主存数据库模型。

1988年普林斯顿大学设计出TPK主存数据库。

1990年普林斯顿大学又设计出System M主存数据库。

三、产品发展期和市场成长期随着互联网的发展,越来越多的网络应用系统需要能够支持大用户量并发访问、高响应速度的的数据库系统,主存数据库市场成熟半导体技术快速发展,半导体内存大规模生产,动态随机存取存储器(DRAM)的容量越来越大,而价格越来越低,这无疑为计算机内存的不断扩大提供了硬件基础,使得主存数据库的技术可行性逐步成熟1994年美国OSE公司推出了第一个商业化的,开始实际应用的主存数据库产品Polyhedra 1998年德国SoftwareAG推出了Tamino Database。

1999年日本UBIT会社开发出XDB主存数据库产品。

韩国Altibase推出Altibase2000年奥地利的QuiLogic公司推出了SQL-IMDB2001年美国McObject推出eXtremeDB。

加拿大Empress公司推出EmpressDB四、几种主存技术应用的比较第一代:用户定制的主存数据库。

通过应用程序来管理内存和数据;不支持SQL语句, 不提供本地存储, 没有数据库恢复技术;性能好但很难维护和在别的应用中不能使用;应用在实时领域比如工厂自动化生产。

第二代:简单功能的内存数据库。

能够快速处理简单的查询;支持部分的SQL语句和简单的恢复技术;主要目的是能够快速处理大量事务;针对简单事务处理领域,尤其是交换机, 移动通信等。

第三代:通用的主存数据库。

针对传统的商业关系型数据库领域,能够提供更高的性能、通用性以及稳定性;提供不同的接口来处理复杂的SQL语句和满足不同的应用领域;可以应用在计费、电子商务、在线安全领域,几乎包括磁盘数据库的所有应用领域。

五、目前几种常见的通用内存数据库eXtremeDB:eXtremeDB实时数据库是McObject公司的一款特别为实时与嵌入式系统数据管理而设计的数据库,只有50K到130K的开销,速度达到微秒级。

eXtremeDB完全驻留在主内存中,不使用文件系统(包括内存盘)。

eXtremeDB采用了新的磁盘融合技术,将内存拓展到磁盘,将磁盘当做虚拟内存来用,实时性能保持微秒级的同时,数据管理量在32BIT下能达到20G。

Oracle TimesTen:Oracle TimesTen是Oracle从TimesTen公司收购的一个内存优化的关系数据库,它为应用程序提供了实时企业和行业(例如电信、资本市场和国防)所需的即时响应性和非常高的吞吐量。

Oracle TimesTen可作为高速缓存或嵌入式数据库被部署在应用程序层中,它利用标准的SQL 接口对完全位于物理内存中的数据存储区进行操作。

SolidDB:Solid Information Technology 成立于1992 年,全球总部位于加州Cupertino,Solid数据管理平台将基于内存和磁盘的全事务处理数据库引擎、载体级高可用性及强大的数据复制功能紧密地融为一体。

Altibase:ALTIBASE公司从1999年就一直致力于内存数据库软件和其应用的开发,提供高性能和高可用性的软件解决方案。

特别适合通信、网上银行、证券交易、实时应用和嵌入式系统领域。

目前占据80%以上内存数据库市场,可以说是当今数据库软件技术的领导者。

目前Altibase在国内成功案例也比较多,尤其是在电信行业,已经得到了广泛认可。

Sqllite 的介绍,以及几种内存数据库的比较Berkeley DB与Sqlite对比(from )嵌入式数据库无需安装,体积小巧,速度又很快,在很多场合可以替代目前流行的MySQL, SQLServer等大中型数据库。

本文介绍两种嵌入式数据库产品:Berkeley DB和SQLite,并着重讨论它们与Java之间的接口。

通常我们采用各种数据库产品来实现对数据的存储、检索等功能,例如,Oracle,SQL Server,MySQL等等。

这些产品除提供基本的查询,删除,添加等功能外,也提供了很多高级特性,如触发器,存储过程,数据备份恢复,全文检索功能等。

但实际上,很多的应用,仅仅利用到了这些数据库产品的基本特性而已。

而且在一些小型应用上,或者某些特殊场合的应用,比如桌面程序,这些数据库产品就明显有一些臃肿。

在这些情况下,嵌入式数据库的优势就特别明显了。

嵌入式数据库无须独立运行的数据库引擎,它是由程序直接调用相应的API去实现对数据的存取操作。

更直白的讲,嵌入式数据库是一种具备了基本数据库特性的数据文件。

嵌入式数据库与其它数据库产品的区别是,前者是程序驱动式, 而后者是引擎响应式。

嵌入式数据库的一个很重要的特点是它们的体积非常小,编译后的产品也不过几十K。

这不但对桌面程序的数据存储方案是一个很好的选择,也使得它们可以应用到一些移动设备上。

同时,很多嵌入式数据库在性能上也优于其它数据库,所以在高性能的应用上也常见嵌入式数据库的身影。

下面介绍的是两个开放源代码的嵌入式数据库,Berkeley DB和SQLite。

同时侧重介绍如何应用Java连接这两种嵌入式数据库。

一. Berkeley DB1. 简介Berkeley DB是一款健壮的,高速的工业级嵌入式数据库产品,你可以在它的官方主页(见参考链接一)上发现很多知名的公司都采用了这款嵌入式数据库。

Berkeley DB的一个很重要的特点是就是高速存储。

在高流量,高并发的情况下,Berkeley DB要比非嵌入式的数据库表现得更加出色。

所以在一些技术实现上,Berkeley DB被作为大型关系数据库的中间数据缓冲层,用来快速的保存数据,可能会在适当的时刻再导入到大型数据库中,进而应用大型数据库所提供的更为高级的特性。

Berkeley DB虽然是开源的产品,但对某些条件下的商业性应用,却不是免费的,而且价格颇为昂贵。

这些商业条件排除了开源的情况,不发放分布版本的情况,等等。

比如,如果你的程序是开放源代码的或者仅仅应用到单一的网站上,在这种情况下,Berkeley DB是免费的。

2. 获得Java与Berkeley DB的接口Berkeley DB目前的版本是4.1.25,自带了Java接口。

下载的压缩包中包含C和Java语言的源代码和编译配置文件。

在Windows平台,可以用MS Visual C++ 6.0或MS 编译。

相关文档
最新文档