虚拟文件系统模拟_深入理解SQLite(5) 虚拟文件系统VFS

本文深入探讨SQLite的虚拟文件系统(VFS),讲解其作用、结构组成、不同平台的VFS类型以及如何注册和使用VFS。VFS提供了一个统一接口,使SQLite能在不同操作系统上兼容各种文件系统。
摘要由CSDN通过智能技术生成

前言

之前文章都一直在讲SQLite的API接口和事务,这篇文章就来讲一讲SQLite VFS的一些源码部分,在官网(www.sqlite.org/vfs.html)上有关于VFS的详细文档也参考,如果本人看的不过瘾的话,可以自行前往。

VFS也就是所谓的虚拟文件系统,因为sqlite3是夸平台的,所以运行在不同的平台上需要兼容不同的文件系统,这就是VFS的任务了,VFS就是对不同的文件系统做一个统一的接口。

简介

我们先看一张SQLite软件层次结构:

60db753c63a05eeeb272ae0328fbe7f7.png

SQLite库的内部层次结构就是上图的组件栈。Tokenizer,Parser和Code Generator组件用于处理SQL语句并将它们转换为虚拟机语言或字节代码的可执行程序。

简单地说,这三个前三层实现了 sqlite3_prepare_v2()。前三层生成的字节代码是预准备语句。我在第2篇文章就已经讲到过SQlite学习(C/C++接口介绍),虚拟机模块负责运行SQL语句字节代码。

B-Tree模块将数据库文件存储到具有有序键和具体对数性能的多个键/值存储中(其实也就是B+树)深入理解SQLite(3)体系架构。

Pager模块负责将数据库文件的页面加载到内存中,用于实现和控制事务,以及创建和维护防止崩溃或电源故障后数据库损坏的日志文件。

OS接口是一个抽象,它提供了一组通用的实现方式,使SQLite能够适配不同的操作系统。OS层位于最底层,是和系统的磁盘文件存储直接打交道,在OS层里封装了VFS。简单地说,底部的四层实现了 sqlite3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值