位置:51电子网 » 技术资料 » 嵌入式系统

基于ARM-Linux的SQLite嵌入式数据库的研究

发布时间:2008/8/29 0:00:00 访问次数:565

  引言

  随着嵌入式系统的广泛应用和用户对数据处理和管理需求的不断提高,各种智能设备和数据库技术的紧密结合已经得到了各方面的重视。不久的将来嵌入式数据库将无处不在。纵观目前国际、国内嵌入式数据库的应用情况,目前基于嵌入式数据库应用的市场已经进入加速发展的阶段。

  1 嵌入式数据库

  1.1 嵌入式数据库的设计

  嵌入式数据库系统是指支持某种特定计算模式或移动计算的数据库管理系统,它通常与操作系统和具体应用集成在一起,运行在智能型嵌入式设备或移动设备上。嵌入式数据库的使用是采用程序驱动,即由程序调用相应的api来实现数据的存取。具有体积小巧、快速高效、稳定可靠、可移植性等特点,非常适用于嵌入式环境下的数据管理.。

  嵌入式数据库的主要设计思想如下图1所示,在向上层应用提供标准的数据库接口的同时,摆脱传统数据库仅仅由软件驱动的束缚,根据嵌入式系统的实际情况用soc技术同时实现硬件驱动。软件部分按sql92标准实现sql语句的解析,实现事务管理功能、数据同步机制、数据的备份和恢复,软件部分不关心数据的实际存储,用标准c实现,能同任何嵌入式操作系统内核一同编译,能支持各嵌入式操作系统的安装格式,由数据库硬件驱动专用芯片实现对实际数据的访问功能(存储器读写,i/o通讯,异构数据库接驳)。

  图1 嵌入式数据库驱动结构图

  1.2. 嵌入式数据库sqlite

  sqlite 是d. richard hipp 在2000年开发的一个小型嵌入式数据库。他是完全独立的,不具有外部依赖性,可以较为方便地应用于嵌入式系统中。其源代码完全开放,可以免费用于任何用途,包括商业目的。sqlite 虽然是个极端轻量级的关系数据库,却保留了数据库的大部分特征,他提供了对sql92 标准的大多数支持:支持多表和索引、事务、视图、触发和一系列的用户接口及驱动。其主要特征如下::

  (1) 支持原子的、一致的、独立的和持久的(acid) 事务特性,即使系统崩溃和掉电。

  (2) 零配置(zero2configuration),无需安装和管理。

  (3) 一个完整的数据库存储在单一磁盘文件中。

  (4) 数据库文件可以在不同字节顺序的机器间自由共享。

  (5) 支持数据库大小至2 tb。

  (6) 字符串和二进制大对象(blobs) 的大小仅被有效内存限制。

  (7) 源码体积小,编译后低于250 kb。

  (8) 大部分的操作比关系型数据库引擎要快。

  (9) 简单易用的api。

  sqlite 由于小、快、简单、可靠,而且作者完全放弃版权,从他一发布出来,便深受欢迎。对于嵌人式环境,管理、执行、维护的简单化比企业数据库引擎提供的许多复杂应用更重要,因此sqlite 数据库是一个很好的选择。

  2 sqlite 内部结构及开发技术

  2. 1 sqlite 内部结构

  sqlite 采用模块化的设计,主要由4个部分组成:内核(core)、sql编译器( sql compiler)、后端(backend)以及附件(accessories)。内部结构如图2所示。

  图2  sqlite 的内部结构

  sqlite 的接口是一些已经编写好的c库,即使使用不同语言的api,在底层仍然使用c 库执行。sql语句通过接口进入到高效的sql编译器,由标记处理器( tokeni2zer)分解成柠檬分析器(par ser) 可以识别的各个标志符,然后由分析器重新组合标志符并调用代码生成器(code generator) 生成虚拟机器码,交由虚拟机( virtual machine)去执行,最终完成sql 语句指定的任务。虚拟机是sqlite 内部结构的核心,不仅完成与数据操作相关的全部操作,而且还是客户和存储之间信息进行交换的中间单元。数据库按照b树(b2t ree) 的形式存储在磁盘上,通过可调整的页面缓冲(pager) 获得对数据的快速查找和存储。为了方便移植,sqlite 使用一个抽象层接口(os in2terface) 与不同操作系统进行对接。

  2. 2 sqlite 开发技术

  sqlite 本身提供了c 语言的api 接口,使得对数据库的操作十分简单,主要是对3个api 函数的调用。

  (1) 打开数据库

  int sqlite3 open (

  const char 3 filename , / 3 数据库文件名(u tf28) 3 /

  sqlite3 3 3 ppdb   / 3 输出sqlite 数据库句柄3 /

  ) ;

  (2) 执行sql

  int sqlite3 exec (

  sqlite3 3 ,      / 3 已经打开的数据库句柄3 /

  const char 3 sql ,   / 3 要执行的sql 语句3 /

  sqlite callback ,   / 3 回调函数3 /

  void 3 ,      / 3 回调函数的第一个参数3 /

  char 3 3

  引言

  随着嵌入式系统的广泛应用和用户对数据处理和管理需求的不断提高,各种智能设备和数据库技术的紧密结合已经得到了各方面的重视。不久的将来嵌入式数据库将无处不在。纵观目前国际、国内嵌入式数据库的应用情况,目前基于嵌入式数据库应用的市场已经进入加速发展的阶段。

  1 嵌入式数据库

  1.1 嵌入式数据库的设计

  嵌入式数据库系统是指支持某种特定计算模式或移动计算的数据库管理系统,它通常与操作系统和具体应用集成在一起,运行在智能型嵌入式设备或移动设备上。嵌入式数据库的使用是采用程序驱动,即由程序调用相应的api来实现数据的存取。具有体积小巧、快速高效、稳定可靠、可移植性等特点,非常适用于嵌入式环境下的数据管理.。

  嵌入式数据库的主要设计思想如下图1所示,在向上层应用提供标准的数据库接口的同时,摆脱传统数据库仅仅由软件驱动的束缚,根据嵌入式系统的实际情况用soc技术同时实现硬件驱动。软件部分按sql92标准实现sql语句的解析,实现事务管理功能、数据同步机制、数据的备份和恢复,软件部分不关心数据的实际存储,用标准c实现,能同任何嵌入式操作系统内核一同编译,能支持各嵌入式操作系统的安装格式,由数据库硬件驱动专用芯片实现对实际数据的访问功能(存储器读写,i/o通讯,异构数据库接驳)。

  图1 嵌入式数据库驱动结构图

  1.2. 嵌入式数据库sqlite

  sqlite 是d. richard hipp 在2000年开发的一个小型嵌入式数据库。他是完全独立的,不具有外部依赖性,可以较为方便地应用于嵌入式系统中。其源代码完全开放,可以免费用于任何用途,包括商业目的。sqlite 虽然是个极端轻量级的关系数据库,却保留了数据库的大部分特征,他提供了对sql92 标准的大多数支持:支持多表和索引、事务、视图、触发和一系列的用户接口及驱动。其主要特征如下::

  (1) 支持原子的、一致的、独立的和持久的(acid) 事务特性,即使系统崩溃和掉电。

  (2) 零配置(zero2configuration),无需安装和管理。

  (3) 一个完整的数据库存储在单一磁盘文件中。

  (4) 数据库文件可以在不同字节顺序的机器间自由共享。

  (5) 支持数据库大小至2 tb。

  (6) 字符串和二进制大对象(blobs) 的大小仅被有效内存限制。

  (7) 源码体积小,编译后低于250 kb。

  (8) 大部分的操作比关系型数据库引擎要快。

  (9) 简单易用的api。

  sqlite 由于小、快、简单、可靠,而且作者完全放弃版权,从他一发布出来,便深受欢迎。对于嵌人式环境,管理、执行、维护的简单化比企业数据库引擎提供的许多复杂应用更重要,因此sqlite 数据库是一个很好的选择。

  2 sqlite 内部结构及开发技术

  2. 1 sqlite 内部结构

  sqlite 采用模块化的设计,主要由4个部分组成:内核(core)、sql编译器( sql compiler)、后端(backend)以及附件(accessories)。内部结构如图2所示。

  图2  sqlite 的内部结构

  sqlite 的接口是一些已经编写好的c库,即使使用不同语言的api,在底层仍然使用c 库执行。sql语句通过接口进入到高效的sql编译器,由标记处理器( tokeni2zer)分解成柠檬分析器(par ser) 可以识别的各个标志符,然后由分析器重新组合标志符并调用代码生成器(code generator) 生成虚拟机器码,交由虚拟机( virtual machine)去执行,最终完成sql 语句指定的任务。虚拟机是sqlite 内部结构的核心,不仅完成与数据操作相关的全部操作,而且还是客户和存储之间信息进行交换的中间单元。数据库按照b树(b2t ree) 的形式存储在磁盘上,通过可调整的页面缓冲(pager) 获得对数据的快速查找和存储。为了方便移植,sqlite 使用一个抽象层接口(os in2terface) 与不同操作系统进行对接。

  2. 2 sqlite 开发技术

  sqlite 本身提供了c 语言的api 接口,使得对数据库的操作十分简单,主要是对3个api 函数的调用。

  (1) 打开数据库

  int sqlite3 open (

  const char 3 filename , / 3 数据库文件名(u tf28) 3 /

  sqlite3 3 3 ppdb   / 3 输出sqlite 数据库句柄3 /

  ) ;

  (2) 执行sql

  int sqlite3 exec (

  sqlite3 3 ,      / 3 已经打开的数据库句柄3 /

  const char 3 sql ,   / 3 要执行的sql 语句3 /

  sqlite callback ,   / 3 回调函数3 /

  void 3 ,      / 3 回调函数的第一个参数3 /

  char 3 3

相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!