- 浏览: 435615 次
- 性别:
- 来自: 唐山
文章分类
最新评论
-
hautbbs:
谢谢分享!
ASP.NET 导出Excel 和csv -
hautbbs:
感谢分享!
ASP.NET 导出Excel乱码的终极解决 -
wyf:
zcl920 写道只能说 看不懂。要发就发全 取一段出来 有什 ...
图片上绘制文字换行处理 -
zcl920:
只能说 看不懂。要发就发全 取一段出来 有什么用。
图片上绘制文字换行处理 -
380086154:
有用,谢谢。
js比较日期
本文适用于附件(各类文档、图片和压缩包等,下同)比较多的应用系统(如:知识管理系统、集团 ERP 管理系统),可以对大批量的文档进行树状结构化目录存储,能迅速定位到服务器端的文档,提高文档据名查询的速度。
目前大多数应用系统对附件 的存储重视不够,一般在系统应用的初期阶段附件不多,所以查询的性能体现不出来。而对于像知识管理系统这样的知识分享系统,经过多年的运行后,会产生上百万的文档,如果不对文档进行合理化的管理,那么查询性能会越用越慢。
目前对附件的存储大概有一下几种方式: 1 。把附件放在服务器端单个文件夹中,那么在附件达到上百万时,从这些文件中查询一个文件,速度是何其慢; 2 。按日期存放,这种方式应该说还不错,但这种方式会让日期文件夹无限增多,会出现有些日期文件夹中附件多,有些日期文件夹中附件少的不均衡现象; 3 。把附件存在数据库中,这种方法比较适合附件比较少的情况,如果附件达到上百万,那么当几千人并行去数据库读取附件时,那么会遇到如下问题: 1 )数据库的 I\O 性能瓶颈问题 ;2 )把文件以流的方式读入到内存,再到前台展示或下载,那么对服务器的内存负载也是一个很大的压力 ;3 )把文件以流的方式在服务器端先转化为文档,再去前台展示或下载,而转换为文档又需要一定时间,如果是一个大文档转化时间会更长; 4 )如果文件名称相同的话,那可能会遇到错误。
所以针对目前的现状,我对此提出一种方法,对附件进行树状结构化目录管理,就是把附件以原始文档或对其进行压缩形成压缩包的形式存放在硬盘上,但这些文档存放时是根据数据库中附件记录的编码 ID 以一种树状的结构进行存储的,根据文档等级配置表,对其编码 ID 进行补码后截断,根据不同等级方式进行存放,例如,按照 2 级树状结构进行存储,那么同一等级树节点中的文档数目是一样的,这样会做到文档存放均衡;也可以按照不同等级混合存放,那么文档可以局部均衡,在读取文档的时候,根据附件记录表中的编码 ID ,再次进行补码后截断,折算出文档树路径,准确定位到文档,可以直接提供给前台页面进行展示或下载,一步到位。
文档树状结构化目录管理原理:用户上传文档时在数据库文档表中产生一条记录,同时记录会自动产生一个数字型记录编码,根据系统设置好的目录树等级配置表的等级,对编码补码(补 0 )后,折算出母文件夹名称,子文件夹名称和文件名,这样就产生了文件的路径。
文档树状结构化目录分为均衡目录方式和混合存放方式,均衡存放表示所有文档是按照同一个等级存放的,例如文档编码是 123 ,根据配置表 2 级树定位为 8 位编码,补码后是 00000123 ,那么 8 ÷ 2=4 ,那么前四位( 0000 )为母文件夹,后四位( 0123 )为子文件夹和文件名,那么文件的上传路径就是 0000\0123\0123 ,根据路径上传文档即可,那么下载文档的原理和上传的原理是类似的。混合存放表示文档树状结构化目录可以按多个等级一起存储,文件上传流程图如下图 1 。
图 1
根据上面的说明,下面举例说明如何上传文档,为了举例的方便,先定义这三个数据表如下:
首先在数据库中定义 3 个表(参阅附件 1 ),它们分别是 1 )目录树等级配置表( LevelConfig ),它的字段有:编码、目录树节点等级、目录树等级位数、有效性,表示定义文档目录树的等级,一般定义二级或三级树即可,多余三级就比较繁琐,那么还要定义好等级编码的位数,这个是非常重的配置,要根据不同的数据库去配置,有效性表示目前在用的等级; 2 )另一个是文档表( Doc ),也即是存放附件的记录表,字段有:编码、文档物理名称、扩展名、文档大小、是否压缩、目录树等级编码,在存放的时候,也可以让用户选择是否压缩,如果选择了压缩,那么将以压缩包的形式上传存放到服务器硬盘上; 3 )还有一个就是文档扩展名表( DocExt ),它的字段是:编码,名称,它表示文档格式的表。
目录树等级配置表 (LevelConfig) (需要说明的是目录树等级位数我是按照 4 位晋级的,例如 2 × 4=8 ,这样每个母文件夹最多可以存放 10000 个文档)
|
|||
编码 |
目录树节点等级 |
目录树等级位数 |
有效性 |
A |
2 |
8 |
1 |
B |
3 |
12 |
0 |
C |
4 |
16 |
0 |
D |
5 |
20 |
0 |
E |
6 |
25 |
0 |
|
|
|
|
文档表 (Doc) |
|||||
编码 |
文档物 理名称 |
文档 扩展名 |
文档 大小 |
是否 压缩 |
目录树 等级编码 |
… |
|
|
|
|
|
123 |
文档 123 |
1 |
500 |
0 |
A |
124 |
图片 124 |
2 |
300 |
0 |
A |
… |
|
|
|
|
|
9527 |
文档 9527 |
1 |
9000 |
1 |
A |
… |
|
|
|
|
|
均衡存放文档数据表
文档表 (Doc) |
|||||
编码 |
文档物 理名称 |
文档 扩展名 |
文档 大小 |
是否 压缩 |
目录树 等级编码 |
… |
|
|
|
|
|
123 |
文档 123 |
1 |
500 |
0 |
A |
124 |
图片 124 |
2 |
300 |
0 |
B |
… |
|
|
|
|
|
9527 |
文档 9527 |
1 |
9000 |
1 |
A |
… |
|
|
|
|
|
文档扩展名表( DocExt ) |
|
编码 |
名称 |
1 |
Doc |
2 |
Jpg |
3 |
Zip |
4 |
Xls |
5 |
|
… |
|
混合存放方式文档数据表
根据上面定义好的数据表,现按照 2 种方式举例说明如何进行文档的树状结构化目录管理。
1. 均衡存放方式:顾名思义就是文档中的各级文档数目都是相等的,那么在存储文档时就是所有的文档都是按照同一级别存放的,例如均是按 2 级或 3 级存放,我们知道每个附件中的文档在数据库中都有一条记录,并自动产生一个编码。
l 假如按照 2 级存放,根据前面配置表定义好的规则和前面说明的原理,那么在编码前补 0 码,组成 8 位的虚拟编码是 00000123 ,前四位 0000 为母文件夹,后四位 0123 为子文件夹,同时 0123 也是文档的名称,以此类推虚拟编码 00000124 ,前四位 0000 为母文件夹,后四位 0124 为子文件夹,所以 0123 和 0124 子文件夹都在 0000 母文件夹中,那么 0000 文件中可以存放 10 × 10 × 10 × 10=10000 个文档,从母文件夹 0000 推理到母文件夹 9999 中也可以存放 10000 个文件,总共可以存放 10000 × 10000=1 亿个文档,在读取文档时据文档记录的编码,前面补 0 码组成 8 位编码。例如:编码 123 ,组成 8 位编码既是 00000123 ,从中间截断后,文档下载的路径是 …\files\0000\0123\0123 ,这样就一步到位的定位到了文档,根据不同的技术( asp.net 、 Java 、 ruby )在下载文档时,可以把文档的物理文件名和扩展名进行组合提供给前端下载, 2 级目录树状结构图,如图 2 所示, 需要说明的是 Files 表示附件的跟文件夹,之所以把它命名为 2 级树,是因为 2 级是 8 位编码,每一级节点位数是 4 位,所以对它进行 8 ÷ 4=2 ,所以称之为 2 级目录树 。
图 2
2. 混合存放方式,也就是多级混合存放,它比较灵活,具有如下一些优点: 1 )良好的扩展性,例如系统开始是 2 级目录树存放,经过一段运营后发现不够用,可以在采用三级存放,这样就形成了多级存放模式,但注意避免树层级太深; 2 )在前台界面让用户自由选择存放等级。
下面举例说明:
例如文档编码 123 是按 2 级存放,文档编码 124 是按 3 级存放,根据配置表, 2 级是 8 位编码,文档编码 123 虚拟编码是 00000123 , 3 级是 12 位编码 , 文档编码 124 虚拟编码是 000000000124 ,均按 4 位编码进行截码,那么文档树状结构目录图如图 3 所示:
图 2
- 文档树状结构化目录管理方法.rar (179.3 KB)
- 下载次数: 5
发表评论
-
登录时记住用户名密码的实现方式
2019-06-12 15:11 3032登录的时候记住用户 ... -
CAS 实现单点登录 .NET MVC
2016-05-24 17:14 1130http://www.cnblogs.com/woxpp/p ... -
.NET开发邮件发送功能的全面教程(含邮件组件源码)
2015-03-31 09:43 1169原文地址:http://www.cnblogs.com/he ... -
开发Web组合
2015-01-04 11:39 6131、数据库操作 ORM-Dapper 2、前台界面布局采 ... -
基于 Bootstrap 构建的网站
2014-12-14 14:12 636文档,下载地址:http://v3.bootcss.com ... -
iis8 默认不支持svc解决方法
2014-09-18 18:57 781以下内容对于使用WIN2012 部署V9的时候使用。 ... -
C# 连接Oracle(利用ODP.net,不安装oracle客户端)
2014-07-11 09:37 1696C# 连接Oracle(利用ODP.net,不安装oracl ... -
C# Attribute 特性,过期特性
2014-05-27 15:18 1843通过下列过程将属性应用到代码元素。 通过从 .NE ... -
.NET画实时直方图
2011-12-30 09:37 918using System; using System.Col ... -
设置combobx选中项
2011-12-21 15:20 1032cbRole.SelectedIndex = cbRole.I ... -
.StringTemplate替换模板
2011-11-03 10:19 1246官方下载 www.StringTemplate. ... -
WCF-IErrorHandler
2011-10-11 16:30 1053使用 IErrorHandler 接口,我们可以更深入地 ... -
ADODB.Stream instead of Scripting.FileSystemObject.
2011-07-04 08:55 1241In a Silverlight 4 OOB App (eve ... -
Scripting.FileSystemObject对象的详细技巧指南
2011-07-03 23:39 1047Scripting.FileSystemObject对象的 ... -
Stream 和 byte[] 之间的转换
2011-07-02 16:52 1071/* - - - - - - - - - - - - - ... -
常用正则表达式
2011-06-15 20:17 794正则表达式用于字符 ... -
DynamicMethod 类
2011-05-11 22:51 1164public delegate String MyMetho ... -
一个通用的快速反射方法(A General Fast Method Invoker)
2011-04-13 22:01 1526普通反射方法 MethodInfo methodIn ... -
C#操作IIS(转)可以写一个工具自己配置网站
2011-03-24 21:08 2269using System; using System.Dir ... -
图片上绘制文字换行处理
2011-01-28 15:01 2882protected void Page_Load(objec ...
相关推荐
慧自文档树状文件列表管理软件提供了一套全面的文件管理解决方案,其独特的树状文件列表视图、多样化的窗格显示模式以及强大的快捷方式功能极大地提升了用户的文件管理效率。此外,软件支持的内容窗格显示类型切换...
`zTree`是一个非常流行的JavaScript插件,专门用于创建动态的树状结构,它适用于数据展示、层级管理等多种场景。本示例——"zTree实现的简单的树状结构的城市demo",是一个面向新手的实践项目,旨在帮助初学者掌握...
- **文件管理系统**:在Web应用中,树状结构常用于展示文件和目录的层次关系。 - **组织架构**:企业内部的组织结构图可以借助树状结构展示员工的上下级关系。 - **决策树**:在数据分析和机器学习中,决策树模型也...
树状文件列表窗格提供了一种层次化的文件视图,使用户能更直观地管理和组织文件结构。内容窗格则根据用户选择,以不同方式显示内容,例如嵌入显示,可以直接在软件内部预览文件内容。 总的来说,慧自文档是一款强大...
在IT领域,数据的展示方式多种多样,其中树状结构因其直观、清晰的特点,常被用于呈现层级关系,如组织结构、商品分类等。zTree是一款基于JavaScript的开源插件,它以优秀的性能和丰富的功能,为开发者提供了构建...
在实际开发中,为了动态构建无限层次的树状结构,通常采用递归方法。递归是指在一个过程中自己调用自己,直到满足终止条件。在本案例中,“递归”被用来实现节点的添加,具体操作包括: - **初始化树结构**:从根...
在实际应用中,这样的树状结构可以用于许多场景,如文件系统模拟、组织层次化的配置数据、构建UI元素(如Windows资源管理器的文件夹树视图),甚至是解析XML或JSON文档等。通过理解这些类的设计和功能,开发者可以...
在Linux操作系统中,目录结构是其核心组成部分,它以树状的形式组织文件和程序,使得系统管理和用户操作更加有序和高效。本篇文章将深入解析Linux的目录结构及其各自的作用,帮助新手快速理解并掌握这一重要知识。 ...
总的来说,“wpf简单文档管理系统”是一个利用WPF特性和MVVM模式实现的文件管理工具,它展示了如何使用TreeView控件和数据绑定技术来呈现和管理文件系统的层次结构。虽然简单,但这样的系统可以作为一个起点,逐步...
XML文档内部蕴含丰富的结构化信息,为了能够对这些信息进行结构化查询,论文提出了基于K-ary树状结构的理论,进一步发展出多重K i-ary树状结构(Multiple Ki-ary Tree)。这种结构化索引方法旨在解决XML文件中的数据...
1. **笔记与资料管理**:mybase支持创建结构化的笔记,用户可以自定义数据库结构,将信息以树状目录的形式组织起来,方便查找和管理。 2. **多格式支持**:mybase能够处理多种文件格式,如RTF、HTML、TXT等,还允许...
在树状结构中,我们可以看到IoC容器是如何管理Bean的,包括Bean的定义、初始化、实例化以及依赖关系的建立。 接着,文档可能会介绍Spring的AOP模块,这是Spring处理横切关注点(如日志、事务管理)的方式。AOP通过...
Markdown是一种轻量级的标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML(超文本标记语言)文档。在IT行业中,Markdown因其简洁、直观的语法,常用于编写软件文档、博客文章、README...
【结构化存储】是一种在...综上,结构化存储是通过文件系统概念的扩展,提供了一种高效、灵活的多应用并发访问和管理复杂数据的方式,广泛应用于各种办公软件中,如微软的Office文档,通过COM库和相关接口实现其功能。
《标准软件OA办公自动化系统详解》 OA办公自动化系统,全称为Office Automation System,是现代企业信息化...通过这个系统,企业可以实现高效、有序的办公流程,提升整体运营效率,为企业的现代化管理提供有力支持。
1. **模块化设计(Module1.bas)**:在软件开发中,模块化设计是一种将复杂系统分解为独立可管理部分的方法。"Module1.bas"可能是系统中的一个基础模块,负责处理文档管理的基础功能,如用户登录、权限控制、文档...
企业非结构化业务数据管理整体解决方案主要关注的是如何有效管理和利用那些无法用传统数据库二维逻辑表来表示的数据,如文档、图片、视频等。这些非结构化数据在企业中占据了大量资源,且往往包含了宝贵的业务信息和...
在工业自动化和设备管理中,结构化的图像描述方法是至关重要的。它是一种将非结构化的图像数据转换为可理解、可处理的结构化信息的技术。这样的方法可以帮助我们从图像中提取关键特征,如形状、颜色、纹理、尺寸等,...
支持多级目录层次结构化管理 3.口令下以密钥分散为手段的的数据安全性管理 4.友好美观的图形化操作管理 使用概述: ======== PDManager以Microsoft Access数据库文件为信息载体,为方便用户对 某一文本...