SQL Server儲存映像資料的策略與方法

來源:互聯網
上載者:User
server|策略|資料 目前對於映像資料的管理大都採用表+實體的方法,即映像資料以檔案形式存放於指定的電腦目錄下,在資料庫表中只反映映像資料檔案的儲存路徑。這種管理員模式,給資料的維護增加了難度,同時,也給資料的安全帶來一定的隱患。因此,要真正做到各類資料在資料庫中安全管理,研究和探索直接將映像資料存放區在資料庫關係表中的方法是非常必要的。

  筆者在Visual Basic 6.0開發環境中,採用客戶機/伺服器的工作方式,針對SQL Server資料庫關係表中儲存映像資料的問題進行了初步探討,提出了一套基本解決方案,供讀者參考。

  一、 儲存映像資料的策略

  映像資料庫技術一直致力於解決海量數位影像的有效儲存和管理問題。它是資料庫技術的繼承和發展,一方面,映像資料和文本資料存在著本質的區別,在文本資料領域得以成功應用的傳統資料庫技術,如果一成不變的照搬到映像資料庫領域,結果往往是低效,甚至無效;另一方面,傳統資料庫的許多成果,如SQL語言、索引技術等都值得映像資料庫借鑒。上述兩個方面的結合成為目前映像資料庫技術發展的主流。

  1.1 BLOB資料類型

  BLOB是非常巨大的不定的二進位或者字元型資料,通常是文檔(.txt、.doc)和圖片(.jpeg、.gif、.bmp),它可以儲存在資料庫中。在SQL Server中,BLOB可以是text、ntext或者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,那麼就使用text、ntext或者image資料類型。

  (2) 儲存BLOB在資料庫中或者在檔案系統中

  常見的設計問題是將圖片存在資料庫中還是存在檔案系統中。在大多數情況下,最好把圖片檔案與其它資料一起存在資料庫中。因為將影像資料檔案儲存在資料庫中有許多優點:

  易於管理 當BLOB與其他資料一起儲存在資料庫中時,BLOB和表格是資料一起備份和恢複。這樣就降低了表格式資料與BLOB資料不同步的機會,而且降低了其他使用者無意中刪除了檔案系統中BLOB資料位元置的路徑和風險。另外,將資料存放區在資料庫中BLOB和其他資料的插入、更新和刪除都在同一個事務中實現。這樣就確保了資料的一致性和檔案與資料庫之間的一致性。還有一點好處是不需要為檔案系統中的檔案單獨設定安全性。

  延展性 儘管檔案系統被設計為能夠處理大量不同大小的對象,但是檔案系統不能對大量小檔案進行最佳化。在這種情況下,資料庫系統可以進行最佳化。

  可用性 資料庫具有比檔案系統更多的可用性。資料庫複寫允許在分布式環境中複製、分配和潛在的修改資料。在主系統失效的情況下,日誌轉移提供了保留資料庫備用副本的方法。

  當然,在某些情況下,將圖片儲存在檔案系統中將是更好的選擇:

  (1)使用圖片的應用程式需要資料流效能,例如即時的視頻重現。

  (2)象Microsoft PhotoDraw或者Adobe Photoshop這樣的應用程式經常訪問BLOB,這些應用程式只知道怎樣訪問檔案。

  (3)需要使用一些NTFS檔案系統中的特殊功能,例如遠程儲存。
二、 儲存映像資料的方法

  1 建立具有image宇段的SQL Server資料庫

  當需要在SQL Server資料庫中儲存映像資料時,首先應建立包含image資料類型欄位的資料庫關係表。SQL Server資料庫平台支援的資料類型中,image資料類型主要用於儲存映像資料等大段的位元據。SQL Server 7.0之後的版本,image類型可儲存2GB的資料。

  2 使用Remote Data控制項建立與資料庫的串連

  Remote Data控制項是在Visual Basic應用程式中用來擷取遠端資料的控制項。它在.遠端資料物件(RDO)和資料繫結控制項之間提供了介面,只要給它提供有關資料存放區的位置、擷取的資料和一些介面控制,就可以串連到資料庫,實現對資料庫的基本操作。

  使用Remote Data控制項建立與遠端資料庫的串連步驟如下:

  1.在Visual Basic的表單中加入一個Remote Data控制項。 ,

  2.在Remote Data控制項DataSourceName屬性的下拉式清單中選擇一個ODBC資料來源。例如pubs。

  3.在Remote Data控制項的SQL屬性中輸入SQL查詢語句。例如,Select * from pub_info。

  2.3 綁定OLE和Remote Data控制項實現映像資料的儲存與編輯

  OLE是允許應用程式相互之間交換和顯示資料的一項技術,使用OLE,可以從支援OLE技術的任何應用程式中讀取資訊,也可以在任何支援OLE的程式中顯示和編輯它。在Visual Basic中,可利用OLE容器控制項與Remote Data控制項的綁定,來實現顯示、儲存和編輯SQL Serve資料庫中的image類型資料。

  1.顯示SQL Serve資料庫image類型欄位的映像資料

  具體步驟如下:

  (1)在加入了Remote Data控制項的Visual Basic的表單中,添加一個OLE容器控制項。建立OLE容器控制項時,會出現“插入對象’:對話方塊,此時點擊“取消”按鈕,不必為該容器指定對象。

  (2)將OLE容器控制項的DataSource屬性設定為Remote Data控制項的名字,實現控制項的綁定。

  (3)在OLE容器控制項。DataField屬性的下拉式清單中選擇要顯示的欄位名。例如,logo。

  (4)運行應用程式。對於包含image資料類型的logo欄位的資料將在OLE容器控制項中顯示一幅映像。

  2.在SQL Sever資料庫image類型欄位中添加儲存映像資料

  具體步驟如下:

  (1)將Remote Data控制項的EOFAction屬性設定為rdAddNew,實現資料庫的資料添加功能。

  (2)在Visual Baisic的表單中添加一個CommandButton控制項,並編寫影像檔嵌入OLE容器控制項的程式碼。例如:

Private Sub Command_Click()

OLEl.CreateEmbed“c:\圖片.bmp”

End Sub

  (3)運行應用程式,點擊Remote Data控制項的記錄指示按鈕,移動到新的記錄,然後點擊CommandButton控制項按鈕,實現映像資料的添加入庫操作。

  3.編輯SQL Serve資料庫image資料類型欄位的映像資料

  具體步驟如下:

  (1)在Visual Basic的表單中添加一個CommandButton控制項,編寫對OLE對象的編輯程式碼。例如:

Private Sub Command2--_Click()

OLEl.DoVerb VbOLEOpen

End Sub

  (2)運行應用程式,點擊Remote Data控制項的記錄指示按鈕,選擇需要編輯的映像,然後點擊CommandButton控制項按鈕,在分隔的應用程式視窗開啟對象,進行映像的編輯操作。

  4、影像檔自動入庫方式的實現

  在資料庫的實際應用中,經常需要將影像檔批量儲存,以提高資料入庫操作的自動化程度。對於影像檔批量儲存,在程式碼的編寫中,可充分利用OLE容器控制項與RemoteData控制項的諸多屬性和方法,加以實現。

  具體步驟如下:

  (1)將OLE和RemoteData控制項的Visible屬性設定成False,使OLE和RemoteData控制項不可視。

  (2)建立影像檔的批次檔。

  (3)編寫以下基本代碼,實現批處理功能。

Private Sub Command3_Click()

Dim FileName As String

Open "c:\tesffile.txt"ForlnputAs#1'開啟批次檔。

DoWhileNotEOF(1)'迴圈至檔案尾。

Input#l,FileName'讀入影像檔名。

MSRDCl.Resultset.AddNew‘結果集添加記錄

OLEl.CreateEmbedFileName‘內嵌影像檔案

MSRDCl.Resultset.Update

Loop

Close #1

End Sub

  (4)運行應用程式。點擊CommandButton控制項按鈕,完成影像檔的自動入庫。

  五、結束語

  隨著SQL Serve資料庫管理系統功能的不斷增強、效能的不斷完善,將各類資料完全由資料庫管理系統統一儲存和管理,已成為技術發展的趨勢。只有這樣,SQL Serve資料庫管理系統的強大功能才能得到充分發揮,資料的安全性才能得到充分的保障,使得諸如資料庫複寫、資料的轉移等許多工作,變得非常簡單容易。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。