虚拟文件系统初步设计

来源:互联网 发布:时时彩后三遗漏数据 编辑:程序博客网 时间:2024/05/22 04:28

虚拟文件系统初步设计

 

一、背景和说明

为了对对象的存储、访问、组织和查找进行集中统一管理,特提出虚拟文件系统的初步构思和设计。

文件系统是指文件命名、存储和组织的总体结构。虚拟文件系统则是针对各种文件系统所做的虚拟抽象存取层,综合考虑了业务文件系统(BizFileSystem)组织机构文件系统(OrgFileSystem)、本地文件系统(LocalFileSystem)等各种文件系统的异同,对相同的部分作了抽取,封装为统一的存取接口;对相异的部分作了抽象和虚拟,将这些部分声明为虚拟方法,再由相应的文件系统去做具体的实现。例如创建文件、文件的搜索、复制、移动、删除等这些操作。根据存储方式和储存介质的不同,划分为组织机构文件系统、本地文件系统等几种,不同的文件系统,存储方式也不一样。

 

二、使用虚拟文件系统存储对象的优势与劣势

1.       优势

l         对象存储集中

l         对象处理和访问方式统一

l         对象组织方式灵活

l         查找对象方便快捷

l         便于后续组织机构表达式、及系统部署方面的设计和开发工作

 

2.       劣势

l         大文件(百兆以上)的处理速度不太理想、可能造成假死现象(对此问题或许可以考虑采取分段、分块存取,表现上显示进度条的方式解决;另外还可以考虑提供选项,允许将文件内容统一保存到服务器的某个目录下,依赖Windows的能力提高对大文件的处理能力)。

 

三、系统层次结构设计

整体设计思路是:基于大型数据库、以 SQL语言为最终实现手段,在对象和数据库之间,封装一层虚拟文件系统层。所有对象以文件的形式、通过虚拟文件系统层统一进行存取访问操作。

虚拟文件系统层公布了统一存取文件的访问接口,在它的基础之上实现的各种文件系统,都遵循它的接口规范,这些接口的使用方法和Windows文件系统接口的使用方法大致相同。预计,首先基于虚拟文件系统实现的文件系统有:组织机构文件系统和本地文件系统它们和虚拟文件系统的关系以及存取内容的关系如下图。

 

 虚拟文件系统分层设计图

 

 

1.       设计思想

以适配器模式为核心

 

2.       数据库文件系统(DBFileSys)的表结构

以数据库为存储介质的文件系统,存储上由以下四个表构成:

 

1.          TFILESYSTEM(文件系统表)

11  文件系统表

字段显示名称

字段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

FPathFIDFKindFDELETELEVEL

 

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文件系统存取访问方式类似的各种需要。甚至如果需要的话、还能够让虚拟文件系统作为一个独立产品、以组件的方式出售,例如:开发企业信息管理系统中的文档管理模块时,借助虚拟文件系统能够使文档管理更统一、方便和快速。

 

 

原创粉丝点击