嵌入式數據庫實際上是輕量級的,運行時需要的內存更少。它們是用簡化的代碼編寫的,這對于嵌入式設備來說更快、更有效。嵌入式運行模式允許嵌入式數據庫通過SQL輕松管理應用程序數據,而不是依賴原始文本文件。嵌入式數據庫和數據庫服務器最大的區別是運行在不同的地址空間。通常,數據庫服務器獨立運行一個守護進程,而嵌入式數據庫與應用程序在同一進程中運行。
數據庫的架構如下:圖中的數據庫客戶端通常通過JDBC、ODBC等數據庫驅動訪問數據庫服務器,然后數據庫服務器對數據庫文件進行操作。數據庫服務是客戶端-服務器模式,客戶端和服務器完全是兩個獨立的進程。它們可以位于不同的計算機甚至網絡中??蛻舳撕头掌魍ㄟ^TCP/IP進行通信。這種模式將數據與應用程序分開,便于控制和管理數據訪問。
嵌入式數據庫架構如下:嵌入式數據庫不需要數據庫驅動,直接將數據庫的庫文件鏈接到應用程序。應用程序通過API而不是TCP/IP訪問數據庫。因此,嵌入式數據庫的部署是與應用程序一起進行的。例如,一個常見的版本控制器SubVersion將嵌入式數據庫與應用程序結合使用。
數據庫和嵌入式的比較如下:
(1)數據庫服務器通常允許非開發人員(DBA、數據庫庫管理員)操作數據庫,而在嵌入式數據中,通常只允許應用程序訪問和控制。(2)數據庫服務器將數據與程序分離,便于控制對數據庫的訪問。嵌入式數據庫完全將數據的訪問控制交給應用程序,由應用程序控制。(3)數據庫服務器需要獨立安裝、部署和管理,而嵌入式數據通常與應用程序一起發布,因此不需要單獨部署數據庫服務器,其特點是程序的可移植性。從上面的對比可以看出,數據庫服務器和嵌入式數據庫各有特點,適用于不同的應用場景。
如果對你要存儲的數據的訪問比較復雜,比如跨網、訪問控制策略復雜,數據庫管理員需要經常對其進行管理和維護,那么數據庫服務器非常適合你。如果對你要存儲的數據的訪問需要應用控制,并且基本不需要人工干預,對數據的訪問簡單、快速、有效,那么嵌入式數據庫就適合你。另外,你有沒有遇到過這樣的情況:存儲的數據量不是很大,所以建立一個通用的數據庫太浪費了,如果發布這個程序非常麻煩,那么那些微小的嵌入式數據庫可能非常適合你(比如有些郵件客戶端使用嵌入式數據庫)。
嵌入式數據庫:1.嵌入過程中,沒有單獨的引擎。2.可定制,體積小,滿足嵌入式系統的需求。
BerkeleyDB數據庫(開源,商業收費)
技術特點:1.Berkeley DB是一個開源的嵌入式數據庫管理系統,可以為應用提供高性能的數據管理服務。它的應用程序員只需要調用一些簡單的API就可以訪問和管理數據。(不使用SQL語言)。2.BerkeleyDB為許多編程語言提供了實用的API接口,包括C、C++、Java、Perl、Tcl、Python和PHP。所有與數據庫相關的操作都由BerkeleyDB數據庫函數庫完成。3.Berkeley DB是可移植的,幾乎可以在所有UNIX和Linux系統及其變體、Windows操作系統和各種嵌入式實時操作系統下運行。Berkeley DB鏈接到應用程序,終端用戶一般根本感覺不到有數據庫系統。4.BerkeleyDB是可伸縮的,這表現在很多方面。庫本身非常緊湊(不到300KB的文本空間),但它可以管理高達256TB的數據庫。它支持高并發,成千上萬的用戶可以同時操作同一個數據庫。Berkeley DB可以用足夠小的占用空間運行具有嚴格約束的嵌入式系統。
Berkeley DB在嵌入式應用中優于關系數據庫和面向對象數據庫的原因有以下兩個:(1)由于數據庫庫與應用程序運行在同一地址空間,數據庫操作不需要進程間通信。一臺機器的不同進程之間或者網絡中不同機器之間的進程通信成本遠遠大于函數調用的成本。(2)由于Berkeley DB對所有操作都使用一套API接口,不需要解析查詢語言,也不需要生成執行計劃,大大提高了操作效率。
SQLite(開源,商業免費)
輕量級數據庫SQLite的主要特點如下:1.它支持無需配置、安裝或管理員的事件;2.支持大部分SQL92;3.一個完整的數據庫存儲在磁盤上的一個文件中,同一數據庫文件可以在不同的機器上使用。最大數據庫支持2T,對字符和BLOB的支持僅限于可用內存。4.整個系統的代碼不到3萬行,內存占用(gcc)不到250KB。大多數應用程序比目前常見的客戶機/服務器數據庫更快,并且沒有其他依賴性。5.源代碼是開放的,95%的代碼都有很好的注釋,API也很好用。官方用TCL編譯的版本。
Empress(商業數據庫)
發展階段特點:1.嵌入式程序,使應用程序和數據庫在統一的地址空間中工作,增強了系統的穩定性,提高了系統的效率。2.確認響應時間,Empress可以讓數據響應時間相對一致,用戶可以設置超時限制。如果插入和修改操作沒有在指定時間內完成,系統將報告錯誤。3.快速操作Empress提供了一個內核級的CAPI,叫做MR,用MR寫的應用在執行的時候不需要解析。此外,MR中的加速機制還包括出色的鎖定控制、內存管理和基于記錄數量的選擇功能。4.靈活的開發模式,Empress提供多種開發接口,加快開發進程,無需開發人員重新學習開發語言,熟悉開發環境。5.友好的存儲方式,Empress數據庫可以放在操作系統支持的任何存儲設備中,Empress的形式甚至可以分為不同的存儲設備,如內存、硬盤和光盤。6.微內核結構Empress高度單元化,可以根據需要選擇需要的單元,減少Empress數據庫在產品中占用的資源。7.廣泛的平臺支持。Empress支持多種硬件平臺和軟件平臺,也可以移植到客戶需要的硬件平臺或操作系統上。
技術優勢:1.微內核結構占用內存空間小,特別適合緊湊設計。2.每周7天、每天24小時連續工作,無需任何額外的操作和維護。3.內核級CAPI接口,最大化運行速度。4.高度靈活的SQL接口。5.出色的斷電恢復能力。6.強大的交易和鎖定機制。7.支持SCSI、RAID、IDE、RAM、CD-RW、DVD-ROM、CF等存儲介質。8.支持Unicode代碼。9.引擎可以加載到磁盤和內存中。
EXtremeDB特點:
1.混合數據庫。EXtremeDB不僅可以建立在主存中完全運行的主存數據庫,還可以建立磁盤/內存混合介質的數據庫。在eXtremeDB中,我們稱這種基于磁盤、內存或磁盤+內存的運行模式為eXtremeDB Fusion融合數據庫。EXtremeDB Fusion兼顧了數據管理的實時性和安全性要求,是實時數據管理的循序漸進。
2.應用定制的API,根據應用數據庫的設計,自動生成應用程序對eXtremeDB數據庫的操作接口,不僅提高了性能,還消除了通用接口所必需的動態內存分配,從而提高了應用系統的可靠性。定制過程簡單方便。eXtremeDB數據庫中的表、字段、數據類型、事件觸發器、訪問方法等應用特性由高級語言定制,訪問數據庫的C/C++ API接口由eXtremeDB預編譯器自動生成。
3.內存數據庫。EXtremeDB將數據以程序直接使用的格式保存在主存中,不僅消除了文件I/O的開銷,還消除了文件系統數據庫所需的緩沖區和Cache機制。結果是每個事務的速度限制在1微秒或更低,這比類似磁盤的數據庫快幾百倍。作為內存數據庫,eXtremeDB不僅性能高,而且數據存儲效率高。為了提高性能,方便程序的使用,在eXtremeDB中不壓縮數據,100M的空間可以存儲70M以上的有效數據,這在其他數據庫中是無法想象的。
4.可預測的數據管理。EXtremeDB獨特的架構確保了數據管理的可預測性。EXtremeDB不僅更快、更小,而且更確定。在80雙核CPU的服務器上,eXtremeDB將15B條記錄保存在1TB內存中。無論記錄數量多少,eXtremeDB都可以在十分之一微秒內提取出一條記錄。
5.嵌入式數據庫。eXtremeDB內核以鏈接庫的形式包含在應用中,其開銷只有50KB~130KB。在嵌入式系統和實時系統中,eXtremeDB都是自然地嵌入到應用程序中,并且在最終用戶不知情的情況下工作。eXtremeDB的自然嵌入性對于實時數據管理非常重要:每個進程直接訪問eXtremeDB數據庫,避免了進程間通信,從而消除了進程間通信的開銷和不確定性。同時,eXtremeDB獨特的數據格式方便程序直接使用,消除了數據復制和數據翻譯的開銷,縮短了應用程序的代碼執行路徑。租用服務器可咨詢夢飛云idc了解。