本文摘要:【摘要】論文介紹了第二代關系型數據庫和第三代非關系型數據庫的分類、特性和關聯概念,概述了關系型數據庫的性能優(yōu)化方向和主要優(yōu)化方法,闡述了關系型數據庫在企業(yè)級軟件中的應用架構,介紹了關系型數據庫在云計算和大數據等新興IT技術中的應用方式,最后簡要介紹了N
【摘要】論文介紹了第二代關系型數據庫和第三代非關系型數據庫的分類、特性和關聯概念,概述了關系型數據庫的性能優(yōu)化方向和主要優(yōu)化方法,闡述了關系型數據庫在企業(yè)級軟件中的應用架構,介紹了關系型數據庫在云計算和大數據等新興IT技術中的應用方式,最后簡要介紹了NoSQL數據庫的分類和應用。
【關鍵詞】計算機;數據庫技術;信息管理
1引言
數據庫是按照數據結構來組織、存儲和管理數據的載體,在信息時代特指“一個長期存儲在計算機內的、有組織的、可共享的、統一管理的大量數據的集合”。管理數據庫的計算機軟件稱為數據庫軟件,一般簡稱為“數據庫”。
2數據庫分類及概述
2.1數據庫的分類
IBM在1969年推出了第一代層次模型數據庫管理系統IMS,20世紀70年代DBTG又推出了網狀模型數據庫,其優(yōu)點是查詢效率高,但表示數據具有局限性,不太適合多對多的節(jié)點關系。20世紀70年代開始,IBM、微軟和ORACLE等公司逐步推出了DB2、SQLServer和Oracle等關系型數據庫軟件,因為關系型數據庫嚴格基于數學基礎,優(yōu)點是數據結構簡單清晰、易學易用,但查詢效率不如層次或網狀型數據庫,因此,關系型數據庫的查詢性能調優(yōu)是數據庫技術研究和應用的一個重點領域。日常辦公常用的Excel軟件也可視作一種關系型數據庫軟件。
計算機論文范例:新時代地方院校計算機信息技術教育研究
從20世紀80年代末期開始,隨著互聯網特別是近年來移動互聯網的發(fā)展,網絡數據已不局限于傳統二維表示的結構化數據,圖片、語音、視頻等沒有預定義數據模型的非結構化數據成為網絡數據的主流,第三代非關系型數據庫逐漸興起,采用“鍵-值”對、列簇或者圖結構等方式來存儲和查找數據,具有支持分布式、可擴展性強和開放性好等優(yōu)點,很好地支持了人工智能、機器學習和大數據技術的各類應用。相比于關系型數據庫,非關系型數據庫在操作原子性、一致性、隔離性和持久性的支持能力不足,很多場合還需要依賴關系型數據庫。因此,雖然非關系型數據庫已成為今天大數據、機器學習等行業(yè)應用的熱點,但傳統的關系型數據庫仍具有不可撼動的行業(yè)地位。
2.2關系型數據庫的ACID特性
在關系型數據庫操作中,一個任務執(zhí)行單元稱為事務,例如,一次數據插入或者一次數據更新,為保證數據庫事務操作的正確可靠,關系型數據庫必須具備4個特性:原子性、一致性、隔離性和持久性。所謂原子性,是借用早期人類認為的原子所具有的不可分割性,在數據庫中指一個事務中的所有操作,要么都成功,要么就全部不執(zhí)行。
如果部分成功部分失敗,已經成功完成的操作要進行回滾操作,就好像沒有執(zhí)行過一樣。所謂一致性,是指事務操作前后,數據庫的完整性不受破壞。一致性往往與數據庫的隔離性聯系起來,即多個并行處理的事務同時操作數據后,數據的完整性不受破壞,在多個并行事務中呈現的數據值是一致的。隔離性的主要功能就是防止多個事務并發(fā)執(zhí)行而導致的數據不一致問題。所謂持久性是指事務一旦被數據庫執(zhí)行,其對數據的修改就是永久性的,不因數據庫或計算機故障而丟失。
2.3結構化查詢語言
SQL結構化查詢語言(StructuredQueryLanguage)簡稱SQL,是專用于管理關系型數據庫的編程語言,用于對數據庫數據的插入、修改、刪除和查找等功能,用戶在操縱數據庫時,僅需要編寫SQL語句來指明具體操作,剩下的工作都可以由數據庫自動完成。SQL語句大大提高了數據庫管理的效率和易用性,目前所有的關系型數據庫基本上都支持標準的SQL語句,僅有極少數功能需要使用非標準的SQL語句。
SQL語言從功能上可以劃分為數據定義、數據操縱和數據控制。數據定義是指定義數據庫的三級模式結構:外模式、概念模式和內模式。其規(guī)定了數據的物理結構、邏輯結構和數據視圖,如數據庫和用戶表的建立等。數據操縱指針對用戶數據表的增刪改查等具體操作。數據控制則規(guī)定了數據的訪問和使用權限。
2.4數據庫安全
數據是現代社會活動的核心,也是黑客重點攻擊的方向,勒索病毒攻擊加密數據庫數據,往往給企事業(yè)單位帶來重大損失,為數據庫建立可靠的防護措施是必不可少的步驟。數據庫防護的核心是數據安全,因此在數據庫的訪問控制和權限設置、用戶操作行為和審計、數據維護等方面都應建立完備的制度和手段,如關閉不必要的網絡端口、最小化用戶操作權限、敏感數據加密存儲等。
3關系型數據庫性能優(yōu)化
3.1表結構優(yōu)化
數據庫在建立時,就應該進行良好的設計,遵守數據庫設計范式。關系型數據庫有5種設計范式:第1~5范式,所有設計范式都是為了提高數據庫的使用性能和提高其可擴展性。第1范式要求數據表的列具有原子性,即單表每列的數據只對應程序的一個屬性,不能是對應多個屬性的集合;如果一定要對應集合,應該使用從數據表,并且從數據表的每一列也要保持原子性。
第2范式要求必須在滿足第1范式的基礎上,表格中的每一條數據都可以被區(qū)分,不能有兩條數據完全一致。實際上,要求數據庫的每個數據表都應設置主鍵(PrimaryKey),主鍵的值在單表中具有唯一性。主鍵可以是1個,若1個主鍵不滿足唯一性,則可以設置多主鍵,多主鍵的組合必須具有唯一性,但設置多主鍵會引起數據庫增加開銷,導致讀寫性能下降。
第3范式要求必須滿足第2范式,它要求在單表中的屬性具有獨立性,互相之間不具有依賴關系,如果具有依賴關系,則應該將所有具有依賴關系的數據列單獨劃分為一個數據表,并通過設置外鍵來表示兩張數據表之間的關聯性。在查詢數據時,可以通過左連接查詢或者右連接查詢來形成用戶需要獲得的完整數據。對于一些關聯關系特別復雜的情況,滿足第3范式可能導致性能下降,此時可以建立視圖,預置復雜的連接查詢,提高查詢效率。
第4范式在第3范式的基礎上,要求消除數據表的多值依賴,即數據表中不能存在若干行多列數據完全一致的情況。第5范式在第4范式的基礎上,進一步消除傳遞依賴,即多個數據列之間不能形成依賴關系鏈。但實際上,數據庫設計滿足第3范式即可,過度追求完美的第5范式,將導致數據表設計過于復雜、零散,不利于實際使用,在數據量過大時,反而會引起數據庫查詢性能下降。
3.2并發(fā)性能優(yōu)化
、賳螜C并發(fā)能力優(yōu)化主要目標是提高單數據庫的并發(fā)能力。實際上,大型數據庫一般都有單獨的服務器,首先,確保所有計算機資源都用于數據庫服務;其次,提高存儲數據庫文件的計算機硬盤I/O能力,如將機械硬盤改為固態(tài)硬盤;再次,提高網絡帶寬和QoS服務質量,降低網絡傳輸時延和時延抖動;最后,優(yōu)化數據庫的連接池,合理設置連接池的大小、等待時間、保持時間和檢測參數等。②部署優(yōu)化主要指應用分布式部署來提高數據庫的并發(fā)性能。一是可以對數據表進行橫向分裂,將數據表數據按特定規(guī)則排序后,橫向拆分到不同的數據庫服務器上,即通過數據分庫來提高并發(fā)服務能力。
二是針對并發(fā)讀寫沖突的問題,通過分布式服務器實現讀寫分離:先在后端構建一個主從同步數據庫集群,將主數據庫數據自動同步到從數據庫,在前端服務器部署讀寫控制器。當要寫數據時,由控制器向主數據庫發(fā)起寫請求,主數據庫完成事務操作后,再將相同的操作同步到從服務器,實現主從數據同步;當要讀數據時,前端控制器直接到從數據庫讀取數據。如果進一步對主數據庫和從數據庫進行分庫,還能繼續(xù)提高數據庫集群的并發(fā)服務能力。讀寫分離的優(yōu)點不僅在于提高了系統的讀寫并發(fā)能力,而且實現了數據的冗余備份,提高了數據的可靠性。
3.3SQL語句優(yōu)化
數據庫的性能主要體現為操作響應時間,在使用SQL語句查詢時,也需要根據查詢目標進行優(yōu)化:①避免“select*”這樣的全局查詢和使用“like”關鍵字的模糊查詢,這種查詢方式需要進行全表掃描,對于列數較多且數據量巨大的表來說將消耗大量系統資源,造成系統響應時間將顯著延長。②縮小查詢范圍,通過where字句、between等范圍關鍵字和分頁查詢等方式,縮小查詢范圍。使用子查詢時,應將查詢范圍最小的查詢語句寫在最內層,這樣可以快速縮小查詢范圍,降低后續(xù)子查詢的難度。
③連接查詢時,使用數據量較小的表去連接查詢數據量大的表,同時可以在連接的字段上建立索引,可進一步提高查詢效率。SQL語句是影響數據庫性能的重要因素,數據庫大部分數據訪問都屬于查詢操作,不合理的查詢操作甚至有可能阻塞數據庫的其他查詢服務,因此,SQL語句執(zhí)行查詢操作時必須要優(yōu)化查詢效能。
4關系型數據庫的應用
4.1在傳統企業(yè)級軟件中的應用
數據庫是企業(yè)級軟件必不可少的核心組成部分,企業(yè)級軟件的核心架構是依據數據庫結構來設計和確定的,后臺業(yè)務核心邏輯就是對數據的運用、分析和持久化。以ERP、CRP等軟件為代表的企業(yè)級軟件,以結構化數據管理為主,基本都采用關系型數據庫作為持久化存儲軟件。業(yè)界主流的企業(yè)級關系型數據庫有MySQL、MariaDB、PostgreSQL、SQLServer和Oracle等。近年來,隨著自主軟件的發(fā)展和信息安全要求,國產數據庫管理軟件也在興起,如南大通用、武漢達夢、華為高斯等。由于軟件功能具有不確定性,隨著企業(yè)業(yè)務發(fā)展和社會需求變遷,軟件功能也在不斷發(fā)生變化。
但是數據庫的表結構一旦確定并在實際運行中寫入大量數據,是很難隨著軟件功能隨意變化的,一般僅在必要的情況下才會更改已形成的表結構,此時需要有專門的表結構升級腳本,操作煩瑣且風險巨大,一旦因斷電或其他意外原因造成升級失敗又不能回滾,將給軟件客戶造成極大損失,因此,在企業(yè)級軟件體系中,往往設置持久化中間層來兼容軟件功能變化對數據庫的影響。
持久層通過實體類與數據庫的數據表建立映射關系,例如,在Java中可以通過XML或者注解的方式,在Java實體類與數據庫表之間建立一對一映射關系,由持久化層來維護與數據庫的連接和訪問操作請求,并向上層業(yè)務邏輯代碼提供API(應用可編程接口)。對數據庫表的增刪改查操作,簡化為通過持久化層提供的API來操作實體類,由持久層將相應的操作轉換為SQL語句去操作數據庫,而不是程序代碼直接通過SQL語句去訪問數據庫。在這種應用模式下,數據庫不直接與軟件業(yè)務邏輯代碼發(fā)生關系,持久化層向業(yè)務邏輯代碼屏蔽了不同廠商數據庫的不一致性,提高了程序的可移植性,向數據庫屏蔽了業(yè)務邏輯字段頻繁變化對數據庫的沖擊,有利于提高軟件和數據庫的穩(wěn)定性。
4.2在云計算和大數據體系中的應用
對于開源云計算管理平臺OpenStack來說,MariaDB或者其他關系型數據庫是部署云計算平臺必不可少的基礎環(huán)境,Nova、Glance和Keystone等組件都依賴數據庫存放系統管理必要的結構化數據,一旦數據庫遭到攻擊,極有可能導致整個云計算系統崩潰;陂_源大數據處理平臺Hadoop的數據倉庫工具Hive,則可以視作大數據版本的關系型數據庫。Hive將結構化數據文件映射為數據庫表,通過HiveSQL可以將SQL查詢語句轉換為MapReduce程序來執(zhí)行大數據查找和分析,它借鑒了關系型數據庫的數據結構并結合Hadoop的MapReduce工具,實現了對海量關系型數據的離線查詢。
5NoSQL數據庫的分類和應用
互聯網和移動互聯網的發(fā)展催生了無數應用模式,微博、網購、外賣、抖音和移動社交網絡等應用產生了各種不同類型的非結構化數據以及對應的數據應用,非關系型數據庫發(fā)展了多個分支來適應這種需求。
、“鍵值對”型數據庫,這類數據庫基于哈希算法構建哈希表,通過將一個特定的“鍵”和“數據”進行綁定來實現數據管理,優(yōu)點是簡單易部署,單數據查詢效率高,但是批量數據查詢效率低下,常用于大型網站的分布式緩存,如Redis等。②列存儲數據庫,主要用于海量數據存儲。傳統關系型數據庫是行存儲數據庫,特點是以“行”為單位來管理和使用數據。大數據處理往往有選擇的處理數據的部分維度,如微博詞頻統計、評論分析等,此時列存儲更有利于數據快速讀取。列存儲更有利于數據讀取,不利于數據插入、更新和刪除等操作,同時列數據的重復性更有利于數據壓縮。因此,列存儲主要用于大數據領域,如HBase等。
、畚臋n數據庫與“鍵值對”數據庫類似,其以特定的格式來存儲文檔信息,如Json、XML等,其更高級的功能是允許鍵值嵌套,常用于網頁數據、表單數據處理。④圖型數據庫適用于多對多類型的數據存儲,如微博、微信等社交網絡數據。圖形數據庫一般由結點集和結點關系集兩部分組成,其查找算法需要特殊定制,但在近年興起的知識圖譜和較早應用的專家推薦系統中應用較為廣泛。
6結語
隨著互聯網技術的深入發(fā)展,網絡資源形式愈加豐富,非關系型數據庫已經成為新一代網絡應用的主流,但仍然不能放棄傳統的關系型數據庫。當前網絡行業(yè)依然存在海量的結構化數據存儲需求,并且隨著非結構化數據的增長,與之相對應的結構化數據也將保持同步增長,關系型數據庫在未來仍將保持旺盛的生命力,與非關系型數據庫同步發(fā)展。
【參考文獻】
【1】王珊,薩師煊.數據庫系統概論(第5版)[M].北京:高等教育出版社,2014.
【2】姜明俊.分布式關系數據庫事務管理器的設計與實現[D].南京:東南大學,2019.
【3】李小蓮.對數據庫范式的分析與應用[J].電腦知識與技術,2018,14(8):7-8,16.
【4】楊鍵.分布式關系型數據庫查詢方法優(yōu)化與實現[D].成都:電子科技大學,2021.
作者:賀峰,楊青豐
轉載請注明來自發(fā)表學術論文網:http:///dzlw/29040.html