虚拟文件系统初步设计
来源:互联网 发布:时时彩后三遗漏数据 编辑:程序博客网 时间:2024/05/22 04:28
虚拟文件系统初步设计
一、背景和说明
为了对对象的存储、访问、组织和查找进行集中统一管理,特提出虚拟文件系统的初步构思和设计。
文件系统是指文件命名、存储和组织的总体结构。虚拟文件系统则是针对各种文件系统所做的虚拟抽象存取层,综合考虑了业务文件系统(BizFileSystem)组织机构文件系统(OrgFileSystem)、本地文件系统(LocalFileSystem)等各种文件系统的异同,对相同的部分作了抽取,封装为统一的存取接口;对相异的部分作了抽象和虚拟,将这些部分声明为虚拟方法,再由相应的文件系统去做具体的实现。例如创建文件、文件的搜索、复制、移动、删除等这些操作。根据存储方式和储存介质的不同,划分为组织机构文件系统、本地文件系统等几种,不同的文件系统,存储方式也不一样。
二、使用虚拟文件系统存储对象的优势与劣势
1. 优势
l 对象存储集中
l 对象处理和访问方式统一
l 对象组织方式灵活
l 查找对象方便快捷
l 便于后续组织机构表达式、及系统部署方面的设计和开发工作
2. 劣势
l 大文件(百兆以上)的处理速度不太理想、可能造成假死现象(对此问题或许可以考虑采取分段、分块存取,表现上显示进度条的方式解决;另外还可以考虑提供选项,允许将文件内容统一保存到服务器的某个目录下,依赖Windows的能力提高对大文件的处理能力)。
三、系统层次结构设计
整体设计思路是:基于大型数据库、以 SQL语言为最终实现手段,在对象和数据库之间,封装一层虚拟文件系统层。所有对象以文件的形式、通过虚拟文件系统层统一进行存取访问操作。
虚拟文件系统层公布了统一存取文件的访问接口,在它的基础之上实现的各种文件系统,都遵循它的接口规范,这些接口的使用方法和Windows文件系统接口的使用方法大致相同。预计,首先基于虚拟文件系统实现的文件系统有:组织机构文件系统和本地文件系统它们和虚拟文件系统的关系以及存取内容的关系如下图。
1. 设计思想
以适配器模式为核心
2. 数据库文件系统(DBFileSys)的表结构
以数据库为存储介质的文件系统,存储上由以下四个表构成:
1. TFILESYSTEM(文件系统表)
表1。1 文件系统表
字段显示名称
字段ID
数据类型
是否主键
字段说明
GUID
FGUID
字符
是
全局唯一标示字符串GUID
父GUID
FPARENTGUID
字符
父节点的GUID
文件名
FFILENAME
字符
主要文件名+扩展名
主要文件名
FID
字符
标示ID
扩展名
FKIND
字符
扩展名表示了类型
路径
FPATH
字符
所在路径。末尾带路径分隔符“/”
删除版本号
FDELETELEVEL
整数
逻辑删除标示:为0表示没有被逻辑删除;>=1表示已经被逻辑删除。回收站功能依此实现。
显示名称
FDISPLAYNAME
字符
顺序
FSEQUENCE
整数
在同一级别文件中的显示顺序
文件标记
FFLAG
字符
16字节长度的字符串, 1..8个保留给通用的文件系统层, 9..16可自定义,第1位:用'1'标记是目录;
文件系统表的索引
索引名
索引唯一
索引字段
说明
UFN
是
FPath、FID、FKind、FDELETELEVEL
PGUID
是
FParentGUID
2. TFILEATTRIBUTE(文件属性表)
表1.2 文件属性表
字段显示名称
字段ID
数据类型
是否主键
字段说明
GUID
FGUID
字符
是
全局唯一标示字符串GUID
ID
FID
字符
是
属性ID
值
FVALUE
字符
是
属性值
3. TFILECONTENT(文件内容表)
表1.3 文件内容表
字段显示名称
字段ID
数据类型
是否主键
字段说明
GUID
FGUID
字符
是
全局唯一标示字符串GUID
内容
FCONTENT
二进制流
文件内容的二进制流表示
4. TFILEINDEX(文件索引表)
表1.4 文件索引表
字段显示名称
字段ID
数据类型
是否主键
字段说明
GUID
FGUID
字符
是
全局唯一标示字符串GUID
ID
FID
字符
是
索引类别ID
值
FVALUE
字符
是
索引值
四、核心类设计(详细内容请参见VirtualFileSys.mdl文件)
1. VirtualFileSystem
2. VirtualFileSystemAdapter
3. CommonFileSystemAdapter
4. DBFileSystemAdapter
5. BizFileSystemAdapter
6. OrgFileSystemAdapter
7. LocalFileSystemAdapter
说明:文件名处理过程中,不区分大小写。
五、可能会碰到的问题
1. 如果考虑支持多种大型数据库的话,在具体实现过程中, SQL语句上可能会遇到困难(例如“重命名”操作时维护所有相关文件的SQL语句)。
2. 原来的实现基于Delphi,现在改为.Net上实现,需要一段时间熟悉.Net平台,然后才能更好的进行实现。
六、其他
抽取虚拟文件系统接口层时,尽量考虑全面、兼顾通用型,使之在.Net平台上,能够满足以大型数据库作为存储介质、和Windows文件系统存取访问方式类似的各种需要。甚至如果需要的话、还能够让虚拟文件系统作为一个独立产品、以组件的方式出售,例如:开发企业信息管理系统中的文档管理模块时,借助虚拟文件系统能够使文档管理更统一、方便和快速。
- 虚拟文件系统初步设计
- 虚拟文件系统
- 虚拟文件系统
- 虚拟文件系统
- 虚拟文件系统
- 虚拟文件系统
- 虚拟文件系统
- 虚拟文件系统
- 虚拟文件系统
- 虚拟文件系统
- 虚拟文件系统
- 虚拟文件系统
- 虚拟文件系统
- 基于哈希数据结构的Ogre自定义文件系统初步设计方案
- 文件系统-- 虚拟文件系统介绍
- 文件系统-- 虚拟文件系统相关数据结构
- linux文件系统(二) - 虚拟文件系统
- EXT2文件系统、虚拟文件系统、proc文件系统
- DVDrip
- 适当地做些改变。让自己的生活不再烦恼,不再为了自己的未来而担心。
- 望江南
- [收藏]常见逻辑电平标准
- Import dmp file
- 虚拟文件系统初步设计
- 硬盘安装VISTA
- 我关注的股票
- mplayer cross compile 2
- Silverlight behavior 实现将字符串全部转化为小写的behavior
- 继母无情,可怜的小孩!
- js常用函数
- Java在数据库操作中批量插入数据
- 触发器中回滚和提交,复制相关