核心問題:
1.資料分類:文本,圖檔/視訊等
2.jdbc中如何分别設定/擷取
一、大資料也稱之為LOB(Large Objects),LOB又分為:clob和blob
clob用于存儲大文本。
blob用于存儲二進制資料,例如圖像、聲音、二進制文等。
(對于不同的資料庫有不同的實作)
二、下面以java---mysql為例
對MySQL而言隻有blob,而沒有clob,mysql存儲大文本采用的是Text
(也就是說,clob---Test;blob---blob)
具體類型:
Test:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
blob:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB
1.Test
JDBC設定Test(注意,不是test,而是CharacterStream)
PreparedStatement.setCharacterStream(index, reader, length);
從Mysql擷取:
方法1:reader = resultSet. getCharacterStream(i);
方法2:reader = resultSet.getClob(i).getCharacterStream();//(我一般使用這個方法)
方法3:string s = resultSet.getString(i);
2.blob
設定:
PreparedStatement. setBinaryStream(i,inputStream, length);
擷取:
方法1:InputStreamin = resultSet.getBinaryStream(i);//常用
方法2:InputStreamin =resultSet.getBlob(i).getBinaryStream();
三、對于真正的大資料,一般是将路徑存于資料庫,通過查資料庫找到路徑,再通過IO流來讀取(NIO沒有學,不了解)
還有一個問題,當檔案超過jvm大小時,也就是對于千萬級資料的處理,有是與此不同;再往深裡研究,那就再加上分布式(沒有接觸到,接觸到了和大家分享)。