编程工具为VC,使用Oracle的blob字段存储图片文件,图片大小是60M/张,图片数量比较多,每年要存的图片总大小大概有3T左右,请问有没有做过这方面的过来人,60M的图片存储会不会出问题?每年3T的数据增量对维护会不会造成影响?
(PS:数据库安装于服务器上)

解决方案 »

  1.   


      TO   LuiseRADL
           因为文件数量比较多,如果存储在文件系统中不方便管理,而且数据容易丢失,存于数据库中可以充分发挥数据库的管理文件的功能。请问之前提的那种方法是否可行?
      

  2.   

    设置单独的表空间进行存储,BLOCK_SIZE设置要注意
    同时进行压缩存储,如果读图片不是很频繁的话
      

  3.   

    TO   java3344520
      我的思路也差不多这样,单独表空间专门存储图片,就是图片比较大,压缩以后应该也会有10M以上,不知道现在通用的对大图片的存储方式是什么样的~
      

  4.   


    TO  ystemni
       把文件存数据库,一是可以保证文件的安全性,进入服务器但不进入数据库就查看不到文件;二是可以发挥oralce管理文件的功能,如果全部文件都放一个文件里,文件多得时候,访问起来速度就慢,效率就低。
      

  5.   

    数据库适合存放大量的小图片,60M多了点,数据量大的时候一样麻烦,最好做好分区表和lob/索引的管理
      

  6.   

    多谢各位提示,查了一些资料后,决定用以下方案:
    使用BLOB数据类型,原数据库用于存放文字性数据库,图片保存于新的专门用于储存图片的表空间。
       将底片的信息保存在原数据库中,并增加一个字段用于存储索引号,然后根据索引号把图片上传到新的表空间中,图片字段数据类型为BLOB,图片保存于新的数据库中。读取图片的时候,根据底片的信息查找到索引号,再根据索引号在新的表空间中查询图片并下载显示图片。优点:将整个图片库全部放到一个数据库一张表中,方便管理,成为一个整体。存储数据的数据库和存储图片的表空间分开,两者互不影响,备份和恢复数据都可以独立进行。检索信息的表很小,同时也让所有的相关信息都放入到了数据库中。能够直接从文件系统中访问原始文件,同时也可以使用 SQL 定位文件。缺点:两个表空间,图片和图片相关信息分开。需要通过某种机制来确保记录的一一对应,还需要让所有的修改、删除、添加操作都同时对两个表空间的表成功进行。注:BLOB 为二进制大对象,用于在数据库里存储大对象,如图像声音等文件。
    文件存储在数据库里的,参与数据库的事务。使用 BFILE 类型时, INSERT 和 UPDATE 将该文件在数据库服务器(可能与 Web 服务器不在同一计算机上)的文件系统中的位置告知 Oracle,而不是传递文件内容。 使用 SELECT 语句,您可以通过 Oracle 读取 BFILE 的内容(如果您愿意),也可以调用 DBMS_LOB 程序包中的函数和过程来获取有关文件的信息。 其是在数据库外面存储的可变二进制数据,其最多也可以存储4GB的数据。这里需要注意的是,在不同的操作系统上其存储的数据容量可能是不同的。这个数据类型的特殊在于其在数据库之外存储实际数据。也就是说,跟其他大对象数据类型不同,其数据并不是存储在数据文件中,而是独立于数据文件而存在的。在这个字段中,其只存储了指针信息。