首先,图片是binary格式,另外比较大。所以目前有2种方法:
1. 图片放入DB中。
这种方法需要设置blob字段来存放图片。数据量大的时候造成表很大。
优点:将整个图片库全部放到一张表中,方便管理,成为一个整体。
缺点:表很大后所有数据库操作都很慢
解决:因为图片查询都是查询图片的相关文字信息,所以如果在文字信息
上合理的建立索引,那么将会极大的提高检索的速度。
2. 图片存放为文件
这种方法只是将图片文件放到系统的一个文件中,在表中存文件路径。
优点:大大的缩小了表的大小,提高了所有相关数据库操作的速度。
缺点:造成了图像和其描述信息的分离,成为分离的两个部分,不便管理。
解决:建立严格的同步管理机制,使得备份等等各种操作都同步进行。
=================================
对于以上2中常见方法,我比较倾向第一种,只要合理的建立索引机制,因该
第一种更方便,或者说更象一个“图片库”。而有时由于某些原因,可能在第一
种的图片描述信息上无法建立合理的索引(例如MySQL目前对中文FullText索引的
支持就不好),此时可以提出另外一种解决方案。(这种方案是我自己某图片库项目
所使用的方法)
3. 图片信息、描述信息各一张表
图片信息放在一张表中,对于的描述信息放在另外一张表中,之间通过某个主键
或者外键的方法进行一一对于。
优点:使得检索信息的表很小,同时也让所有的相关信息都放入到了数据库中。
缺点:需要通过某种机制(主键对应或者外键)的办法来确保记录的一一对应,还
需要让所有的修改、删除、添加操作都同时对2表成功进行。
解决:通过合理的同步机制,例如事务等,使得记录对应关系保持良好。
第三种方法我做的库,目前共10815张图片,占用磁盘空间1.63G,对4个关键字做
like '%xxx%'方式的检索,所有检索时间在1秒内完成……而且没有使用全文索引……
分享到:
相关推荐
BLOB是一种可以存储大量二进制数据的对象,分为四种子类型:BLOB、CLOB、NCLOB和BFILE。在Oracle中,BLOB用于存储二进制数据,如照片;而在MySQL中,BLOB也有类似的分类,包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB...
使用Oracle的大对象存储类型BLOB,BFILE存储和读取大文件,也包括使用FTP传输文件,如果使用FTP传输文件,需要在服务器端安装Serv-U软件。数据库为Oracle 10g,代码为Visual Studio 2008 VC++开发,软件中的代码有BLOB...
在Oracle数据库中,Blob与Clob(Character Large Object)、Bfile和Nclob一同构成了大对象类型。 Clob是用来存储字符数据,同样最大可达到4GB,适用于文本内容。Bfile则是一种外部LOB,它存储在数据库外部的文件...
Oracle中的Blob类型是一种用于存储大型二进制对象的数据类型,如图像、音频或视频文件等。Blob相比于long字段,提供了更好的性能,特别是处理大量非结构化数据时。Blob的使用涉及多个步骤,包括创建、插入、读取和...
Oracle还提供了`BFILE`数据类型,用于存储数据库外部的二进制文件,节省存储空间。此外,Oracle的`NCLOB`数据类型用于存储Unicode字符数据。 3. 区别与比较: - 存储机制:MySQL的`TEXT`和`BINARY`系列数据类型...
Oracle数据库系统支持对大型数据对象(LOBs,Large Objects)的操作,这包括BLOB、CLOB、NCLOB和BFILE四种类型。每种类型都有其特定的用途和特性,适用于存储不同类型的大数据。 1. BLOB(Binary Large Object): ...
在Oracle中,BFILE和CLOB也是用来存储大对象的类型,但BFILE存储的是文件系统中的外部文件,而CLOB用于存储非二进制的大型文本数据。 接下来,让我们探讨如何在Spring中与Oracle的BLOB字段交互。这通常涉及到以下几...
Oracle BLOB(Binary Large Object)数据类型在Oracle数据库中用于存储大容量的非结构化数据,如图片、视频和音频文件。在信息化时代,随着多媒体信息的爆炸性增长,有效地管理和存储这些信息成为了一个关键挑战。...
在Oracle8i版本中,数据库支持了大型对象(LOB)类型,包括BLOB(Binary Large Object)和CLOB(Character Large Object)。这两种数据类型用于存储大量二进制数据(如图片、视频或文档)和文本数据(如长篇文章或...
-- 获取BFILE并加载到BLOB P_FILE := BFILENAME('图片目录', P_FILENAME); DBMS_LOB.FILEOPEN(P_FILE, DBMS_LOB.FILE_READONLY); DBMS_LOB.LOADFROMFILE(P_LOB, P_FILE, DBMS_LOB.GETLENGTH(P_FILE)); DBMS_LOB...
- BFILE:虽然用于存储大型二进制数据,但数据实际存储在文件系统中,数据库中仅存储指向文件的指针,Oracle对BFILE是只读的,不参与事务性控制和数据恢复。 ### Struts2与Hibernate结合操作BLOB数据 将Struts2与...
在Oracle数据库中,有多种数据类型用于存储不同类型的数据,其中包括Long、Raw和Blob。这些字段类型各有其特性和用途。 1. Long类型:Long数据类型用于存储大文本数据,如用户简历(EMP_DESCLONG)。它能存储的最大...
Blob数据类型提供了更高级的管理和检索二进制大数据的功能,比如可以通过BFILE与操作系统文件系统进行交互。 以下是一个简单的Oracle数据库操作示例,假设我们有一个名为C_EMP1_T的表,包含以上提到的字段类型: `...
Oracle数据库提供了对大对象的存储支持,如CLOB、NCLOB用于存储文本数据,而BLOB和BFILE则用于存储二进制数据,如Excel文件。 文章作者赵鲁东指出,在开发油田作业设备综合评价系统时,面临的问题是Excel文件的存储...
在实际应用中,处理BLOB字段时,通常会使用Oracle的BFILE或者SecureFile功能来提高性能和管理大对象。BFILE允许数据库链接到操作系统文件系统上的文件,而SecureFile提供压缩、加密和更好的性能特性。 在互联网环境...
- 可以处理 LOB(大型对象)数据类型,如 BFILE、BLOB、CLOB 和 NCLOB。 10. **集成其他框架**: - `cx_Oracle` 可以与 Flask、Django 等 Web 框架结合,为 Web 应用提供数据库支持。 综上所述,`cx_Oracle-...
此外,Oracle还支持BFILE类型用于管理外部文件,而DB2/400提供了DATALINK类型作为对应。 #### 六、特殊类型 - **Oracle ROWID**: 用于唯一标识表中的行。 - **DB2/400 ROWID**: 类似于Oracle的ROWID,但不包含关于...
4. **二进制数据类型**:BLOB(大对象,用于存储二进制数据)、BFILE(指向外部文件系统的二进制文件)。 5. **其他类型**:RAW(固定长度的二进制数据)、LONG RAW(长二进制数据)、PL/SQL记录和游标类型。 而在...
8. **LOB(Large Object)支持**:处理大对象类型,如 BFILE、BLOB、CLOB 和 NCLOB,适用于存储大量非结构化数据。 9. **高级特性**:包括绑定变量、PL/SQL 块、通知、事件和触发器等,增强了应用的灵活性和可扩展...
同时,确保数据库支持高效的BLOB和CLOB操作,比如Oracle的BFILE类型或使用流式处理。 总之,Hibernate提供了对BLOB和CLOB的便利支持,允许开发者在Java应用中轻松地处理大数据对象,从而实现与数据库的高效交互。...