监理公司管理系统 | 工程企业管理系统 | OA系统 | ERP系统 | 造价咨询管理系统 | 工程设计管理系统 | 签约案例 | 购买价格 | 在线试用 | 手机APP | 产品资料
X 关闭

PDM中的文件放在文件服务器还是数据库中?

申请免费试用、咨询电话:400-8352-114

来源:泛普软件

PDM中的文件到底是放到文件服务器上还是放在数据库中好?本来这是一个老话题了,很多年前大家都专门讨论过,但是我最近遇到几位朋友都向我咨询这个问题,觉得有必要再次比较系统地来专题聊聊;另外近几年的IT技术发展也很快,有很多新技术新方法出现,我也希望以软件开发者的角度与大家一起探讨这个问题。

第一:文件放在文件服务器中的工作原理。

的确,最早以前PDM中的关于图文档一般由两部分的数据组成,一是文档主记录,用于描述文档的属性,这部分的数据一般是放在数据库中;另外一部分是文档本身,这部分的数据一般是放在文件服务器中(PDM中经常称为文件仓库,英文是File-Vault)。而在文档主记录中,一般用一个字段来描述这个文件是放在哪个文件服务器的哪个具体路径,从而将两个部分的数据关联起来。(如果有文档的版本管理,这个模型会更加复杂一些,但基本原理是一样的)如图所示:

早期的PDM基本上都是采用这种数据库+文件服务器的模式来管理图文档的;

文件服务器提供文件上下载的方法大致有这样的几种方法:

1. 文件的共享服务,(windows编程中被称为“命名管道”);

2. 活动目录 Active Directory

3. FTP 服务器

以上几种各有各的优势和缺点,具体不展开说了。

第二:文件放在数据库服务器中的工作原理。

随着数据库技术的发展,特别是面向对象的技术在数据库领域的应用,特别是数据库处理大对象的能力和方法手段越来越丰富,很多新一代的PDM系统可以直接将文件对象放在数据库中管理,其基本的原理如下图所示:

也就是说文件记录在数据库中是数据表中的一条数据记录,而记录文件本身内容的是一个数据库的特殊字段,这种字段有很多类型,例如(BLOB,FLOB,CLOB)等,这种字段在存储文件等大对象的时候,大对象实际上存储在另外的“表空间”中,主记录表中仅仅存储大对象在这个表空间的地址指针。主记录数据表的访问速度没有任何影响。

而数据库管理员可以将“大对象表空间”指定到不同的磁盘分区,卷,硬盘,甚至其他计算机的目录中,数据库管理员可以随时追加“大对象表空间”的目录空间。这样虽然从存储的物理位置上,文件记录和文件内容本身虽然在不同的“空间”存储,但从逻辑上他们是一体的,从根本上保证了数据的完整性,一致性,并尽量降低了系统管理员的部署和维护难度。

我个人的偏好:

我更倾向与采用数据库存储的方式来解决文件存储的问题,这种方式带来的好处如下:

1.  数据的一致性、完备性得到根本保证:

由于文件本身,与文件记录从逻辑上是一条数据库记录,从而从根本上保证了数据的一致性和完备性。

另外,从编程角度,对于逻辑上需要保证“元事务特性”的数据操作,在数据库中得到了根本保证,比如某个文件要上传到PDM系统中,在上传过程中,网络出现故障,如果采用数据存储文件,那么这个文件在数据库中没有任何记录存在;而如果采用文件服务器,很有可能是数据库中有这个记录存在,而文件服务器中由于网络问题造成上传失败,文件没有存在,从而造成数据的不一致。

2.  部署更为简单, 对于数据存储,用户只需要架设数据库服务器就可以了。

3.  更为安全:

a)   文件的存储更安全安全,避免了文件服务器的共享服务,或者文件FTP服务带来的不安全因素。

b)   数据在传输过程中都通过数据库指定的TCP/IP协议和特定的端口进行,文件在传输过程中没有采用任何其他文件传输协议,与其他数据一样都是IP数据包。

c)   文件的存储避免了各种感染文件型病毒的可能。

3. 数据库的平台无关性:

a)   数据库可以与操作系统平台无关,文件的存放也自然与操作系统无关,进一步提高了数据的安全性。

b)   数据库还可以支持“裸盘”存储,也就是数据库的存储“空间”可以独立于操作系统之外,这样数据库对数据的物理操作不通过操作系统提供的接口,而直接对物理硬盘进行操作,更进一步提高的大数据量的访问性能。

4.  容量的扩展更为方便。由于数据库表空间可以随时扩展, 并且这种扩展不受到文件分区的限制,表空间可以扩展到其他分区,其他硬盘,甚至其他计算机上,保证了系统的持久应用。如果采用文件服务器的形式,这样的扩展会有较多的限制。

5.  数据备份和恢复更为容易。系统管理员只需要关心数据库如何备份就可以,数据库会自动将逻辑上是一体的数据从逻辑完备性的角度一起备份出来。如果采用文件服务器的形式,那么系统管理员还要考虑数据库本身的备份和文件备份的对应关系,很容易出现差错,特别是在热备份的过程中,由于系统还在使用,备份也是需要有时间过程的,任何增删改的操作,都可能使得备份出来的数据出现数据不一致的可能。

另外数据库本省提供多种的备份形式,用户在选择的时候更容易。

6.  全文检索更为方便,可以利用数据库的全文检索机制,对文件进行全文检索。

可能很多客户对数据库存储文件还有一些顾虑,例如:

1.   文件太多了,数据库会不会过于膨胀,这个库会不会“爆炸”,管理会不会复杂?

实际上从原理上分析,数据库中存放文件的管理模式,与文件的多少没有关系,文件在“大对象表空间”中的具体存放,都有数据库本身来维护,系统管理员只需要定期的给“大对象表空间”扩容就可以,并且这个扩容也非常简单,可以随时将其他分区的某个目录指定到这个空间中。

反而采用文件服务器,文件记录中要记录文件的具体物理地址,反而给数据的迁移,扩容带来一些管理工作。

2.   文件太多了,数据库会不会很慢?

两种方式比较起来,对文件主记录表的影响没有差别,不会因为文件多,采用文件服务器就比采用数据库服务器更快;很多企业用这种形式存储数据达到上百GB的数据,没有发现数据库的速度降低。

反而,我认为数据库中用大对象表空间来储存文件,有利于大数据量下的性能提高,因为数据库中可以建立索引,从而大大提高数据访问效率,这是文件服务器所不能。(e-works博客)

发布:2007-04-24 09:45    编辑:泛普软件 · xiaona    [打印此页]    [关闭]
相关文章:
广州OA系统
联系方式

成都公司:成都市成华区建设南路160号1层9号

重庆公司:重庆市江北区红旗河沟华创商务大厦18楼

咨询:400-8352-114

加微信,免费获取试用系统

QQ在线咨询

泛普广州OA快博其他应用

广州OA软件 广州OA新闻动态 广州OA信息化 广州OA快博 广州OA行业资讯 广州软件开发公司 广州门禁系统 广州物业管理软件 广州仓库管理软件 广州餐饮管理软件 广州网站建设公司