接触内存数据库系统:fastdb

针对大规模数据实时处理需求,介绍了FastDB内存数据库的应用场景及优势。该数据库采用内存映射文件技术,支持事务性操作,适用于多线程并发环境。此外,通过调整参数可以支持更大规模的数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【从我原来空间搬来的】

 

前不久,项目需要实时运算处理大规模数据,因为项目要支持多线程,并发性,事务性。第一反应是要找一个这样的内存数据库,商用的有Oracle的TimesTen和SOUTH KOREA的Altibase,但是费用不菲。我们只需要对内存数据库的一些简单操作即可。所以我们就锁定了开源的fastdb。其代码非常简练,一共不过3万代码左右,它并不是用想象的SysV IPC mechanism (shmat) 实现,而是用Memory mapping mechanism (mmap) 。虽然使用了部分shmat存储一些数据库控制变量信息等,但是数据还是用内存文件映射的。对于千万级的数据,其需内存是4GB以上,所以感觉用内存映射文件数据库更合适。

fastdb实现的方法重要的几点特征:

1、内存文件映射时更改了系统的自动提交更新页数据机制,为事务性性能提高基础。

2、数据库事务提交机制是基于一个影子根页算法(shadow root pages algorithm),对数据库进行原子更新操作,所以恢复非常快。

3、提供游标化,结构化语句的查询。

4、还提供了一个可视化的数据查询工具SUBSQL。

 

 

对于fastdb的一些使用心得和技巧将继续贴出。

 

 

下面是作者给我回的邮件(作者:Konstantin 很热心):

By default size of FastDB database is limited by 4Gb.
But it also depends on OS limits on maximal size of memory mapped object.
In 32-bit OS it usually smaller than 2Gb.


To support work with larger databases, you need to use 64-bit OS and define dbDatabaseOffsetBits to have some large value than 32. (for example 40 corresponds to terrabyte database).


Memory mapping mechanism (mmap) also allows shared access to the memory from multiple applications.
The main idea of mapping fiel on memory is that modified pages are automatically stored in the file by OS.
But you can use SysV IPC mechanism (shmat) instead of mmap if for some reasons use of mmap is not desired.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值