在利用ORACLE平台進行數據庫系統的開發過程中對於海量圖像數據的管理目前大都采用表+實體的方法即圖像數據以文件形式存放於指定的計算機目錄下在數據庫表中只反映圖像數據文件的存儲路徑這種管理模式給數據的維護增加了難度同時也給數據的安全帶來一定的隱患因此要真正做到各類數據在數據庫中安全管理研究和探索直接將海量圖像數據存儲在數據庫關系表中的方法是非常必要的數據庫
筆者在Visual Basic 開發環境中采用客戶機/服務器的工作方式針對ORACLE數據庫關系表中存儲大量圖像數據的問題和存儲海量圖像數據的策略與方法進行了初步探討提出了一套基本解決方案供讀者參考
一大對象數據類型介紹
在關系型數據庫中大數據量圖像數據等大型對象是由lob型字段來進行存取的在Oraclei中正式引入了此標准以適應多媒體大對象處理的需求Oracle數據庫中lob型數據有以下幾種
Lob類型 說明
Clob 和Oracle的long型相似clob可以存儲單字節型數據
Nclob Nclob存儲定寬的多字節國家字符集數據
Blob 和Oracle中的long raw類型相似可以存儲無結構的二進制數據Oracle沒有對這種數據進行解釋 只是按照原來的形式存儲和檢索它
Bfile Bfile允許對Oracle數據庫以外存儲的大型二進制文件進行只讀形式的訪問和其它三種lob類型數據 不同的是bfile類型數據存儲在一個單獨的文件中該文件不由Oracle來維護
特點
在Oracle中相應的long或long raw字段有g的限制而lob的限制是g
lob可以使用調用接口OCI或者由pl/sql利用dbms_lob包進行操縱
lob不象long型那樣每個表中最多只有一個字段的限制其可以有多個而又可以利用觸發器的特性
lob數據處理可以獲得與其它數據同樣的事物特性
lob的存儲比較特殊它並不是跟其他數據存儲在同一個數據庫表中而是可以單獨存放於不同的表空間中由一個定位符指向實際的lob數據
二存儲海量圖像數據的策略
圖像數據庫技術一直致力於解決海量數字圖像的有效存儲和管理問題它是數據庫技術的繼承和發展一方面圖像數據和文本數據存在著本質的區別在文本數據領域得以成功應用的傳統數據庫技術如果一成不變的照搬到圖像數據庫領域結果往往是低效甚至無效另一方面傳統數據庫的許多成果如SQL語言索引技術等都值得圖像數據庫借鑒上述兩個方面的結合成為目前圖像數據庫技術發展的主流
BLOB大對象數據是數據量很大的數據類型它會占用大量的硬盤空間內存和網絡資源因此合理地設計包含有BLOB大對象數據類型的屬性表對提高存儲效率查詢速度有很大的影響一般BLOB大對象的設計原則如下
() 盡量不使用BLOB大對象
二進制大對象並不一定要存儲為textntext或者image數據類型它們也可以作為varchar或者varbinary數據類型村處在表格中數據類型的選擇要根據將要存儲的BLOB的實際大小如果數據不會超過K那麼就使用Varchar或者varbinary數據類型如果這些大對象的尺寸超過K那麼就使用textntext或者image數據類型
()何時使用BLOB數據類型
在下列情況下我們可能要使用到BLOB數據類型
·您要將OLE對象(如圖形聲音等)存入您的數據庫中
·您要將大型的二進制對象存入您的數據庫中
·您所要操縱的文本對象過大以致於一般的字符串函數無法對其操作
·您所使用數據庫的數據類型oracle不能支持所以您只能使用blob函數對其進行操縱
() 最好將BLOB存儲在數據庫中
常見的設計問題是將圖片存在數據庫中還是存在文件系統中在大多數情況下最好把圖片文件與其它數據一起存在數據庫中因為將影像數據文件存儲在數據庫中有許多優點
⑴易於管理當BLOB與其他數據一起存儲在數據庫中時BLOB和表格是數據一起備份和恢復這樣就降低了表格數據與BLOB數據不同步的機會而且降低了其他用戶無意中刪除了文件系統中BLOB數據位置的路徑和風險另外將數據存儲在數據庫中BLOB和其他數據的插入更新和刪除都在同一個事務中實現這樣就確保了數據的一致性和文件與數據庫之間的一致性還有一點好處是不需要為文件系統中的文件單獨設置安全性
⑵可伸縮性盡管文件系統被設計為能夠處理大量不同大小的對象但是文件系統不能對大量小文件進行優化在這種情況下數據庫系統可以進行優化
⑶可用性數據庫具有比文件系統更多的可用性數據庫復制允許在分布式環境中復制分配和潛在的修改數據在主系統失效的情況下日志轉移提供了保留數據庫備用副本的方法當然在某些情況下將圖片存儲在文件系統中將是更好的選擇
()使用圖片的應用程序需要數據流性能例如實時的視頻重現
()象Microsoft PhotoDraw或者Adobe Photoshop這樣的應用程序經常訪問BLOB這些應用程序只知道怎樣訪問文件
()需要使用一些NTFS文件系統中的特殊功能例如遠程存儲
三海量數據存儲備份及分發
()存儲
目前對數據的存儲可分為兩大類型一種是傳統的以主機為中心的存儲方式另一種是基於網絡的以網絡為中心的存儲方式與傳統的存儲方式相比網絡存儲具有更大的靈活性可以實現對所有數據的共享可以較好地保持數據的一致性完整性和安全性存儲方式有許多最常用的是磁帶庫和磁盤陣列但是磁盤陣列價格昂貴磁帶庫又有很多缺點最近市面上出現了一種叫光盤庫的東西DVD光盤庫特別是DVDRAM光盤庫適用於所有大容量資料數據的存儲場合適合存儲一些資料性的不經常更改的數據比如醫院的醫療影像資料銀行等金融機構的重要票據影像資料圖書館的書庫電視台的音像資料庫等等
DVD光盤庫不僅支持傳統的文件而且可以支持各種類型的數據庫例如OracleInformixSQL等用戶可以直接把數據庫的表空間建立在光盤庫中的DVDRAM光盤上可以支持數據查詢和數據插入修改刪除等操作對於用戶完全透明感覺就如同使用硬盤一樣方便但是目前DVD光盤庫的技術似乎不太成熟還不能作為安全性較高的數據庫的存儲設備
()備份
光盤作為一種近十年才興起的存儲介質同傳統的磁帶軟磁盤相比具有不可同日而語的優點CD/DVD光盤由於容量大目前單盤GB日後容量將迅速突破GB易保存保存期長達年以上可靠性高即使表面磨損也可用幾百元一台的修復機迅速修復攜帶方便數據交換方便每台PC目前大部分都安裝了光盤驅動器特別DVDRAM作為一種世界潮流的新存儲介質將擁有無可限量的前途既可以用作普通的備份介質又可用作實時的存儲載體
磁帶特別是數據流磁帶的單盤容量確實較大可達到GB但這樣一盤磁帶的價格將近美元同時磁帶如保管不善易發霉易磨損接近磁體時易數據丟失而且不同格式的磁帶驅動器也不相兼容造成了介質數據交換不便光盤與硬盤相比也有許多無可比擬的優點硬盤本身比較脆弱遇到大的震動沖擊容易損壞光盤就可很好的解決這些問題所以大型圖像數據庫系統所有數據的備份能通過光盤完成是最好的選擇
()分發
目前DVD驅動器已經成為IT行業的一種標准輸入輸出設備單張DVD光盤片容量大如DVDROM(GB)DVDRAM(GB)非常適合作為分發存儲介質
四存儲圖像數據的方法舉例
建立具有BLOB字段的ORACLE數據庫
按照如下步驟來完成各個操作
()創建表空間
《
用ORACLE數據庫存儲海量圖像數據》本文是由
Oracle免費提供,內容來源於互聯網,本文歸原作者所有。