内存数据库fastdb

FastDb是高效的内存数据库系统,具备实时能力及便利的C++接口。FastDB不支持client-server架构因而所有使用FastDB的应用程序必须运行在同一主机上。FastDB针对应用程序通过控制读访问模式作了优化。通过降低数据传输的开销和非常有效的锁机制提供了高速的查询。对每一个使用数据库的应用数据库文件被影射到虚拟内存空间中。因此查询在应用的上下文中执行而不需要切换上下文以及数据传输。fastdb中并发访问数据库的同步机制通过原子指令实现,几乎不增加查询的开销。fastdb假定整个数据库存在于RAM中,并且依据这个假定优化了查询算法和接口。此外,fastdb没有数据库缓冲管理开销,不需要在数据库文件和缓冲池之间传输数据。这就是fastdb运行速度明显快于把数据放在缓冲池中的传统数据库的原因。 
fastdb支持事务、在线备份以及系统崩溃后的自动恢复。事务提交协议依据一个影子根页面算法来自动更新数据库。恢复可以执行得非常快,为临界应用提供了高可用性。此外,取消事务日志改进了整个系统的性能,并且使得可以更有效的利用系统资源。 

fastdb是一个面向应用的数据库,数据库表通过应用程序的类信息来构造。fastdb支持自动的模式评估,使你可以只需要在一个地方更改-你的应用程序的类。fastdb提供一个灵活方便的接口来从数据库中获取数据。使用一个类SQL的查询语言进行指定的查询。通过一些后关系特性如非原子字段,嵌套数组,用户定义类型和方法,对象间直接引用简化了数据库应用程序的设计并使之更有效率。

       尽管fastdb的优化是立足于假定整个数据库配置在计算机的物理内存中,但是也有可能出现使用的数据库的大小超过了系统物理内存的大小的情况,在这种情况下标准的操作系统交换机制就会工作。但是整个fastdb的搜索算法和结构是建立在假定所有的数据都存在于内存中的,因此数据换出的效率不会很高。

galebo

linux下安装

下安装包 http://www.fastdb.org/fastdb-3.62.tar.gz。 
在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了。 

你可能感兴趣的:(内存数据库fastdb)