(2)存储BLOB在数据库中或者在文件系统中

  常见的设计问题是将图片存在数据库中还是存在文件系统中。在大多数情况下,好把图片文件与其它数据一起存在数据库中。因为将影像数据文件存储在数据库中有许多优点:

  易于管理 当BLOB与其他数据一起存储在数据库中时,BLOB和表格是数据一起备份和恢复。这样降低了表格数据与BLOB数据不同步的机会,而且降低了其他用户无意中删除了文件系统中BLOB数据位置的路径和风险。另外,将数据存储在数据库中BLOB和其他数据的插入、更新和删除都在同一个事务中实现。这样确保了数据的一致性和文件与数据库之间的一致性。还有一点好处是不需要为文件系统中的文件单独设置安全性。

  可伸缩性 尽管文件系统被设计为能够处理大量不同大小的对象,但是文件系统不能对大量小文件进行优化。在这种情况下,数据库系统可以进行优化。

  可用性 数据库具有比文件系统更多的可用性。数据库复制允许在分布式环境中复制、分配和潜在的修改数据。在主系统失效的情况下,日志转移提供了保留数据库备用副本的方法。

  当然,在某些情况下,将图片存储在文件系统中将是更好的选择:

  (1)使用图片的应用程序需要数据流性能,例如实时的视频重现。

  (2)象Microsoft PhotoDraw或者Adobe Photoshop这样的应用程序经常访问BLOB,这些应用程序只知道怎样访问文件。

  (3)需要使用一些NTFS文件系统中的特殊功能,例如远程存储。

  2.3 存储图像数据的方法

  建立具有image宇段的SQL Server数据库

  当需要在SQL Server数据库中存储图像数据时,首先应建立包含image数据类型字段的数据库关系表。SQL Server数据库平台支持的数据类型中,image数据类型主要用于存储图像数据等大段的二进制数据。SQL Server 7.0之后的版本,image类型可存储2GB的数据。

  随着SQL Serve数据库管理系统功能的不断增强、性能的不断完善,将各类数据完全由数据库管理系统统一存储和管理,已成为技术发展的趋势。只有这样,SQL Serve数据库管理系统的强大功能才能得到充分发挥,数据的安全性才能得到充分的保障,使得诸如数据库复制、数据的转移等许多工作,变得非常简单容易。

  3、PowerBuilder图像的存储技术

  在Powerbuilder程序中有时要用到图象文件,比如人事系统中人员的相片、用扫描仪扫描进去的人事档案等等。但在Powerbuilder中,没有直接的方法将BMP文件读入内存并显示或写入到数据库中。但Powerbuilder支持二进制文件的读写操作,可将BMP文件整个读入BLOB类型的变量中来实现。