<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > 在Oracle中存儲(chǔ)與管理大對(duì)象數(shù)據(jù)類型

          在Oracle中存儲(chǔ)與管理大對(duì)象數(shù)據(jù)類型

          作者: 時(shí)間:2017-06-12 來源:網(wǎng)絡(luò) 收藏
          一、支持的大對(duì)象數(shù)據(jù)類型。

            在中為了更好的管理大容量的數(shù)據(jù),專門開發(fā)了一些對(duì)應(yīng)的大對(duì)象數(shù)據(jù)類型。具體的來說,有如下幾種:

            一是數(shù)據(jù)類型。它是用來可變長度的二進(jìn)制數(shù)據(jù)。由于其的是通用的二進(jìn)制數(shù)據(jù),為此在之間或者在客戶端與服務(wù)器之間進(jìn)行傳輸?shù)臅r(shí)候,不需要進(jìn)行字符集的轉(zhuǎn)換。為此其傳輸?shù)男时容^高,而不容易出現(xiàn)亂碼現(xiàn)象。

            二是數(shù)據(jù)類型。他主要是用來可變長度的字符型數(shù)據(jù),也就是其他數(shù)據(jù)庫中提到的文本型數(shù)據(jù)類型。雖然說VARCHAR2數(shù)據(jù)類型也可以用來存儲(chǔ)可變長度的字符型數(shù)據(jù),但是其容量是非常有限的。而現(xiàn)在這個(gè)數(shù)據(jù)類型,其可以存儲(chǔ)的最大數(shù)據(jù)量是4GB。而且在定義這個(gè)數(shù)據(jù)類型的時(shí)候,不需要指定最大長度。在定義Varchar2數(shù)據(jù)類型時(shí)需要指定。

            三是N數(shù)據(jù)類型。這個(gè)數(shù)據(jù)類型跟CLOB數(shù)據(jù)類型相似,也是用來存儲(chǔ)字符類型的數(shù)據(jù),不過其存儲(chǔ)的是Unicode字符集的字符數(shù)據(jù)。同樣,在這個(gè)數(shù)據(jù)類型中,也可以存儲(chǔ)多達(dá)4GB容量的數(shù)量,而且在定義數(shù)據(jù)類型時(shí)不需要指定長度,數(shù)據(jù)庫會(huì)自動(dòng)根據(jù)存儲(chǔ)的內(nèi)容來進(jìn)行調(diào)節(jié)。

            四是數(shù)據(jù)類型??纯疵志椭栏渌腖OB數(shù)據(jù)類型不同。其是在數(shù)據(jù)庫外面存儲(chǔ)的可變二進(jìn)制數(shù)據(jù),其最多也可以存儲(chǔ)4GB的數(shù)據(jù)。這里需要注意的是,在不同的操作系統(tǒng)上其存儲(chǔ)的數(shù)據(jù)容量可能是不同的。這個(gè)數(shù)據(jù)類型的特殊在于其在數(shù)據(jù)庫之外存儲(chǔ)實(shí)際數(shù)據(jù)。也就是說,跟其他大對(duì)象數(shù)據(jù)類型不同,其數(shù)據(jù)并不是存儲(chǔ)在數(shù)據(jù)文件中,而是獨(dú)立于數(shù)據(jù)文件而存在的。在這個(gè)字段中,其只存儲(chǔ)了指針信息。

          二、不需要為大對(duì)象數(shù)據(jù)類型指定長度。

            以上提到的一些大對(duì)象數(shù)據(jù)類型有一個(gè)特點(diǎn),即全部都是可變長度的數(shù)據(jù)類型,而且在定義時(shí)不需要指定其最大的長度。雖然在數(shù)據(jù)庫內(nèi)建數(shù)據(jù)類型中也有一些可變長度的數(shù)據(jù)類型,但是,其往往需要在定義時(shí)指定最大的長度。實(shí)際存儲(chǔ)數(shù)據(jù)時(shí)不能夠超過這個(gè)長度。不過這些大容量數(shù)據(jù)類型則沒有這個(gè)限制,只要在存儲(chǔ)時(shí)不要超過其最大4GB的容量限制即可。由于其都是可變長度的數(shù)據(jù)類型,為此其實(shí)際存儲(chǔ)的空間為根據(jù)數(shù)據(jù)容量的大小而改變。即如果某個(gè)數(shù)據(jù)大小只有1GB,那么其實(shí)際在硬盤中存儲(chǔ)的空間就只有1GB,而不會(huì)是4GB。這就是可變長度數(shù)據(jù)類型的特征。像其他的一些不可變長數(shù)據(jù)類型,如果存儲(chǔ)的數(shù)據(jù)容量不夠的話,會(huì)以空格填充。不過現(xiàn)在這個(gè)大對(duì)象數(shù)據(jù)類型由于是可變長度的數(shù)據(jù)類型,其實(shí)際存儲(chǔ)的長度會(huì)根據(jù)世紀(jì)數(shù)據(jù)來進(jìn)行調(diào)整。為此可以最大限度的提高硬盤空間的使用率。

          本文引用地址:http://www.ex-cimer.com/article/201706/353548.htm三、最好將大對(duì)象數(shù)據(jù)類型與普通數(shù)據(jù)類型分開存放。

            在數(shù)據(jù)庫設(shè)計(jì)時(shí),如果某個(gè)表需要用到大容量數(shù)據(jù)類型,那么最好能夠?qū)⑦@些大對(duì)象數(shù)據(jù)類型的列與其它列分成獨(dú)立的表。如現(xiàn)在有一個(gè)產(chǎn)品信息表,在這個(gè)表中有一個(gè)大對(duì)象數(shù)據(jù)類型的數(shù)據(jù),用來存儲(chǔ)一段關(guān)于產(chǎn)品說明的視頻資料。此時(shí)最好不要將這個(gè)列與產(chǎn)品信息表中的其他列存放在一起。最好是將這個(gè)大對(duì)象數(shù)據(jù)類型存放在另一張表中,然后通過產(chǎn)品ID關(guān)聯(lián)起來。這對(duì)于提高數(shù)據(jù)庫性能具有很大的幫助。如在對(duì)數(shù)據(jù)庫進(jìn)行備份時(shí),由于對(duì)大容量的數(shù)據(jù)類型進(jìn)行備份時(shí)需要花費(fèi)比較長的時(shí)間,并會(huì)在很大程度上影響數(shù)據(jù)庫的性能。而且這些大容量的數(shù)據(jù)類型一般更改也不會(huì)很頻繁。所以在備份或者還原時(shí),可以只對(duì)那些非存儲(chǔ)大對(duì)象數(shù)據(jù)類型的表空間進(jìn)行備份或者還原,從而提高數(shù)據(jù)庫備份或者還原的性能。另外一種可行的方式是,不講這些大對(duì)象信息保存在數(shù)據(jù)庫中。如對(duì)于產(chǎn)品說明的視頻資料,只是采用不同的可變字符長度數(shù)據(jù)類型,在表中存儲(chǔ)其網(wǎng)絡(luò)服務(wù)器上的路徑。然后再客戶端程序設(shè)計(jì)時(shí),設(shè)計(jì)一個(gè)連接。用戶點(diǎn)擊這個(gè)連接就可以自動(dòng)打開網(wǎng)絡(luò)服務(wù)器上對(duì)應(yīng)的文件。這無疑也會(huì)簡化數(shù)據(jù)庫的管理。所以,雖然說數(shù)據(jù)庫提供了對(duì)大容量數(shù)據(jù)的管理能力,但是為了多方面考慮,還是能夠采取獨(dú)立管理為好,至少不要將其他的常規(guī)數(shù)據(jù)存放在同一個(gè)表或者同一個(gè)表空間中,以利于后續(xù)的管理與維護(hù)。

          四、大對(duì)象數(shù)據(jù)類型在使用上的限制。

            這些大對(duì)象數(shù)據(jù)類型不僅會(huì)影響Oracle數(shù)據(jù)庫的性能,而且在使用上還有不少的限制。如在某些SQL子句中不能夠使用這些數(shù)據(jù)類型。如where 是sql語句中最常用的條件語句,用來過濾數(shù)據(jù)。但是在這Where子句中,不能夠使用大對(duì)象數(shù)據(jù)類型。即不能夠根據(jù)大對(duì)象數(shù)據(jù)類型來過濾記錄,及時(shí)這個(gè)大對(duì)象數(shù)據(jù)類型可能只是存儲(chǔ)著少量的數(shù)據(jù)。故在采用大對(duì)象數(shù)據(jù)類型之前,需要了解這方面的限制。同理,還有一些子句也不支持這些大對(duì)象數(shù)據(jù)類型。如Order BY用來對(duì)某些記錄進(jìn)行排序,但是不能夠根據(jù)大對(duì)對(duì)象數(shù)據(jù)類型對(duì)記錄進(jìn)行排序,如使用Order BY CLOB語句,系統(tǒng)就會(huì)提醒錯(cuò)誤信息。同理,也不能夠使用Group By子句對(duì)大對(duì)象數(shù)據(jù)類型的數(shù)據(jù)進(jìn)行分組匯總。總之,雖然說Oracle數(shù)據(jù)庫中已經(jīng)專門為大容量數(shù)據(jù)類型提供了管理的渠道,但是支持其的語句還是比較少的。為此在定義大對(duì)象數(shù)據(jù)類型時(shí),要注意以后數(shù)據(jù)操作上的煩惱。

            另外如果數(shù)據(jù)庫管理員習(xí)慣采用SQL*PLUS來設(shè)計(jì)數(shù)據(jù)庫以及維護(hù)數(shù)據(jù)的時(shí)候,也需要注意了。數(shù)據(jù)庫管理員是不能夠在sql *plus這個(gè)工具上進(jìn)行查詢,顯示大對(duì)象數(shù)據(jù)類型的數(shù)據(jù)。也不能夠采用INSERT語句插入大對(duì)象類型的數(shù)據(jù)。如果硬要這么操作的話,則數(shù)據(jù)庫系統(tǒng)會(huì)提示“列或者屬性無法通過PLUS來顯示”的錯(cuò)誤信息。所以不僅在查詢、排序上會(huì)有問題,對(duì)大對(duì)象數(shù)據(jù)類型進(jìn)行數(shù)據(jù)插入等操作也會(huì)遇到阻礙。故雖然Oracle數(shù)據(jù)庫提供了對(duì)大對(duì)象數(shù)據(jù)類型的支持,不過筆者不是很贊成用戶將什么數(shù)據(jù)都往數(shù)據(jù)庫系統(tǒng)中存存放,特別是一些視頻資料。筆者在數(shù)據(jù)庫部署中,總是告誡用戶,能夠獨(dú)立管理這些大對(duì)象數(shù)據(jù)最好進(jìn)行獨(dú)立管理,不要放在數(shù)據(jù)庫系統(tǒng)中。如可以將他們放在網(wǎng)絡(luò)上的共享服務(wù)器中,然后通過一個(gè)地址來鏈接這些圖片或者視頻文件。如果設(shè)計(jì)的比較周到的話,在客戶端界面上設(shè)置一個(gè)超鏈接即可。通過這個(gè)超鏈接在需要的時(shí)候可以直接打開這個(gè)文件。畢竟并不是每次用戶查詢某個(gè)產(chǎn)品信息時(shí)都需要用到這個(gè)視頻說明文件。所以這還可以提高應(yīng)用程序的性能。因?yàn)槠淠J(rèn)情況下不會(huì)去打開這個(gè)大容量的文件。只有在需要時(shí)用戶才會(huì)通過超鏈接來打開。這顯然可以提高應(yīng)用程序的性能,縮短用戶的等待時(shí)間。

            為此筆者建議,一般情況下只有這些大容量數(shù)據(jù)類型有同步顯示的需要,如查看某個(gè)產(chǎn)品信息時(shí),自動(dòng)在窗口中顯示這個(gè)產(chǎn)品的圖片。在這種情況下才將大對(duì)象的數(shù)據(jù)類型保存在數(shù)據(jù)庫中。除非用這個(gè)同步顯示的需要,否則的話最好不要將其存放在數(shù)據(jù)庫中。不然的話,對(duì)數(shù)據(jù)庫性能、后續(xù)維護(hù)有害無利。所以O(shè)racle提供的這些大對(duì)象數(shù)據(jù)類型只是用來應(yīng)急的,而不能夠作為常規(guī)功能來對(duì)待。


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();