嵌入式数据库架构特点

看过一篇嵌入式数据库架构的文章。

其中嵌入式数据库的存储结构和功能实现等均与Oracle数据库的实现方式有相似点。

写这篇文章用以记录嵌入式数据库的架构,可以与之前的Oracle结构体系对比来看,总结相同点和差异点。

嵌入式数据库相对于传统数据库来说有处理速度快,实时性,运行开销小。由于是嵌入式数据库,对数据的独立性要求没有传统数据库那么高。而且嵌入式系统的资源有限,所以需要注意资源的而有效分配。

那么我们就把关注点更多的放在数据的存取,处理上边。


三级模式的结构体系:用户模式,逻辑模式,存储模式

和传统数据库的:用户管理模块(用户进程与服务器进程的链接,连接池,session,实例管理,中间件),逻辑处理模块(backgroud Program,undo,redo,DML,DDL等)和存储架构模块(data file,tablespace,segment,extent,block)

嵌入式数据库需要具备的功能:

足够高效的数据存储机制

数据安全控制(锁机制)

实时事务管理机制

数据库恢复机制(历史数据存储)

嵌入式数据库开发需要注意的部分:

嵌入式数据库一般有特殊的运行情况和环境,实现特定的功能。所以要根据实际情况来选择不同的设计模型。要合理高效的分配嵌入式系统的有效资源,提高数据库的存储效率和稳定性。并对数据的保护,交换,查询,事务处理算法的优化,事务优先级的分派,事务调度,并发控制等都要制定好良好的策略。

嵌入式数据库的数据模型(逻辑模式):

关系型数据库 -- 利用而为关系表现存储,但是会造成数据的冗余,可以使用索引提高查找的效率

网状数据库 -- 直接使用指针来表现关系,节省空间,提高效率,但是关系较为复杂

物理结构(存储模式):

采用内存+ 硬盘的形式

内存中包括:索引取,数据区,系统信息区(均用来存储当前工作使用到的部分),每条记录由表名,短号,段内偏移地址来确定

硬盘中包括:存储使用频率较低的数据和日志文件,历史数据等。

对应于传统数据库来讲,内存中包括,数据字典,当前使用频繁的表内容,undo buffer等。硬盘中为所有的数据文件和日志文件。并对不是用的日志文件进行归档

嵌入式数据库的索引结构:

数据结构(使用数组存储),B数的结构(节点数据的覆盖率小),AVL树(每个节点需要两个指针域和附加控制信息,存储效率不高,浪费存储空间),不平衡B树(T*树,避免了调解书的明恒,提高了写性能,节点由若干个关键字和指针域构成)

Oracle数据库的索引结构:B树的结构,bitmap的结构,建索引的方式和类型有唯一索引,范围索引,反向建索引(防止数据块分布不均导致的树不够平衡,如大部分以6开头),函数索引(对列的函数值进行索引),压缩索引,升序/降序索引


嵌入式数据库的管理机制:

存储空间的管理:采取静态分配或者动态分配+索引的方式

数据的安全性,完整性:建立约束,通过约束来实现

事务并发控制模块:利用锁机制来控制(信号量等)。选取表级作为锁的粒度,尽可能的减少所得切换,有效减少了锁在计算过程中的开销)

实时数据转储:类似Oracle的redo buffer,开辟保存实时数据的内存缓存区,缓冲区满一次写入磁盘,读数据也有缓冲内存区,保存使用频率高的(或最近使用的)数据

日志管理:日志也应有对应的内存缓存区,缓存满后统一写入磁盘,减少I/O。


内存区的管理方式:

使用空闲列表的方式记录缓冲区的使用情况

开辟一段内存空间空间,作为空闲区放到空闲列表中,当内存空间满,则从空闲列表中删除当前内存空间地址,移入满区列表,再申请一块新的内存空间作为新的缓冲区的空闲区。当内存空间扩展到一定程度,则将脏块写回磁盘。


嵌入式数据库事务的优先级控制:可以参考操作系统的事务优先级算法,先来先服务,最短期限等。


嵌入式数据库的实现方式均可以在传统数据库上找到相似处,只是不同的数据库有不同的侧重点。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值