SQL Server數據庫對圖像數據之存儲機制
以下的文章主要是介紹SQL Server數據庫對圖像數據之存儲機制介紹,我們大家都知道在一個完善的醫院中信息MIS 圖像數據的實際存取是很重要的,比如X光片、CT像片的保存。一方面,這些圖像數據在遠程診療為準確診斷病情提供了重要的依據。
另一方面,也為快速查閱病人資料提供了基本條件。圖像數據的存取在其它應用系統如GIS中也有廣泛的應用。
1、SQL Server中圖像數據的存儲機制
在MIS SQL Server數據庫 中,對于小于 8000 個字節的圖像數據可以用二進制型(binary、varbinary)來表示。但通常要保存的一些醫學影像圖片都會大于 8000個字節。SQL Server提供了一種機制,能存儲每行大到 2GB的二進制對象(BLOB),這類對象可包括image、text和ntext三種數據類型。Image數據類型存儲的是二進制數據,***長度是 231-1 (2,147,483,647)個字節。
BLOB數據在MIS SQL Server系統中的存儲方式不同于普通的數據類型,對于普通類型的數據系統直接在用戶定義的字段上存儲數據值,而對于BLOB類型數據,系統開辟新的存儲頁面來存放這些數據,表中BLOB類型數據字段存放的僅是一個16個字節的指針,該指針指向存放該條記錄的BLOB數據的頁面。
2、SQL Server中圖像數據的存取
在MIS SQL Server數據庫中,當數據小于 8000 個字節時,可以用普通的SQL操縱語句(SELECT、INSERT、UPDATE、DELETE)來完成對字段的操縱,當數據大于8000個字節時,SQL提供了 WRITETEXT 、READTEXT和UPDATETEXT這三個函數來讀取和修改數據。這三個函數的使用方法為:
(1)WRITETEXT {table.column text_ptr}[WITH LOG] {data}
table.column為表中的字段,text_ptr為一個16個字節的指針,data為要寫的數據值。可選參數WITH LOG表示是否要寫入日志文件中。
例:
DECLARE @ptrval binary(16) --指針
- SELECT @ptrval = TEXTPTR(img_ct) FROM zy_ct WHERE id_ct = 20010101001
- WRITETEXT zy_ct.img_ct @ptrval 0x024324142342134214213421421454353452341
(2)READTEXT {table.column text_ptr offset size} [HOLDLOCK]
table.column為表中的字段,text_ptr為一個16個字節的指針,offset 為偏移量,即從第幾個字節開始讀數據,size為要讀的字節數,HOLDLOCK 為在讀數據中是否充許其他用戶修改該數據。
例:
- DECLARE @ptrval varbinary(16)
- SELECT @ptrval = TEXTPTR(img_ct) FROM zy_ct WHERE id_ct = 20010101001
- READTEXT zy_ct.img_ct @ptrval 1 25
(3) UPDATETEXT
- {table_name.dest_column_name dest_text_ptr}
- {NULL|insert_offset}{ NULL | delete_length}
- [WITH LOG][ inserted_data|
- {table_name.src_column_name src_text_ptr}
table_name.dest_column_name 為要修改的text, ntext, 或 image字段;dest_text_ptr為指向其的指針;insert_offset為偏移量,對于text和image為從第幾開始字節開始寫,對于ntext為從第幾個字符(雙字節)開始寫;delete_length為從insert_offset開始刪除delete_length長度的字節(符),為0時不刪除,為NULL時為刪除從insert_offset開始到結束的所有數據。要插入的數據為 inserted_data為,也可是表table_name的src_column_name字段中指針 src_text_ptr所指數據。
以上的相關內容就是對SQL Server數據庫對圖像數據的存儲機制的部分內容的介紹,望你能有所收獲。
【編輯推薦】