在利用ORACLE平台进行数据库系统的开发过程中对于海量图像数据的管理目前大都采用表+实体的方法即图像数据以文件形式存放于指定的计算机目录下在数据库表中只反映图像数据文件的存储路径这种管理模式给数据的维护增加了难度同时也给数据的安全带来一定的隐患因此要真正做到各类数据在数据库中安全管理研究和探索直接将海量图像数据存储在数据库关系表中的方法是非常必要的数据库
笔者在Visual Basic 开发环境中采用客户机/服务器的工作方式针对ORACLE数据库关系表中存储大量图像数据的问题和存储海量图像数据的策略与方法进行了初步探讨提出了一套基本解决方案供读者参考
一大对象数据类型介绍
在关系型数据库中大数据量图像数据等大型对象是由lob型字段来进行存取的在Oraclei中正式引入了此标准以适应多媒体大对象处理的需求Oracle数据库中lob型数据有以下几种
Lob类型 说明
Clob 和Oracle的long型相似clob可以存储单字节型数据
Nclob Nclob存储定宽的多字节国家字符集数据
Blob 和Oracle中的long raw类型相似可以存储无结构的二进制数据Oracle没有对这种数据进行解释 只是按照原来的形式存储和检索它
Bfile Bfile允许对Oracle数据库以外存储的大型二进制文件进行只读形式的访问和其它三种lob类型数据 不同的是bfile类型数据存储在一个单独的文件中该文件不由Oracle来维护
特点
在Oracle中相应的long或long raw字段有g的限制而lob的限制是g
lob可以使用调用接口OCI或者由pl/sql利用dbms_lob包进行操纵
lob不象long型那样每个表中最多只有一个字段的限制其可以有多个而又可以利用触发器的特性
lob数据处理可以获得与其它数据同样的事物特性
lob的存储比较特殊它并不是跟其他数据存储在同一个数据库表中而是可以单独存放于不同的表空间中由一个定位符指向实际的lob数据
二存储海量图像数据的策略 图像数据库技术一直致力于解决海量数字图像的有效存储和管理问题它是数据库技术的继承和发展一方面图像数据和文本数据存在着本质的区别在文本数据领域得以成功应用的传统数据库技术如果一成不变的照搬到图像数据库领域结果往往是低效甚至无效另一方面传统数据库的许多成果如SQL语言索引技术等都值得图像数据库借鑒上述两个方面的结合成为目前图像数据库技术发展的主流
BLOB大对象数据是数据量很大的数据类型它会占用大量的硬盘空间内存和网络资源因此合理地设计包含有BLOB大对象数据类型的属性表对提高存储效率查询速度有很大的影响一般BLOB大对象的设计原则如下
() 尽量不使用BLOB大对象
二进制大对象并不一定要存储为textntext或者image数据类型它们也可以作为varchar或者varbinary数据类型村处在表格中数据类型的选择要根据将要存储的BLOB的实际大小如果数据不会超过K那么就使用Varchar或者varbinary数据类型如果这些大对象的尺寸超过K那么就使用textntext或者image数据类型
()何时使用BLOB数据类型
在下列情况下我们可能要使用到BLOB数据类型
·您要将OLE对象(如图形声音等)存入您的数据库中
·您要将大型的二进制对象存入您的数据库中
·您所要操纵的文本对象过大以致于一般的字符串函数无法对其操作
·您所使用数据库的数据类型oracle不能支持所以您只能使用blob函数对其进行操纵
() 最好将BLOB存储在数据库中
常见的设计问题是将图片存在数据库中还是存在文件系统中在大多数情况下最好把图片文件与其它数据一起存在数据库中因为将影像数据文件存储在数据库中有许多优点
⑴易于管理当BLOB与其他数据一起存储在数据库中时BLOB和表格是数据一起备份和恢复这样就降低了表格数据与BLOB数据不同步的机会而且降低了其他用户无意中删除了文件系统中BLOB数据位置的路径和风险另外将数据存储在数据库中BLOB和其他数据的插入更新和删除都在同一个事务中实现这样就确保了数据的一致性和文件与数据库之间的一致性还有一点好处是不需要为文件系统中的文件单独设置安全性
⑵可伸缩性尽管文件系统被设计为能够处理大量不同大小的对象但是文件系统不能对大量小文件进行优化在这种情况下数据库系统可以进行优化
⑶可用性数据库具有比文件系统更多的可用性数据库复制允许在分布式环境中复制分配和潜在的修改数据在主系统失效的情况下日志转移提供了保留数据库备用副本的方法当然在某些情况下将图片存储在文件系统中将是更好的选择
()使用图片的应用程序需要数据流性能例如实时的视频重现
()象Microsoft PhotoDraw或者Adobe Photoshop这样的应用程序经常访问BLOB这些应用程序只知道怎样访问文件
()需要使用一些NTFS文件系统中的特殊功能例如远程存储
三海量数据存储备份及分发
()存储
目前对数据的存储可分为两大类型一种是传统的以主机为中心的存储方式另一种是基于网络的以网络为中心的存储方式与传统的存储方式相比网络存储具有更大的灵活性可以实现对所有数据的共享可以较好地保持数据的一致性完整性和安全性存储方式有许多最常用的是磁带库和磁盘阵列但是磁盘阵列价格昂贵磁带库又有很多缺点最近市面上出现了一种叫光盘库的东西DVD光盘库特别是DVDRAM光盘库适用于所有大容量资料数据的存储场合适合存储一些资料性的不经常更改的数据比如医院的医疗影像资料银行等金融机构的重要票据影像资料图书馆的书库电视台的音像资料库等等
DVD光盘库不仅支持传统的文件而且可以支持各种类型的数据库例如OracleInformixSQL等用户可以直接把数据库的表空间建立在光盘库中的DVDRAM光盘上可以支持数据查询和数据插入修改删除等操作对于用户完全透明感觉就如同使用硬盘一样方便但是目前DVD光盘库的技术似乎不太成熟还不能作为安全性较高的数据库的存储设备
()备份
光盘作为一种近十年才兴起的存储介质同传统的磁带软磁盘相比具有不可同日而语的优点CD/DVD光盘由于容量大目前单盘GB日后容量将迅速突破GB易保存保存期长达年以上可靠性高即使表面磨损也可用几百元一台的修复机迅速修复携带方便数据交换方便每台PC目前大部分都安装了光盘驱动器特别DVDRAM作为一种世界潮流的新存储介质将拥有无可限量的前途既可以用作普通的备份介质又可用作实时的存储载体
磁带特别是数据流磁带的单盘容量确实较大可达到GB但这样一盘磁带的价格将近美元同时磁带如保管不善易发霉易磨损接近磁体时易数据丢失而且不同格式的磁带驱动器也不相兼容造成了介质数据交换不便光盘与硬盘相比也有许多无可比拟的优点硬盘本身比较脆弱遇到大的震动沖击容易损坏光盘就可很好的解决这些问题所以大型图像数据库系统所有数据的备份能通过光盘完成是最好的选择
()分发
目前DVD驱动器已经成为IT行业的一种标准输入输出设备单张DVD光盘片容量大如DVDROM(GB)DVDRAM(GB)非常适合作为分发存储介质
四存储图像数据的方法举例
建立具有BLOB字段的ORACLE数据库
按照如下步骤来完成各个操作
()创建表空间