FastDB

内存数据库系统
授权协议 Apache
开发语言 C/C++
所属分类 数据库相关、 数据库服务器
软件类型 开源软件
地区 不详
投 递 者 堵宪
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

Fastdb支持事务、在线备份以及系统崩溃后的自动恢复。事务提交协议依据一个影子根页面算法来自动更新数据库。恢复可以执行得非常快,为临界应用提 供了高可用性。此外,取消事务日志改进了整个系统的性能,并且使得可以更有效的利用系统资源。

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

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

  • (本文内容主要是通过学习官网、博客及阅读官网demo做出的总结) FastDB是一个内存数据库,通过把数据加载到内存中实现对数据的操作,相比于传统的数据库,操作的速度更快,但是存在一个缺点就是使用FastDB数据库的应用程序都必须运行在同一台主机上。 1 简单介绍 2 访问类型 3 使用流程 4 遇到的问题及解决办法 5 代码实例 6 总结 一、 简单介绍 1 将数据完全加载到内存,在内存中实现对

  • 因为项目中使用的fastdb,前2天的面试也有所提到,就想着要仔细研究一下。 在网上看到了一下主存数据库的性能测试,相对于BerkeleyDB和SQLite来比,fastdb的性能还是略胜一筹,时间精力有限,本人没有对SQLite,BerkeleyDB进行系统的分析研究。这里仅是简单剖析fastdb高效性的实现。 在其他报告中有提到,在fastdb磁盘模式下,当批量提交事务时fastdb的性能比S

  • 【博客搬家,这是项目预研的报告说明,前期贴出有性能报告和使用心得...】   内存数据库机制的使用研究报告   相对于传统磁盘数据库,内存数据库通过将数据完全加载到内存,在内存中实现对数据的管理,在数据同步、数据传送、事务处理、并行操作等方面进行了相应的改进设计,使得内存数据库在处理数据上能够比磁盘数据库快得多,可以有效地解决计费系统中信控、实时累账等部分对系统响应要求高的问题。 项目决定在信控模

  • 环境: CentOS 6.4 32位 注意: 64位运行有问题,运行最后会报 segmentation fault,所以最后采用32位操作系统。 1.1 安装 (1) 安装需要的依赖 yum install gcc make gcc-c++ wget (2) 下载源码 wget http://www.garret.ru/fastdb-3.76.tar.gz (3) 解压 tar -xvf fast

  • 选择fastdb主要有两个原因,  1.内存数据库,体量小,速度快  2.其数据结构与交易系统非常类似(很大可能性是交易系统fld那套东西借鉴了fastdb,猜的:) 部署&安装 下载  http://www.garret.ru/fastdb.html ok@x1:~/下载$ ll fastdb-3.76.tar.gz -rw-rw-r-- 1 ok ok 3287628 7月 10 10:29 

  • 一、引言 在很多项目中,经常会碰到这样的需求,需要对大量数据进行快速存储、查询、删除等操作,特别是在一些针对诸如运营商、银行等大型企业的应用中,这些需求尤为常见。比如智能网中的大量在线并发用户的数据管理、软交换平台中的在线信息交互、宽带/3G等数据网中在线用户行为记录等等。 针对这些情形,我们通常需要选择高性能的数据库产品,而且通常需要使用内存数据库,顾名思义,内存数据库指的是所有的数据访问控制都

  • 基本解决了在example里testdb的代码疑问。 数据table对应在fastdb里是c++类;表记录对应于该类的实例。 下面的c++数据类型可以作为fastdb 记录的原子组件: Type Description bool boolean type (true,false) int1 one byte signed integer (-128..127) int2 two bytes sig

  • 就个人理解而言,fastdb client-server模式,只是在client和server之间添加了一个socket通信,其实操作都是在server端完成的。 但是client-server也有很多好处,其中一个就是可以同一个进程可以同时运用fastdb的无盘模式,和磁盘模式。 当然其中一个模式只是client(比如这个进程开启时需要用无盘模式,将数据全部存入内存,以方便读取,但是记录日志时希

  • 在网上看到了一下主存数据库的性能测试,相对于BerkeleyDB和SQLite来比,fastdb的性能还是略胜一筹,时间精力有限,本人没有对SQLite,BerkeleyDB进行系统的分析研究。这里仅是简单剖析fastdb高效性的实现。 在其他报告中有提到,在fastdb磁盘模式下,当批量提交事务时fastdb的性能比SQLite的性能高出3-10倍,可当逐条提交事务时fastdb的性能却急剧下降

  • fastdb用起来还是很方便简单的,但是在使用的过程当中发现了很多问题: 比如: 1、数据库对于内存的消耗实在是太大,尤其是数据量到达千万级时尤为明显。 2、数据量上千万级别以后,性能远地于预期,可能是服务器内存不够的缘故。事务过大后,提交时间很长。 3、在并发访问模式上,同一进程的线程只能用同一模式,只read能够并发。不能够write并发(多个write线程)。进程间也是如此,也就是说多个wr

  • error LNK2019: 无法解析的外部符号 bind,该符号在函数 "public: bool __cdecl win_socket::open(int)" (?open@win_socket@@QEAA_NH@Z) 中被引用 windows 64位依赖目录中没有"ws2_32.lib"这个lib,在链接器-lib路径指定64位的ws2_32.lib即可

  • 学习背景:最近遇到了fastDB瓶颈的问题,经过仔细的研究fastDB的锁机制和内存机制,暂时记录如下。 fastdb的锁:fastdb是内存数据库,锁针对的是整个库的锁,所以在频繁写操作时会拖低系统的效率,这也是无奈之举。下面的分析是基于beginTransaction(事务分析的)            在使用的时候打开数据库的权限中有几种方式:1。dbConcurrentUpdate //同

  • gigabase/ gigabase/aclocal.m4 gigabase/array.h gigabase/blob.cpp gigabase/blob.h gigabase/bootstrap gigabase/btree.cpp gigabase/btree.h gigabase/bugdb.cpp gigabase/bugdb.h gigabase/buglogin.htm gigaba

  • 转载自:http://blog.csdn.net/hejianhua/article/details/6656404 内存数据库fastdb的使用研究报告 相对于传统磁盘数据库,内存数据库通过将数据完全加载到内存,在内存中实现对数据的管理,在数据同步、数据传送、事务处理、并行操作等方面进行了相应的改进设计,使得内存数据库在处理数据上能够比磁盘数据库快得多,可以有效地解决计费系统中信控、实时累账等部

  • FastDb在代码中实现,首先需要在代码中注册一个表,相当于数据库的建表。 代码如下: class Student { public: char const* vc_stuid; char const* vc_stuname; char const* vc_sex; dbArray< dbReference<Score> > ScoreRefs; /*

  •   分类: fastDB翻译 c++ 接口 fastdb主要的目标之一就是提供一个灵活并且方便的应用语言接口。任何使用过odbc或者类似的sql接口的人会明白我说的是什么。在fastdb中,一个查询可以用c++写成下面的样子: dbQuery q; dbCursor<Contract> contracts; dbCursor<Supplier> suppliers;

  • 1、使用目录fastdb-373\fastdb。文件为:fastdb.lib及相关头文件。 dbDatabase db; db.open(,,,); 2、多线程使用: 在管理器中初始化,然后再各线程中如下attach:  dbDatabase* db = (dbDatabase*)&(pthis->m_pDbManager->m_AllAccessDb);       db->attach();

 相关资料
  • 一、内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递":memory:",如: rc = sqlite3_open(":memory:", &db); 在调用完以上函数后,不会有任何磁盘文件被生成,取而代之的是,一个新的数据库在纯内存中被成功创建了。

  • 创建一个数据库 # sqlite3_createdb.py import os import sqlite3 db_filename = 'todo.db' db_is_new = not os.path.exists(db_filename) conn = sqlite3.connect(db_filename) if db_is_new: print('Need to crea

  • 事务处理 索引

  • 问题内容: 我想将分层的二维科学数据集存储在关系数据库(MySQL或SQLite)中。每个数据集都包含一个数值数据表,其中包含任意数量的列。另外,每个数据集可以具有一个或多个与其表的给定行关联的相同类型的子级。每个数据集通常具有1至100列和1至1.000.000行。数据库应该能够处理许多数据集(> 1000),并且数据的读/写应该相当快。 存储此类数据的最佳数据库模式将是什么?是否有一个“主”表

  • 问题内容: 在数据库中建立适当的关系对数据完整性以外的其他功能没有帮助吗? 它们会改善还是阻碍性能? 问题答案: 我不得不说,适当的关系将比省略它们更好地帮助人们理解数据(或数据的意图),特别是因为维护它们的总成本非常低。 它们的存在不会影响性能,除非是在体系结构方面(正如其他人指出的那样,数据完整性有时会导致外键冲突,这可能会产生某些影响),但是IMHO的许多好处(如果正确使用,则不胜枚举)。

  • 我在研究内存数据库的概念。有关这方面的文章说, 内存数据库系统是一种将数据完全存储在主存中的数据库管理系统。 他们讨论了这个概念的优点和缺点。 我的问题是如果这些数据库管理系统将数据完全存储在主存储器中, 停电后所有数据都消失了吗??? 还是有办法保护数据???