`
lihong11
  • 浏览: 450580 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

数据库中存储大量图片设计

阅读更多

 

数据库中存储大量图片设计

1、 图像的存储策略

在数据库的开发过程中,经常需要在数据库中存储一些备注信息,而这些备注信息的内容一般较大,格式多样-如有可能是语音文件、视频文件、图片文件、文本文件等,怎样实现这些格式不同的备注文件的存取及预览,一直是开发人员比较关心的一个问题,本文系统的介绍了三种存取备注二进制信息的方法。 
对备注二进制信息的存储可以采用以下三种方式;

   方法一:文件保存在固定的路径下,数据库中存取文件路径和名称

   方法二:数据库中用blob类型或者varbinary类型字段存储备注文件

        
方法三:在本地用PowerBuilderOLE存储结构存储备注文件
三种方法的优缺点
 
方法一:文件保存在固定的路径下,数据库中存取文件路径和名称可以节省数据空间,避免了数据库过分膨胀,但备注文件必须在一定的目录下,不能丢失,且同一目录下文件不能重名,对文件的管理造成一定的困难,另外,在OLE控件中浏览显示备注文件时,由于每次都要调用服务器程序,所以速度较慢。

方法二:在数据库中用blob类型或者varbinary类型字段存储备注文件,当文件存储在数据库中以后,就可以删除硬盘上原来的临时文件,不需要复杂的二进制文件管理,且数据库可以存储在网络服务器上,对数据的共享非常方便。

 
方法三:在本地用OLE存储结构存储备注文件。可以把所有的二进制文件信息存储在一个OLE存储文件中,管理比较方便。当二进制文件信息存储后,可以删除原来的临时文件;因为打开存储文件后不需要每次执行服务器程序来显示存储信息,所以存取速度较快。


2 SQL Server 2000存储图像数据库设计

图像数据库技术一直致力于解决海量数字图像的有效存储和管理问题。它是数据库技术的继承和发展,一方面,图像数据和文本数据存在着本质的区别,在文本数据领域得以成功应用的传统数据库技术,如果一成不变的照搬到图像数据库领域,结果往往是低效,甚至无效;另一方面,传统数据库的许多成果,如SQL语言、索引技术等都值得图像数据库借鉴。上述两个方面的结合成为目前图像数据库技术发展的主流。

1.1 BLOB数据类型

BLOB是非常巨大的不定的二进制或者字符型数据,通常是文档(.txt.doc)和图片(.jpeg.gif.bmp),它可以存储在数据库中。在SQL Server中,BLOB可以是textntext或者image数据类型。 Image数据类型存储的是长度不确定的二进制数据,最大长度是2GB

 BLOB数据在SQL Server系统中的存储方式不同于普通的数据类型,对于普通类型的数据系统直接在用户定义的字段上存储数据值,而对于BLOB类型数据,系统开辟新的存储页面来存放这些数据,表中BLOB类型数据字段存放的仅是一个16个字节的指针,该指针指向存放该条记录的BLOB数据的页面。

1.2 BLOB的设计策略

 BLOB数据是数据量很大的数据类型,它会占用大量的硬盘空间、内存和网络资源,因此合理地设计包含有BLOB数据类型的属性表,对提高存储效率、查询速度有很大的影响。一般BLOB的设计原则如下:

1) 使用BLOB数据类型还是使用varchar或者varbinary数据类型

 二进制大对象并不一定要存储为text、ntext或者image数据类型,它们也可以作为varchar或者varbinary数据类型村处在表格中。数据类型的选择要根据将要存储的BLOB的实际大小。如果数据不会超过8K,那么就使用Varchar或者varbinary数据类型。如果这些大对象的尺寸超过8K,那么就使用textntext或者image数据类型

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

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

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

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

 可用性 数据库具有比文件系统更多的可用性。数据库复制允许在分布式环境中复制、分配和潜在的修改数据。在主系统失效的情况下,日志转移提供了保留数据库备用副本的方法
 
当然,在某些情况下,将图片存储在文件系统中将是更好的选择:
1)使用图片的应用程序需要数据流性能,例如实时的视频重现。
2)象Microsoft PhotoDraw或者Adobe Photoshop这样的应用程序经常访问BLOB,这些应用程序只知道怎样访问文件。
3)需要使用一些NTFS文件系统中的特殊功能,例如远程存储。

1.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类型的变量中来实现。

 

分享到:
评论

相关推荐

    图片的读取与存储(二进制形式)

    类似与很多网站的注册功能以及相册展示功能 写了这个小列子 数据库 设计很简单就一个简单的表 两个字段 id和Image类型的content字段(用来存放图片用二进制读取的内容)还有一个存储过程(我喜欢用存储过程)数据库...

    《ASP.NET与数据库程序设计》

    12-5-2由数据库大量传送 第十三章成功案例 13-1讨论区 13-1-1数据库结构 13-1-2讨论区之操作 13-1-3流程设计 13-1-4登入设计 判断是否登入 回至Session 13-1-5切换类别及时间 ...

    Visual C# 2005数据库通用模块开发与系统移植 配书目录及代码,这样看代码就方便了

     本书以面向对象思想和设计模式为指导,通过大量实例,详细介绍了ADO.NET、基于数据库应用的通用模块、数据库系统综合实例设计和开发、数据库的移植升级、项目打包发布和安装等方面的应用技术,内容包括数据库开发...

    基于ASP.NET的个人网站系统

    PWS网站为了满足用户管理和相册管理的需要,在数据库上进行了必要的设计,设计了储存图片和相册的数据库表,此外还设计了一个新的数据访问类,该类主要实现了与数据库的连接,根据业务层处理了大量的方法和类,以便...

    mongoose的使用

    MongoDB属于内存型数据库,在需要读性能要求很高的项目中有着比较不错的表现。 可做前段缓存服务器、缓冲数据存储区...但是,非关系数据库会造成大量冗余数据,如果前期的系统设计很粗糙,后期的数据维护将会相当困难。

    mongodb的使用

    MongoDB属于内存型数据库,在需要读性能要求很高的项目中有着比较不错的表现。 可做前段缓存服务器、缓冲数据存储区...但是,非关系数据库会造成大量冗余数据,如果前期的系统设计很粗糙,后期的数据维护将会相当困难。

    垃圾分类小程序项目源码

      小程序借助云开发的数据库,存储了大量常见的各类垃圾,可直接搜索查看垃圾所属的分类和相应的垃圾投放要求,也可以直接拍照识别出垃圾所属的分类(这里借助了,百度AI开放平台的图片识别功能来实现) 小程序部分...

    安卓Android电影院订票app设计可升级Studio+源代码+文档说明+数据库.zip

    影院系统在电影院有着重要的地位,它不仅保存着电影院的基本信息,而且会储存大量的用户个人信息。影院系统是电影院重要的组成部分,在有效管理电影信息的同时,对电影院的业务和模式以及统筹计划起着至关重要的作用...

    大数据的存储管理技术.doc

    大数据的存储管理技术 作者:欧艳鹏 来源:《电子技术与软件工程》2017年第21期 摘 要云计算技术、物联网等技术快速发展,多样化已经成为数据信息的一项显著特点,如 图片、音频、视频信息等。为充分发挥信息应用...

    基于PHP的手机商城网站的设计与实现-毕业设计+任务书+开题报告

    运用 Mysql 数据库进行数据存储,以 提升数据读写速度。开发过程中,通过对代码的优化和对数据处理上的简化,可以极 大的提升用户加载速度,提升访问流畅性。同时,对图片进行了统一处理,减少服务 器端的存储压力。

    电子地图的设计与实现研究.doc

    网络电子地图以国际互联网为载 体, 在不同详细程度的可视化数字地图的基础上, 表示空间实体的分布, 并通过链接的方式同文字、图片、视频、音频、动画等多种媒体信息相连, 通过对网络电子地图数据库的访问, 实现查询...

    基于JSP的校友录管理系统毕业论文,范文

    此处管理员权限的功能设计定要引用到大量的数据库操作,这就需要考虑到为虚拟班级分配系统存储空间,建立数据库表。那么,选择数据库,创建数据库用户和表,建立与数据库的连接,使用SQL语言操作数据库就是系统后台...

    班级信息管理系统

    此处管理员权限的功能设计定要引用到大量的数据库操作,这就需要考虑到为虚拟班级分配系统存储空间,建立数据库表。那么,选择数据库,创建数据库用户和表,建立与数据库的连接,使用SQL语言操作数据库就是系统后台...

    存天下文件管理系统v2.0绿色中文特别版

    存天下文件管理系统是一款由山东智信业达科技有限公司,针对文字工作者、图片收藏者、音乐发烧友、影楼写真馆和广告、家装、AutoCAD设计室等需要经常搜集、存储、管理和应用、传播大量文件资料的客户群体量身研发的...

    基于JavaWeb实现的网上留言管理系统的毕业设计,B/S应用架构以及MVC(Jsp+Servlet+Model)编程架构

    Model层使用MySQL数据库实现数据存储,设计了用户、留言、回复等实体类,实现了相应的持久化操作。View层使用JSP技术实现用户界面,包含用户注册、登录、留言发布、留言查看、回复留言等页面。Controller层使用Servlet...

Global site tag (gtag.js) - Google Analytics