嵌入式数据库 SQLite

SQLite D.Richard Hipp 2000 年开发的一个小型嵌入式数据库。它是完全独立的,不具有外部依赖性。

 

与常用的数据库管理系统( MySQL Oracle )有所不同,在 SQLite 中并没有数据库服务器的概念。应用程序不需要事先同数据库服务建立起网络连接,而是通过内嵌在程序中的 SQLite 函数库来完成对数据的保存、查询、修改和删除等操作。所有与数据库相关的操作都由函数库负责统一完成,这样无论是系统中的多个进程,或者是相同进程中的多个线程,都可以在同一时间调用访问数据库的函数;而底层的数据加锁、事务日志和存储管理等都在 SQLite 函数库中实现。它们对应用程序来讲是完全透明的。

 

SQLite 不能用标准的 SQL语句对数据库操作,对它的操作要调用专用的 API 实现。这些 API 提供了查询、插入、删除等功能。比如 com.sleepycat.db.Db 类代表数据库对象。 Db 类的 put( )方法完成的是插入功能; get( )方法完成的是读出数据的功能;com.sleepycat.db.Dbc Berkeley DB 的游标类,提供了遍历数据库记录的功能。

 

SQLite 虽然是个极端轻量级的关系数据库,却保留了数据库的大部分特征, 提供了对 SQL92 标准的大多数支持:支持多表和索引、事务、视图、触发和一系列的用户接口及驱动;支持原子的、一致的、独立的和持久的(ACID)事务特性。零配置(Zero-configuration),即无需安装和管理。一个完整的数据库存储在单一磁盘文件中。数据库文件可以在不同字节顺序的机器间自由共享。支持数据库大小至 2 TB。字符串和二进制大对象(BLOBs)的大小仅被有效内存限制。源码体积小,编译后低于 250 kB。部分的操作比关系型数据库引擎要快。简单易用的 API

 

SQLite本身提供了 C语言的 API 接口,使得对数据库的操作十分简单,主要是对 3 API 函数的调用。SQLite 的接口是一些已经编写好的 C库,即使使用不同语言的 API,在底层仍然使用 C库执行。SQL语句通过接口进入到高效的 SQL编译器,由标记处理器(tokenizer)分解成查询分析器(parser)可以识别的各个标志符,然后由分析器重新组合标志符并调用代码生成器(codegeneratot)生成虚拟机器码,交由虚拟机(virtual machine)去执行,最终完成 SQL语句指定的任务。虚拟机是 SQLite内部结构的核心,不仅完成与数据操作相关的全部操作,而且还是客户和存储之间信息进行交换的中间单元。数据库按照 B(B- tree)的形式存储在磁盘上,通过可调整的页面缓冲获得对数据的快速查找和存储。为了方便移植,SQLite 使用一个抽象层接口(OS interface)与不同操作系统进行对接。

posted @ 2010-04-03 11:07  quietwalk  阅读(830)  评论(0编辑  收藏  举报