今天這篇文章,我們來聊聊數據庫。
█什么是數據庫
對于數據庫,大家應該都不會覺得陌生。作為重要的基礎軟件,數據庫在我們的工作和生活無處不在。
最簡單的,我們電腦里有很多的excel表,其實也可以算是一個“微型數據庫”。
從定義上來看,數據庫,是一個存放和管理數據的倉庫。或者說,是一個數據集合。
那么,我們硬盤上也有大量的數據,是不是硬盤也是一個數據庫呢?
當然不是。
硬盤是一個硬件。基于硬盤構建的文件系統,存儲了大量的數據,但這些數據是以不同類型文件的形式存在的,彼此獨立。
而數據庫是一個軟件層面的概念。它對數據進行了登記和整理,形成了一個整體系統,既包括了數據,也包括了數據之間的邏輯關系。
簡單來說,如果有一個倉庫,你往里面放了各種類型的物品,例如家具、花草、書籍等。那么,硬盤就像是這個倉庫,文件就是這些物品。
如果你在倉庫里劃分了一個區域,安排了一個管理員,負責存放物品并進行登記。那么,這個區域(這套體系),就是數據庫。
廣義的數據庫,是一種數據集合。我們口頭上所說的數據庫(狹義),大部分是指那些用于搭建、使用和維護廣義數據庫的系統軟件,叫做數據庫管理系統(DBMS)。
數據庫管理系統對數據進行統一控制管理,以保證數據的完整性和安全性。它還具有對外的標準接口,方便其它應用軟件對數據進行讀寫操作。
我們比較熟悉的數據庫管理系統,包括MySQL、SQL Server、Oracle、DB2、Redis、MongoDB等。
█數據庫的作用和優勢
之所以要有數據庫,主要是為了方便管理和使用數據。
數據庫是信息時代最重要的基礎軟件之一,地位僅次于操作系統。
如今,大量的信息化系統遍布社會的每個角落,每時每刻都在產生海量的數據。如果沒有一個高效的系統和平臺對這些數據進行統一管理,那么,效率就會下降。
數據庫存儲了海量的多類型數據。用戶可以通過數據庫,創建數據、查找數據、修改數據、刪除數據、分析數據、共享數據。
對于個人、企業甚至國家部門,數據庫有著不可替代的作用。現在整個社會都在講數據價值挖掘。AI的三大要素里,也包括了數據。數據的價值在提升,數據庫的價值也隨之提升。
一個優秀的數據庫管理系統,需要具備以下幾個方面的優勢。
首先,是性能。
數據庫涉及到大量的數據讀寫操作,所以,性能就顯得非常重要。
如果數據庫的用戶少,問題倒是不大。但是如果用戶多,例如12306、淘寶雙11等場景,瞬時并發讀寫特別大,就要看數據庫是否能hold得住。
這里就要提到著名的ACID(原子性、一致性、隔離性、持久性)特性。
原子性(Atomicity):為避免糾紛,數據庫中的事務執行被視作原子不可再分,事務(例如轉賬)中的操作要么全部執行,要么失敗回滾(Rollback)。
一致性(Consistency):為保證業務邏輯的一致性,數據庫通過設置約束和觸發器來保證其完整性約束不被破壞,即每個事務能夠看到的數據總是保持一致。
隔離性(Isolation):為防止事務之間的臟讀、幻讀、不可重復讀,數據庫通過加鎖,保證多個事務并發訪問時,事務之間是隔離的,互不干擾。
持久性(Durability):為防止意外事故(例如斷電)導致數據缺失,數據庫保證事務對其所作的修改被永久保存,不會被回滾。
其次,是容量。
數據庫要存放數據,所以,容量要滿足設計需求。
現在業務需求變化很快,數據庫的數據很可能迅猛增長。所以,數據庫也需要具備一定的擴展性和彈性,能夠靈活地變大或者變小,滿足需求和成本之間的平衡。
第三,是安全性。
數據安全的重要性,無需多言。一個優秀的數據庫,需要擁有完善的安全機制,保護數據免受未授權的訪問,以及來自外部的攻擊。
數據庫也需要有完善的備份和恢復機制,在極端情況下,能夠快速恢復到最近的狀態。
第四,是兼容性。
數據庫需要遵循開放標準的API,使得自身更容易與其它應用和服務集成,促進數據共享和互操作性。
總之,數據庫的作用遠不止于簡單的數據存放。作為一個核心組件,它必須經過嚴格且縝密的設計,能夠為各類應用程序提供穩定可靠的支撐,保障數據的安全性、完整性和高效利用。
█ 數據庫的類別
接下來,我們再看看數據庫的類別。
數據庫的種類很多,分類方法也很多。我們不妨就以歷史時間線的維度,對幾種主要的分類方式進行介紹。
1960-1970:萌芽階段
上世紀60年代,隨著計算機技術的不斷發展和成熟,越來越多的大型機開始應用于金融證券、航空航天、工業制造、軍事國防等領域,掀起了一場信息化革命。
有了信息化,就催生了大量的數據。為了更好地管理這些數據,就有人開始提出數據庫系統的概念。
1961年,美國通用電氣公司的查爾斯·巴赫曼(Charles Bachman),成功開發出世界上第一個數據庫管理系統——IDS(IntegratedData Store,集成數據存儲),奠定了網狀數據庫的基礎,并在當時得到了廣泛的發行和應用。
1968年,IBM公司創建了層次式數據庫管理系統IMS(Information Management System),是世界上首個商業數據庫系統。
1970-2000:關系型、事務型數據庫
又過了兩年,到了1970年,IBM公司的研究員埃德加·弗蘭克·科德(Edgar Frank Codd)發表了一篇名為《大型共享數據庫數據的關系模型》的重磅論文。在論文中,他提出了數據庫的關系模型,開創了關系數據庫時代。
1973年,IBM啟動了System R項目。后來,在System R項目的基礎上,加利福尼亞大學柏克萊分校啟動了ingres項目。
這兩個項目的意義極為重大。1970-80年代出現的多個經典數據庫產品,包括Oracle、DB2、Informix、Sybase、SQL Server,都是基于System R和ingres項目衍生出來的。這些數據庫產品,極大地助力了當時的信息化浪潮,為計算機的普及發揮了重要作用。
剛才提到的這些數據庫產品,全部都是關系型數據庫。
數據庫有很多種模型。比較原始的,是層次模型和網狀模型。比較主流的,是關系模型和非關系模型。
關系模型的最大特點,就是可以使用表格來表示實體和實體之間的關系。每一行代表一個實體實例,每一列代表實體的一個屬性。
關系型數據庫中,每個表有唯一的名字。表的每一行代表了一組值之間的聯系,稱為元組(Tuple)。每一列是實體的描述,具有相同的數據類型,稱為屬性(Attribute)或者字段(Field)。
大家應該注意到了,很多關系型數據庫(包括SQL Server、MySQL、PostgreSQL),都有一個SQL。
SQL的意思,是Structured Query Language,結構化查詢語言。
這是一種用于訪問和處理“關系型數據庫”的標準計算機語言。SQL語句既可以查詢數據庫中的數據,也可以添加、更新和刪除數據庫中的數據,還可以對數據庫進行管理和維護操作。
例如,下面這個,就是一個典型的SQL命令,表示要插入一條數據:
INSERT INTO students (id, name, age) VALUES (1, '張三', 20);
80-90年代的主流數據庫,除了基本屬于關系型數據庫之外,在業務類型上,也屬于事務型數據庫(交易型數據庫),即OLTP(Online Transactional Processing)。
這類數據庫主要用于管理實時交易(銀行、電商、訂票等),主要特點是能夠支持大量的讀寫操作(簡短的、小規模),能夠確保數據庫的完整性和一致性。
2000-2010:非關系型、分析型數據庫
上世紀90年代末,數據庫的發展進入一個新的階段。非關系型數據庫開始崛起。
1998年,卡羅·斯特羅茲(Carlo Strozzi)開發了一個輕量、開源、不提供SQL功能的數據庫,即NoSQL。
值得一提的是,NoSQL并不是“No SQL”(拒絕SQL)意思,而是“Not Only SQL”(不只是SQL)。
NoSQL并非完全替代關系型數據庫,而是為了應對Web 2.0時代互聯網應用快速增長所帶來的挑戰。它針對不同的應用場景,提供了更多選擇。
非關系數據模型并不遵循傳統的關系數據庫模型及其SQL查詢語言。它的出現,能夠解決關系型數據庫在擴展性和靈活性方面的一些局限性。
非關系型數據庫包括了很多子類型,例如鍵值數據庫、列族數據庫、文檔數據庫、圖數據庫等。具體類型和典型產品如下:
除了非關系型數據庫之外,數據庫也從事務性向分析型發展,即OLAP(Online Analytical Processing)。
這也是由時代決定的。因為數據除了用于查詢和記錄之外,要開始為大數據、數據分析等新興業務服務。
分析型數據庫允許用戶對大量歷史數據進行復雜的查詢和分析,以揭示隱藏在數據中的模式和趨勢,為上層決策提供支持。
需要注意的是,那一時期,數據倉庫(Data Warehouse)的概念出現了。
所謂數據倉庫,就是數據庫的一種演進。它集成了來自不同來源的數據,并經過清洗、轉換和整合,以便于進行高效的數據分析和報告。
限于篇幅,關于數據倉庫和待會提到的數據湖,小棗君后續會專門介紹。
2010-現在:融合、云化、AI、國產
2010年之后,數據庫技術繼續蓬勃發展,出現了很多新的趨勢。
首先,繼SQL、NoSQL之后,又出現了NewSQL的概念。
NewSQL是一類新型的關系型數據庫管理系統,結合了SQL和NoSQL的優點。
它解決了傳統關系型數據庫在處理大規模數據和高并發訪問時的性能瓶頸,同時保留ACID特性以及對SQL查詢語言的支持,非常適用于需要處理大規模數據和高并發訪問的場景。
NewSQL的代表產品,包括Google Spanner、CockroachDB、TiDB等。
其次,繼事務性、分析型之后,出現了混合型數據庫(HTAP,Hybrid Transactional / Analytical Processing)。
這也是一種融合趨勢。
簡單來說,HTAP是結合了OLTP和OLAP的優點。它是一種新興的數據庫架構,能夠同時支撐OLTP和OLAP場景,避免傳統架構中大量數據交互造成的資源浪費和沖突。
第三,是云數據庫和分布式數據庫的崛起。
這個比較好理解。以前都是單機數據庫。后來,數據庫并發越來越大,對安全要求越來越高,就有了主從數據庫,再然后,就是分布式數據庫。
分布式數據庫,數據分布在多臺服務器上,通過網絡連接協同工作。這樣一來,既可以擴展存儲和處理能力,也可以提高系統的可用性和容錯性。
當然,分布式數據庫,管理和維護方面會更復雜一些。
云數據庫,是響應云計算的發展,把本地數據庫遷移到云端。
第四,繼數據倉庫之后,又出現了數據湖、湖倉一體。
限于篇幅,后續專門給大家介紹這幾個概念。
第五,是數據庫開始引入AI,走向智能化。
將AI人工智能引入數據庫,也是一個重要趨勢。
AI能發揮的作用很多。一方面,可以實現更高的查詢和存儲效率,并自動化處理各種任務。另一方面,可以分析大量數據記錄,標記異常值和異常模式,自動防范惡意訪問與攻擊,提升安全性。
除此之外,AI還可以主動實現數據庫的智能調優,提升數據庫的整體性能。或者,自動進行系統維護操作,減少運營維護成本,也避免人為錯誤。
第六,是國產數據庫替代的加速。
最近十多年,國產數據庫的發展速度極快。在信創戰略的推動下,越來越多的國內企業和政府部門開始啟用國產數據庫,進行國產化替代。
圖片引用來源:艾瑞咨詢
█ 結語
好啦,以上就是關于數據庫的基本介紹。
數據是21世紀最有價值的無形資產。存儲和利用數據,對每個人、每個企業、每個政府都意義重大。像數據庫、數據倉庫、數據湖這樣的數據平臺,是充分利用數據價值的前提,也是發展AI的前提。
相信未來幾年,數據庫技術還將保持高速發展,涌現出更多的創新。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.