FlashDB数据库动态回滚机制

FlashDB采用动态擦除、存储和状态位切换的方式解决数据库存满后整块擦除的问题。其区块大小为4K,包含校验、状态等参数,并有未使用、空、使用中、满四种状态。在存储过程中,首次存储直接标记为USING,过程中存储继续写入,满状态时会切换到下一区块并擦除。通过这种回滚存储策略,FlashDB能有效地管理数据库空间。

针对数据库存储存满的情况,FlashDB具有良好的处理机制。一般flash存满之后都需要整块擦除才能进行下一次存储,这样会造成擦除时间过长占用时间片的问题。FlashDB数据通过动态擦除、动态存储和状态位切换的方式完美的解决了数据库存满之后需要整块擦除的弊端。


1.sector(区块)定义

(1)区块大小

FlashDB的区块大小为4K字节,刚好是一个外部flash的最小区块单元,这样划分便于擦除和写入。

(2)区块参数

区块主要有校验标志、状态、区块首地址、起始node时间、结束node时间、结束node的id、结束node的状态、剩余的长度等参数,以下会针对具体参数进行详细阐述。

/* TSDB section information */
struct tsdb_sec_info {
    bool check_ok;                               /**< sector header check is OK */
    fdb_sector_store_status_t status;            /**< sector store status @see fdb_sector_store_status_t */
    uint32_t addr;                               /**< sector start address */
    uint32_t magic;                              /**< magic word(`T`, `S`, `L`, `0`) */
    fdb_time_t start_time;                       /**< the first start node's timestamp, 0xFFFFFFFF: unused */
    fdb_time_t end_time;                         /**< the last end node's time
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值