阅读排行榜

评论排行榜

最新评论

一个月前看过这篇文章,当时就有想写点什么的冲动,
目前的市场好像很混乱,但这种混乱中却孕育着机会,试想,如果不混乱,都是大公司的天下了,怎么能有你们的机会,所以,你们要感谢混乱,并且抓住机会!
天河和中望目前已经有了实质性的合作,那就需要大家都要有远大的胸怀,把天河和中望都作成一流的软件公司,中望的战略是做一流的平台供应商,天河是一流的PDM,CAPP,PLM供应商,这里面反而机械软件成了一个夹心饼了,但它也是一个催化剂,对双方的战略 都有直接的促进的,所以,把产品做好最重要!让市场来决定。
市场无限大,关键是有多少能成为你的! --【匿名用户】:E-works热心网友
感觉博主是在以技术原理的角度说明观点,我觉得是有道理的。
实际上文件服务器也是磁盘存储,数据库也是磁盘存储,两者之间并没有质的区别。
区别的是数据库服务中自带了把文件作为一个大对象来进行访问的功能而已,的确是给管理提供了方便。 --【匿名用户】:E-works热心网友
数据库存储是一种方式,oracle支持大表空间方式,但是数据库存储技术已经落后了,现在的趋势是数据库存储和文件存储技术相结合来处理。放在数据库中,数据量如果达到几百G后,性能还可以,而且管理方便,这是在忽悠人。 --【匿名用户】:E-works热心网友
文件存储的方式很多,到底那种方式好需要去验证,甚至需要去检测,对于数据访问效率的问题,其因素是很多的。对于一个好的系统,就应该能够支持多种数据存储方式,这也是国外软件的好处。另外,系统还需要大量用户的验证下才能确定,不知道博主有没有PDM系统,供大家学习,是否有好的案例给大家分享下。 --【匿名用户】:YXCU
农民都是好人。呵呵 --【匿名用户】:E-works热心网友
--清风明月
我也担心数据量大时系统的访问速度,因为现在制造业已经逐步采用三维软件,每个文件都很大.我对你们采用的读取方式不了解,是否采用数据库存储在调用数据时要先转换?
还有对于我们以后的二次开发,比如要引用文件实体是否有问题? --【匿名用户】:雷雨
博主声明:

欢迎从技术角度探讨论证技术问题,更欢迎当面交流或者实际测试!

耳闻或者不确切的小道消息,到论坛上发帖!

--清风明月
1.至于数据量,访问效率的问题确实需要好好下功夫,据我了解caxa V5就是数据量几百M,其速度都很慢,补充一句,不是攻击CAXA,只是耳闻;
2.FTP存储对于TC和PTC不知道有没有官方说明,但是其审技术方案,还有实施的用户,基本是这么引导用户,这是我PTC一个朋友告我,具体没区验证过。

至于何种方式好,还希望大家多讨论。 --旭旭
还是要从数据的一致性,完备性,安全性,访问效率等方面来考虑文件存放的问题。

--清风明月

PDM中的文件到底存储在哪儿更好?
关键字: PDM,数据库服务 

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

 

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

 

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

 

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

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

 

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

           2. 活动目录 Active Directory

           3. FTP 服务器

 

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

 

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

 

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

 

 

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

 

         而数据库管理员可以将“大对象表空间”指定到不同的磁盘分区,卷,硬盘,甚至其他计算机的目录中,数据库管理员可以随时追加“大对象表空间”的目录空间。

         这样虽然从存储的物理位置上,文件记录和文件内容本身虽然在不同的“空间”存储,但从逻辑上他们是一体的,从根本上保证了数据的完整性,一致性,并尽量降低了系统管理员的部署和维护难度。

 

 

         我个人的偏好:

 

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

 

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

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

 

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

 

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

 

3.  更为安全:

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

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

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

 

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

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

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

 

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

 

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

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

 

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

 

 

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

 

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

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

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

 

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

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

 

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

 

 

 

发表于: 2008-08-27 10:47 清风明月 阅读(723) 评论(15)  收藏(0) 好文推荐
# re: PDM中的文件到底存储在哪儿更好?
2008-08-27 11:33 | 月之故乡
好文共赏
# re: PDM中的文件到底存储在哪儿更好?
2008-08-27 11:35 | 旭旭
对于大文件数据,如三维数据尤其是三维模型主要设计的,这个数据增加量是很大,如果都存放在数据库,数据增长速度是很快的,有可能每月增加几个G的数据量,对数据完整备份和增加备份都带来一定的压力,如果没有实时备份好,数据库毁坏,如何应对,请博主提供些好的做法,谢谢
# re: PDM中的文件到底存储在哪儿更好?
2008-08-27 15:23 | 清风明月
谢谢彭旭关注我的博文。

1。实际上每月增加几个G的数据量,并不大。我在一个企业中遇到一个月就增加10多G的情况。这个企业还实施了远程同步备份,类似于灾难备份。通过互联网来异地备份数据,系统会自动在网络空闲时来同步数据。

2。做好备份是必须的,即使采用文件服务器的方式,也要做好备份,否则文件服务器损害,数据也会丢失。

3。备份的方式有很多,企业可以制定一个备份策略来进行在有限条件下的投入比较小的备份方式,我一般建议企业:
a。每周进行冷备份。完整数据库的备份,最好采用磁带机的方式;
b。每日进行热备份,如果有条件的话,可以采用在线日志的方式,这种方式可以实时备份数据,也指定到时间点来恢复数据。但管理需要跟上。
没有条件的话,可以采用增量数据导出备份,可以采用自动化脚本,在晚上自动进行。
c。有条件的企业可以进行异地数据同步备份,这是更为安全的方式。


# re: PDM中的文件到底存储在哪儿更好?
2008-08-27 16:41 | 旭旭
谢谢答复。
1.确实是这样的,首先需要管理制度保证,其次是不管什么方式存储,最好做好数据备份工作,备份很重要,我一客户做了增量备份、全部备份、冷和热备份都做了,还专门制定能够了数据备份制度,把责任明确到了具体人员,同时企业还半月把备份的数据恢复到测试环节,进行数据检测,看备份数据是否完整性。
2.另外,想交流下,大数据量的情况下,是非常影响PDM系统的访问效率的,尤其对于一些企业不舍得花钱提高服务器性能的企业,大数据量,访问速度肯定是受影响的。
3.据了解,国外TC,PTC等都提倡企业数据采取FTP文件存储,而且TC和PTC逐步会不支持数据库存储了。
# re: PDM中的文件到底存储在哪儿更好?
2008-08-27 17:13 | 清风明月
"2.另外,想交流下,大数据量的情况下,是非常影响PDM系统的访问效率的,尤其对于一些企业不舍得花钱提高服务器性能的企业,大数据量,访问速度肯定是受影响的。 "

呵呵,实际上对于制造业企业而言,数据量一般都不会达到要用高端服务器来解决性能问题的数据级。一般而言效率问题往往出现在数据库的设计,程序的设计上。
我们有些客户数据量都上百GB了,数据库都不是专业服务器。
关于PDM数据访问效率的问题,我想抽抽时间专题讨论了。



"3.据了解,国外TC,PTC等都提倡企业数据采取FTP文件存储,而且TC和PTC逐步会不支持数据库存储了。"

有官方的正式说明吗?网址?
有什么优势呢?

# re: PDM中的文件到底存储在哪儿更好?
2008-08-27 17:23 | 山东勇哥
是不是FTP文件存储方式比传统存储方式更好一些
# re: PDM中的文件到底存储在哪儿更好?
2008-08-27 17:25 | 清风明月
FTP文件存储方式就是传统的文件存储方式的一种
# re: PDM中的文件到底存储在哪儿更好?
2008-08-27 17:27 | 清风明月
还是要从数据的一致性,完备性,安全性,访问效率等方面来考虑文件存放的问题。

# re: PDM中的文件到底存储在哪儿更好?
2008-08-27 19:12 | 旭旭
1.至于数据量,访问效率的问题确实需要好好下功夫,据我了解caxa V5就是数据量几百M,其速度都很慢,补充一句,不是攻击CAXA,只是耳闻;
2.FTP存储对于TC和PTC不知道有没有官方说明,但是其审技术方案,还有实施的用户,基本是这么引导用户,这是我PTC一个朋友告我,具体没区验证过。

至于何种方式好,还希望大家多讨论。
# re: PDM中的文件到底存储在哪儿更好?
2008-08-28 10:11 | 清风明月
博主声明:

欢迎从技术角度探讨论证技术问题,更欢迎当面交流或者实际测试!

耳闻或者不确切的小道消息,到论坛上发帖!

# re: PDM中的文件到底存储在哪儿更好?
2008-08-28 10:25 | 【匿名用户】:雷雨
我也担心数据量大时系统的访问速度,因为现在制造业已经逐步采用三维软件,每个文件都很大.我对你们采用的读取方式不了解,是否采用数据库存储在调用数据时要先转换?
还有对于我们以后的二次开发,比如要引用文件实体是否有问题?
# re: PDM中的文件到底存储在哪儿更好?
2008-08-28 10:58 | 清风明月
"我也担心数据量大时系统的访问速度,因为现在制造业已经逐步采用三维软件,每个文件都很大.我对你们采用的读取方式不了解,是否采用数据库存储在调用数据时要先转换?
还有对于我们以后的二次开发,比如要引用文件实体是否有问题?"

1.从本质上来看,采用数据库存储文件与用文件服务器存储文件,对数据库访问的效率没有直接影响;因为在物理存储上,数据库中文件作为对象是放在另外一个独立的“大对象表空间”中,这个表空间甚至可以在另外一个磁盘或者计算机上,只是从逻辑上他是文件记录的一个字段。一般的数据查询,根本不用去访问大对象表空间。只有文件上下载的时候才去访问。

很多人被Access这样的数据库迷惑了,Access这样的数据库的确没有表空间的概念,也不会考虑这样的效率问题,但是作为企业级数据库,这样的问题早就没有问题了。

2.即使是采用FTP服务器的方式来存储文件,管理三维图形时,也需要用将相关的文件下载到本地,或者浏览器所指定的目录中。这与数据库管理三维图形没有区别的。这个过程是自动的不需要用户关心其中的过程。

3.二次开发的时候,即使采用FTP服务器也不可能直接操作FTP来访问文件实体,也需要用PDM提供的程序接口API来访问文件。采用数据库存储文件的PDM中API中也有提供文件上下载的功能,只要有权限就能下载到本地形成文件实体,这个过程与FTP很类似,并且更安全。

如果要在PDM中要引用实体,直接引用PDM中的实体对象就可以,文件实体对象对应的文件会自动发生引用关系。(这在PDM中有设置,是否自动引用外部参照,因为有些三维软件,是不需要引用外部参照就能浏览,编辑;例如solidworks)

4. 多说一句:在PDM中管理大型三维装配的确是一个课题,目前研究的重点是三维模型的轻量化,在一般浏览时,大部分的模型用轻量模型来显示就可以,需要重点编辑和浏览的部分才全部打开浏览,这也与具体CAD软件提供的轻量化处理的能力有关,也与PDM对轻量化模型支持的程度也有关系。
关于大装配的管理效率问题问题,与采用数据库还是采用FTP服务器没有直接的关系。



# re: PDM中的文件到底存储在哪儿更好?
2008-08-31 20:56 | 【匿名用户】:YXCU
文件存储的方式很多,到底那种方式好需要去验证,甚至需要去检测,对于数据访问效率的问题,其因素是很多的。对于一个好的系统,就应该能够支持多种数据存储方式,这也是国外软件的好处。另外,系统还需要大量用户的验证下才能确定,不知道博主有没有PDM系统,供大家学习,是否有好的案例给大家分享下。
# re: PDM中的文件到底存储在哪儿更好?
数据库存储是一种方式,oracle支持大表空间方式,但是数据库存储技术已经落后了,现在的趋势是数据库存储和文件存储技术相结合来处理。放在数据库中,数据量如果达到几百G后,性能还可以,而且管理方便,这是在忽悠人。
# re: PDM中的文件到底存储在哪儿更好?
感觉博主是在以技术原理的角度说明观点,我觉得是有道理的。
实际上文件服务器也是磁盘存储,数据库也是磁盘存储,两者之间并没有质的区别。
区别的是数据库服务中自带了把文件作为一个大对象来进行访问的功能而已,的确是给管理提供了方便。
标题  
姓名  
主页
内容   
请输入验证码:
*
(如果看不到图片,请多刷新几次页面)
  登录   Top
[使用Ctrl+Enter键可以直接提交]