Android进阶#(5/12)独特高效的数据存储——SQLite数据库_SQLite3基本内容
来源:互联网 发布:空间大师软件 编辑:程序博客网 时间:2024/05/22 01:31
(5/12)独特高效的数据存储——SQLite数据库_SQLite3基本内容
- SQLite是一个遵循ACID【注】的关系数据库管理系统。它包含在一个很小的C程序库中。
- SQLite不是一个C/S结构的数据引擎,而是被集成在用户程序中。
- SQLite实现了大多数SQL标准,使用动态的、弱类型的SQL语法。
- SQLite可能是最广泛部署的数据库引擎,因为它正在被一些流行的浏览器、操作系统、嵌入式系统所使用。
- 对于Android应用开发来说,数据库模块恰好是最难以维护的地方之一。
- 深入了解SQLite数据库对于Android应用开发也是非常必要的。
【注】ACID,指数据库事务正确执行的四个基本要素的缩写。包含:
- 原子性(Atomicity)、
- 一致性(Consistency)、
- 隔离性(Isolation)、
- 持久性(Durability)。
一个支持事务(Transaction)的数据库,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
SQLite3基本介绍不像常见的客户端/服务器结构数据库管理系统,SQLite引擎不是一个应用程序与之通信的独立进程。SQLite库链接到程序中,并成为应用的一部分。它的主要优点:
- 零配置
- 储存在单一磁盘文件中的一个完整的数据库
- 数据库文件可以在不同字节顺序的机器间自由共享
- 支持数据库大小至2TB
- 足够小,全部源代码大致3万行C代码,250KB
- 比目前流行的大多数数据库对数据的操作要快
- 开源
采用模块化设计,8个独立的模块构成,组成3个主要子系统:这些模块被分割为两个部分,分别为前端解析系统和后端引擎。SQLite前端解析系统可分为3个模块
- 词法分析器
- 语法分析器
- 代码生成器
截了几张图能说明其中关系:实用工具(Utilities)
内存分配和字符串比较函数位于util.c中。语法分析器使用的符号表用Hash表来维护,其实现位于hash.c中。源文件utf.c包含Unicode转换子程序。SQLite有自己的printf()实现(带一些扩展功能),在printf.c中,还有自己的随机数生成器,在random.c中。测试代码(Test Code)
如果你计算回归测试脚本,超过一半的SQLite代码将被测试。主要代码文件中有许多assert()语句。另外,源文件test1.c通过test5.c和md5.c实现只用于测试目的的一些扩展。os_test.c后端接口用来模拟断电,以验证页面高速缓存的崩溃恢复机制。SQLite Version3.3.6源代码文件结构
文件名称大小byte备注APImain.c35414SQLite Library的大部分接口 legacy.c3734sqlite3_exec的实现 table.c5464the sqlite3_get_table() and sqlite3_free_table()的实现,它们是sqlite3_exec的包装 preprare.c17983主要实现sqlite3_prepare() 分词器部分(Tokenizer)tokenize.c14495分词器的实现语法分析器部分(Parser)parser.c116917分析器的实现,由Lemon实现 parser.h6847分析器内部定义的关键字 代码生成器(Code Generator)update.c23878处理UPDATTE语句 delete.c21978处理DELETE语句 insert.c62026处理INSERT语句 trigger.c29065处理TRIGGER语句 attach.c15941处理ATTACHT 和DEATTACH语句 select.c112084处理SELECT语句 where.c75826处理WHERE语句 vacuum.c11005处理VACUUM语句 pragma.c34289处理PRAGMA命令 expr.c73963处理SQL语句中的表达式 auth.c7496主要实现sqlite3_set_authorizer() analyze.c13149实现ANALYZE命令 alter.c18414实现ALTER TABLE功能 build.c104052处理以下语法:CREATE TABLE, DROP TABLE, CREATE INDEX,DROP INDEX,creating ID lists,BEGIN TRANSACTION,COMMIT,ROLLBACK func.c34335实现SQL语句的函数语句 date.c24031与日期和时间转换有关的函数 虚拟机(Virtual Machine)vdbeapi.c23300虚拟机提供上层模块调用的API实现部分 vdbe.c143552虚拟机的主要实现部分 vdbe.h5309定义了VDBE的接口,VdbeOp结构体(代表一条指令) vdbeaux.c58741Vdbe.h的接口的实现 vdbeInt.h17595Vdbe.c的私有头文件,定义了VDBE常用的数据结构:Cursor——虚拟机中使用的游标, Mem——vdbe在内部把所有的SQL值当作一个Mem数据结构来处理,Vdbe——虚拟机数据结构 vdbemem.c26375操作”Mem”数据结构的函数 vdbefifo.c2927 B-Tree部分btree.h 5260头文件,定义了B-tree提供的操作接口 btree.c 215570B-Tree部分的主要实现,并定义了以下数据结构:Btree——Btree handler,BtCursor——使用的游标, BtLock——锁, BtShared——包含了一个打开的数据库的所有信息,MemPage——文件在内存存放在该数据结构中,aCellInfo OS Interface部分os.h18355定义了为上层模块提供的操作函数,并定义了以下数据结构: OsFile——描述一个文件 IoMethod——OsFile所支持的操作函数(对所有架构都适用的OS Interface) os.c2866对IoMethod中的函数的包装 os_win.c42975Windows平台下的OS Interface os_unix.c60831Unix平台下的OS Interface os_os2.c28451OS2平台下的OS Interface 其它部分utf.c20891与UTF编码有关的函数 util.c43575一些实用函数,比如: sqlite3Malloc(),sqlite3FreeX() sqlite3.h63873SQLite的头文件,定义了提供给应用使用的API和数据结构。 sqliteInt.h78886定义了SQLite内部使用的接口和数据结构 printf.c29556主要实现与printf有关的函数 random.c3078随机数生成 hash.c11896SQLite使用的hash表 hash.h4033Hash 表头文件 标签: SQLite, 数据库, 嵌入式
阅读全文
1 0
- Android进阶#(5/12)独特高效的数据存储——SQLite数据库_SQLite3基本内容
- Android进阶#(5/12)独特高效的数据存储——SQLite数据库_Android中的数据库开发
- Android进阶#(5/12)独特高效的数据存储——SQLite数据库_SQLite中的SQL语句
- Android进阶#(5/12)独特高效的数据存储——SQLite数据库_数据库框架ActiveAndroid的使用与基本原理
- Android——数据库sqlite存储数据
- Android数据存储—使用SQLite数据库
- Android数据存储—使用SQLite数据库
- Android中数据存储——SQLite数据库存储数据
- Android数据存储——SQLite数据库(模板)
- Android数据存储(SqLite数据库存储)
- Android数据存储——SQLite数据库存储
- Android中数据的存储方式(二)—SQLite数据库
- Android的数据存储--SQLite数据库(一)
- 数据存储——SQLite 数据库存储
- android数据存储—SQLite
- Android 数据存储操作(3)——SQLite数据库
- Android——数据存储之SQLite数据库
- Android数据存储之——SQLite数据库操作
- android重启APP
- HashMap,HashSet,LinkedHashSet,LinkedHashMap,ArrayList 原理
- 每天一个linux命令(38):cal 命令
- 例2-24 将单位阶跃序列u(n)分解为偶分量和奇分量
- wampServer多项目配置
- Android进阶#(5/12)独特高效的数据存储——SQLite数据库_SQLite3基本内容
- JavaScript学习练习程序DOM——爱好选择
- Masnory 使用
- Cav UVA
- C++中的智能指针
- Atom activate-power-mode 去掉右上角的提示
- POJ 有关图论的题目
- 【Java】CLH 自旋锁
- 每天一个linux命令(39):grep 命令