开源数据库嵌入式应用占头筹
自出现商业应用软件以来,数据库就成为软件应用程序的主要组成部分。与数据库管理系统非常关键一样,它们也变得非常庞大,并占用了相当多的系统资源,增加了管理的复杂性。随着软件应用程序逐渐模块化,一种新型数据库会比大型复杂的传统数据库管理系统更适应用户的需求。嵌入式数据库直接在应用程序进程中运行,提供了零配置(zero-configuration)运行模式,并且资源占用非常少。
嵌入式数据库有其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了与客户机/服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,需要的内存较少。它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。嵌入式运行模式允许嵌入式数据库通过 SQL 来轻松管理应用程序数据,而不依靠原始的文本文件。
嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。这意味着事务是原子的,它们要么完全执行,要么根本不执行。事务也是一致的,因为在不一致的状态中,该数据库从未被保留,事务还是独立的。所以,如果在同一时间在同一数据库上有两个执行操作的事务,那么这两个事务是互不干扰的,而且事务是持久性的。所以,该数据库能够在崩溃和断电时幸免于难,不会丢失数据或损坏。
基于嵌入式移动数据库的应用可划分为水平应用和垂直应用。所谓水平应用,是指应用方案能够用于多种不同行业,只需要极少的定制工作;而垂直应用则针对特定行业的应用,数据处理具有独特性。
开源的嵌入式数据库产品很多,Berkeley DB就是一个开放源代码的内嵌式数据库管理系统。应用它程序员只需要调用一些简单的API,就可以完成对数据的访问和管理。它是通过内嵌在程序中的Berkeley DB函数库来完成对数据的保存、查询、修改和删除等操作。
Berkeley DB为许多编程语言提供了实用的API接口。所有同数据库相关的操作都由Berkeley DB函数库负责统一完成。这样无论是系统中的多个进程,或者是相同进程中的多个线程,都可以在同一时间调用访问数据库的函数。而底层的数据加锁、事务日志和存储管理等都在Berkeley DB函数库中实现。它们对应用程序来讲是完全透明的。
麻雀虽小五脏俱全。Berkeley DB函数库本身虽然只有300KB左右,但却能够用来管理多达256TB的数据,并且在许多方面的性能还能够同商业级的数据库系统相抗衡。就拿对数据的并发操作来说,Berkeley DB能够很轻松地应付几千个用户同时访问同一个数据库的情况。此外,如果想在资源受限的嵌入式系统上进行数据库管理,Berkeley DB可能是上佳的选择。
SQLite是D. Richard Hipp 用C语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性。SQLite支持多数 SQL 92标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite还非常健壮。其创建者保守地估计, SQLite 可以处理每天负荷多达1万次点击率的Web站点,并且 SQLite有时候可以处理10倍于上述数字的负载。
SQLite的数据库权限只依赖于文件系统,没有用户账户的概念。SQLite 有数据库级锁定,没有网络服务器,并且可以实现多数SQL92标准(但不是全部)。用户需要了解哪些SQL92功能未实现。
SQLite 通过数据库级