- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
开源内存数据库的调研与分析
一、内存数据库具备的一些基本功能
1):数据的管理,内存数据库机制是支持永久数据的管理的,包括数据库的的定义、存储、维护等功能。
2):数据的操作,内存数据库支持对数据进行增,删,改,查,数据完整性校验等一些基本功能。
3):事务管理,内存数据库支持调度,进程间、线程间的一些并发等操作。
4):数据恢复备份机制,内存数据库支持在线备份和系统崩溃后的自动恢复。
二、FastDB
FastDB是一个高效率的内存数据库系统,在磁盘上的数据库文件和使用该数据库的每一个应用程序占用的虚拟内存空间相映射,这样取消了数据文件和缓冲池中的数据传输。再将整个文件数据读入内存,并且使用了高性能的锁工具实现了只读模式线程间、单个更改模式线程和多个只读模式线程间的并发执行。FastDB通过位图实现对内存进行分配,最小单位块是分配量子(16字节)。如此大大提高了数据引用的局部性(对象数据尽可能分配在连续的内存区域),最小化了修改页的数目和减少了事务提交时间。事务提交协议基于一个影子根页算法,对数据库执行原子更新操作,恢复效率很高,在存储数据结构上可以采用T-tree结构(T-tree和AVL-tree相似,只是T-tree中每个节点中顺序存储了多个值),对于大量相似重复性数据的查询性能相当高;也可以采用Hash存储,这是用关键字段定位表中记录的最好办法(采用等号进行查询)。
影子根页算法概述:FastDB数据库中每条对象都具有唯一的标识符(OID),用作一个数组(对象索引)的下标,元素值表示对象的一个句柄,在FastDB数据库中存在两个索引(当前索引和影子索引),当某个对象第一次被修改时,它会创建一个副本,当前索引中的对象句柄被修改指向副本,影子索引仍然包含一个指向该对象原始版本的句柄。所有更改发生在副本上,FastDB在对象索引的一个特殊位图页上标记出哪个索引包含修改过的对象句柄。
当一个事务被提交时,FastDB首先检查对象索引的尺寸的大小,若增长了,还会重新为对象索引的影子副本重新分配内存,然后释放“旧对象”占用的内存,释放后,将修改过的所有位图页flush到磁盘上,然后FastDB将改变数据库头部中的当前对象索引指示符,以切换对象索引的角色。当前对象索引将变成影子索引之后,FastDB 把修改过的所有句柄从新的对象索引中复制到先前是影子的、现在已成为当前的对象索引中。此时,两个索引都得到了同步。
优点:
具备实时能力及便利的C++接口。FastDB针对应用程序通过控制读访问模式作了优化。通过降低数据传输的开销和非常有效的锁机制提供了高速的查询。对每一个使用数据库的应用数据库文件被影射到虚拟内存空间中。因此查询在应用的上下文中执行而不需要切换上下文以及数据传输。
fastdb中并发访问数据库的同步机制通过原子指令实现,几乎不增加查询的开销。fastdb假定整个数据库存在于RAM中,并且依据这个假定优化了查询算法和接口。此外,fastdb 没有数据库缓冲管理开销,不需要在数据库文件和缓冲池之间传输数据。
Fastdb支持事务、在线备份以及系统崩溃后的自动恢复。事务提交协议依据一个影子根页面算法来自动更新数据库。恢复可以执行得非常快,为临界应用提供了高可用性。此外,取消事务日志改进了整个系统的性能,并且使得可以更有效的利用系统资源。
fastdb是一个面向应用的数据库,数据库表通过应用程序的类信息来构造。fastdb支持自动的模式评估。
fastdb提供一个灵活方便的接口来从数据库中获取数据。使用一个类SQL的查询语言进行指定的查询。通过一些后关系特性如非原子字段,嵌套数组,用户定义类型和方法,对象间直接引用简化了数据库应用程序的设计并使之更有效率。
缺点:
尽管fastdb的优化是立足于假定整个数据库配置在计算机的物理内存中,但是也有可能出现使用的数据库的大小超过了系统物理内存的大小的情况,在这种情况下标准的操作系统交换机制就会工作。但是整个fastdb的有哪些信誉好的足球投注网站算法和结构是建立在假定所有的数据都存在于内存中的,因此数据换出的效率不会很高。
FastDB不支持client-server架构因而所有使用FastDB的应 用程序必须运行在同一主机上。
部署方法:
应用程序编译环境需求,首先是任何一个FastDB应用程序必须包含头文件:fastdb.h;
然后是可以选择调用库文件(FastDB编译后提供静态库(libfastdb_r.a)和共享库两种库(libfastdb_r.so/ libfastdb_r.so.2)给调用);
最后是FastDB提供很多编译选项接口,用户可以根据需要进行设置,比如:容错支持,无盘模式,锁检测清理机制等等功能。
运行系统环境需求:
理论上说,内存加载的数据库文件规模最小是1MB,上限就是内存和磁盘
文档评论(0)