999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

不依賴字符集的數據庫非標字段檢測方法

2012-06-13 02:09:12孟凡奇
東北電力大學學報 2012年4期
關鍵詞:數據庫檢測方法

孟凡奇,趙 雷

(1.東北電力大學信息工程學院,吉林吉林132012;2.大慶油田電力集團油田熱電廠,黑龍江大慶163314)

信息社會的絕大多數信息是存儲在MIS(Management Information System,管理信息系統)中的,而MIS中真正存儲數據的是數據庫,人們從數據庫中獲取信息,同時也將新的信息錄入數據庫。因此,數據庫中的數據是否規范、正確就顯得尤為重要[1]。但是由于主觀故意或是數據錄入時的合法性檢測不嚴格等諸多原因,數據庫中難免出現少量非法數據。比如,電子郵箱的格式應為“郵箱名@域名.com”,錄入“victor@yahoo.com”是正確的、合法的,而“★☆*@7#.cn”就是不正確的電子郵箱地址,可以定義為“非法”數據。這些非法數據的顯著特征之一就是含有非ASCII(American Standard Code for Information Interchange,美國信息互換標準代碼)字符。本文將含有非ASCII字符的字段稱為“非標字段”。對于非法的非標字段除了以預防為主以外還要及時的檢查并糾正[2]。

目前,大多數檢測非標字段的方法是依賴于數據庫所用字符集的,檢測時要指定字符集名稱或使用其中的字符編碼,這就迫使DBA(Database Administrator,數據庫管理員)要對現有的字符集有一定程度的了解,增加了其額外工作量[3]。本文從數據表中字段的ASCII值和存儲空間角度,提出了兩種不依賴字符集的數據庫非標字段檢測方法,實驗表明,這兩種方法與依賴于數據庫所用字符集的非標字段檢測方法取得了同樣的效果。

1 基于字符集的檢測方法

字符是各種文字和符號的總稱,包括數字、標點符號、圖形符號、各國文字等。計算機要準確識別、存儲和處理各種字符,需要對其進行編碼[4-6]。由于編碼的字符數量和規則不盡相同,因此形成了不同版本的字符的集合,簡稱字符集。字符集種類較多,數據庫中常用的字符集有:ASCII字符集、GB2312字符集、BIG5字符集、Unicode字符集等。

ASCII字符集是現今最通用的單字節編碼系統,對應的國際標準為ISO646。它用7位(bits)表示一個字符,共128個字符。而國內數據庫常用的GB2312又稱為GB2312-80字符集,全稱為《信息交換用漢字編碼字符集·基本集》,是中國國家標準的簡體中文字符集。它所收錄的漢字已經覆蓋99.75%的使用頻率,一個漢字用2個字節表示。GB2312收錄簡化漢字及一般符號、序號、數字、拉丁字母、日文假名、希臘字母、俄文字母、漢語拼音符號、漢語注音字母,共7445個圖形字符[7-9]。

不同字符集中的字符能夠互相轉換,但非標字符轉換前后可能會發生變化。以Oracle11g數據庫為例,轉換工作可由CONVERT函數完成,其格式為:

其中:“char”代表要轉換的字符串;“dest_char_set”代表目標字符集;“source_char_set”代表原字符集。

利用該函數進行非標字段檢測,需要先將疑似非標字段轉換為ASCII,然后比較轉換前后字段值是否相等,若不相等即可斷定為非標字段。但在檢測之前DBA需要了解數據庫所使用的字符集。若數據庫采用 GB2312字符集,則應將參數“dest_charset”設置為“US7ASCII”,將參數“source_charset”設置為“ZHS16CGB231280”??梢?,該方法是依賴于字符集的[10]。

2 不依賴字符集的檢測方法

依賴于字符集的檢測方法加重了DBA的負擔,考慮到ASCII字符使用1個字節的存儲空間,而非標字符使用2~3個字節的存儲空間,同時非ASCII字符集中的非標字符在轉換為ASCII時會發生改變[11-12],因此提出兩種不依賴字符集的非標字段檢測方法。

2.1 基于長度對比的檢測方法

數據庫中字段的物理存儲空間和字段的邏輯長度是不同的概念。存儲空間是字段占用的字節數,邏輯長度是字段中字的個數。若字段中不含非標字符,那么二者是相等的,否則不相等。仍以Oracle11g數據庫為例,函數LENGTH(char)可計算字段的邏輯長度,函數LENGTHB(char)能計算字段的存儲空間,例如以下兩條查詢語句:

語句(1)執行后的返回結果為2,語句(2)執行后的返回結果為4。若要判斷“e_mail”字段是否含有非標數據可以使用條件“length(e_mail)<>lengthb(e_mail)”進行判斷,若執行結果為TRUE,說明該條記錄的“e_mail”字段數據的邏輯長度與存儲長度不相等,則“e_mail”字段必是非標字段。由于這種方法在使用時無需指定字符集,因此對于DBA而言是不依賴字符集的。

2.2 基于取ASCII值的檢測方法

將非標字符強制轉換為ASCII時,其值會發生變化,這是由字符集的編碼規則決定的。在Oracle11g數據庫中,函數ASCIISTR(char)可以計算字段的ASCII值。比如以下兩條查詢語句:

語句(3)執行后的返回結果為“〈FD8·97D”,語句(4)執行后的返回結果仍將會是“abc”。根據這一特性,可以判斷取值前后的字段值是否相同,不相同則必是非標字段。若判斷“e_mail”字段是否含有非標數據可以使用條件“e_mail<>asciistr(e_mail)”進行判斷,若結果為TRUE,說明該條記錄的“e_mail”字段數據轉換前后并不相同,則“e_mail”字段必是非標字段。此方法也無需指定字符集,因此對于DBA而言也是不依賴字符集的。

3 實驗及結果

數據庫服務器采用DELL Power Edge T410。以Oracle11g數據庫中dba_objests視圖為藍本,通過“create table test as select* from dba_objests”語句創建測試數據庫。Test表的結構如表1所示。

表1 Test表的結構

然后向Test表插入4條含有非標字段的記錄(如圖1所示)

重復執行“insert into test select* from test”語句,直至數據表TEST中的記錄數達到8865920條,其中包括非標字段記錄512條。考慮到Oracle的共享池等機制能夠緩存查詢結果,提高對同一個表類似查詢的速度,因此將test表復制2份,分別命名為test2和test3。3條測試語句(表2所示)及其查詢結果(圖2所示)如下:

圖1 含非標字段的4條記錄

表2 測試用例及執行時間

圖2 測試語句的查詢結果(部分)

4 結 論

本文提出的兩種不依賴字符集的非標字段檢測方法與目前大多數依賴于字符集的檢測方法在性能上沒有明顯差別,同樣檢測到了含有中文、特殊符號等非標字符的記錄。但與傳統方法相比,DBA無需了解數據庫所使用的字符集,相對減輕了負擔。更重要的是為及時發現并糾正非法數據,避免MIS運行風險提供了新的有效手段。

[1]龔建華.基于多全體復制的Orache數據同步研究[J].辦公自動化,2011(3):27-29.

[2]鐘小權,葉猛.Oracle數據庫的SQL語句優化[J].計算機與現代化,2011(3):124-130.

[3]閃四清,楊強.Oracle Database 10g基礎教程[M].北京:清華大學出版社,2009.

[4]孟凡奇.一種在JSP頁面上分頁顯示Oracle中記錄的方法[J].科技創新導報,2007(36):50-50.

[5]岳國華,趙靜靜.基于ORACLE數據庫的多媒體數據SQL級操作探究[J].計算機技術與發展,2011,24(4):152-155.

[6]孫風棟,閆海珍.Oracle 10g數據庫系統性能優化與調整[J].計算機技術與發展,2009,9(2):13-16.

[7]王君,祝永志.基于Oracle分布式數據庫的查詢優化[J].計算機技術與發展,2008,18(1):43-45.

[8]ZHONG Xiao-quan.Optimization of SQL Sentence for Oracle Database[J].Computer and Modernization,2011(3):124 -126,130.

[9]華連生,丁憲生,呂剛.基于Oracle的氣象數據共享系統[J].計算機應用,2010,30(2):162-164.

[10]DENG Zhong-liang,Optimizing Access to Spatial Data Based on Oracle and ArcSDE[J].Computer Engineering & Software,2011,32(2):78-80.

[11]黃勇,趙靖.一種基于分布式數據庫的關聯規則挖掘新算法[J].計算機技術與發展,2011,21(2):147-150.

[12]劉媛,涂曉東.關于外包數據庫完整性驗證的研究[J].計算機技術與發展,2011,20(5):147-149.

猜你喜歡
數據庫檢測方法
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
數據庫
財經(2017年2期)2017-03-10 14:35:35
可能是方法不對
數據庫
財經(2016年15期)2016-06-03 07:38:02
小波變換在PCB缺陷檢測中的應用
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 国产成人亚洲精品蜜芽影院| 在线高清亚洲精品二区| 日韩资源站| 毛片大全免费观看| 亚洲AⅤ永久无码精品毛片| 久久精品丝袜| 91精品国产一区| 欧美国产日产一区二区| 免费一级大毛片a一观看不卡| 国产成人亚洲毛片| 亚洲综合色婷婷| 97精品久久久大香线焦| 久久婷婷人人澡人人爱91| 亚洲第一综合天堂另类专| 欧美日韩国产综合视频在线观看| 成人综合久久综合| 亚洲精品天堂自在久久77| 欧美日韩免费观看| 欧美不卡视频在线| 福利姬国产精品一区在线| 国产成人调教在线视频| 国产91高清视频| 久久人妻xunleige无码| 72种姿势欧美久久久大黄蕉| 青青青视频蜜桃一区二区| 亚洲手机在线| 国产欧美专区在线观看| 九九九精品视频| 免费毛片a| 中文字幕久久波多野结衣| 欧美日韩一区二区三| 成人国产精品一级毛片天堂| 国产特一级毛片| 亚洲视频a| 亚洲床戏一区| 伊人色综合久久天天| 乱人伦99久久| www.国产福利| 国产成人永久免费视频| 亚洲色图在线观看| 一区二区自拍| 无码专区国产精品第一页| lhav亚洲精品| 日本一本在线视频| 日韩毛片在线视频| 999精品视频在线| 午夜少妇精品视频小电影| 奇米影视狠狠精品7777| 一级毛片无毒不卡直接观看| 不卡视频国产| 欧美一区二区福利视频| 亚洲综合激情另类专区| 欧美黄色网站在线看| 国产欧美又粗又猛又爽老| 国产在线麻豆波多野结衣| 欧美一级黄色影院| 国产视频自拍一区| 免费99精品国产自在现线| 国产va欧美va在线观看| 国产丰满大乳无码免费播放| 亚洲黄色片免费看| 麻豆精品国产自产在线| 国产探花在线视频| 波多野结衣在线se| 九九九久久国产精品| 国产精品亚欧美一区二区| 伊人久久大香线蕉影院| 久久综合九九亚洲一区| 婷婷99视频精品全部在线观看| 国产乱码精品一区二区三区中文 | www.狠狠| 国产在线一区二区视频| 最新无码专区超级碰碰碰| 亚洲国产成人自拍| 国产美女精品一区二区| 在线观看视频99| 91最新精品视频发布页| 一本大道视频精品人妻| 国产精品国产主播在线观看| 亚洲日本www| 亚洲色无码专线精品观看| 精品一区二区久久久久网站|