陳鋒 朱建風
摘要:使用計算機輔助工程,利用計算機數據庫、軟件開發、圖形化技術等專業知識技能,通過實踐使用者的需求,將數據庫SQL語句間接的應用計算機操作,供使用者人性化的應用。避免數據庫直接操作SQL語句的攻擊和煩瑣應用,提高使用者的工作效益、數據使用價值及數據庫安全性。
關鍵詞:數據庫;SQL語句;運算;動作;可視化操作
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)07-0005-03
1 引言
隨著互聯網技術和大數據的高速發展,數據庫驅動的WEB應用得到廣泛的普及。目前,很多單位和機構都是基本架構一個數據庫和N個面向用戶業務的WEB交互網頁,通過WEB頁面后臺腳本來獲取用戶交互界面提供的特定數據信息。但由于系統軟件研發人員在實現系統模塊功能時,往往會忽悠或輕視系統的安全性,在系統中留有大量的GUG (漏洞),給各業務系統留下了很大的安全隱患。
可視化的意義,不但展現全貌,增強理解、便于對話、探索、交流,還簡化復雜性,增強審視。繼而,數據庫的可視化操作是使用者得以接受的可行性方案和最佳選擇。
2 可視化操作
2.1 數據庫連接池
數據庫的連接池專門負責分配、管理和釋放數據庫的連接。它允許應用程序重用現有的數據庫連接,而不必重新建立一個全新的連接,并釋放出最大空閑的空間給更多的數據庫來連接,因為沒有釋放數據庫的連接。因此,該技術可以顯著提升數據庫操作的性能。
在Java語言程序開發中,由于它采用開源Java數據庫連接池,管理的是享元模式。因此,簡單的連接池設計思路如下:
(1)連接池配置屬性“DBbean”:主要存儲一些可以配置的屬性;
(2)連接池接口“IConnectionPool”:主要定義一些獲取連接的基本方法;
(3)實現接口“ConnectionPool”:對連接池接口的操作進行具體的實現,并添加一些其他方法;
(4)連接池的管理“ConnectionPoolManager”:主要是管理全部的不同的連接池,全部的連接都是通過這個連接池來獲得的連接;
(5)另外還有幾個測試類和連接信息模擬的類,這里就不進行XML和配置文件信息的讀取。
2.2 運算片段
2.2.1 交集比對
交集比對的前提條件必須是兩張及兩張以上的數據表,數據表是通過數據庫連接池獲取。看似兩步很簡單的過程,實際需要后臺開發語言將前端展現的表,運用在開發語言后臺編譯中,規范定義這些數據控制語言,對控制語言歸類建立,且把表變量化。
如JAVA中取交集的常用方法是retainAll,有兩個集合newCoures、oldCourses,怎樣判斷這兩個集合是否包含有相同的對象或元素,通常都使用retainAll方法:oldCourses.retainAll(newCoures)。如果存在相同元素,oldCourses中僅保留相同的元素。如果不存在相同元素,oldCourse會變為空。如果有多個集合oldCourses1、oldCourses2、oldCourses3等,分別與newCourses比較,應該將newCourses統一放在后面,像這樣:
oldCourses1.retainAll(newCoures);
oldCourses2.retainAll(newCoures);
oldCourses3.retainAll(newCoures);
public class Test {
public static void main(String[] args) {
List
List
List
for (inti = 0; i< 20; i++) {
list1.add(i+"");
if(i%2 == 0) {
list2.add(i+"");
}
list3.add(i+"@");
}
// list1 與 list2 存在相同元素,list1集合只保留list2中存在的元素
list1.retainAll(list2);
if(list1.isEmpty()) {
System.out.println("不包含");
} else {
System.out.println("包含");
}
System.out.println(list1);
// list1 與 list3 不存在相同元素,list1集合變為空
list1.retainAll(list3);
if(list1.isEmpty()) {
System.out.println("不包含");
} else {
System.out.println("包含");
}
System.out.println(list1);
}
}
2.2.2 條件碰撞
條件碰撞的前提條件必須是兩張及兩張以上的數據表,數據表是通過數據庫連接池獲取。較為復雜的條件碰撞方法,是需要根據使用者的輸入條件來判斷某個參數是否合法,如果合法的話,才能當作過濾的條件,常規做法就是在查詢SQL語句中賦值給一個字符串變量,然后再根據判斷條件動態的拼接where條件來進行查詢,通過不確定的字段名稱,而產生的SQL字符串拼接,例如有家公司要做一個系統,需要支持多種語言,這個時候就要將語言信息存儲在數據庫當中。然后,再根據客戶所選擇的查詢對應語言字段來進行具體顯示。
考慮到系統的性能,可能會使用存儲過程來減少網絡通信量和提高響應的速度。那么,在存儲過程中,通常會傳入一個參數,然后再根據這個參數來查詢指定的語言字段,當把SQL語句拼好,最后傳給數據庫執行,具體實現的寫法如下:
DECLARE @sqlNVARCHAR(100);
DECLARE @paraNVARCHAR(20);
SET @para = 'Chinese';
SET @sql = 'select ID, ' + @para + ' from SysLanguage'
print @sql
exec(@sql)
2.2.3 數據合并
數據合并的前提條件必須是兩張及兩張以上的數據表,數據表是通過數據庫連接池獲取。如何進行數據合并工作,大數據時代的到來,讓數據量級的增加不可與以往相比,而且數據往往分布在數據庫的不同表中,想把這些數據變成有價值的信息,需要進行數據合并處理的工作,而這個過程并不容易。
面對一堆無序的數據時,很多時候很難有效地開展工作,需要對不同數據進行數據收集、整理、清洗,加載到一個新的數據表中,為數據使用者提供一個統一的數據視圖,這樣才便于管理,而這個過程就是數據整合。數據整合的過程自然是少不了數據合并,無論格式或大小如何,都能隨時通過重復數據刪除,驗證,標準化和豐富數據,干凈,高質量的數據就此生成,可以用于數據訪問,數據報告和數據分析。
數據合并是通過使用者對原來的數據,通過使用者對新業務需求的掌握和理解,將原有的數據進行提煉,卻棄糟粕、取其精華的過程。
數據合并主要是將設置的條件轉換為特定數據庫的SQL語句,并執行這些語句。數據合并所涉及的關鍵技術包括幾個方面,異構數據的連接方式、自增主鍵的合并處理、數據覆蓋方式。
2.2.4 差集比對
通常來說A、B是兩個集合,則全部屬于A且不屬于B的元素所構成的集合,叫作集合A減集合B或者集合A與集合B之差,依此類推,對于集合A、B,我們把集合x∣x∈A,且x?B叫作A與B的差集。在做差集比對前,輸入的數據表(兩張或兩張以上)是具備單表字段的條件篩選處理,且是可視化操作按鈕來實現。在此之后,才使用可視化差集比對按鈕控件來對前面數據表處理的結果數據,進行差集比對,最終形成差集比對的結果。
如果開發語言中需要對其實現差集,可以參考如下腳本編譯:
兩個集合R和S的差集通常表述成R-S,其運算結果也是一個與R和S同結構的集合,其成員是屬于R但不屬于S的元組的集合。
2.2.5 數據清洗
數據清洗的前提條件是一張數據表的輸入,不能對兩張及以上數據表進行清洗處理,數據表是通過數據庫連接池獲取。數據清洗原理是利用有關技術如數理統計、數據挖掘或預定義的清理規則將臟數據轉化為滿足數據質量要求的數據,清洗需要經歷兩個步驟,第一個步驟是數據去重,首先是去重字段,然后再去掉重復值;第二個步驟才是數據清洗,清洗的原則如身份證有小寫字母的,全部自動改為大寫,身份證不符合十八位的全部干掉等。
數據清洗的方法一般來說,是將數據庫精簡以除去重復的記錄,且使剩余的部分轉換成標準的可接收的格式過程。標準模型則是將數據錄入到數據清理處理的容器中,通過一系列的步驟進行“清理”數據,然后在以期望的格式輸出清理過的數據。數據清理從數據的唯一性、一致性、完整性、適時性、有效性、準確性來處理數據的越界值、丟失值、重復數據、不一致代碼等問題。
2.2.6 數據排序
數據排序的前提條件是一張數據表的輸入,不能對兩張及以上數據表進行排序處理,數據表是通過數據庫連接池獲取。寓意是將一張數據庫表通過可視化界面操作條件查詢出來的數據結果,連通后使用數據排序運算法則,對其產生的臨時結果進行排序,排序的原則是所有字段可以任意挑選和組合,然后再按排序產生結果數據集,排序有升序和降序。
數據排序是按一定的順序將數據進行排列,以方便使用者通過預覽數據來發現一些明顯的特征或趨勢,便于找到解決問題的線索。除此之外,排序還有助于對數據進行檢查和糾錯,以及為重新歸類或分組等提供便利。在特點場景中,排序本身就是分析的目的之一,例如了解究竟誰是中國汽車生產的三巨頭,對于汽車生產廠商而言不論它是作為伙伴還是競爭者,都是很有用的信息。
好的排序方法可以有效提高排序速度,提高排序效果。在計算機領域,主要使用數據排序的方法,根據占用內存的方式不同,一般可以分為兩大類,即內部排序方法、外部排序方法。
2.2.7 數據篩選
大數據環境下,數據量的快速積累,若想要分析出海量數據所蘊含的價值,并篩選出具有價值的數據,相當重要。然而數據篩選在整個數據處理中,又是處于至關重要的地位上。數據量的增加及結構的復雜化,這使得面向大數據的數據篩選必然會耗費很大的資源。因此,想要快速準確的篩選出有價值的數據,那么選擇合適的算法就十分必要。然而每個算法都有著自己特定的環境,大數據環境下,數據復雜度的增加提升了選擇合適算法的困難;其次,大數據的巨大數據量也使得通過單一算法分析出有價值的數據是越來越困難。
編輯數據篩選中數據挖掘的算法分析,主要有三種,分類算法分析、聚類算法分析、關聯算法分析。關聯算法的數據挖掘通常會分為兩步,第一步就是在集合中尋找出現頻率較高的項目組,這些項目組相當于整體記錄而言必須達到一定水平。通常會認為設置要分析實體間的支持度,如果兩實體間支持度大于設定值,那么稱二者為高頻項目組。第二步是利用第一步找出的高頻項目組來確定二者間的關系,這種關系通常由二者間的概率表示。即計算A事件出現時B事件出現的概率,公式為(A與B同時出現的概率)/(A出現的概率),當比值滿足既定的概率時,才能說明兩事件相關聯。關聯分析能夠從數據庫中找出已有數據間的隱含關系,從而利用數據獲得潛在價值。
2.2.8 分類統計
分類統計兼有兩方面(分與合)的含義,是將總體區分為性質相異的若干部分,將性質相同的許多個體合成一個類。
統計整理的任務是使零散數據系統化,但怎樣使數據系統化,本著什么去歸類,這就取決于統計分類。在取得完整、正確的統計數據前提下,統計分類的優劣是決定整個統計數據研究成敗的關鍵,它直接關系到統計分析數據的質量。
例如:將一所學校的人,根據老師、學生、男性、女性、年齡、成績、特點等標識,進行分類統計。
目的就是保持分類內,統計數據的一致性和組之間數據的差異性,便于運用所有的統計方法來研究現象的數量表現和數量關系,從而正確地認識事物的本質規律。
本案在做分類統計前,輸入的數據表(一張)是具備單表字段的條件篩選處理,且是可視化操作按鈕來實現。
2.2.9 SQL編程
SQL可視化編程針對數據庫表,采用系統開發的SQL編譯控制臺,對其編寫SQL語言,由系統控制臺轉譯成數據庫可識別的SQL命令,并把執行的結果和情況,由SQL編譯控制臺對其接收,將結果和情況可視化的反饋給使用者。此功能并非是使用數據庫或第三方數據庫工具,通過直接連接數據庫后編輯SQL語句而執行的結果。
2.3 結果處理片段
通過運算片段,將運算片段執行的結果,在結果區域內展現出來。在出結果前,需要將具體的運算進行分類。在以上的運算中,有針對一張表的運算,也有針對兩張表的運算,更有針對兩張表以上的運算。那么結果出來之后,很有可能再選擇運算進行處理,然后再出執行結果,這一問題該如何處理呢?所以,需要將數據表、數據表操作、運算、結果進行分析。
考慮到以上問題,需要對運算的種類進行分類和定義,可以看出,一張數據表可視化操作的運算,定義為單動作運算(有數據清洗、數據排序、數據篩選、分類統計);兩張數據表及兩張數據表以上的運算,定義為多動作運算(有交集比對、條件碰撞、數據合并、差集比對)。另外一種就是獨立的SQL編程控制臺,此定義是不涉及運算的定義,僅僅為使用者提供通用編譯SQL語言的應用平臺而已。
那么,單動作運算所出的結果同樣可以成為另外一個動作運算的輸入,也有可能是另外一個多動作運算的輸入,在這些不同的組合中,又有多少規律可循了?
首先,任何單動作和多動作的處理和執行,歸納總結均是一端輸入,中間是動作處理,另一端是輸出的結果,如下圖1所示。
再有就是結果成為新的輸入端,使用動作后成為新的結果,如下圖2所示。
如果將上圖1和上圖2進行合并,最終的規律如下圖3所示。
由上圖3可以看出,核心是動作前后條件的處理,由此可以得出,針對單動作的輸入,只能有一個條件輸入,兩個條件的輸入就會成為多動作,最終動作執行的結果就是唯一的一個。
3 結論
數據庫可視化操作如今成為很多項目的必備功能,是數據探索以及數據表現的重要形式。然而,對于數據庫可視化操作的開發者來說,仍然有很多挑戰需要去面對。迎接這些挑戰的方法,必是很多專業的數據庫可視化操作開發者不愿意讓別人知道的秘密。
數據庫可視化操作可以產生一些分析結果,不過需要指出的是,數據庫可視化操作是一個輔助分析的工具,而不是數據分析的替代,更不是統計的替代。不過,要得出存在這些差異和相關性的可靠結論,還需要運用統計學的方法。要對數據庫中的數據真正的掌握和了解,還需要有分析的技能以及專業的知識。
參考文獻:
[1] 劉娜,奚玲,岳春生.基于模板的跨平臺可視化界面開發系統設計[J].電子科技,2017(8).
[2] 林子雨,賴永炫,林琛,等.云數據庫研究[J].軟件學報,2012(2).
[3] 黃鋒,吳華瑞.基于J2EE應用的SQL注入分析與防范[J].計算機工程與設計,2012(10).
【通聯編輯:代影】