




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于SQLite数据库的家庭网关数据库系统设计 李宏升LIHong-sheng (黄淮学院信息工程学院,驻马店463000) 摘要:本文从体系结构,内部函数,外部接口,索引算法等方面对SQLite进行了改进与优化;针对信息家电特点重新设计了实时数据库的存储方式,利用主动规则库来提高系统的实时性能,并基于SQLite对家庭网关进行了CGI程序设计。 关键词:sqlite;家庭网关;嵌入式linux;内存数据库 :TP311.1:A:1006-4311(xx)26-0069-03 作者简介:李宏升(1973-),男,河南新蔡人,讲师,工学硕士,主要从事互联网与嵌入式应用研究方向。 0引言 在信息家电系统中,要用遥控器对各类信息家电主动控制,并随家庭环境的变化对信息家电进行自动控制,整个系统中存在着大量实时数据的采集和处理需求。目前对数据的处理通常采用基于数据库的方式,所以构建具有实时性能的嵌入式数据库系统是家庭网关设计环节必须要解决的问题。 结合国内外家庭网关研究的现状和进展,如何改进嵌入式实时数据库对信息家电状态信息的采集处理效率;如何优化数据库系统的资源占用,成为家庭网关系统设计的重要环节。 1家庭网关的发展与演进 作为智能家居的大脑,家庭网关的作用至关重要。本文主要针对家庭网关数据库平台进行研究,选择合适的数据库架构,改进、移植相关软件,搭建网关的软件系统,设计网关系统中心主模块和web服务程序,实现嵌入式web服务器的基本功能。 2嵌入式开发环境的选择 要想保证系统能够真正地发挥自身功能,选择合适的操作系统至关重要。现阶段比较成熟的嵌入式系统主要有:WindowsCE、Unix、Linux、QNX等。从家庭网关平台日后的系统升级、维护和功能扩展这些角度出发,本文中的家庭网关平台采用Linux2.6版本作为软件开发平台。 Linux2.6内核拥有更多的新特性:性能方面,采用了新的内核抢占式算法和新的I/O调度算法;稳定性方面,改进了内核加载和导出机制,提高了平台的稳定性和可靠性。设备支持方面,系统内核取消了对大型系统的限制,支持更多的控制器和设备;文件系统方面,扩展了文件的属性,保证了系统的信息安全,增强了PCI总线支持,对USB、蓝牙等外设总线进行功能扩展,满足多种短距离无线传输,方便家庭网关的内部组网。1 3嵌入式网关系统的模块化设计 家庭网关软件系统采用模块化设计,包括系统定制、系统服务、设备模块、控制模块、显示模块、软件开发控制等。其中系统定制模块包括系统移植、内核定制、驱动开发等部分;系统服务模块由系统中心、可移植层、设备管理器、维护管理器、存储系统组成,如图1所示;设备模块主要包括视频模块、Zigbee模块、网络模块等;控制模块主要由web服务器和各种应用服务器组成2。 4SQLite数据库的改进与移植 4.1数据库的选型 家庭网关中的嵌入式实时数据库是为了完成家电状态信息的管理而设计的小型数据库。应具备如下功能:支持多种数据类型;支持创建和删除多个表;支持对记录进行插入删除修改和查询操作;支持表的索引操作;支持触发操作,以满足信息家电之间的统一协作。 基于嵌入式linux系统的数据库非常多,常用的有以下几种: OracleDatabaseLite;DB2Everyplace;BerkeleyDB;Firebird;MySQL;SQLite。本文选取的SQLite数据库系统是一个简单易用、开放源码的轻量级嵌入式数据库管理系统。它具有以下优势:支持ACID事务;不需要安装配置、支持大部分SQL92;数据存储在单一的磁盘文件中;最大支持数据库到2TB;内核精小;数据操作速度快等。 4.2SQLite的应用系统设计 SQLite系统的体系结构包括8个主要模块,如图2所示。 应用程序接口是SQLite的公共接口,通过main.c,table.c,legaey.c,vdbeapi.c程序来实现。词法分析器负责将原始的SQL语句按顺序传送到语法分析器里。语法分析器是一个基于上下文环境的输入语法解释器,采用非终结符析构器的概念,大大降低了出错的几率。通过调用代码生成器,可生成SQL查询所需的虚拟机代码。虚拟机是使用堆栈存储指令来实现处理代码生成器产生代码的虚拟引擎。B-树驱动器通过表和索引中的B-tree创建相应的数据库实例。B-tree模块在磁盘建立1024字节大小的页面缓存,进行读写缓冲,管理数据库文件的读/写锁定的权限。SQLite通过Linux系统的操作系统接口来打开和关闭、删除和创建文件,释放磁盘的缓冲。3 SQLite系统与Linux的外部接口的具体应用集成在一起,由程序调用相应的核心API函数去实现对数据的存取操作。Sqlite3_open()可以打开数据库文件,建立SQLite引擎;sqlite3_exec()对查询结果进行处理;sqlite3_close()用来关闭数据库文件,释放SQLite引擎。 4.3对SQLite存储结构及索引机制的改进 由于SQLite所有数据都保存在设备的Flash中,为了减少FO操作,延长Flash的寿命,对数据的操作都设计为在内存中完成,只在设备启动和修改保存数据时才进行FO操作。将SQLite改进为基于内存的嵌入式关系型数据库,提高数据操作效率,增强实时性能。 4.4优化SQL数据在内存中的存储结构 在内存中采用区段式结构进行内存数据的组织管理,将存储空间逻辑地划分为多个分区。每个分区存储一个关系。区段式数据组织管理机制如图3所示。 为保证数据结构的紧凑性,内存数据库中的关系表按编号登记在分区表中。当有新数据段插入时,在分区表或段表中找到插入点,插入点后的所有表项都往后移动一项;而删除一个表项时,则删除点之后的所有表项都往前移动一项。 为节省内存占用,分区表和段表均采用动态数组结构,具体操作是:创建时都先申请适当大小的表项空间,数据的增加使得区段表不断增长,当表项空间不够时,再申请一定数量的空间。相反,数据的删除操作使得区段表不断缩短,当其尾部出现大量的空表项时,回收空表项占用的内存。4 4.5优化内存数据库的索引机制 为适应智能家居中对实时数据频繁的查找和更新需求,进一步改进高效的索引机制加速操作的执行速度,需优化内存数据库的索引机制。SQLite系统采用是基于改进的Hybrid-HT的H-T索引机制,本文通过优化H-T机制中的哈希函数,通过对哈希表长的控制,分散了键值对记录指针和哈希地址的操作范围,从而高效率利用内存空间,提高查询、修改的操作速度。5 5家庭网关数据库系统的设计 本文构造的嵌入式家庭网关,是以S3C440系列嵌入式微处理器为中心,uCLinux嵌入式操作系统作为家庭网关的底层,移植部分功能模块作为家庭网关硬件平台。信息家电通过IAIDL接口向家庭网关注册,每个家电的注册信息、参数和状态信息都存放在SQLite数据库中,如图4所示。 信息家电接口定义语言(IAIDL)是一种用来定义智能家居网络中信息家电的说明性语言,是对设备资源信息的描述。 以某公司生产的某信息空调为例,其IAIDL描述如下: 美的空调is enumtype=(slow,normal,quick); enumswitch=(on,off); attribute厂家=美的电器公司; attribute功率=1.5P; state温度状态Tempint(29:,); state风速状态fantype(normal,normal); function设置温度voidSTTemp(inintst(20,40): function设置风速voidSTFan(intypeff); function开关voidOnOff(inswitch00); SQLite中家电信息表的生成 编译器对设备IAIDL完成分析扫描后,通过API函数接口生成数据库文件。信息家电启动时,系统会在内存区域生成设备状态表的副本作为设备运行状态表。这些文件不会随着时间的变化而发生改变,真正实时变化是处于运行状态的设备状态信息。 实时监控系统按一定的扫描频率对内存中的设备运行状态表进行扫描,数据采集模块按照设定的频率对外部信号进行采集,经数据处理模块将数据存入内存中的设备运行状态表,获取最新的状态数据,完成对设备状态的实时更新和控制。 信息家电中的黑色家电是供人们娱乐休闲用的,如电视机、VCD、音响等。黑色家电的状态绝大多数情况下不会发生改变,所以设定所有的黑色家电都没有实时状态信息,在内存中不生成设备运行状态表,需要查询时可以从flash中读取。 而白色家电的状态会随着时间的变化而不断变化,数据的实时性要求很高,如空调、电冰箱等,是改善生活环境提高物质生活水平的。白色家电启动后在内存中生成设备运行状态表,可以随时监视到设备状态。 在系统中构建主动规则库对设备的实时状态进行监控,当设备状态变化时对家电进行自动控制,或设备状态异常进行报警,由ECA规则来实现。一旦信息家电出现异常情况,就要进行报警操作。信息家电在满足这些设定的事件时,系统能自动执行规定好的动作。7 在设备运行过程中,数据随着各种设备的运行不断产生,系统将新的状态数据写入内存,实时数据会转储为历史数据。为保证系统的稳定性,系统中的实时数据备份模块负责周期性将内存中设备状态表数据保存到Flash中。当设备运行故障时,可以从历史数据库中进行恢复。 6家庭网关WEB服务器的设计 家庭网关中各种动态信息需要服务器实时创建,服务器程序与客户端浏览器有较强的交互能力。本文采用BOA+CGI应用程序构建WEB服务器。CGI是外部扩展应用程序与Web服务器交互的一个标准接口。Web服务器通过调用CGI程序实现和Web浏览器的交互,处理客户端浏览器输入的数据,从而完成客户端与服务器的交互,实现动态Web技术。8 WEB服务器从SQL查询结果中读取信息,同时把这些信息返回给客户端。CGI应用程序可以使用printf()函数将查询结果以HTML的形式输出到客户端,向客户端返回动态页面,实现用户WEB服务器与数据库SQLite的交互。 总之,整个家庭网关程序设计都以嵌入式数据库实时SQLite为核心,可有效满足家庭网关对信息家电实时数据管理要求。 7结论 本文针对嵌入式设备的实时性特点,结合家庭网关的实际应用需求,对SQLite数据库系统的体系结构、内部函数、外部接口、索引算法等方面进行了改进与优化。提高了系统整体实时性能;完善了数据库的安全性;降低了系统资源占用,良好的匹配了现有ARM架构的家庭网关硬件体系,完全能满足家庭网关对信息家电实时数据管理的要求。 由于自身水平、设备条件有限,本文还有很多需进一步改进的地方,如事务处理的调度和执行策略方面;身份验证、数据加密等安全性研究方面,对报警库,CA库,ECA库的详细设计方面还有待于进一步的充实和完善。 参考文献: 1宋安,习勇,魏急波.基于CLinux的NAT设备的设计与开发J.电子工程师,xx-05-15. 2徐叶,袁敏,李国军.嵌入式Web服务器远程监控系统的设计与实现J.计算机与现代化,xx-02-27. 3王俊,郭书军.嵌入式Web服务器的实现及其CGI应用J.电子设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毛织品牌竞争战略创新驱动工艺考核试卷及答案
- 农药制剂降解产物分离工艺考核试卷及答案
- 塑件模具排气系统改进工艺考核试卷及答案
- 云网技术面试题及答案
- 应用化学面试题库及答案
- 银行中级试题及答案
- 银行运营内控部门面试题及答案
- 银行营销管理试题及答案
- 银行业务知识考试题及答案
- 银行宣传部面试题及答案
- 高中英语-单词3500分类记忆
- JGJT294-2013 高强混凝土强度检测技术规程
- 房产代持协议
- 电路检查记录表
- 设计交底记录表
- 轨道交通先张法预应力U型梁预制施工工法
- 材料力学第4版单辉祖习题答案
- 物流法律法规物流法律法规概述
- 常用机电设备安装与调试课程标准
- 2023年安徽省公安机关警务辅助人员条例训练题库211题及答案
- 华为质量管理评估模型(31个评估要素和评估报告)
评论
0/150
提交评论