最近看数据方面的资料,发现Berkeley DB被引用过很多次,而我尚不知其为何物,自然不能放过它。google一下,相关结果非常的多,看来这个东西应该是相当有名,顺便了解了一下嵌入式数据库的资料,发现这方面还值得研讨一下。下面就把一些有用的资料贴过来,留着以后参考了!
嵌入式数据库概念
嵌入式数据库通常与操作系统和具体应用集成在一起,无须独立运行的数据库引擎,也就是说不像Oracle,SQL Server一样扮演数据库引擎,而是由程序直接调用相应的API去实现对数据的存取操作,它们运行时和调用它们的程序在同一数据空间里。更直白地讲,嵌入式数据库是一种具备了基本数据库特性的数据文件。它们的体积通常非常小,编译后的产品也不过几十KB,在一些移动设备上极具竞争力。
Berkeley DB
Berkeley DB不是关系型的数据库,不能应用标准的SQL语句对数据库操作,对它的操作要调用专用的API实现。这些API形成嵌在程序中的Berkeley DB函数库,通过对他们的调用可以完成对数据的保存、查询、修改和删除等操作。所有与数据库相关的操作都由函数库负责统一完成,这样无论是系统中的多个进程,或者是相同进程中的多个线程,都可以在同一时间调用访问数据库的函数;而底层的数据加锁、事务日志和存储管理等都在Berkeley DB函数库中实现。它们对应用程序来讲是完全透明的。
Berkeley DB源代码有C和Java两种,函数库源代码只有数百KB,却能够用来管理多达256TB的数据。它为许多编程语言提供了实用的API接口,包括C、C++、Java、Perl、Tcl、Python和PHP等。Berkeley DB对任何存入的数据都是按原样直接存储到数据文件中去,无论其是二进制数据还是ASC I I或Unicode等编码的文本。Berkeley DB提供了四种存储数据的模式:Btree、Hash、Queue和Recno。
Berkeley DB原本由美国的sleepycat公司研发,后被Oracle公司收购,现在的完整名字为Oracle Berkeley DB,官方地址为
http://www.oracle.com/technology/products/berkeley-db/index.html。它虽然是开源的产品,但对某些条件下的商业性应用,却不是免费的,而且价格颇为昂贵。
SQLite 想比于Berkeley DB,SQLite 就显得更为小巧。而且更为称道的是它完全开放,按其作者的声明来说,SQLite 属于公共财产(The source code for SQLite is in the public domain),任何人都可以使用它,修改它,作为商业用途也可以。SQLite 的源代码是C语言,它的第一个Alpha版本诞生于2000年5月,现在已经是3.6版本,而且还在不断开发中,其主页为
http://www.sqlite.org,主页上提供SQLite 的二进制程序和源代码下载,还提相关的文档和基本的支持,维护得相当不错。
SQLite 是关系型的数据库,它支持SQL语言。它的SQL语言很大程度上符合ANSI SQL92标准,支持视图、触发器、事务,支持嵌套SQL。它通过SQL编译器(SQL Complier)来实现SQL语言对数据库进行操作,支持大部分的SQL命令。
SQLite 最大的特点在于其数据类型为无数据类型(typelessness)。这意味着可以保存任何类型的数据到所想要保存的任何表的任何列中,无论这列声明的数据类型是什么。虽然在生成表结构的时候,要声明每个域的数据类型,但SQLite 并不做任何检查。开发人员要靠自己的程序控制输入与读出数据的类型。这里有一个例外,就是当主键为整型值时,如果要插入一个非整型值时会产生异常。
SQLite 只提供了Btree存储数据的模式。对二进制数据,SQLite 不能直接保存,但可以先将二进制的数据转换成ASCII编码,然后再保存。Base64编码机制是最常见的把二进制数据转换成ASCII编码的手段。在Sqlite提供了Base64编码的功能。
SQLite官方也这样描述SQLite: SQLite is not designed to replace Oracle. It is designed to replace fopen().当你程序需要管理大量数据,又不便使用大型数据库时,可以考虑SQLite。
--
Be yourself.