11月第2周系統升級錄:歷史悠久的嵌入式數據庫系統-Berkeley DB
原創本周值得注意的是紅帽企業級Linux RHEL 6發布,作為一款老牌的企業級Linux發行版來說本次更新一共增添了1800個新特性,解決了14000多個bug,作為一個企業管理員需要引起重視。在桌面端,Firefox 4.0推出了Beta 7,KDE SC 也在本周更新到了4.5.3。
在本期的系統升級錄中將向大家介紹一個歷史悠久的嵌入式數據庫系統——Berkeley DB。主要應用在UNIX/LINUX操作系統上,其設計思想是簡單、小巧、可靠、高性能。在系統服務方面,MySQL與Firebird幾款數據庫相繼更新。
下面向大家介紹的是具有悠久歷史的嵌入式數據庫系統——Berkeley DB。在本周Java版本的Berkeley DB更新到 4.1.6。
Berkeley DB
UNIX/LINUX平臺下的數據庫種類非常多。通常,我們在設計UNIX/LINUX平臺下的應用軟件時,如果數據種類繁多,數據與數據之間關系比較復雜,就會選用一些大型的企業級數據庫系統,如DB2,ORACLE、SYBASE等,如果軟件規模不大,就傾向選用如MYSQL、POSTGRESQL等中小型數據庫。例如使用PHP/PERL + MYSQL/POSTGRESQL設計網站基本上是一個很常規的做法。但是,當應用軟件管理的數據類型較少(特別注意:這并不是說需要管理的數據量小),數據管理本身不復雜,且對數據操作要求高效率,則由大名鼎鼎的Berkeley(美國加州大學伯克利分校)開發的 Berkeley DB可能是一個很明智的選擇。
DB綜述
DB最初開發的目的是以新的HASH訪問算法來代替舊的hsearch函數和大量的dbm實現(如AT&T的dbm,Berkeley的ndbm,GNU項目的gdbm),DB的第一個發行版在1991年出現,當時還包含了B+樹數據訪問算法。在1992年,BSD UNIX第4.4發行版中包含了DB1.85版。基本上認為這是DB的第一個正式版。在1996年中期,Sleepycat軟件公司成立,提供對DB的商業支持。在這以后,DB得到了廣泛的應用。
DB支持幾乎所有的現代操作系統,如LINUX、UNIX、WINDOWS等,也提供了豐富的應用程序接口,支持C、C++、JAVA、PERL、TCL、PYTHON、PHP等。DB的應用十分廣泛,在很多知名的軟件中都能看到其身影。例如參考資料2中作者談到利用DB在LINUX下實現內核級文件系統;參考資料3中通過實際測試數據說明DB提高了OPENLDAP的效率。LINUX下的軟件包管理器RPM也使用DB管理軟件包相關數據,可以使用命令file查看RPM數據目錄/var/lib/rpm下的文件,則有形式如下的輸出:
Dirnames: Berkeley DB (Btree, version 9, native byte-order)
Filemd5s: Berkeley DB (Hash, version 8, native byte-order)
值得注意的是DB是嵌入式數據庫系統,而不是常見的關系/對象型數據庫,對SQL語言不支持,也不提供數據庫常見的高級功能,如存儲過程,觸發器等。
DB的設計思想
DB的設計思想是簡單、小巧、可靠、高性能。如果說一些主流數據庫系統是大而全的話,那么DB就可稱為小而精。DB提供了一系列應用程序接口(API),調用本身很簡單,應用程序和DB所提供的庫在一起編譯成為可執行程序。這種方式從兩方面極大提高了DB的效率。
第一:DB庫和應用程序運行在同一個地址空間,沒有客戶端程序和數據庫服務器之間昂貴的網絡通訊開銷,也沒有本地主機進程之間的通訊;
第二:不需要對SQL代碼解碼,對數據的訪問直截了當。
DB對需要管理的數據看法很簡單,DB數據庫包含若干條記錄,每一個記錄由關鍵字和數據(KEY/VALUE)構成。數據可以是簡單的數據類型,也可以是復雜的數據類型,例如C語言中結構。DB對數據類型不做任何解釋, 完全由程序員自行處理,典型的C語言指針的"自由"風格。如果把記錄看成一個有n個字段的表,那么第1個字段為表的主鍵,第2--n個字段對應了其它數據。DB應用程序通常使用多個DB數據庫,從某種意義上看,也就是關系數據庫中的多個表。DB庫非常緊湊,不超過500K,但可以管理大至256T的數據量。
DB的設計充分體現了UNIX的基于工具的哲學,即若干簡單工具的組合可以實現強大的功能。DB的每一個基礎功能模塊都被設計為獨立的,也即意味著其使用領域并不局限于DB本身。例如加鎖子系統可以用于非DB應用程序的通用操作,內存共享緩沖池子系統可以用于在內存中基于頁面的文件緩沖。
DB核心數據結構
數據庫句柄結構DB:包含了若干描述數據庫屬性的參數,如數據庫訪問方法類型、邏輯頁面大小、數據庫名稱等;同時,DB結構中包含了大量的數據庫處理函數指針,大多數形式為 (dosomething)(DB , arg1, arg2, …)。其中最重要的有open,close,put,get等函數。
數據庫記錄結構DBT:DB中的記錄由關鍵字和數據構成,關鍵字和數據都用結構DBT表示。實際上完全可以把關鍵字看成特殊的數據。結構中最重要的兩個字段是 void data和u_int32_t size,分別對應數據本身和數據的長度。
數據庫游標結構DBC:游標(cursor)是數據庫應用中常見概念,其本質上就是一個關于特定記錄的遍歷器。注意到DB支持多重記錄(duplicate records),即多條記錄有相同關鍵字,在對多重記錄的處理中,使用游標是最容易的方式。
數據庫環境句柄結構DB_ENV:環境在DB中屬于高級特性,本質上看,環境是多個數據庫的包裝器。當一個或多個數據庫在環境中打開后,環境可以為這些數據庫提供多種子系統服務,例如多線/進程處理支持、事務處理支持、高性能支持、日志恢復支持等。
DB中核心數據結構在使用前都要初始化,隨后可以調用結構中的函數(指針)完成各種操作,最后必須關閉數據結構。從設計思想的層面上看,這種設計方法是利用面向過程語言實現面對對象編程的一個典范。
DB數據訪問算法
在數據庫領域中,數據訪問算法對應了數據在硬盤上的存儲格式和操作方法。在編寫應用程序時,選擇合適的算法可能會在運算速度上提高1個甚至多個數量級。大多數數據庫都選用B+樹算法,DB也不例外,同時還支持HASH算法、Recno算法和Queue算法。接下來,我們將討論這些算法的特點以及如何根據需要存儲數據的特點進行選擇。
B+樹算法:B+樹是一個平衡樹,關鍵字有序存儲,并且其結構能隨數據的插入和刪除進行動態調整。為了代碼的簡單,DB沒有實現對關鍵字的前綴碼壓縮。B+樹支持對數據查詢、插入、刪除的常數級速度。關鍵字可以為任意的數據結構。
HASH算法:DB中實際使用的是擴展線性HASH算法(extended linear hashing),可以根據HASH表的增長進行適當的調整。關鍵字可以為任意的數據結構。
Recno算法: 要求每一個記錄都有一個邏輯紀錄號,邏輯紀錄號由算法本身生成。實際上,這和關系型數據庫中邏輯主鍵通常定義為int AUTO型是同一個概念。Recho建立在B+樹算法之上,提供了一個存儲有序數據的接口。記錄的長度可以為定長或不定長。
Queue算法:和Recno方式接近, 只不過記錄的長度為定長。數據以定長記錄方式存儲在隊列中,插入操作把記錄插入到隊列的尾部,相比之下插入速度是最快的。
對算法的選擇首先要看關鍵字的類型,如果為復雜類型,則只能選擇B+樹或HASH算法,如果關鍵字為邏輯記錄號,則應該選擇Recno或Queue算法。當工作集關鍵字有序時,B+樹算法比較合適;如果工作集比較大且基本上關鍵字為隨機分布時,選擇HASH算法。Queue算法只能存儲定長的記錄,在高的并發處理情況下,Queue算法效率較高;如果是其它情況,則選擇Recno算法,Recno算法把數據存儲為平面文件格式。
本周,Java 版的 Berkeley DB 4.1.6進行了更新。此版本下載地址:http://www.oracle.com/technetwork/database/berkeleydb/downloads/index.html
#p#
數據庫與服務器的更新
MySQL Connector/ODBC 5.1.8
MySQL Connector/ODBC 是 MySQL 數據庫官方提供的 ODBC 驅動程序,支持跨平臺。
該版本修復了不少的bug,另外一個不知什么原因的改動,那就是從該版本開始不再提供 chm 和 hlp 格式的幫助文檔。
MySQL Connector/ODBC 5.1.8下載地址:http://dev.mysql.com/downloads/connector/odbc/5.1.html
Firebird 2.5
Firebird是一個跨平臺的關系數據庫系統,目前能夠運行在Windows、linux和各種Unix操作系統上,提供了大部分SQL-99標準的功能。它既能作為多用戶環境下的數據庫服務器運行,也提供嵌入式數據庫的實現。
Firebird 2.5 主要是對底層進行全面改造,引入一個新的線程架構,大大提升了性能。
Firebird 2.5下載地址:http://www.firebirdsql.org/index.php?op=files
ImpressCMS 1.2.3 RC2
ImpressCMS是一個數據庫(MySQL)驅動,模塊化的內容管理系統.網站內容由各自獨立的內容模塊/Web應用進行管理.可以按照自己的需求來安裝相應的模塊,當前可用的模塊包括:新聞發布,論壇,相冊和其它非常多的第三方模塊供選擇.
該版本最重要的改進就是核心模塊和庫完全兼容 PHP 5.3
ImpressCMS 1.2.3 RC2下載地址:http://sourceforge.net/projects/impresscms/files/
Hiawatha 7.4
Hiawatha 是一個Linux/UNIX下安全的Web服務器,其設計的最主要的目的就是安全,當然它也是快速的而且易于配置。
該版本修復了兩個重要的bug,其中一個是 HideProxy 相關的,另外一個是 XSLT 模塊的內存泄漏問題,沒有引入新功能。
Hiawatha 7.4下載地址:http://www.hiawatha-webserver.org/download
OpenNMS 1.8.6
OpenNMS是一個企業級基于Java/XML的分布式網絡和系統監控管理平臺。OpenNMS是你管理網絡的絕好工具,它能夠顯示你網絡中各中終端和服務器的狀態和配置,為你方便地管理網絡提供有效的信息。
OpenNMS 1.8.6下載地址:http://www.opennms.org/wiki/New_and_Noteworthy
Cherokee 1.0.9
Cherokee 號稱是目前最快的 Web 服務器軟件,在性能上,甚至比 Nginx 還略勝一籌。
Cherokee 的功能包括支持 FastCGI、SCGI、PHP、CGI、TLS 及 SSL 加密連接,虛擬主機,授權認證,實時編碼,載入均衡,與 Apache 兼容的 log 文件等等。
該版本帶來了很多新功能和改進,可針對每條規則定義不同的緩存策略和獨立的header;重定向錯誤處理可接受一個 default 參數;支持復雜的虛擬主機匹配規則,包括每個IP一個虛擬主機的 SSL/TLS 方案;反向代理支持 SVN和 WebDAV連接;增加一個選項用來禁用管理接口的SSLv2。
強烈建議升級!!!
Cherokee 1.0.9下載地址:http://www.cherokee-project.com/downloads.html
Djigzo 1.4.1
Djigzo是一個用來對傳入的郵件進行解密以及傳出的郵件進行加密的郵 件服務器(MTA)。Djigzo作為一般的SMTP郵件服務器,它可以與任何現有電子郵件基礎設施一起使用,輕松地放在現有的電子郵件服務器之前或之 后。 Djigzo通常安裝為“存儲和轉發”服務器。電郵因此只能暫時儲存到它轉交給它的最終目的地。 Djigzo目前支持兩種加密標準:的S/MIME和PDF加密。
Djigzo 1.4.1下載地址:http://www.djigzo.com/downloads.html
#p#
Linux發行版的更新
紅帽企業 Linux 6.0
新版帶來了一個完全重寫的進程調度器和一個全新的多處理器鎖定機制,并利用NVIDIA圖形處理器的優勢對GNOME和KDE做了重大升級,新的系統安全 服務守護程序(SSSD)功能允許集中身份管理,而SELinux的沙盒功能允許管理員更好地處理不受信任的內容。
RHEL 6內置的新組件有GCC 4.4(包括向下兼容RHEL 4和5組件)、OpenJDK 6、Tomcat 6、Ruby 1.8.7和Rails 3、PHP 5.3.2與Perl 5.10.1,數據庫前端有PostgreSQL 8.4.4, MySQL 5.1.47和SQLite 3.6.20。
發行說明:http://www.redhat.com/about/news/prarchive/2010/new-standard.html
試用下載:http://www.redhat.com/wapps/eval/index.html?evaluation_id=1008
版本比較:http://www.redhat.com/rhel/server/compare/
VLOS 2.2 Beta 1
Vidalinux Desktop操作系統是一份強大的、穩定的、易用的Linux發行。其桌面組件基于開源社區的最出色項目,包括GNOME桌面環境、 OpenOffice Ximian產品套件、Mozilla瀏覽器、Evolution郵件及日歷客戶端,Gentoo Linux系統及portage包管理器。Vidalinux Desktop操作系統是面向家庭用戶而包含額外多媒體應用軟件的最合適的系統,這包括了媒體播放軟件、瀏覽器Flash插件、RealPlayer、 PDF閱讀器、媒體及圖像創作和管理工具。
發行說明:http://vidalinux.org/component/content/article/1-latest-news/94-vlos-22beta1
VLOS 2.2 Beta 1下載地址:http://os.vidalinux.org/index.php/Download
Salix OS 13.1.2 "Xfce"
Salix OS是基于Slackware的Linux發行,它簡單、快捷、易于使用,并且與Slackware Linux兼容。Salix OS為桌面應用而優化,其特性包括每項任務只裝備一種應用程序、用戶軟件倉庫、支持依賴關系的高級軟件包管理、本地化的系統管理工具及富有新意的美工。
發行說明:http://www.salixos.org/forum/viewtopic.php?t=1528&p=10601
Salix OS 13.1.2 "Xfce"下載地址:http://www.salixos.org/wiki/index.php?title=Download
IPFire 2.7 Core 41
IPFire是一份Linux發行,它注重輕松的裝備、方便的操作和高級別的安全。它通過一份直觀的基于網頁的界面來進行操作管理,該界面為新手級及老練 的系統管理員提供很多直觀的配置選項。IPFire由一群關注安全及經常更新該產品以保持其安全的開發者來維護。IPFire帶有一份定制的叫做 Pakfire的包管理器,系統也可以通過各種附件來進行擴展。
發行說明:https://www.redhat.com/archives/rhelv5-announce/2010-November/msg00000.html
IPFire 2.7 Core 41下載地址:http://www.ipfire.org/en/download
NetBSD 5.1
NetBSD 是一個免費的,具有高度移植性的 UNIX-like 操作系統,可以在許 多平臺上執行,從 64bit alpha 服務器到掌上型的設備。由于簡潔的設計 和先進的特征,使得它在生產和研究方面,都有卓越的表現,而且它也有受 使用者支持的完整的原始碼。許多應用程序也是易于移植的。
NetBSD 5.1下載地址:http://www.netbsd.org/releases/
#p#
桌面端應用的更新
Firefox 4.0 Beta 7 RC
經過一次次的跳票,Mozilla北京時間昨天中午悄然在其FTP服務器上發布了Firefox 4.0 Beta 7 RC版,但直到晚上還不允許下載。今天早上起來一看,可以下載了,大家趕緊試試吧,這次應該集成了新內核。
下載地址:ftp://ftp.mozilla.org/pub/firefox/nightly/4.0b7-candidates/build1/
KDE SC 4.5.3
KDE 社區不久前發布了 KDE SC 4.5.3 。這次更新包含了 Plasma Desktop (桌面)和 Netbook workspaces (上網本) 兩個平臺的 KDE 桌面環境,KDE 平臺核心和 KDE 的應用軟件在都在這個版本中有所更新。這次更新是 KDE 4.5 系列中第3的次更新, 社區建議正在使用 KDE SC 4.5 或者更老版本的 KDE 用戶升級到此版本,因為它修正了很多已經知的bug,并且對各個國家的語言支持也更加完善。
KDE SC 4.5.3下載地址:http://download.kde.org/download.php
Firebug 1.7a5
Firebug是Firefox下的一款開發類插件,現屬于Firefox的 五星級強力推薦插件之一。它集HTML查看和編輯、Javascript控制臺、網絡狀況監視器于一體,是開發JavaScript、CSS、HTML和 Ajax的得力助手。Firebug如同一把精巧的瑞士軍刀,從各個不同的角度剖析Web頁面內部的細節層面,給Web開發者帶來很大的便利。
除了修復一些bug外,該版本引入兩個新特性:
Firebug 命令行的自動完成
更好兼容 Firefox 4.0
Firebug 1.7a5下載地址:http://getfirebug.com/downloads
【系統頻道本周熱點文章】
- PC機的云時代 Chrome OS能否取代Windows
- 噓…其實Opera掌握了互聯網上最珍貴的資源
- 紅帽企業級Linux RHEL 6發布 新增1800個新特性
- 所有現代的Windows系統管理員都需要的工具
- 敏捷的獨角鯨——Ubuntu 11.04開發進程
- 紅帽RHEL團隊:操作系統也可以按摩爾定律發展
- 探秘:Linux在納斯達克的應用
- 系統管理員之企業生存守則
- Windows中的腳本技術-Windows Powershell