嵌入式数据库简介
嵌入式数据库是嵌入到应用程序中的轻量级数据库,其操作具有定时限制的特性。它是嵌入式系统的重要组成部分,也成为对越来越多的个性化应用开发和管理而采用的一种必不可少的有效手段。嵌入式运行模式允许嵌入式数据库通过 sql 来轻松管理应用程序数据,而不依靠原始的文本文件。嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。常见嵌入式数据库简介
sqlite(开源)
sqlite简介:
sqlite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,主要特点如下:
简单:sqlite是一个非常轻量级自包含(lightweight and self-contained)的DBMS:一个头文件,一个动态库文件,就包含了关系数据库的所有功能了。它提供的API少而简单。
小巧:整个系统少于3万行代码,少于250KB的内存占用(gcc),大部分应用比目前常见的客户端/服务端的数据库快,没有其它依赖
并发性:由于sqlite通过OS的文件锁来实现库级锁,粒度很大,但是,它通过一些复杂特殊的处理,尽量的提升了读写的并发度。
sql92:sqlite支持绝大部分的标准sql语句,你只需要几百K的空间,就可以换来需要上百兆的通用DBMS几乎所有操作了。
Berkeley DB(开源限个人)
Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、sql解析等步骤。其主要技术特点:
Berkeley DB是一个开放源代码的内嵌式数据库管理系统,能够为应用程序提供高性能的数据管理服务。应用它程序员只需要调用一些简单的API就可以完成对数据的访问和管理。(不使用sql语言)
Berkeley DB为许多编程语言提供了实用的API接口,包括C、C++、Java、Perl、Tcl、Python和PHP等。所有同数据库相关的操作都由Berkeley DB函数库负责统一完成。
Berkeley DB轻便灵活,可以运行于几乎所有的UNIX和Linux系统及其变种系统、Windows操作系统以及多种嵌入式实时操作系统之下。Berkeley DB被链接到应用程序中,终端用户一般根本感觉不到有一个数据库系统存在。
Berkeley DB是可伸缩的,这一点表现在很多方面。Database library本身是很精简的(少于300KB的文本空间),但它能够管理规模高达256TB的数据库。它支持高并发度,成千上万个用户可同时操纵同一个数据库。Berkeley DB能以足够小的空间占用量运行于有严格约束的嵌入式系统。
Berkeley DB在嵌入式应用中比关系数据库和面向对象数据库要好,有以下两点原因:
因为数据库程序库同应用程序在相同的地址空间中运行,所以数据库操作不需要进程间的通讯。在一台机器的不同进程间或在网络中不同机器间进行进程通讯所花费的开销,要远远大于函数调用的开销;
因为Berkeley DB对所有操作都使用一组API接口,因此不需要对某种查询语言进行解析,也不用生成执行计划,大大提高了运行效。
extreme DB(开源)
eXtremeDB内存嵌入式实时数据库以其高性能、低开销、稳定可靠的极速实时数据管理能力在嵌入式数据管理领域及服务器实时数据管理领域独领风骚。eXtremeDB已经广泛应用于众多行业及领域,如:网络设备、消费电子、国防、航空航天、工业控制、轨道交通、能源电力、医疗设备,地理信息、汽车电子,以及金融实时交易、通信技术、互联网等,得到了国内外许多知名客户的一致好评与青睐。其主要特点:
内存数据库,eXtremeDB将数据以程序直接使用的格式保存在主内存之中,不仅剔除了文件I/O的开销,也剔除了文件系统数据库所需的缓冲和Cache机制。其结果是每个交易一微秒甚至更少的极限速度,相比于类磁盘数据库而言,速度成百上千倍地提高。作为内存数据库,eXtremeDB不仅性能高,而且数据存储的效率也非常高。为了提高性能并方便程序使用,数据在eXtremeDB中不做任何压缩,100M的空间可以保存高达70M以上的有效数据,这是其他数据库所不可想象的。
混合数据库,eXtremeDB不仅可以建立完全运行在主内存的内存数据库,更可以建立磁盘/内存混合介质的数据库。在eXtremeDB,我们把这种建立在磁盘、内存或磁盘+内存的运行模式称为eXtremeDB Fusion融合数据库。eXtremeDB Fusion兼顾数据管理的实时性与安全性要求,是实时数据管理的台阶性进步。
嵌入式数据库,eXtremeDB内核以链接库的形式包含在应用程序之中,其开销只有50KB~130KB。无论在嵌入式系统还是在实时系统之中,eXtremeDB都天然地嵌入在应用程序之中,在最终用户毫不知情的情况下工作。eXtremeDB的这种天然嵌入性对实时数据管理至关重要:各个进程都直接访问eXtremeDB数据库,避免了进程间通信,从而剔除了进程间通信的开销和不确定性。同时, eXtremeDB独特的数据格式方便程序直接使用的,剔除了数据复制及数据翻译的开销,缩短了应用程序的代码执行路径。
由应用定制的API,应用程序对eXtremeDB数据库的操作接口是根据应用数据库设计而自动产生,不仅提升了性能,也剔除了通用接口所必不可少的动态内存分配,从而提高了应用系统的可靠性。定制过程简单方便,由高级语言定制eXtremeDB数据库中的表格、字段、数据类型、事件触发、访问方法等应用特征,通过eXtremeDB预编译器自动产生访问该数据库的C/C++ API接口。
可预测的数据管理:eXtremeDB独特的体系结构,保证了数据管理的可预测性。eXtremeDB不仅更快、更小,而且更确定。在80双核cpu的服务器上,eXtremeDB在1TB内存里保存15B条记录;无论记录数多少,eXtremeDB可以在八十分之一微秒的时间内提取一条记录。
Empress(商业)
Empress实时数据库是基于知识和规则的关系型的稳定可靠的数据库系统,具有免维护、适应性强、模块化、全分布、多平台、易裁剪、可扩展和开放性强的优点。其嵌入式数据库主要特点如下:可以设置成多种不同的工作方式,以满足不同的商务模式需要。基本的模式分为:独立运行模式和客户端/服务器模式。其中独立运行模式不需要运行独立的Empress数据库服务器,Empress的引擎库直接和应用程序连接。对于在同一地址空间中运行的嵌入式数据库的应用,独立运行模式是非常有吸引力的。这两种应用模式可以在同一操作统中同时使用。
一致性:Empress面向嵌入式的丰富的锁功能保证各种操作之间的数据一致。Empress不仅支持常见的记录锁、表锁和组锁,还支持用户自定义的锁粒度和支持事务分离级别的各种锁。Empress具有丰富的数据同步功能。不仅支持1对N的各种数据同步,还支持N对N的各种数据同步功能。来保证数据库的高可用性
多重访问性:Empress支持多进程/多线程,保证数据库能够同时被多个用户或程序访问。多个用户可以同时访问数据库内的同一个对象,大大的提高了数据库的访问速度和利用率。同时,利用有效的锁机制和其他一致性机制可以保证数据的安全性和系统的稳定性的前提下,使数据库的处理速度和资源的利用率达到最大化。
嵌入性:Empress嵌入式数据库引擎是以组件的形式存在,具有真正的嵌入性。客户只需要像调用自己定义的函数那样调用相应的函数就可以动态创建表及其他对象、插入删除数据等常规的数据库操作。客户在自己的产品发布时,可以将Empress数据库编译到自己的产品内,变成自己产品的一部分,最终用户是感受不到数据库的存在的,也不用特意去维护数据库。
实时性:实时性和嵌入性是分不开的。只有具有了嵌入性的数据库才能够第一时间得到系统的资源,对系统的请求在第一时间内作出响应。但是,并不是具有嵌入性就一定具有实时性。要想嵌入式数据库具有很好的实时性,必须做很多额外的工作。比如:Empress实时数据库将嵌入性和高速的数据引擎、定时功能以及防断片处理等措施整合在一起来保证最基本的实时性。
Firebird(开源)
firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。它很容易让您从单用户,单数据库升级到企业级的应用。主要特点:
支持原子性,并发性,隔离性等概念。
支持事务的多个版本功能,
使用Psql(Procedure sql),你可以创建强大的存储过程来处理服务上的所有数据,你可以使用select Stored Procedure的形式,使用存储过程,以得到一个虚拟的表结构的结果。这样的话,你就可以很容易的在报表中使用它。
存储过程和触发器可以引发事件,这个事件可以被客户端程序监听到
生成子也称为序列,它可以很容易的实现自动增加的字段。它是一个INT64的长度,因此,它可以用在一个事务中,也可以用在其它很多方面。
msql(个人免费,商业收费)
msql(mini sql)是一个单用户数据库管理系统,个人使用免费,商业使用收费。由于它的短小精悍,使其开发的应用系统特别受到互联网用户青睐。msql(mini sql)是一种小型的关系数据库,性能不是太好,对sql语言的支持也不够完全,但在一些网络数据库应用中是足够了。由于msql较简单,在运行简单的sql语句时速度比MysqL略快,而MysqL在线程和索引上下了功夫,运行复杂的sql语句时比msql,Postgresql等都要快一些。
几款开源数据库的特点对比:
sqlite |
Berkeley DB |
Extreme DB(内存数据库) |
Firebird |
|
运行时占用RAM |
250KB左右 |
300KB左右 |
内核尺寸100kB(可裁剪) |
—— |
应用模式 |
组件嵌入 |
以组件形式内嵌在程序中 |
以组件嵌入程序 |
服务器 |
遵循ACID的关系型数据库 |
非关系,非对象数据库 |
关系,对象数据库 |
嵌入式服务器类,关系数据库 |
|
实时性能 |
低 |
低 |
微秒级别 |
—— |
使用风险 |
30年实时数据库行业经验,eXtremeDB是该公司当前产品,具有强实时性、高稳定性、超强壮,高可靠性等优点。 |
—— |
||
主要优点 |
源代码短小,开放 零配置,无需安装 API简单 查询速度较高 |
丰富API接口(不用sql语言), 功能齐全,源码开放 独特的五个子系统结构 高并发 |
实时性较高 |
支持原子性,并发性,隔离性 一服务器,可以支持多个客户端 轻量级,免维护 |
主要缺点 |
不适合并发性高的场合 如大量insert,update访问, |
非关系,非对象数据库 |
—— |
—— |
主要应用 |
智能手机,常见嵌入式设备,命令行数据分析工具 |
嵌入式实时子系统 |
广泛应用于航空航天、工业控制、电信通讯、金融电子、消费电子、医疗设备等关键性运用 |