尚矽谷mysql安裝到mysql高階 資料庫概述
第01章_資料庫概述
1.1為什麼要使用資料庫
- 持久化(persistence):把資料庫儲存到可掉電式儲存裝置中以供以後使用。大多數情況下,特別是企業級應用,資料持久化意味著將記憶體中的資料儲存到硬碟上加以“固化”,而持久化的實現過程大多數通過各種關係資料庫來完成。
- 持久化的主要作用是將記憶體中的資料在關係型資料庫中,當然也可以儲存在磁碟檔案,XML資料檔案中。
在記憶體中使用高電平,低電平表示1和0,一旦斷電,記憶體中的資料就會丟失。
生活中的例子:
QQ註冊,登陸後,清除掉軟體程序,可以直接登入,不需要再次註冊。顯然,祖冊後,你的登入賬號資料就被做了持久化。
斷網後,你也可以對有的資料進行訪問(看到載入的聊天記錄),也說明對資料做了持久化。
2.資料庫與資料庫管理系統
2.1資料庫的相關概念
DB:資料庫(Database)
即儲存資料的”倉庫“,其本質是一個檔案系統。它儲存了一系列有組織的資料。
DBMS:資料庫管理系統(Database Management System)
是一種操縱和管理資料庫的大型軟體,用於建立、使用和維護資料庫,對資料庫進行統一管理和控制。使用者通過資料庫管理系統訪問資料庫中表格內的資料。
SQL:結構化查詢語言(Structure Query Language)
專門用來與資料庫通訊的語言。
2.2資料庫與資料庫管理系統的關係
資料庫管理系統(DBMS)可以管理多個數據庫,一般開發人員會針對每一個應用建立一個數據庫。為儲存應用中實體的資料,一i版會在資料庫中建立多個表,以儲存程式中實體使用者的資料。
資料庫管理系統,資料庫和表的關係如圖所示:
2.3常見的資料庫管理系統排名(DMS)
目前網際網路上常見的資料庫管理軟體有Oracle,MySQL,MS SQL Server,DB2,PostgreSQL,Access,Sybase,Informix這幾種。一下是20210年DB-Engines Ranking對各資料庫受歡迎程度進行調查後的統計結果:(檢視資料庫最新排名:http://db-engines.com/en/ranking)
對應的走勢圖:(https://db-engines.com/en/ranking_trend)
2.4常見的資料庫介紹
Oracle
1979年,Oracle 2誕生,他是第一個商用的RDBMS(關係型資料庫管理體統)。隨著Oracle軟體的名氣越來越大,公司也改名叫Oracle公司。
2007年,總計85億美元收購BEA Systems。
2009年,總計74億美元收購SUN,此前的2008年,SUN公司以10億美元收購MySQL。意味著Oracle同時擁有了MySQL的管理權,至此Oracle在資料庫領域中成為絕對的領導者。
2013年,甲骨文超越IBM,成為即Microsoft後全球第二大軟體公司。
如今Oracle的年收入達到了400億美元,足以證明商用(收費)資料庫軟體的價值。
SQL Server
SQL Servcer 是微軟開發的大型商業資料庫,誕生於1989年。C#、.net等語言常使用,與WinNT完全整合,也可以很好的與Microsoft BackOffic產品整合。
DB2
IBM公司的資料庫產品,收費的。常應用在銀行系統中。
PostgreSQL
PostgreSQL的穩定性極強,最符合SQL標準,開房原始碼,具備商業及DBMS質量。PG對資料量打的文字以及SQL處理較快。
SyBase
已經淡出歷史舞臺。提供了一個非常專業資料建模的工具PowerDesigner。
SQLite
嵌入式的小型資料庫,應用在手機端。零配置,SQLite3不用安裝,不用配置,不用啟動,關閉或者配置資料庫例項。當系統崩潰後不用做任何恢復操作,在下次使用資料庫的時候自動恢復。
Informix
IBM公司出品,取自Information和Unix的結合,它是第一個被移植到Linux上的商業資料庫產品。進執行與unix/linux平臺,命令列操作。效能較高支援叢集適應於安全性要求極高的系統,尤其是銀行,證券系統的應用。
3.MySQL介紹
3.1概述
-
MySQL是一個開放原始碼的關係型資料庫管理系統,由瑞典MySQL AB(創始人Michael Widenius)公司1995年開發,迅速成為開源資料庫的NO.1.
-
2008年被Sun收購(10億美金),2009年SUN公司被Oracle收購。Maria DB應運而生。(MySQL的常見這擔心MySQL有閉源的風險,因此常見了MySQL的認知專案Maria DB)
-
MySQL 6.x版本之後分為社群版和商業版。
-
MySQL是一種關聯資料庫管理系統,將資料儲存在不同表中的,而不是將所有資料放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
-
MySQL是開源的,所以你不需要支付額外的費用。
-
MySQL是可以定製的,採用GPL(GUN General Public License)協議,你可以修改原始碼開開發自己de MySQL系統。
-
MySQL支援大型的資料庫,可以處理擁有上千萬條記錄的大型資料庫。
-
MySQL支援大型資料庫,支援5000萬條記錄的資料倉庫,32位系統表文件最大支援4 G,64位系統 支援最大的表文件為8 TB。
-
MySQL使用標準的SQL資料語言形式
-
MySQL可以允許執行多個系統之上,並且支援多種語言。這些變成語言包括C,C++,Python,Perl,PHP,Ruby等。
3.2MySQL發展史重大事件
MySQL的歷史就是整個網際網路的發展史。網際網路業務從社交領域、電商領域、再到金融領域的發展,推動者應用對資料可的需求提升,對傳統的資料庫服務能力提出了挑戰。高併發,高可用,易維護,易擴充套件的需求,促進了MySQL的長足發展。
3.3關於MySQL 8.0
MySQL從5.7版主直接跳躍釋出了8.0版本,可見這是一個令人興奮的里程碑版本。MySQL 8版本在功能上做了顯著的改進與增強,開發者對MySQL的原始碼進行了重構,最突出的一點就是對MySQL Optimizer優化器進行了改進重構,不僅在速度上得到了改善,還為使用者帶來了更好的效能和更棒的體驗。
3.4Why choose MySQL?
為什麼如此多的廠商要選用MySQL?大概總結的原因主要有以下幾點?
- 開放原始碼,使用成本低
- 效能能卓越,服務穩定。
- 軟體體積小,使用簡單,並且易於維護。
- 歷史悠久,社群使用者非常活躍,遇到問題可以尋求幫助。
- 許多網際網路公司在用,經過了時間的驗證。
3.5Oracle VS MySQL
Oracle更適合大型跨國企業的使用,因為他們對費用不敏感,但是對效能要求以及安全性有更高的要求。
MySQL由於其體積小,速度快,總體擁有成本低,可處理上千萬條記錄的大型資料庫,尤其是開房原始碼這一特點,是的網際網路公司,中小型網站選擇了MySQL作為網站資料庫(Facebook,Twitter,You Tube,阿里巴巴/螞蟻金服,去哪兒,美團外賣,騰訊)。
4.RDBMS和非RDBMS
從排名中我們 能看出來,關係型資料庫絕對是DBMS的主流,其中使用最多的是DBMS分別是Oracle、MySQL和SQL Server。這些都是關係型資料庫(RDBMS)。
4.1關係型資料庫(RDBMS)
4.1.1實質
- 這種型別的資料是最古老的資料庫型別,關係型熟即可模型是把複雜的資料結構歸結為簡單的二元關係(即二維表格資料形式)。
-
關係性資料庫以行(row)和列(column)的形式儲存資料,以便於使用者理解。這一塊系列的行和列被稱為表(table),一組表組成了一個庫(database)。
例子:
-
表和表之間的資料記錄有關係(relationship)。實現世界中的各種實體以及實體之間的各種聯絡均用關係模型來表示。關係型資料庫,就是建立在關係模型基礎上的資料庫。
-
SQL就是關係型資料庫的查詢語言。
4.1.2優勢
-
複雜查詢
可以用SQL語句方便的在一個表以及多個表之間做非常複雜的資料查詢。
-
事務支援
使得對於安全效能很高得資料訪問要求得以實現。
4.2非關係型資料庫(非RDBMS)
4.2.1介紹
非關係型資料庫,可以看成傳統關係型資料庫的閹割版本,基於鍵值對儲存資料,不需要經過SQL層的解析,效能非常高。同時,通過減少不常用的功能,進一步提高效能。
目前基本上大部分主流的非關係型資料庫都是免費的。
4.2.2有哪些非關係型資料庫
相比於SQL,NoSQL泛指非關係型資料庫,包括了榜單上的簡直資料庫、文件型資料庫、搜尋引擎和列儲存等,除此之外還包括圖形資料庫,也只有用NoSQL一詞才能將這些技術囊括進來。
鍵值型資料庫
鍵值型資料庫通過Key-Value鍵值的方式來儲存資料,其中Key和Value可以是簡單的物件,也可以是複雜的物件。Key作為唯一的識別符號,有點事查詢速度快,在這方面明顯優於關係型資料庫,缺點是無法像關係型資料庫一樣使用條件過濾(比如WHERE),如果你不知道去哪裡找資料,就要遍歷所有的鍵,這就會消耗大量的計算。鍵值型資料庫典型的使用場景就是作為記憶體快取。Redis是最流行的鍵值型資料庫。
文件型資料庫
此類資料庫可存放並獲取文件,可以是XML,JSON等格式。在資料庫中文件作為梳理資訊的基本單位,一個文件就相當於一條記錄。文件資料庫所存放文件,就相當於建築資料所存放的‘’值‘。MangoDB是最流行的文件型資料庫。此外。還有CouchDB等。
搜尋引擎資料庫
雖然關係型資料庫採用了索引提升檢索效率,但是針對全文索引效率卻較低。搜尋引擎資料庫是應用在搜尋引擎領域的數儲存形式。由於搜尋引擎會爬取大量的資料,並以特定格式進行儲存,這樣在檢索的時候才能保證效能最優。核心原理是”倒排索引“
典型產品:Solr、Elasticsearch,、Splunk等
列式資料庫
列示資料庫是相對於行式儲存的資料庫,Oracle、MySQL、SQL server等資料庫都是擦啟用的行式儲存(Row-based),而列式儲存是將資料按照列儲存到資料庫中,這樣做的好處就是可以大量降低系統的I/O,適合於分散式檔案系統,不足在於功能相對有限。典型產品:HBase等。
資料庫常用的操作就是查詢操作,行式儲存要把每一行的資料都要載入到記憶體中,載入了大量的冗餘欄位,載入到記憶體中的欄位越多,它佔用的記憶體就越多,佔用的記憶體越多,就意味著我們在載入的無用資料就越多,就意味著我們進行了比較多的I/O操作。
圖形資料庫
圖形資料庫,利用了圖這種資料結構儲存了實體(物件)之間的關係。圖形資料庫最典型的例子就是社交網路中人與人的關係,資料模型主要是以節點和邊(關係)來實現,特點在於能高效地解決複雜的關係問題。
圖形資料庫,顧名思義,就是一種儲存圖形關係的資料庫。它利用了圖這種資料結構儲存了實體(物件)之間的關係。關係型資料庫用於儲存明確關係的資料,但對於複雜關係的資料儲存卻有些力不從心。如社交網路中任務之間的關係,如果用關係型資料庫則非常複雜,用圖形資料庫將非常簡單。典型產品:Neo4J、InfoGrid等。
4.2.3非關係型資料庫的演變
由於SQL一直稱霸DBMS,因此許多人在思考是否有一種資料庫技術能遠離SQL,於是NoSQL誕生了。但是隨著發展卻發現越來越離不開SQL。到目前為止NoSQL陣營中的DBMS都會有實現類似的SQL的功能。下面是“NoSQL”這個名詞在不同時期的詮釋,從這些釋義的變化中可以看出NoSQL功能的演變:
1970 : NoSQL = We have no SQL
1980 : NoSQL = Know SQL
2000 : NoSQL = No SQL!
2005 : NoSQL = Not only SQL
2013 : NoSQL = No,SQL!
NoSQL對SQL做出了很好的補充,比如實際開發中,很多業務需求,其實並不需要完整的關係型資料庫功能,非關係型資料庫的功能就足夠使用了。這種情況下,使用效能更高,成本更低的非關係型資料庫當然是更明智的選擇。比如:日誌收集,排行榜,定時器等。
4.3小結
NoSQL的分類很多,即便如此,在DBMS排名中,還是SQL陣營的比重更大,影響力前5的DBMS中有4個是關係型資料庫,而排名前20的DBMS中也有12個是關係型資料庫。所以說,掌握SQL是非常有必要的。整套課程將圍繞SQL展開。