內存數據庫fastdb

FastDb是高效的內存數據庫系統,具備實時能力及便利的C++接口。FastDB不支持client-server架構因而所有使用FastDB的應用程序必須運行在同一主機上。FastDB針對應用程序通過控制讀訪問模式作了優化。通過降低數據傳輸的開銷和非常有效的鎖機制提供了高速的查詢。對每一個使用數據庫的應用數據庫文件被影射到虛擬內存空間中。因此查詢在應用的上下文中執行而不需要切換上下文以及數據傳輸。fastdb中併發訪問數據庫的同步機制通過原子指令實現,幾乎不增加查詢的開銷。fastdb假定整個數據庫存在於RAM中,並且依據這個假定優化了查詢算法和接口。此外,fastdb沒有數據庫緩衝管理開銷,不需要在數據庫文件和緩衝池之間傳輸數據。這就是fastdb運行速度明顯快於把數據放在緩衝池中的傳統數據庫的原因。 
fastdb支持事務、在線備份以及系統崩潰後的自動恢復。事務提交協議依據一個影子根頁面算法來自動更新數據庫。恢復可以執行得非常快,爲臨界應用提供了高可用性。此外,取消事務日誌改進了整個系統的性能,並且使得可以更有效的利用系統資源。 

fastdb是一個面向應用的數據庫,數據庫表通過應用程序的類信息來構造。fastdb支持自動的模式評估,使你可以只需要在一個地方更改-你的應用程序的類。fastdb提供一個靈活方便的接口來從數據庫中獲取數據。使用一個類SQL的查詢語言進行指定的查詢。通過一些後關係特性如非原子字段,嵌套數組,用戶定義類型和方法,對象間直接引用簡化了數據庫應用程序的設計並使之更有效率。

       儘管fastdb的優化是立足於假定整個數據庫配置在計算機的物理內存中,但是也有可能出現使用的數據庫的大小超過了系統物理內存的大小的情況,在這種情況下標準的操作系統交換機制就會工作。但是整個fastdb的搜索算法和結構是建立在假定所有的數據都存在於內存中的,因此數據換出的效率不會很高。

galebo
在configure時報checking whether compiling with multithread support... yes
checking for pthread_create in -lpthread... no,目前無辦法解決。
換其他辦法
直接用安裝文件夾裏面的makefile.gnu,看了說明這個是UNIX下的腳本。
使用這個報
[oracle@galebo fastdb]$ make -f makefile.gnu 
g++ -c -Iinc -Wall -O0 -g -fPIC -Wno-invalid-offsetof -pthread -fPIC src/class.cpp
cc1plus: unrecognized option `-Wno-invalid-offsetof'
編輯此文件,去掉此選項。
編譯通過,但是鏈接時報錯:
subsql.o(.text+0x1a8): In function `dbSubSql::dbSubSql(dbDatabase::dbAccessType)':
src/subsql.cpp:130: undefined reference to `_Unwind_Resume'

這個是需要增加-lgcc_s 鏈接庫。
最後全部通過,由於未使用automake,中間文件和最終鏈接庫都在當前目錄,自己建文件夾lib,將文件放置此目錄。
算是裝上fastdb了。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章