专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » sqlite:Bericel ey DB和SQLite对比 »正文

sqlite:Bericel ey DB和SQLite对比

来源: 发布时间:星期五, 2008年12月19日 浏览:2次 评论:0


1 嵌入式数据库

通常我们采用数据库来实现对数据存储、检索等功能像MySQL这类基于C/S结构关系型数据库系统虽然代表着目前数据库应用主流却并不能满 足所有应用场合需要很多应用仅仅利用到了这些数据库产品基本特性而已有时我们需要可能只是个简单基于磁盘文件数据库系统这样就不必 安装庞大数据库服务器以简化数据库应用设计在某些特殊应用场合比如在嵌入式系统中由于系统硬件软件Software资源都有限这些数据库产品就明显有 些臃肿甚至是不可实现在这些情况下嵌入式数据库优势就特别明显了

嵌入式数据库通常和操作系统和具体应用集成在无须独 立运行数据库引擎直接相应API去实现对数据存取操作更直白地讲嵌入式数据库是种具备了基本数据库特性数据文件嵌入式数据库 和其它数据库产品区别是前者是驱动式而后者是引擎响应式嵌入式数据库个很重要特点是它们体积非常小编译后产品也不过几十KB些移动设备上极具竞争力

从目前嵌入式应用发展趋势来看嵌入式数据库实现必须充分体现系统可定制性即系统选择技术路线要面向具体行业应用因而研究源码开放嵌入式数据库具有特殊意义

2 Berkeley DB和SQLite
DBkeley DB是款健壮、高速工业级开放源代码嵌入式数据库管理系统应用它员只需要些简单API就可以完成对数据访问和管理
Berkeley DB源代码有C和Java两种库本身只有300KB左右但却能够用来管理多达256TB数据Berkeley DB作为种嵌入式数据库系统在许多方面有着独特优势首先由于其应用和数据库管理系统运行在相同进程空间当中进行数据操作时可以避免繁琐 进程间通信因此耗费在通信上开销自然也就降低到了极低程度其次Berkeley DB使用简单接口来完成所有数据库操作而不是在数据库系统中经常用到SQL语言避免了对结构化查询语言进行解析和处理所需开销

SQLite源代码是C其源代码完全开放SQLite第个Alpha版本诞生于2000年5月今年5月SQLite又迎来了个新里程SOLite 3

SQLite有以下特性:支持ACID事务;零配置无需安装和管理配置;储存在单磁盘文件中个完整数据库;数据库文件可以在区别字节顺序机器 间自由共享;支持数据库大小至2TB;足够小全部源码大致3万行c代码250KB;比目前流行大多数数据库对数据操作要快;提供了对事务功能和并 发处理支持应用Transaction既保证了数据完整性也会提高运行速度多条语句起提交给数据库速度会比提交方式更快;独 立没有额外依赖

目前对Berkeley DB研究开发工作主要是美国sleepycat公司在进行在国内几乎没有有关这方面研究;而SQLite在国内也是鲜有人问津

2.1 Berkeley DB和SOLite数据库操作
和常用数据库管理系统(如MySQL和Oracle等)有所区别在Berkeley DB中并没有数据库服务器概念应用不需要事先同数据库服务建立起网络连接而是通过内嵌在Berkeley DB库来完成对数据保存、查询、修改和删除等操作所有和数据库相关操作都由库负责统完成这样无论是系统中多个进程或者是相同进程中 多个线程都可以在同时间访问数据库;而底层数据加锁、事务日志和存储管理等都在Berkeley DB库中实现它们对应用来讲是完全透明

Berkeley DB不是关系型数据库不能应用标准SQL语句对数据库操作对它操作要专用API实现这些API提供了查询、插入、删除等功能比如 com.sleepycat.db.Db类代表数据库对象Db类put( )思路方法完成是插入功能;get( )思路方法完成是读出数据功能;com.sleepycat.db.Dbc是Berkeley DB游标类提供了遍历数据库记录功能

使 用Berkeley DB提供来进行数据库访问和管理并不复杂在大多数场合下只需按照统接口标准进行就可以完成最基本操作Berkeley DBEnvironment为组数据库同时提供参数设置更为重要如果要应用更高级特性必须要使用Environment功能比如在要对保 存数据进行加密存储、利用其Transaction、数据加密、同步加锁控制、日志等功能时候

SQLiteSQL语言很大程度上实现了ANSI SQL92标准特别是支持视图、触发器、事务支持嵌套SQL它通过SQL编译器(SQL Complier)来实现SQL语言对数据库进行操作支持大部分SQL命令如attach database、begin transaction、comment、commit transaction、copy、create index、create table、create trigger、create view、delete、detach database、drop index、drop table、drop trigger、drop view、end transaction、explain、expression、insert、On conflict clause、pragma、replace、rollback transaction、select、update
当然也有部分SQL 命令SQLite并不支持比如:不支持:Exists虽然支持in(in是Exists种情况);不支持多数据库如create table dbl.tablel as select*from db2.table 1;:不支持存储过程;不支持Alter View/Trigger/Table:不支持Truncate 在SQLite中Delete不带Where字句时和Truancate效果是;不支持Floor和Ceiling还有其它许多;没 有Auto Increment(自增)字段但其实SQLite是支持Auto Increment即在将该字段设置为“INTEGER PRIMARY KEY”时候;不支持If Exists等

2.2 Berkeley DB和S0Lite和普通数据库差别

Berkeley DB引入了些新基本概念使得数据库应用访问和管理数据库变得相对简单起来

(1)关键字和数据

关键字(key)和数据(data)是Berkeley.DB用来进行数据库管理基础由这两者构成key/data对组成了数据库中个基本 结构单元整个数据库实际上就是由许多这样结构单元构成通过使用这种方式在通过API访问数据库时只需提供关键字就能够访问到相应数据

关键字和数据在Berkeley DB中都是用个名为DBT简单结构来表示实际上两者都可以是任意长度 2进制数据DBT作用主要是保存相应内存地址及其长度其结构如下所示:

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: