嵌入式数据库典型技术SQLite和BerkeleyDB的研究万玛宁.docx
《嵌入式数据库典型技术SQLite和BerkeleyDB的研究万玛宁.docx》由会员分享,可在线阅读,更多相关《嵌入式数据库典型技术SQLite和BerkeleyDB的研究万玛宁.docx(50页珍藏版)》请在冰豆网上搜索。
![嵌入式数据库典型技术SQLite和BerkeleyDB的研究万玛宁.docx](https://file1.bdocx.com/fileroot1/2023-7/22/acaf4b57-428c-46c4-bc85-5286a74e1400/acaf4b57-428c-46c4-bc85-5286a74e14001.gif)
嵌入式数据库典型技术SQLite和BerkeleyDB的研究万玛宁
嵌入式数据库典型技术SQLite和BerkeleyDB的研究
首都师范大学
万玛宁关永韩相军
Wan,ManingGuan,YongHan,Xiangjun
邮局订阅号
!
82-946360元/年
技
术
创
新
上更类似关系型数据库的产品使用
!
非常方便
"
这也就
使得那些曾经有过
"#
机数据库经验的人
#
对
$%&’()
的学习变得易如反掌
"
表
*$%&’()
与
+),-).)/0+
的异同
此外
$$%&’()
也有
1"2
的概念
$
而且极其易于使
用
!
只需要三个用来执行
$%&
和获得数据的函数
%
它
还是可以扩展的
!
允许程序员自定义函数
$
然后以
34..!
543-
的形式集合进去
""
语言
1"2
是脚本接口的基础
!
如已经发布的
673.
接口
8"
开放源码团体已经扩展了众
多的客户接口
&
适配器
&
驱动等
9
这就使得其他语言对
$%&’()
的使用也成为可能
"
+),-).)/0+
不是关系型的数据库
$
不能应用标准
的
$%&
语句对数据库操作
$
对它的操作要调用专用的
1"2
实现
"
这些
1"2
提供了查询
&
插入
&
删除等功能
"
使
用
+),-).)/0+
提供的函数来进行数据库的访问和管
理并不复杂
"
在大多数场合下
$
只需按照统一的接口
标准进行调用就可以完成最基本的操作
"
:
&
存储方式及模式
$%&’()
只提供了
+(,))
存储数据的模式
"
对二进
制数据
$$%&’()
不能直接保存
’
但可以先将二进制的数
据转换成
1$;22
编码
$
然后再保存
"+4<)=>
编码机制
是最常见的把二进制数据转换成
1$;22
编码的手段
"
在
$%&’()
的
;
语言代码
)?
3@A)B3
中
$
提供了
+4<)=>
编码的功能
"
+),-).)/0+
对任何存入的数据都是按原样直接
存储到数据文件中去
$
无论其是二进制数据还是
1$;22
或
C?
’3@A)
等编码的文本
"+),-).)/0+
提供了
四种存储数据的模式
!
+(,))&D4和
G)3?
@"
在
打开数据库的时候
$
要指定一种存储模式
"
对于以上各种存储模式的具体定义
&
优缺点
&
及
适用范围
$
由于篇幅有限
$
在此就不过多叙述
$
如有需
要可参阅相关资料
"
H&
数据类型
$%&’()
最大的特点在于其数据类型为无数据类型
6(/I).)<
)<<8"
这意味着可以保存任何类型的数据到所
想要保存的任何表的任何列中
$
无论这列声明的数据
类型是什么
"
虽然在生成表结构的时候
$
要声明每个
域的数据类型
$
但
$%&’()
并不做任何检查
"
开发人员
要靠自己的程序来控制输入与读出数据的类型
"
这里
有一个例外
$
就是当主键为整型值时
$
如果要插入一
个非整型值时会产生异常
"
虽然
$$%&’()
允许忽略数据类型
$
但是
$
仍然建议
在
;,)4()745.)
语句中指定数据类型
$
因为数据类型
有利于增强程序的可读性
"
另外
$
虽然在插入或读出
数据的时候是不区分类型的
$
但在比较的时候
$
不同
数据类型是有区别的
"
在
+),-).)/0+
中关键字
6-)/8
和数据
6A4(48
是用来
进行数据库管理的基础
$
由这两者构成的
-)/JA4(4
对
$
组成了数据库中的一个基本结构单元
"
通过使用这种
方式
$
用
1"2
函数访问数据库时
$
只需提供关键字就
能够访问到相应的数据
"
关键字和数据在
+),-).)/0+
中都是用一个名为
0+7
的简单结构来表示的
$
它的作
用主要是保存相应的内存地址及其长度
"
!
应
用
$%&’()
嵌入式数据库提供了以源码发布的方式
9
要在众多的硬件平台进行移植
9
可以根据不同平台对
源码进行交叉编译来实现
"
编译主要有以下几个步骤
K
*&
到
E((IKJJLLLB的
3O<
中下载最新的源
代码包
9
解压后将生成
目录
9
另外新建并转到一
个与
目录平行的同级目录
9
如
P4-)
目录
"
Q&
用
()3E@R"17D)
命令查看
"17D
中是否已经包
含交叉编译工具
4,PS.’?
FTSN33%
U&
为了在
1GVS&’?
FT
下能正常运行
需要
对
(BE
作一定的修改
9
以确保
5(,))6#
树
8
有正确的变量大小
9
如
(I(,)
和
(3E4,)%
不同体系结构
的
&’?
FT9
如
WX=
和
1GV9
会有些差别
%
对于
1GVS
&’?
FT
可以找到如下部分
K
Y’Z?
A)Z2[7"7G\7]"^
Y’Z$%&27^\"7G\$_‘‘>
YA)Z’?
)2[7"7G\7]"^’?
(
Y).<)
YA)Z’?
)2[7"7G\7]"^.@?
N.@?
N
Y)?
A’Z
在上面的代码前加上一句
YA)Z’?
)$%&27^\"7G\$_>
这样后面的
((/I)A)Z2[7"7G\7]"^I(,a)
就是定
义的
(’?
()
类型
$
而不是
(.@?
N.@?
N)%
>&
使用
3@?
Z’NF,)
进行一些配置
%
修改
目录
下的
3@?
Z’NF,)9
让
3@?
Z’NF,)
不去检查交叉编译环境
%
由
于篇幅有限不再详述
%
b&
修改
V4-)Z’.)
文件
%
将代码行
+;;‘4,PS.’?
FTS
N33SNSc:
改成
+;;‘N33SNSc:
%
另外
9
一般是以静态链
接的形式将
放到
1GVS&’?
FT
的硬件板上运行
的
9
所以继续修改
V4-)Z’.)9
找到标记为
6
见第
:
d:
页
8
SQLiteBerkeleyDB
SQL
_
__
____
____
__
___
_
!
"#$
%&
’()*
C_
+
-.ASCII/
Btree
01
2ARM/Linux3
SPARC/Solaris45
6789
:
;
<
=>
:
(
C?
Java_
+
@A__
Btree?
Hash?
QueueBRecno
+
UNIX/POSIXsystems?
Win32CDE__
WinCE?
VxWorksF
:
GH
I
>J
:
’
嵌入式数据库应用
*
变频器与软启动器应用200例
+eU中文核心期刊
!
微计算机信息
"
(嵌入式与SOC)2006年第22卷第1-2期
360元/年邮局订阅号
#
82-946!
!
!
的一种强有力的嵌入式关系数据库
管理体制
$
虽然功能较
!
"#$"%"&’!
稍显逊色
%
但它简单易学
&
速度较
快
%
同时提供了丰富的数据库接口
%
提供了对
()*+,
的大多数支持
#
支
持多表和索引
&
事务
&
视图
&
触发和
一系列的用户接口及驱动
$
()*-."
的体系结构大体上可以
分成八个主要的子系统
%
如图
/
所
示
$
对数据库进行的各种操作都是
按照此顺序
%
逐一执行的
$
顶层是标
记处理器
’.0$"1-2"(
和分析器
’34#5!
"#($()*-."
有自己高度优化的代码
生成器
%
可以快速
&
高效地生产出代
码
$
底部是经过优化的
!
树
%
这样
有助于运行在可调整的页面缓冲上
时
%
对磁盘的查找降低到最小
$
再往
下是页面高速缓存
%
它作用在
6(
的抽象层之上
%
这样的体系结构使数据库的可移植性
变为可能
$
该体系结构的核心是虚拟数据库引擎
’7’89($
7:
89
完成与数据操作相关的全部任务
%
并且是客户
和存储之间信息交换的中间单元
$
从各个角度分析
%
它都是
()*-."
的核心
$
当
()*
语句被分析后
%7:
89
便开始工作
$
代码生成器将分析树翻译成一个袖珍程
序
%
随后这些袖珍程序又被组合成
7:
89
的虚拟机器
语言表示的一系列指令
$
如此反复
%7:
89
执行每条指
令
%
最终完成
()*
语句指定的查询要求
$
()*-."
有以下特性
#
支持
;<=:
事务
&
零配置
&
无
需安装和管理配置
&
存储在单一磁盘文件中的一个完
整的数据库
&
数据库文件可以在不同字节顺序的机器
间自由共享
&
支持数据库大小至
>8&
足够小
&
全部源
码大致
?
万行
<
代码
%,@AB8&
比目前流行的大多数据
库运行速度快
%
提供了对事务功能和并发处理的支
持
&
应用
>#4154C.-01
既保证了数据的完整性
%
也会提
高运行速度
%
因为多条语句一起提交给数据库的速度
会比逐一提交的方式更快
&
独立
&
没有额外依赖
$
!
"#$%#’("
8"#$"%"&’8
是由
5%""3&C4.50D.E4#"
开发的轻量
级嵌入式数据库
%
它不仅适用于嵌入式系统
%
而且可
以直接连接到应用程序内部
%
和应用程序运行在同一
地址空间
$
传统的数据库一般作为独立服务器工作
%
而
8"#$"%"&’8
是软件开发库
%
开发者将它嵌入到应
用程序中
%
应用程序本身就是一个服务器
%
而只是利
用嵌入式数据库开发来实现定制的数据库逻辑
%
避免
了与应用服务器进程间通信的开销
%
因此
8"#$"%"&
’8
具有较高的运行效率
%
适用于资源受限的嵌入式
系统
$
一般而言
%8"#$"%"&’8
数据库系统可以大致分为
五个子系统
%
如图
所示
$
/&
存取管理子系统
’;CC"55F".G0H5(
该子系统为创建和访问数据库文件提供基本的
支持
$
在没有事务管理的情况下
%
该子系统中的模块
可单独使用
%
为应用程序提供快速高效的数据存取服
务
$
&
内存池管理子系统
’F"I0#&J00%(
该子系统就是
8"#$"%"&:
8
所使用的通用共享内
存缓冲区
%
该子系统可以被应用程序单独使用
$
?
&
事务子系统
’>#4154C.-01(
该子系统为
8"#$"$"&:
8
提供事务管理功能
%
保
证操作的原则性
&
一致性和孤立性
$
事务子系统适用
于对需要事务保证的数据进行修改的场合
$
K&
锁子系统
’*0C$-1L(
该子系统提供进程之间以及进程内部的并发管
理机制
%
为系统提供多用户读取和单用户修改同一对
象的共享控制
$
该子系统可以被应用程序单独使用
$
@&
日志子系统
’*0LL-1L(
该子系统采用的是先写日志的策略
%
支持事务子
系统进行数据恢复
%
保证数据一致性
$
)*+,-.#与
"#$%#’("的
异同
通过上面的一些介绍
%
也许会对
()*-."
和
!
"#$"!
%"&:
!
有了一定的了解
$
从目前的趋势看
%
这两款嵌
入式数据库有着旺盛的生命力
%
较好的应用领域及发
展空间
$
笔者翻阅了大量的资料
%
从各个角度
%
对它们
的异同进行了多方面
%
多层次的比较
%
如表
/
所示
$
通过此表我们可以较为直观地看到
%()*-."
和
!
"#$"%"&:
!
在数据库类型
&
开发语言
&
存储方式
&
模式
等方面有着较大的差异
$
下面笔者就对其中某些重要
方面进行相对详细的论述
#
/&
数据库类型
()*-."
基于关系数据库模式
%
支持绝大多数标准
的
()*+,
语句
M
在很大程度上实现了
;N(=()*+,
标
准
%
特别是支持视图
&
触发器
&
事务
%
支持嵌套
()*$
它
通过
()*
编译器
O()*P0I3%-"#Q
来实现
()*
语言对数
据库进行操作
%
采用单文件存放数据库
$
在操作语句
_
B-___
____
____
__SQLite_!
______________
!
现场总线技术应用200例
"
嵌入式数据库应用
+,邮局订阅号
!
82-946360元/年
技
术
创
新中文核心期刊
!
微计算机信息
"
(嵌入式与SOC)2006年第22卷第1-2期
360元/年邮局订阅号
#
82-946!
!
!
《
!
"#
技术应用
$%%
例》
对测量的原始温度信号进行第一次估值滤波
$
滤
波器为
!
"#$
得到的滤波结果如图三所示
%
对滤波后的数据
再次滤波
$
滤波器仍然为
%"&$
得到的滤波结果如图四所示
%
由式
&""’
可知
$
优效估计
!
!
"
的均方误差是测量噪
声
#
"
的均方误差的
"’$
倍
%
所以
$!
!
"
中噪声的功率是
#
"
功率的
"’$
倍
%
对比图二和图三可以发现
$
经过第一
次估值滤波后的信号中的噪声大为减少
(
在对比图三
和图四
$
可以发现
$
由于第二次滤波的缘故
$
图四中的
噪声进一步减少
%
!
小
结
本文用最大似然估计理论证明了
$
使用一种低通
估值滤波器
$
可以有效地减小信号中的噪声干扰
$
提
高信号的信噪比
%
然而
$
信号性能的提高
$
需要较高的
采样频率
%
参考文献
(")
张贤达
*
著
$
现代信号处理
$
清华大学出版社
$+,,+
年
",
月第
+
版
(+)
王丽明
$
何海江
-
在
-./0
中激活基于
123
的
241
数据存取定制接口
)5*&
微计算机信息
$+,,6*’#$()*’
作者简介
#
柳贵东
&"7&6+’$
男
$
河北省石家庄市人
$
中国科学院自动化研究所博士研究生
$
研究方向
#
控
制理论与控制工程
%89:
;<=<;>?
>;@AB?
"7&6CD;B:
-EA9-EB-
&"###$#
北京中国科学院自动化研究所复杂系统与
智能科学实验室
’
柳贵东郁文生
%&’()*’+)*,)-.)/01234,5+2/5’6786+2119:
26;2
4;926;2<865+9+=+2)->=+)/’+9)6<.?
96252>;’72/,
)-4;926;25<"###$#@&9=B=26:
%
投稿日期
=+,,6-#-+#$%
修稿日期
=+,,6-&-#$
%
接第
7F
页
$DG<;H8=
的代码段
*
将其中的
<;IDG<;H8-<:
改成
-
<;ID’<;IDG<;H8-:
%
做完上述修改
*
用
9:
J8
生成
DG<;H8,<;I)
DG<;H8-:
<;IDG<;H8-DA%
为了减小执行文件大小可以用
DHK;L
处理
*
去掉其中的调试信息
%
#,
在
MN3
板上运行
DG<;H8%
将
DG<;H8
拷贝到
MN3
板上
*
方法很多
*
需要根据具体的情况来选择
%
如
OHL,
E9P@OHL,Q?
8H
等
%
将
DG<;H8
下载到
MN3
板的
’H9L
目录
*
因为此目录是可写的
%
修改权限并运行
=
ER9A@SQTDG<;H8
-’DG<;H8H8DH-DG<;H8
会出现
!
!
!
!
!
DG<;H8U
如果一切正常
$
现在
DG<;H8
已经在
MN3PV;B>T
下
跑了起来
$
然后就可以基于此进行下一步的应用开发
了
%
D结
语
嵌入式数据库
WXV;H8
和
Y8KJ8<8Z[Y$
在体积上
功能上
运行速度及难易程度都存在着或多或少的异
同
%
但它们都有能够充分适应硬件的能力
$
能很好地
适应嵌入式系统的需要
%
就笔者来看
$WXV;H8
功能虽不
及
Y8KJ8<8Z[Y
强大
*
但它的设计思想是小型
快速和
最小化的管理
%
这就使得
WXV;H8
在大小和功能之间找
到了一个理想的平衡点
*
而且完全的开源代码使其可
以称得上是理想的
-
嵌入式数据库
.%
当然在具体的嵌
入式应用中可以根据具体情况选择应用
%
参考文献
=
(")RHHL=’’QQQ-DG<;H8-AK?
$WXV;H8
的官方主页
(+)
解季萍
-
基于中间件的远程教育教学资源数据库系统模型研究
)5*&
微
计算机信息
$+,,6*\=+++P++\
作者简介
=
万玛宁
$
女
$"7]"
年
7
月生
$
籍贯北京
$
汉
族
$
首都师范大学信息工程学院计算机应用技术专业
硕士研究生
%
研究方向
#
嵌入式技术与应用
%
邮箱
#
Q:
B9:
B;B?
CD;B:
-EA9-
关永
$
男
$"7##
年生
$
内蒙古人
$
首都师范大学信息工程学院
$
副教授
%
研究方向
#
数字
信号处理
嵌入式系统
%
邮箱
#?
TZ"#7CD;B:
-EA9-
韩相
军
$
男
$"7&F
年生
$
汉族
$
河南人
$
首都师范大学信息工
程学院
$
硕士研究生
$
研究方向为嵌入式系统
%/9:
;<=
T;:
B?
^>BR:
BCD;B:
-EA9
>=+?
)*96+*)7=;+9)6E_:
B3:
B;B?
$O89:
<8$IAKB;B
"7]"$.:
H;‘84<:
E8#Y8;^;B?
$HR8a:
BB:
H;AB:
<;HZ$4ADH)
?
K:
@>:
H8AO3:
DH8KAO/B?
;B88K;B?
$1:
L;H:
<.AK9:
‘8KD;HZ-3:
^AK;B89I8@@8@H8ERBAZ:
B@:
LL<;E:
H;AB-
/9:
;<#Q:
B9:
B;B?
CD;B:
-EA9cd>:
BeAB?
$9:
<8$IAKB;B
"7##$HR83:
BB:
H;AB:
<;HZ$.:
H;‘84<:
E8#.8;98B?
?
>$:
D)
DAE;:
H8LKAO8DDAK-N8D8:
KERf;8<@#89I8@@8@DZDH89-/)
9:
;<#?
TZ"#7CD;B:
-EA9-a:
Bg;:
B?
^>B$9:
<8$IAKB;B
"7&F$HR8a:
BB:
H;AB:
<;HZ$.:
H;‘84<:
E8#a8B:
B$4ADH)
?
K:
@>:
H8AO3:
DH8KAO/B?
;B88K;B?
-3:
^AK;B89I8@@8@
DZDH89$/9:
;<#R:
BT^-EA9(
%"###FG
首都师范大学
H
万玛宁关永韩相军
通讯地址
#
&"###FG
北京首都师范大学信息工程学院
’
万玛宁
%.)112:
2)-86-)*/’+9)6I6:
9622*96:
<.’09+’1J)*!
/’1K69L2*59+,<"###FGHC’6O’696:
%
投稿日期
=+,,6-#-F,$%
修稿日期
=+,,6-&-"F$
%
接第
++,
页
$
PFF##QR
江西南昌南昌大学机电工程学院
H
叶建雄
张华谭曼华魏晖
%5;?
))1)-O2;?
’69;’1’67I12;+*)69;I6:
9622*96:
<
J’6;?
’6:
K69L2*59+,’6:
FF##QR<.?
96’HB2<
S9’639)6:
T?
’6:
=’C29
通讯地址
E&FF##QR
江西南昌市上海路住宅小区
!
栋
Q"#
室
’
周九兰转叶建雄
%
投稿日期
=+,,6-#-+#$%
修稿日期
电子设计
+&+