欢迎来到天天文库
浏览记录
ID:22376512
大小:51.50 KB
页数:5页
时间:2018-10-28
《sqlserver:存储图像和blob文件(一)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、SQLServer:存储图像和BLOB文件(一)>>教育资源库 什么是BLOB 首先,我们来比较两种文件类型ASCII和二进制。存储在SQLServer中的大部分数据值都是由ASCII(美国信息交换标准代码)字符组成。简单说来,ASCII字符就是能够在计算机键盘上找到的字母、数字和符号。我们可以通过记事本等文本编辑器对只包含了ASCII字符的文件进行修改且不会对文件造成任何破坏。而二进制文件,不仅包含了ASCII字符,还包含了键盘上没有的特殊控制字符和字节组合。如果你用记事本打开一个MP3文件,并删除其中的一些字符企图使歌曲变短,很可能会破
2、坏掉整个文件,导致该MP3不能再正常播放,这是因为记事本只能用来编辑ASCII字符,而无法正确解析或创建二进制位。其他二进制数据包括图像和可执行文件汇编程序。BLOB顾名思义就是大型的二进制文件。 为什么要在SQLServer存储BLOB 有人喜欢在SQLserver数据库里存储二进制对象,也有人反对这样做,正所谓公说公有理,婆说婆有理。我们应当两方面都考虑周全。举一个看起来比较真实的例子,假设我们在一个典型的销售企业当数据库管理员。这个企业通常有很多待售的产品线,包含不同类别的产品,而产品线以下的水平就是单个产品或部件,我们把他们称之为构
3、件。对于每个构件,都提供了标准的详细目录清单,如价格、成本、现有数量、供应商等等。此外,很多构件可能还有用来描述该构件销售手册或宣传册,这些宣传册往往以PDF、幻灯片或某种类型的图像等电子文档形式出现。处理这些电子文档的一个方法就是把他们都放入一个文件服务器,并为每个构件创建一个目录。这个一开始可能管用,不过当客户或雇员想要设计一个可以调用这些文档的应用程序,只需要输入搜索参数就可以让数据库返回匹配的销售手册时,问题就来了。例如,输入显示所有售价低于100元的蓝色构件的文档。这时,就会涉及到将应用程序与数据库绑定的问题了。因此,在这个系列文章的
4、后半部分,我们会创建一个连接到SQLServer的VisualStudio应用程序来检索构件销售手册。 文件存储位置 第一个需要解决的问题是要将这些电子宣传小册子存放在哪里。我们可以用一个应用程序来存储导向该文档的文件系统路径信息,例如e:salesiddot;性能:这些二进制对象对性能要求是不是很高,如视频流?如果是的话,保留在文件系统会比用二进制流文件存储要好。 大小:需要检索的二进制对象是不是很大?有没有超过1MB?如果对象很大,那么用文件系统来显示和读取该对象的效率往往比从SQLServer显示和读取的效率更高。如果二进制对象比较
5、小,也就是说每个构件只有很小的图像文件,那么将它们存储在SQLserver内则绰绰有余。 安全:对这些二进制对象的访问是否要高度关注安全性。如果这些对象存储在SQLServer中,那么可以通过常规的数据库访问方式来管理其安全性。如果文件存储在文件系统,那么就需要另外设置更安全的替代管理办法了。 客户访问:客户对数据库的访问通过什么方式,是通过ODBC还是NativeSQLDrive?对于大型视频流,以ODBC方式连接的客户可能出现连接超时和连接失败的问题。 碎片:如果要对这些二进制对象进行频繁的修改操作,或者这些文件很大,那么文件系统处理
6、碎片的能力可能比SQLServer更好。 事务:是否需要进行事务控制,如果需要,那么SQLServer可能更好,因为其具有内置解决方案。 如果您想更深入探讨这个关于将BLOB文件存储在数据库还是文件系统的问题,以及想知道上面提到的1MB大小标准的划分有什么依据,可以通过以下链接,参阅微软的技术文献:research/pubs/viesr_tr_id=MSR-TR-2006-45. 数据类型 回到第一个例子,我们将要创建一个应用程序来存储各个产品的相关图片。因为这些文件都很小,所以我们会选择将它们直接存储在SQLServer里。在SQLS
7、erver2000中,有两种不同的数据类型选择类群用来存储这些文件类型:二进制和图像(Image)。二进制类群包括三种不同的数据类型。第一种就是标准二进制数据类型Binary,但其要求固定的数据长度。对于上面的例子,由于我们的图片大小不等,所以我们需要使用varbinary数据类型,这里的var就是变量的意思。Varbinary数据类型的最大长度为8000字节。从SQLServer2005开始,varbinary(max)也包含在二进制数据类型的类群当中了。其关键词MAX就表示大小不限。如果SQLServer的版本是2005以前的,而数据长度又
8、超过8000字节的话,就可以使用图像数据类型进行存储了。这种数据类型的文件大小可变,最大可存储2GB的文件。虽然图像数据类型也包含在SQLServer
此文档下载收益归作者所有