为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

SQLITE特性分析

2011-01-07 3页 doc 31KB 13阅读

用户头像

is_203157

暂无简介

举报
SQLITE特性分析SQLITE特性分析 SQLite 是用 C 语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性。SQLite 支持多数 SQL92 标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite 还非常健壮。其创建者保守地估计 SQLite 可以处理每天负担多达 100,00 次点击率的 Web 站点,并且 SQLite 有时候可以处理 10 倍于上述数字的负载。 它支持的SQL包括: ATTACH DATABASE BEGIN TRANSACTION comment COMMIT TRANSAC...
SQLITE特性分析
SQLITE特性 SQLite 是用 C 语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性。SQLite 支持多数 SQL92 标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite 还非常健壮。其创建者保守地估计 SQLite 可以处理每天负担多达 100,00 次点击率的 Web 站点,并且 SQLite 有时候可以处理 10 倍于上述数字的负载。 它支持的SQL包括: ATTACH DATABASE BEGIN TRANSACTION comment COMMIT TRANSACTION COPY CREATE INDEX CREATE TABLE CREATE TRIGGER CREATE VIEW DELETE DETACH DATABASE DROP INDEX DROP TABLE DROP TRIGGER DROP VIEW END TRANSACTION EXPLAIN expression INSERT ON CONFLICT clause PRAGMA REPLACE ROLLBACK TRANSACTION SELECT UPDATE SQLite 内部结构 在内部,SQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。所有 SQL 语句都被编译成易读的、可以在 SQLite 虚拟机中执行的程序集。 SQLite 支持大小高达 2 TB 的数据库,每个数据库完全存储在单个磁盘文件中。这些磁盘文件可以在不同字节顺序的计算机之间移动。这些数据以 B+树(B+tree)数据结构的形式存储在磁盘上。SQLite 根据该文件系统获得其数据库权限。 SQLite 数据类型 SQLite 不支持静态数据类型,而是使用列关系。这意味着它的数据类型不具有列属性,而具有数据本身的属性。当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成列类型。如果不能转换,则该值将作为其本身具有的类型存储。 SQLite 支持 NULL、INTEGER、REAL、TEXT 和 BLOB 数据类型。 由于资源占用少、性能良好和零管理成本,嵌入式数据库有了它的用武之地,它将为那些以前无法提供用作持久数据的后端的数据库的应用程序提供了高效的性能。现在,没有必要使用文本文件来实现持久存储。SQLite 之类的嵌入式数据库的易于使用性可以加快应用程序的开发,并使得小型应用程序能够完全支持复杂的 SQL。这一点对于对于小型设备空间的应用程序来说尤其重要。 ★技术上的优点和特性 SQLite是一个轻量级、跨平台的关系型数据库。既然号称关系型数据库,支持SQL92标准大多数标准(比如视图、事务、触发器等)。 ◇轻量级 SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态库,就可以使用它的全部功能。而且那个动态库的尺寸也挺小,以版本3.6.11为例,Windows下487KB、Linux下347KB。 ◇)零配置、无服务器 SQLite的另外一个特点是绿色:它的核心引擎本身不依赖第三方的软件,使用它也不需要“安装”。所以在部署的时候能够省去不少麻烦。 SQLite在使用前不需要安装设置,不需要进程来启动、停止或配置,不需要管理员去创建新数据库或分配用户权限,在系统崩溃或失电之后自动恢复。 大多数SQL数据库引擎是作为一个单独的服务器进程被执行。访问数据库的程序使用某种内部进程通信(典型的是TCP/IP)与服务器通信,完成 发送请求到服务器和接收查询结果的工作。SQLite不采用这种工作方式。使用SQLite时,访问数据库的程序直接从磁盘上的数据库文件读写,没有中间 的服务器进程 ◇单一文件、简单的访问 所谓的“单一文件”,就是数据库中所有的信息(比如表、视图、触发器、等)都包含在一个文件内。这个文件可以copy到其它目录或其它机器上,也照用不误。 一个SQLite数据库是一个单独的普通磁盘文件,能够被定位在路径层次的任何地方。如果 SQLite能读写磁盘文件,则它也能访问数据库。大多数SOL数据库引擎趋向于把数据存为一个大的文件集合,通常这些文件在一个标准的定位中,只有数据 库引擎本身能访问它 ◇跨平台/可移植性 除了主流操作系统,SQLite还支持了很多冷门的操作系统。比如它对很多嵌入式系统(比如Android、Windows Mobile、Symbin、Palm、VxWorks等)的支持。 ◇内存数据库(in-memory database) SQLite的API不区分当前操作的数据库是在内存还是在文件(对于存储介质是透明的)。所以如果觉得磁盘I/O有可能成为瓶颈的话,可以考虑切换为内存方式。切换的时候,操作SQLite的代码基本不用大改,只要在开始时把文件Load到内存,结束时把内存的数据库Dump回文件就OK了。在这种情况下,可以使用“online backup API”。 ◇可变长度的记录 一般的SQL数据库引擎在表中为每一个记录分配一个固定的磁盘空间数,SQLite只使用一个记录中实际存储信息的磁盘空问数。显然,这会使数据库非常小,同时,由于在磁盘上移动的信息很少,也使数据库很快。 ★技术上的缺点和不足 ◇并发访问的锁机制 SQLite在并发(包括多进程和多线程)读写方面的性能一直不太理想。数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错。 ◇SQL标准支持不全 在它的官方网站上,具体列举了不支持哪些SQL92标准。比如不支持外键约束。 ★编程语言接口 SQLite支持很多种语言的编程接口。这对于我这种喜欢混用多种编程语言的人来说,是很爽的。下面大概介绍一下。 ◇C/C++ 由于SQLite本身是C写的,它自带的API也是C接口的。所以C/C++用起来最直接了。 ◇Java 如果要用Java访问SQLite,可以通过SQLite的JDBC驱动,或者通过专门的SQLite包装库。
/
本文档为【SQLITE特性分析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索