• 正文
    • █?什么是數(shù)據(jù)庫
    • █?數(shù)據(jù)庫的作用和優(yōu)勢
    • █ 數(shù)據(jù)庫的類別
    • █ 結(jié)語
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

寫給小白的數(shù)據(jù)庫入門科普

01/31 11:25
1446
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

今天這篇文章,我們來聊聊數(shù)據(jù)庫。

?什么是數(shù)據(jù)庫

對于數(shù)據(jù)庫,大家應(yīng)該都不會覺得陌生。作為重要的基礎(chǔ)軟件,數(shù)據(jù)庫在我們的工作和生活無處不在。

最簡單的,我們電腦里有很多的excel表,其實也可以算是一個“微型數(shù)據(jù)庫”。

從定義上來看,數(shù)據(jù)庫,是一個存放和管理數(shù)據(jù)的倉庫?;蛘哒f,是一個數(shù)據(jù)集合。

那么,我們硬盤上也有大量的數(shù)據(jù),是不是硬盤也是一個數(shù)據(jù)庫呢?

當(dāng)然不是。

硬盤是一個硬件?;谟脖P構(gòu)建的文件系統(tǒng),存儲了大量的數(shù)據(jù),但這些數(shù)據(jù)是以不同類型文件的形式存在的,彼此獨立。

而數(shù)據(jù)庫是一個軟件層面的概念。它對數(shù)據(jù)進行了登記和整理,形成了一個整體系統(tǒng),既包括了數(shù)據(jù),也包括了數(shù)據(jù)之間的邏輯關(guān)系。

簡單來說,如果有一個倉庫,你往里面放了各種類型的物品,例如家具、花草、書籍等。那么,硬盤就像是這個倉庫,文件就是這些物品。

如果你在倉庫里劃分了一個區(qū)域,安排了一個管理員,負責(zé)存放物品并進行登記。那么,這個區(qū)域(這套體系),就是數(shù)據(jù)庫。

廣義的數(shù)據(jù)庫,是一種數(shù)據(jù)集合。我們口頭上所說的數(shù)據(jù)庫(狹義),大部分是指那些用于搭建、使用和維護廣義數(shù)據(jù)庫的系統(tǒng)軟件,叫做數(shù)據(jù)庫管理系統(tǒng)(DBMS)。

數(shù)據(jù)庫管理系統(tǒng)對數(shù)據(jù)進行統(tǒng)一控制管理,以保證數(shù)據(jù)的完整性和安全性。它還具有對外的標(biāo)準(zhǔn)接口,方便其它應(yīng)用軟件對數(shù)據(jù)進行讀寫操作。

我們比較熟悉的數(shù)據(jù)庫管理系統(tǒng),包括MySQL、SQL Server、Oracle、DB2、Redis、MongoDB等。

?數(shù)據(jù)庫的作用和優(yōu)勢

之所以要有數(shù)據(jù)庫,主要是為了方便管理和使用數(shù)據(jù)。

數(shù)據(jù)庫是信息時代最重要的基礎(chǔ)軟件之一,地位僅次于操作系統(tǒng)。

如今,大量的信息化系統(tǒng)遍布社會的每個角落,每時每刻都在產(chǎn)生海量的數(shù)據(jù)。如果沒有一個高效的系統(tǒng)和平臺對這些數(shù)據(jù)進行統(tǒng)一管理,那么,效率就會下降。

數(shù)據(jù)庫存儲了海量的多類型數(shù)據(jù)。用戶可以通過數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)、查找數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)、分析數(shù)據(jù)、共享數(shù)據(jù)。

對于個人、企業(yè)甚至國家部門,數(shù)據(jù)庫有著不可替代的作用?,F(xiàn)在整個社會都在講數(shù)據(jù)價值挖掘。AI的三大要素里,也包括了數(shù)據(jù)。數(shù)據(jù)的價值在提升,數(shù)據(jù)庫的價值也隨之提升。

一個優(yōu)秀的數(shù)據(jù)庫管理系統(tǒng),需要具備以下幾個方面的優(yōu)勢。

首先,是性能。

數(shù)據(jù)庫涉及到大量的數(shù)據(jù)讀寫操作,所以,性能就顯得非常重要。

如果數(shù)據(jù)庫的用戶少,問題倒是不大。但是如果用戶多,例如12306、淘寶雙11等場景,瞬時并發(fā)讀寫特別大,就要看數(shù)據(jù)庫是否能hold得住。

這里就要提到著名的ACID(原子性、一致性、隔離性、持久性)特性。

原子性(Atomicity):為避免糾紛,數(shù)據(jù)庫中的事務(wù)執(zhí)行被視作原子不可再分,事務(wù)(例如轉(zhuǎn)賬)中的操作要么全部執(zhí)行,要么失敗回滾(Rollback)。

一致性(Consistency):為保證業(yè)務(wù)邏輯的一致性,數(shù)據(jù)庫通過設(shè)置約束和觸發(fā)器來保證其完整性約束不被破壞,即每個事務(wù)能夠看到的數(shù)據(jù)總是保持一致。

隔離性(Isolation):為防止事務(wù)之間的臟讀、幻讀、不可重復(fù)讀,數(shù)據(jù)庫通過加鎖,保證多個事務(wù)并發(fā)訪問時,事務(wù)之間是隔離的,互不干擾。

持久性(Durability):為防止意外事故(例如斷電)導(dǎo)致數(shù)據(jù)缺失,數(shù)據(jù)庫保證事務(wù)對其所作的修改被永久保存,不會被回滾。

其次,是容量。

數(shù)據(jù)庫要存放數(shù)據(jù),所以,容量要滿足設(shè)計需求。

現(xiàn)在業(yè)務(wù)需求變化很快,數(shù)據(jù)庫的數(shù)據(jù)很可能迅猛增長。所以,數(shù)據(jù)庫也需要具備一定的擴展性和彈性,能夠靈活地變大或者變小,滿足需求和成本之間的平衡。

第三,是安全性。

數(shù)據(jù)安全的重要性,無需多言。一個優(yōu)秀的數(shù)據(jù)庫,需要擁有完善的安全機制,保護數(shù)據(jù)免受未授權(quán)的訪問,以及來自外部的攻擊。

數(shù)據(jù)庫也需要有完善的備份和恢復(fù)機制,在極端情況下,能夠快速恢復(fù)到最近的狀態(tài)。

第四,是兼容性。

數(shù)據(jù)庫需要遵循開放標(biāo)準(zhǔn)的API,使得自身更容易與其它應(yīng)用和服務(wù)集成,促進數(shù)據(jù)共享和互操作性。

總之,數(shù)據(jù)庫的作用遠不止于簡單的數(shù)據(jù)存放。作為一個核心組件,它必須經(jīng)過嚴(yán)格且縝密的設(shè)計,能夠為各類應(yīng)用程序提供穩(wěn)定可靠的支撐,保障數(shù)據(jù)的安全性、完整

性和高效利用。

█ 數(shù)據(jù)庫的類別

接下來,我們再看看數(shù)據(jù)庫的類別。

數(shù)據(jù)庫的種類很多,分類方法也很多。我們不妨就以歷史時間線的維度,對幾種主要的分類方式進行介紹。

1960-1970:萌芽階段

上世紀(jì)60年代,隨著計算機技術(shù)的不斷發(fā)展和成熟,越來越多的大型機開始應(yīng)用于金融證券、航空航天、工業(yè)制造、軍事國防等領(lǐng)域,掀起了一場信息化革命。

有了信息化,就催生了大量的數(shù)據(jù)。為了更好地管理這些數(shù)據(jù),就有人開始提出數(shù)據(jù)庫系統(tǒng)的概念。

1961年,美國通用電氣公司的查爾斯·巴赫曼(Charles Bachman),成功開發(fā)出世界上第一個數(shù)據(jù)庫管理系統(tǒng)——IDS(IntegratedData Store,集成數(shù)據(jù)存儲),奠定了網(wǎng)狀數(shù)據(jù)庫的基礎(chǔ),并在當(dāng)時得到了廣泛的發(fā)行和應(yīng)用。

1968年,IBM公司創(chuàng)建了層次式數(shù)據(jù)庫管理系統(tǒng)IMS(Information Management System),是世界上首個商業(yè)數(shù)據(jù)庫系統(tǒng)。

1970-2000:關(guān)系型、事務(wù)型數(shù)據(jù)庫

又過了兩年,到了1970年,IBM公司的研究員埃德加·弗蘭克·科德(Edgar Frank Codd)發(fā)表了一篇名為《大型共享數(shù)據(jù)庫數(shù)據(jù)的關(guān)系模型》的重磅論文。在論文中,他提出了數(shù)據(jù)庫的關(guān)系模型,開創(chuàng)了關(guān)系數(shù)據(jù)庫時代。

1973年,IBM啟動了System R項目。后來,在System R項目的基礎(chǔ)上,加利福尼亞大學(xué)柏克萊分校啟動了ingres項目。

這兩個項目的意義極為重大。1970-80年代出現(xiàn)的多個經(jīng)典數(shù)據(jù)庫產(chǎn)品,包括Oracle、DB2、Informix、Sybase、SQL Server,都是基于System R和ingres項目衍生出來的。這些數(shù)據(jù)庫產(chǎn)品,極大地助力了當(dāng)時的信息化浪潮,為計算機的普及發(fā)揮了重要作用。

剛才提到的這些數(shù)據(jù)庫產(chǎn)品,全部都是關(guān)系型數(shù)據(jù)庫。

數(shù)據(jù)庫有很多種模型。比較原始的,是層次模型和網(wǎng)狀模型。比較主流的,是關(guān)系模型和非關(guān)系模型。

關(guān)系模型的最大特點,就是可以使用表格來表示實體和實體之間的關(guān)系。每一行代表一個實體實例,每一列代表實體的一個屬性。

關(guān)系型數(shù)據(jù)庫中,每個表有唯一的名字。表的每一行代表了一組值之間的聯(lián)系,稱為元組(Tuple)。每一列是實體的描述,具有相同的數(shù)據(jù)類型,稱為屬性(Attribute)或者字段(Field)。

大家應(yīng)該注意到了,很多關(guān)系型數(shù)據(jù)庫(包括SQL Server、MySQL、PostgreSQL),都有一個SQL。

SQL的意思,是Structured Query Language,結(jié)構(gòu)化查詢語言。

這是一種用于訪問和處理“關(guān)系型數(shù)據(jù)庫”的標(biāo)準(zhǔn)計算機語言。SQL語句既可以查詢數(shù)據(jù)庫中的數(shù)據(jù),也可以添加、更新和刪除數(shù)據(jù)庫中的數(shù)據(jù),還可以對數(shù)據(jù)庫進行管理和維護操作。

例如,下面這個,就是一個典型的SQL命令,表示要插入一條數(shù)據(jù):

INSERT INTO students (id, name, age) VALUES (1, '張三', 20);

80-90年代的主流數(shù)據(jù)庫,除了基本屬于關(guān)系型數(shù)據(jù)庫之外,在業(yè)務(wù)類型上,也屬于事務(wù)型數(shù)據(jù)庫(交易型數(shù)據(jù)庫),即OLTP(Online Transactional Processing)

這類數(shù)據(jù)庫主要用于管理實時交易(銀行、電商、訂票等),主要特點是能夠支持大量的讀寫操作(簡短的、小規(guī)模),能夠確保數(shù)據(jù)庫的完整性和一致性。

2000-2010:非關(guān)系型、分析型數(shù)據(jù)庫

上世紀(jì)90年代末,數(shù)據(jù)庫的發(fā)展進入一個新的階段。非關(guān)系型數(shù)據(jù)庫開始崛起。

1998年,卡羅·斯特羅茲(Carlo Strozzi)開發(fā)了一個輕量、開源、不提供SQL功能的數(shù)據(jù)庫,即NoSQL。

值得一提的是,NoSQL并不是“No SQL”(拒絕SQL)意思,而是“Not Only SQL”(不只是SQL)。

NoSQL并非完全替代關(guān)系型數(shù)據(jù)庫,而是為了應(yīng)對Web 2.0時代互聯(lián)網(wǎng)應(yīng)用快速增長所帶來的挑戰(zhàn)。它針對不同的應(yīng)用場景,提供了更多選擇。

非關(guān)系數(shù)據(jù)模型并不遵循傳統(tǒng)的關(guān)系數(shù)據(jù)庫模型及其SQL查詢語言。它的出現(xiàn),能夠解決關(guān)系型數(shù)據(jù)庫在擴展性和靈活性方面的一些局限性。

非關(guān)系型數(shù)據(jù)庫包括了很多子類型,例如鍵值數(shù)據(jù)庫、列族數(shù)據(jù)庫、文檔數(shù)據(jù)庫、圖數(shù)據(jù)庫等。具體類型和典型產(chǎn)品如下:

除了非關(guān)系型數(shù)據(jù)庫之外,數(shù)據(jù)庫也從事務(wù)性向分析型發(fā)展,即OLAP(Online Analytical Processing)。

這也是由時代決定的。因為數(shù)據(jù)除了用于查詢和記錄之外,要開始為大數(shù)據(jù)、數(shù)據(jù)分析等新興業(yè)務(wù)服務(wù)。

分析型數(shù)據(jù)庫允許用戶對大量歷史數(shù)據(jù)進行復(fù)雜的查詢和分析,以揭示隱藏在數(shù)據(jù)中的模式和趨勢,為上層決策提供支持。

需要注意的是,那一時期,數(shù)據(jù)倉庫(Data Warehouse)的概念出現(xiàn)了。

所謂數(shù)據(jù)倉庫,就是數(shù)據(jù)庫的一種演進。它集成了來自不同來源的數(shù)據(jù),并經(jīng)過清洗、轉(zhuǎn)換和整合,以便于進行高效的數(shù)據(jù)分析和報告。

限于篇幅,關(guān)于數(shù)據(jù)倉庫和待會提到的數(shù)據(jù)湖,小棗君后續(xù)會專門介紹。

2010-現(xiàn)在:融合、云化、AI、國產(chǎn)

2010年之后,數(shù)據(jù)庫技術(shù)繼續(xù)蓬勃發(fā)展,出現(xiàn)了很多新的趨勢。

首先,繼SQL、NoSQL之后,又出現(xiàn)了NewSQL的概念。

NewSQL是一類新型的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),結(jié)合了SQL和NoSQL的優(yōu)點。

它解決了傳統(tǒng)關(guān)系型數(shù)據(jù)庫在處理大規(guī)模數(shù)據(jù)和高并發(fā)訪問時的性能瓶頸,同時保留ACID特性以及對SQL查詢語言的支持,非常適用于需要處理大規(guī)模數(shù)據(jù)和高并發(fā)訪問的場景。

NewSQL的代表產(chǎn)品,包括Google Spanner、CockroachDB、TiDB等。

其次,繼事務(wù)性、分析型之后,出現(xiàn)了混合型數(shù)據(jù)庫(HTAP,Hybrid Transactional / Analytical Processing)。

這也是一種融合趨勢。

簡單來說,HTAP是結(jié)合了OLTP和OLAP的優(yōu)點。它是一種新興的數(shù)據(jù)庫架構(gòu),能夠同時支撐OLTP和OLAP場景,避免傳統(tǒng)架構(gòu)中大量數(shù)據(jù)交互造成的資源浪費和沖突。

第三,是云數(shù)據(jù)庫和分布式數(shù)據(jù)庫的崛起。

這個比較好理解。以前都是單機數(shù)據(jù)庫。后來,數(shù)據(jù)庫并發(fā)越來越大,對安全要求越來越高,就有了主從數(shù)據(jù)庫,再然后,就是分布式數(shù)據(jù)庫。

分布式數(shù)據(jù)庫,數(shù)據(jù)分布在多臺服務(wù)器上,通過網(wǎng)絡(luò)連接協(xié)同工作。這樣一來,既可以擴展存儲和處理能力,也可以提高系統(tǒng)的可用性和容錯性。

當(dāng)然,分布式數(shù)據(jù)庫,管理和維護方面會更復(fù)雜一些。

云數(shù)據(jù)庫,是響應(yīng)云計算的發(fā)展,把本地數(shù)據(jù)庫遷移到云端。

第四,繼數(shù)據(jù)倉庫之后,又出現(xiàn)了數(shù)據(jù)湖、湖倉一體。

限于篇幅,后續(xù)專門給大家介紹這幾個概念。

第五,是數(shù)據(jù)庫開始引入AI,走向智能化。

將AI人工智能引入數(shù)據(jù)庫,也是一個重要趨勢。

AI能發(fā)揮的作用很多。一方面,可以實現(xiàn)更高的查詢和存儲效率,并自動化處理各種任務(wù)。另一方面,可以分析大量數(shù)據(jù)記錄,標(biāo)記異常值和異常模式,自動防范惡意訪問與攻擊,提升安全性。

除此之外,AI還可以主動實現(xiàn)數(shù)據(jù)庫的智能調(diào)優(yōu),提升數(shù)據(jù)庫的整體性能。或者,自動進行系統(tǒng)維護操作,減少運營維護成本,也避免人為錯誤。

第六,是國產(chǎn)數(shù)據(jù)庫替代的加速。

最近十多年,國產(chǎn)數(shù)據(jù)庫的發(fā)展速度極快。在信創(chuàng)戰(zhàn)略的推動下,越來越多的國內(nèi)企業(yè)和政府部門開始啟用國產(chǎn)數(shù)據(jù)庫,進行國產(chǎn)化替代。

█ 結(jié)語

好啦,以上就是關(guān)于數(shù)據(jù)庫的基本介紹。

數(shù)據(jù)是21世紀(jì)最有價值的無形資產(chǎn)。存儲和利用數(shù)據(jù),對每個人、每個企業(yè)、每個政府都意義重大。像數(shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)湖這樣的數(shù)據(jù)平臺,是充分利用數(shù)據(jù)價值的前提,也是發(fā)展AI的前提。

相信未來幾年,數(shù)據(jù)庫技術(shù)還將保持高速發(fā)展,涌現(xiàn)出更多的創(chuàng)新。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

通信行業(yè)知名新媒體鮮棗課堂創(chuàng)始人,通信行業(yè)資深專家、行業(yè)分析師、自媒體作者,《智聯(lián)天下:移動通信改變中國》叢書作者。通信行業(yè)13年工作經(jīng)驗,曾長期任職于中興通訊股份有限公司,從事2/3/4G及5G相關(guān)技術(shù)領(lǐng)域方面的研究,曾擔(dān)任中興通訊核心網(wǎng)產(chǎn)品線產(chǎn)品經(jīng)理、能力提升總監(jiān)、中興通訊學(xué)院二級講師、中興通訊高級主任工程師,擁有豐富的行業(yè)經(jīng)驗和積累。