資料庫是什麼?有什麼特點

資料庫是什麼?有什麼特點

資料庫是存放資料的倉庫。它的儲存空間很大,可以存放百萬條、千萬條、上億條資料。但是資料庫並不是隨意地將資料進行存放,是有一定的規則的,否則查詢的效率會很低。當今世界是一個充滿著資料的

網際網路

世界,充斥著大量的資料。即這個網際網路世界就是資料世界。資料的來源有很多,比如出行記錄、消費記錄、瀏覽的

網頁

、傳送的訊息等等。除了文字型別的資料,影象、音樂、聲音都是資料。 [2]

資料庫是一個按資料結構來儲存和管理資料的計算機軟體系統。資料庫的概念實際包括兩層意思:

(1)資料庫是一個實體,它是能夠合理保管資料的“倉庫”,使用者在該“倉庫”中存放要管理的事務資料,“資料”和“庫”兩個概念結合成為資料庫。

(2)資料庫是資料管理的新方法和技術,它能更合適的組織資料、更方便的維護資料、更嚴密的控制資料和更有效的利用資料。

發展現狀

在資料庫的發展歷史上,資料庫先後經歷了層次資料庫、網狀資料庫和關係資料庫等各個階段的發展,資料庫技術在各個方面的快速的發展。特別是關係型資料庫已經成為目前資料庫產品中最重要的一員,80年代以來, 幾乎所有的資料庫廠商新出的資料庫產品都支援關係型資料庫,即使一些非關係資料庫產品也幾乎都有支援關係資料庫的介面。這主要是傳統的關係型資料庫可以比較好的解決管理和儲存關係型資料的問題。隨著

雲計算

的發展和

大資料

時代的到來,關係型資料庫越來越無法滿足需要,這主要是由於越來越多的半關係型和非關係型資料需要用資料庫進行儲存管理,以此同時,分散式技術等新技術的出現也對資料庫的技術提出了新的要求,於是越來越多的非關係型資料庫就開始出現,這類資料庫與傳統的關係型資料庫在設計和資料結構有了很大的不同, 它們更強調資料庫資料的高併發讀寫和儲存大資料,這類資料庫一般被稱為

NoSQL

(Not only SQL)資料庫。 而傳統的關係型資料庫在一些傳統領域依然保持了強大的生命力。 [3]

資料庫管理系統編輯

資料庫管理系統

是為管理

資料庫

而設計的電腦

軟體

系統,一般具有儲存、擷取、安全保障、備份等基礎功能。資料庫管理系統可以依據它所支援的

資料庫模型

來作分類,例如關係式、

XML

;或依據所支援的計算機型別來作分類,例如伺服器群集、行動電話;或依據所用查詢語言來作分類,例如

SQL

XQuery

;或依據效能衝量重點來作分類,例如最大規模、最高執行速度;亦或其他的分類方式。不論使用哪種分類方式,一些

DBMS

能夠跨類別,例如,同時支援多種查詢語言。 [1]

資料庫管理系統是資料庫系統的核心組成部分,主要完成對資料庫的操縱與管理功能,實現資料庫物件的建立、資料庫儲存資料的查詢、新增、修改與刪除操作和資料庫的使用者管理、許可權管理等。它的安全直接關係到整個資料庫系統的安全,其防護手段主要有: [4]

(1)使用正版資料庫管理系統並及時安裝相關

補丁

。 [4]

(2)做好使用者賬戶管理,禁用預設超級管理員賬戶或者為

超級管理員

賬戶設定複雜密碼;為應用程式分別分配專用賬戶進行訪問;設定使用者登入時間及登入失敗次數限制, 防止暴力破解使用者密碼。 [4]

(3)分配使用者訪問許可權時,堅持最小許可權分配原則,並限制使用者只能訪問特定資料庫,不能同時訪問其他資料庫。 [4]

(4)修改資料庫預設訪問埠,使用

防火牆

遮蔽掉對 外開放的其他埠,禁止一切外部的埠探測行為。

(5)對資料庫記憶體儲的重要資料、敏感資料進行加密儲存,防止資料庫備份或資料檔案被盜而造成資料洩露。 [4]

(6)設定好資料庫的備份策略,保證資料庫被破壞後能迅速恢復。 [4]

(7)對資料庫內的系統儲存過程進行合理管理,禁用掉不必要的儲存過程,防止利用儲存過程進行資料庫探測與攻擊。 [4]

(8)啟用資料庫稽核功能,對資料庫進行全面的事件跟蹤和日誌記錄。 [4]

型別編輯

關係資料庫

關係型資料庫,儲存的格式可以直觀地反映實體間的關係。關係型資料庫和常見的表格比較相似,關係型資料庫中表與表之間是有很多複雜的關聯關係的。 常見的關係型資料庫有

Mysql

SqlServer

等。在輕量或者小型的應用中,使用不同的關係型資料庫對系統的效能影響不大,但是在構建大型應用時,則需要根據應用的業務需求和效能需求,選擇合適的關係型資料庫。 [2]

標準SQL語句

雖然關係型資料庫有很多,但是大多數都遵循SQL(結構化查詢語言,Structured Query Language)標準。 常見的操作有查詢,新增,更新,刪除,求和,排序等。 [2]

查詢語句:SELECT param FROM table WHERE condition 該語句可以理解為從 table 中查詢出滿足 condition 條件的欄位 param。 [2]

新增語句:INSERT INTO table (param1,param2,param3) VALUES (value1,value2,value3) 該語句可以理解為向table中的param1,param2,param3欄位中分別插入value1,value2,value3。 [2]

更新語句:UPDATE table SET param=new_value WHERE condition 該語句可以理解為將滿足condition條件的欄位param更新為 new_value 值。 [2]

刪除語句:DELETE FROM table WHERE condition 該語句可以理解為將滿足condition條件的資料全部刪除。 [2]

去重查詢:SELECT DISTINCT param FROM table WHERE condition 該語句可以理解為從表table中查詢出滿足條件condition的欄位param,但是param中重複的值只能出現一次。 [2]

排序查詢:SELECT param FROM table WHERE condition ORDER BY param1該語句可以理解為從表table 中查詢出滿足condition條件的param,並且要按照param1升序的順序進行排序。 [2]

總體來說, 資料庫的SELECT,INSERT,UPDATE,DELETE對應了我們常用的增刪改查四種操作。 [2]

關係型資料庫對於結構化資料的處理更合適,如學生成績、地址等,這樣的資料一般情況下需要使用結構化的查詢,例如join,這樣的情況下,關係型資料庫就會比NoSQL資料庫效能更優,而且精確度更高。由於結構化資料的規模不算太大,資料規模的增長通常也是可預期的,所以針對結構化資料使用關係型資料庫更好。關係型資料庫十分注意資料操作的事務性、一致性,如果對這方面的要求關係型資料庫無疑可以很好的滿足。 [3]

非關係型資料庫(NoSQL)

隨著近些年技術方向的不斷拓展,大量的NoSql資料庫如MongoDB、Redis、Memcache出於簡化資料庫結構、避免冗餘、影響效能的表連線、摒棄複雜分散式的目的被設計。 [5]

指的是分散式的、非關係型的、不保證遵循

ACID

原則的資料儲存系統。NoSQL資料庫技術與CAP理論、一致性

雜湊演算法

有密切關係。所謂

CAP

理論,簡單來說就是一個分散式系統不可能滿足可用性、一致性與分割槽容錯性這三個要求,一次性滿足兩種要求是該系統的上限。而一致性雜湊算則指的是NoSQL資料庫在應用過程中,為滿足工作需求而在通常情況下產生的一種資料演算法,該演算法能有效解決工作方面的諸多問題但也存在弊端,即工作完成質量會隨著節點的變化而產生波動,當節點過多時,相關工作結果就無法那麼準確。這一問題使整個系統的工作效率受到影響,導致整個資料庫系統的資料亂碼與出錯率大大提高,甚至會出現資料節點的內容遷移,產生錯誤的程式碼資訊。但儘管如此,NoSQL資料庫技術還是具有非常明顯的應用優勢,如資料庫結構相對簡單,在大資料量下的讀寫效能好;能滿足隨時儲存自定義資料格式需求,非常適用於大資料處理工作。 [6]

NoSQL資料庫適合追求速度和可擴充套件性、業務多變的應用場景。 [5] 對於非結構化資料的處理更合適,如文章、評論,這些資料如全文搜尋、

機器學習

通常只用於模糊處理,並不需要像結構化資料一樣,進行精確查詢,而且這類資料的資料規模往往是海量的,資料規模的增長往往也是不可能預期的,而NoSQL資料庫的擴充套件能力幾乎也是無限的,所以NoSQL資料庫可以很好的滿足這一類資料的儲存。NoSQL資料庫利用key-value可以大量的獲取大量的非結構化資料,並且資料的獲取效率很高,但用它查詢結構化資料效果就比較差。 [3]

目前NoSQL資料庫仍然沒有一個統一的標準,它現在有四種大的分類:

(1)鍵值對儲存(key-value):代表軟體Redis,它的優點能夠進行資料的快速查詢,而缺點是需要儲存資料之間的關係。 [3]

(2)列儲存:代表軟體Hbase,它的優點是對資料能快速查詢,資料儲存的擴充套件性強。而缺點是資料庫的功能有侷限性。 [3]

(3)文件資料庫儲存:代表軟體MongoDB,它的優點是對資料結構要求不特別的嚴格。而缺點是查詢性的效能不好,同時缺少一種統一查詢語言。 [3]

(4)圖形資料庫儲存:代表軟體InfoGrid,它的優點可以方便的利用圖結構相關演算法進行計算。而缺點是要想得到結果必須進行整個圖的計算,而且遇到不適合的資料模型時,圖形資料庫很難使用。 [3]

NoSQL 與關係型資料庫的區別編輯

儲存方式

傳統的關係型資料庫採用表格的儲存方式, 資料以行和列的方式進行儲存,要讀取和查詢都十分方便。而非關係型資料不適合這樣的表格儲存方式,通常以資料集的方式,大量的資料集中儲存在一起,類似於鍵值對、圖結構或者文件。 [3]

儲存結構

關係型資料庫按照

結構化

的方法儲存資料, 每個資料表都必須對各個欄位定義好(也就是先定義好表的結構),再根據表的結構存入資料,這樣做的好處就是由於資料的形式和內容在存入資料之前就已經定義好了,所以整個資料表的可靠性和穩定性都比較高,但帶來的問題就是一旦存入資料後,如果需要修改資料表的結構就會十分困難。而NoSQL資料庫由於面對的是大量非結構化的資料的儲存,它採用的是動態結構,對於資料型別和結構的改變非常的適應,可以根據資料儲存的需要靈活的改變資料庫的結構。 [3]

儲存規範

關係型資料庫為了避免重複、規範化資料以及充分利用好儲存空間,把資料按照最小關係表的形式進行儲存,這樣資料管理的就可以變得很清晰、一目瞭然,當然這主要是一張資料表的情況。如果是多張表情況就不一樣了,由於資料涉及到多張

資料表

,資料表之間存在著複雜的關係,隨著資料表數量的增加,資料管理會越來越複雜。而NoSQL資料庫的資料儲存方式是用平面資料集的方式集中存放,雖然會存在資料被重複儲存,從而造成儲存空間被浪費的問題(從當前的計算機硬體的發展來看,這樣的儲存空間浪費的問題微不足道),但是由於基本上單個數據庫都是採用單獨存放的形式,很少採用分割存放的方式,所以這樣資料往往能存成一個整體,這對於資料的讀寫提供了極大的方便。 [3]

擴充套件方式

當前社會和科學飛速發展,要支援日益增長的資料庫儲存需求當然要求資料庫有良好的擴充套件效能,並且要求資料庫支援更多資料併發量,擴充套件方式是NoSQL資料庫與關係型資料庫差別最大的地方,由於關係型資料庫將資料儲存在資料表中,資料操作的瓶頸出現在多張資料表的操作中,而且資料表越多這個問題越嚴重,如果要緩解這個問題,只能提高處理能力,也就是選擇速度更快效能更高的計算機,這樣的方法雖然可以一定的拓展空間,但這樣的拓展空間一定有非常有限的,也就是關係型資料庫只具備縱向擴充套件能力。而NoSQL資料庫由於使用的是資料集的儲存方式,它的儲存方式一定是

分散式

的,它可以採用橫向的方式來開展資料庫,也就是可以新增更多資料庫伺服器到資源池,然後由這些增加的伺服器來負擔資料量增加的開銷。 [3]

查詢方式

關係型資料庫採用結構化查詢語言(即SQL)來對資料庫進行查詢,SQL早已獲得了各個資料庫廠商的支援,成為資料庫行業的標準,它能夠支援資料庫的CRUD(增加,查詢,更新,刪除)操作,具有非常強大的功能,SQL可以採用類似索引的方法來加快查詢操作。NoSQL資料庫使用的是非結構化查詢語言(UnQL),它以資料集(像文件)為單位來管理和操作資料,由於它沒有一個統一的標準,所以每個資料庫廠商提供產品標準是不一樣的,NoSQL中的文件Id與關係型表中主鍵的概念類似,NoSQL資料庫採用的資料訪問模式相對SQL更簡單而精確。 [3]

規範化

在資料庫的設計開發過程中開發人員通常會面對同時需要對一個或者多個數據實體(包括陣列、列表和巢狀資料)進行操作,這樣在關係型資料庫中,一個數據實體一般首先要分割成多個部分,然後再對分割的部分進行規範化,規範化以後再分別存入到多張關係型資料表中,這是一個複雜的過程。好訊息是隨著軟體技術的發展,相當多的軟體開發平臺都提供一些簡單的解決方法,例如,可以利用

ORM

層(也就是物件關係對映)來將資料庫中物件模型對映到基於SQL的關係型資料庫中去以及進行不同型別系統的資料之間的轉換。對於NoSQL資料庫則沒有這方面的問題,它不需要規範化資料,它通常是在一個單獨的儲存單元中存入一個複雜的資料實體。 [3]

事務性

關係型資料庫強調ACID規則(原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、永續性(Durability)),可以滿足對事務性要求較高或者需要進行復雜資料查詢的資料操作,而且可以充分滿足資料庫操作的高效能和操作穩定性的要求。並且關係型資料庫十分強調資料的強一致性,對於事務的操作有很好的支援。關係型資料庫可以控制事務原子性細粒度,並且一旦操作有誤或者有需要,可以馬上回滾事務。而NoSQL資料庫強調BASE原則(基本可用(Basically Availble)、軟狀態(Soft-state)、最終一致性(Eventual Consistency)),它減少了對資料的強一致性支援,從而獲得了基本一致性和柔性可靠性,並且利用以上的特性達到了高可靠性和高效能,最終達到了資料的最終一致性。NoSQL資料庫雖然對於事務操作也可以使用,但由於它是一種基於節點的分散式資料庫,對於事務的操作不能很好的支援,也很難滿足其全部的需求,所以NoSQL資料庫的效能和優點更多的體現在大資料的處理和資料庫的擴充套件方面。 [3]

讀寫效能

關係型資料庫十分強調資料的一致性,併為此降低讀寫效能付出了巨大的代價,雖然關係型資料庫儲存資料和處理資料的可靠性很不錯,但一旦面對海量資料的處理的時候效率就會變得很差,特別是遇到高併發讀寫的時候效能就會下降的非常厲害。而NoSQL資料庫相對關係型資料庫優勢最大的恰恰是應對大資料方面,也就是對於大量的每天都產生非結構化的資料能夠高效能的讀寫,這是因為NoSQL資料庫是按key-value型別進行儲存的,以資料集的方式儲存的,因此無論是擴充套件還是讀寫都非常容易,並且NoSQL資料庫不需要關係型資料庫繁瑣的解析,所以NoSQL資料庫大資料管理、檢索、讀寫、分析以及視覺化方面具有關係型資料庫不可比擬的優勢。 [3]

授權方式

關係型資料庫常見的有Oracle,SQLServer,DB2,Mysql,除了Mysql大多數的關係型資料庫如果要使用都需要支付一筆價格高昂的費用,即使是免費的Mysql效能也受到了諸多的限制。而對於NoSQL資料庫,比較主流的有redis,HBase,MongoDb,memcache等產品,通常都採用

開源

的方式,不需要像關係型資料庫那樣,需要一筆高昂的花費。 [3]

分散式資料庫編輯

所謂的分散式資料庫技術,就是結合了資料庫技術與分散式技術的一種結合。具體指的是把那些在地理意義上分散開的各個資料庫節點,但在計算機系統邏輯上又是屬於同一個系統的資料結合起來的一種資料庫技術。既有著資料庫間的協調性也有著資料的分佈性。這個系統並不注重系統的集中控制,而是注重每個資料庫節點的自治性,此外為了讓程式設計師能夠在編寫程式時可以減輕工作量以及系統出錯的可能性,一般都是完全不考慮資料的分佈情況,這樣的結果就使得系統資料的分佈情況一直保持著透明性。 [7]

資料獨立性概念在分散式資料庫管理系統中同樣是十分重要的一環,但是不僅如此,分散式資料管理系統還增加了一個叫分散式透明性的新概念。這個新概念的作用是讓資料進行轉移時使程式正確性不受影響,就像資料並沒有在編寫程式時被分佈一樣。 [7]

在分散式資料庫裡,資料冗雜是一種被需要的特性,這點和一般的集中式資料庫系統不一樣。第一點是為了提高區域性的應用性而要在那些被需要的資料庫節點複製資料。第二點是因為如果某個資料庫節點出現系統錯誤,在修復好之前,可以透過操作其他的資料庫節點裡複製好的資料來讓系統能夠繼續使用,提高系統的有效性。 [7]

參見編輯

資料庫理論

資訊科技稽核

LDAP

(輕量級資料訪問協議)

SQL

(結構化查詢語言)

參考資料

1。王珊 薩師煊.資料庫系統機率(第5版):高等教育出版社,2014:4

2。

探究關係型資料庫

.萬方.2019[引用日期2019-08-05]

3。

NoSQL資料庫與關係型資料庫對比

.萬方.2019[引用日期2019-08-05]

4。

淺談資料庫系統安全防護

.萬方.2019[引用日期2019-08-05]

5。

關係型資料庫(Sql)與非關係型資料庫(NoSql)的對比與業務協作

.萬方.2019[引用日期2019-08-05]

6。

大資料下的NoSQL資料庫技術

.萬方.2019[引用日期2019-08-05]

7。

分散式資料庫應用技術研究

.萬方.2019[引用日期2019-08-05]