天天看點

MySQL入門介紹

1什麼是資料庫?

    簡單的說,資料庫(英文Dtabase)就是一個存放資料的倉庫,這個倉庫是按照一定的資料結果(資料結構是指資料的組織形式或資料之間的聯系)來組織、存儲的、我們可以通過資料庫提供的多種方法來管理資料庫裡的資料更簡單的形象了解,資料庫和我們生活中存放雜物的倉庫性質一樣,差別隻是存放的東西不同。

2資料庫的種類

早期比較流行的資料庫模型有三種,分别為層次式資料庫、網絡式資料庫和關系型資料庫。而在當今的網際網路中,最常用的資料庫模型主要是兩種,即關系型資料庫和非關系型資料庫。

3關系型資料庫介紹

關系型資料庫由來

    網絡資料庫和層次資料庫很好地解決了資料的集中和共享問題,但是在資料獨立性和抽象級别上仍有很大欠缺。

    使用者對這兩種資料庫進行存取時,依然需要明确資料的存儲結構,支出存儲路徑。而關系資料庫就可以較好地解決這些問題。

關系型資料庫介紹

關系型資料庫模型是把複雜的資料結構歸結為簡單的二進制關系(即二維表格形式)。 

    Oracle 在資料庫領域裡上升到了霸主地位,形成每年高達數百億美元的龐大市場,而MySQL也是不容忽視的資料庫,以至于被Oracle重金收購。(MySQL 網際網路市場 ,Oracle 傳統企業)。 

4什麼是關系型資料庫

Mysql和Oracle資料庫,網際網路運維最常用的是MySQL 

通過SQL結構化查詢語句存儲資料 

保持資料一緻性方面很強,ACID(原子性(Atomicity)、一緻性(Consistency)、隔離性(Isolation)、持久性(Durability))理論

5非關系型資料庫誕生背景

非關系型資料庫也被成為NoSQL資料庫,NOSQL的本意是“Not Olnly SQL” 

    指的是非關系型資料庫,而不是“No SQL”的意思,是以,NoSQL的産生并不是要徹底地否定非關系型資料庫,而是作為傳統關系型資料庫的一個有效補充。NOSQL資料庫在特定的場景下可以發揮出難以想象的高效率和高性能。 

随着網際網路Web2.0網站的星期,傳統的關系型資料庫在應付web2,0網站,特别是對于規模日益擴大的海量資料,超大規模和高并發的微網誌、微信、SNS類型的web2.0純動态網站已經顯得力不從心,暴露了很多難以克服的問題。 

例如:傳統的關系型資料庫IO瓶頸、性能瓶頸都難以有效突破,于是出現了大批針對特定場景,以高性能和使用便利為目的功能特異化的資料庫産品。NOSQL(非關系型)類的資料就是在這樣的情景下誕生并得到了非常迅速的發展。

高性能、高并發、對資料一緻性要求不高 

開源的NoSQL體系,如Facebook的Cassandra,Apache的HBase,也得到了廣泛認同,Redis,mongb也逐漸越來越受到各類大中小型公司的歡迎和追捧 。

NOSQL非關系型資料庫小結: 

1、NOSQL不是否定關系資料庫,而是作為關系資料庫的一個重要補充 

2、NOSQL為了高性能、高并發而生,忽略影響高性能,高并發的功能 

3、NOSQL典型産品memcached (純記憶體),redis(持久化緩存),mongodb(文檔的資料庫) 

6非關系型資料庫種類

k2—>資料 

 鍵值資料庫就類似傳統語言中使用哈希表,可以通過key來添加、查詢或删除資料,因為使用key主鍵通路,是以會獲得很高的性能及擴充性 

鍵值(Key-Value)資料庫主要是使用一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的資料。Key/value模型對于IT系統來說的優勢在于簡單、易部署、高并發 

典型産品:Memcached、Redis、MemcacheDB、BerkeleyDB 

這部分資料庫通常用來分布式存儲的海量資料,鍵仍然存在,但是他們的特點是指向了多個列。

典型産品:Cassandra,HBase 

面向文檔資料庫會将以文檔的形式存儲。每個文檔都是自包含的資料單元,是一系列資料項的集合。每個資料項都有一個名稱與對應的值,值既可以是簡單的資料類型,如字元串、數字和日期等;也可以是複雜的類型,如有序清單和關系對象。資料存儲的最小機關是文檔,同一個表中存儲的文檔屬性可以是不同的,資料可以使用XML、JSON或者JSONB等多種形式存儲 。

典型産品:MorgoDB、CouchDB 

7常用關系型資料庫産品介紹

1oracle資料庫

Oracle前身叫SDL、由Larry Ellison和兩個變成任意在1977創辦,他們開發了主機的拳頭産品,在市場上大量銷售。Oracle公司是最早開發關系型資料庫的廠商之一,其産品支援最廣泛的作業系統平台。目前Oracle關系資料庫産品的市場占有率數一數二。

Oracle公司是目前全球最大的資料庫軟體公司,也是近年業務增長極為迅速的軟體提供與服務商。主要應用範圍:傳統大企業、大公司、政府、金融、證券等。 

版本更新:oracle8i,oracle9i,oracle10g,oracle11g,oracle12c

02MySQL資料庫

MySQL被廣泛的應用在Internet上的大中小型網站中。由于體積小、速度快、總體擁有成本低,開放源代碼。

03MariaDB資料庫

MariaDB資料庫管理系統是MySQL資料庫的一個分支,主要由開元社群維護,采用GPL授權許可。開發這個MariaDB的原因之一是:甲骨文公司收購了MySQL後,有MySQL閉源的潛在風險,是以MySQL開元社群采用分支的方式來避開這個風險。

    MariaDB基于事務的Maria存儲引擎,替換了MySQL的MyISAM的存儲引擎,它使用了Percona的XtraDB(InnoDB的變體)這個版本還包括了PrimeBase XT (PBXT)和Federated X存儲引擎。

04Access資料庫

Access是入門級小型桌面資料庫,性能安全性都很一般,可供個人管理或小型企業應用。

Access不是資料庫語言,隻是一個資料庫程式,目前最新版本為Office 2007,其特點主要如下: 

(1)完善地管理各種資料庫對象,具有強大的資料組織,使用者管理、安全檢查等功能。 

(2)強大的資料處理功能,在一個工作組級别的網絡環境中,使用Access開發的多使用者管理系統具有傳統的XSASE(DBASE、FoxBASE的統稱)資料庫系統所無法實作的客戶伺服器。(Ckient/Server)結構和響應的資料庫安全機制,Access具備了許多先進的大型資料管理管理系統所具備的特征。 

(3)可以友善地生成各種資料對象,利用存儲的資料建立窗體和報表 

(4)作為Office套件的一部分,可以與Office內建,實作無縫連接配接 

(5)能夠利用Web檢索和釋出資料,實作與Internet的連接配接,Access主要适用于中小企業應用系統,或作為客戶機/伺服器系統中的用戶端資料庫。

05SQL Server資料庫

Microsoft SQL Server是微軟公司開發的大型關系資料庫系統。SQL Server的功能比較全面,效率高,可以作為中型企業或機關的資料庫平台。SQL Server可以與Winodws作業系統緊密內建,不論是應用程式開發速度還是系統事務處理運作速度,都得到較大的提升,對于在Windows平台上開發的各種企業級資訊管理系統來說,不論是C/S(客戶機/伺服器)架構還是B/S(浏覽器/伺服器)架構。SQL Server都是一個很好的選擇。SQL Server的缺點是隻能在Windows系統下運作。

DB2,PostgreSQL,Informix,Sybase等。這些關系型資料庫逐漸的淡化了普通運維的實作,特别是網際網路公司幾乎見不到。

8常用非關系型資料庫産品介紹 

memcached(key-value)

Memcaced是一個開源的、高性能的、具有分布式記憶體對象的緩存系統。通過它可以減輕資料庫負載,加速動态的web應用,最初版本由LiveJoumal 的Brad Fitzpatrick在2003年開發完成。目前全球有非常多的使用者都在使用它來架構主機的大負載網站或提升主機的高通路網站的響應速度。注意:Memcache 是這個項目的名稱,而Memcached是服務端的主程式檔案名。

緩存一般用來儲存一些程序被存取的對象或資料,通過緩存來存取對象或資料要比在磁盤上存取塊很多,前者是記憶體,後者是磁盤、Memcached是一種純記憶體緩存系統,把經常存取的對象或資料緩存在memcached的記憶體中,這些被緩存的資料被程式通過API的方式被讀取,Memcached裡面的資料就像一張巨大的hash表,資料以key-value對的方式存在。

Memcached通過緩存經常被存取的對象或資料,進而減輕頻繁讀取資料庫的壓力,提高網站的響應速度,建構出快速更快的可擴充的Web應用。 

由于memcached為純記憶體緩存軟體,一旦重新開機所有資料都會丢失,是以,新浪網基于Memcached開發了一個開源項目Memcachedb。通過為Memcached增加Berkeley DB的特久化存儲機制和異步主複制機制,使Memcached具備了事務恢複能力、持久化資料能力和分布式複制能力,memcached非常适合需要超高性能讀寫速度、持久化儲存的應用場景,但是最近幾年逐漸被其他的持久化産品替代如Redis。

Memcached小結: 

1、key-value行資料庫 

2、純記憶體資料庫 

3、持久化memcachedb(sina)

Redis(key-value)

和Memcached類似,redis也是一個key-value型存儲系統。但redis支援的存儲value類型相對更多,包括string(字元串)、list(連結清單)、set(集合)和zset(有序集合)等。這些資料類型都支援push/pop、add/remove及取交集、并集和差集及更豐富的操作,而且這些操作都是原子性的。為了保證效率,redis的資料都是緩存在記憶體中。差別是redis會周期性的把更新的資料寫入磁盤或者把修改操作寫入追加的記錄檔案,并且在基礎上實作了master-slave(主從)同步。 

redis是一個高性能的key-value資料庫。redis的出現、很大程度補償了memcached這類key/value存儲的不足,在部分場合可以對關系資料庫起到很好的補充作用。它提供了Python、Ruby、Erlang、PHP用戶端,使用友善。

redis特點: 

1)支援記憶體緩存,這個功能相當于memcached 

2)支援持久化存儲,這個功能相當于memcachedb,ttserver 

3)資料庫類型更豐富。比其他key-value庫功能更強 

4)支援主從叢集、分布式 

5)支援隊列等特殊功能 

應用:緩存從存取memcached更改存取redis

MongoDB(Document-oriented)

MongoDB是一個介于關系型資料庫和非關系型資料庫之間的産品,是非關系型資料庫當中功能最豐富,最像關系資料庫的。他支援的資料庫結構非常松散,類似json的bjson格式,是以可以存儲比較複雜的資料類型。Mongodb最大的特點是他支援的查詢語言非常強大,其文法有點類似于面向對象的查詢語言,幾乎可以實作類似關系資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。

特點: 

高性能、易部署、易使用、存儲資料非常友善 

主要功能特性: 

面向集合存儲,易存儲對象類型的資料 

“面向集合”(Collenction-Orented)意思是資料庫被分組存儲在資料集中,被稱為一個集合(Collenction)每個 集合在資料庫中都有一個唯一的辨別名,并且可以包含無限數目的文檔,集合的概念類似關系型資料庫(RDBMS)裡的表(table)不同的是它不需要定義任何模式(schema) 

模式自由 

模式自由(schema-free)意為着存儲在mongodb資料庫中的檔案,我們不需要知道它的任何結構定義。 

支援動态查詢 

支援完全索引,包含内部對象 

支援查詢 

支援複制和故障恢複 

使用高效的二進制資料存儲,包括大型對象 

自動處理碎片、以支援雲計算層次的擴充性

Cassandra(Column-oriented)

Apache Cassndra是一套開源分布式Key-Value存儲系統。它最初由Facebook開發,用于存儲特别大的資料。Facebook目前在使用此系統。 

主要特點: 

分布式 

基于column的結構化 

高伸展性 

Cassandra的主要特點就是它不是一個資料庫,而是由一堆資料庫節點共同構成一個分布式網絡服務,對Cassandra的一個寫操作,會被複制到其他節點上去,對Cassandra的讀操作。也會被路由到某個節點上面去讀取。 

Cassandir是一個混合型的非關系的資料庫,類似于Google的BigTable。其主要功能比Dynomie(分布式的key-value存儲系統)更豐富,Cassandra最初由Facebook開發,後轉變成了開源項目。

HBase、MemcacheDB、BerkeleyDB、Tokyo Cabinet\Tokyo Tyrant(ttserver) ttserver 持久化輸出,缺點存儲2千萬條 性能下降(由日本人發明)

9

MySQL資料庫介紹

MySQL是網際網路領域裡一款最要的,深受廣大使用者歡迎的開源關系型資料庫軟體之一、由瑞典MySQL AB公司開發與維護。2006年。MySQL AB公司被SUN公司收購,2008年,SUN公司又被傳統資料資料庫領域大佬甲骨文(oracle)公司收購,是以,MySQL資料庫軟體目前屬于Oracle公司,成為傳統資料庫領域老大的又一個資料庫産品,甲骨文公司收購MySQL後,使得自身在商業資料庫與開源軟體領域市場占有份額都躍居第一的位置,這樣的格局,引起了很多人的擔憂,這種擔憂直接導緻後來的Mysql分支資料庫MariaDB的誕生于發展。 

MySQL是一種關系型資料庫管理系統,關系型資料庫的特點是将資料儲存在不同的表中,在将這些表放入不同的資料庫中,而不是将所有資料統一放在一個大倉庫裡,這樣的設計增加了MySQL的讀取速度,靈活性和可管理型也得到了很大提高,通路以及管理MySQL資料庫的最常用标準化語言為SQL結構化查詢語句

為什麼選擇MySQL資料庫

原因可能有以下幾點: 

(1) MySQL性能卓越、服務穩定,很少出現異常當機 

(2) MySQL開放源代碼且無版權制約,自主性及使用成本低 

(3) MySQL曆史悠久,社群及使用者活躍,遇到問題可以解決 

(4) MySQL軟體體積小,安裝使用簡單,并且易于文虎,安裝及維護成本低 

(5) MySQL品牌口碑效應,使得企業無需考慮就直接用,LAMP、LEMP流行架構 

(6) MySQL支援多用作業系統,提供多種API接口,支援多用開發語言,特别對流行的PHP語言有很好的支援

MySQL資料庫分類與版本更新

10

MySQL資料庫商業版與社群辦差別

MySQL商業版與社群辦之間的差別在于: 

1、商業版本組織管理與測試環節控制更嚴格,穩定性方面,會比社群版本更穩定 

2、MySQL是成熟産品,商業版與社群辦之間性能方面相差不大 

3、商業版不遵守GPL協定,社群版遵守GPL協定可以免費試用 

4、使用商業版後可以購買相關的服務,享受7*24小時技術支援以及及時打更新檔等服務,但是使用者必須為此支援服務費用 

5、社群版本的維護服務隻能靠社群提供,無法像商業版本獲得故障及更新檔解決服務了,但是社群版是完全免費的方式,社群版的服務品質與時效性等方面就無法與MySQL AB公司提供的服務相比了。

MySQL資料庫四種釋出版本介紹

(1)Alpha版 

        Alpha版一般隻在開發的公司内部運作,不對外公開 

(2)Beta版 

        Beta版一般是完成功能的開發與所有的測試工作之後的産品,不會存在較大的功能或性能BUG,并且邀請或提供給使用者體驗與測試,以便更全面地測試軟體的問題。 

(3)RC版 

        RC版屬于生産環境釋出之前的一個小版本或稱候選版,是根據Beta版本測試結果,收集到的BUG或缺陷之處等收集到的資訊,進行修複和完善之後的一版産品 

(4)GA版 

        GA版是軟體産品正式釋出的版本,也稱生産版本的産品

MySQL産品路線

為了提高MySQL産品的競争優勢,以及提高性能,降低開發維護成本等原因。同時友善企業使用者更精準的選擇适合的版本用于主機的企業生産環境中, 

MySQL在發展到5.1版本系列之後,重新規劃為三條産品線

第一條-5.0.xx到5.1.xx産品線系列介紹 

MySQL 5.1是目前穩定(産品品質)釋出系列。隻針對漏洞修複重新釋出:沒有增加會影響穩定性的新功能。 MySQL 5.1:Previous stable(production-quality)release MySQL 5.0是前一穩定(産品品質)釋出系列。隻針對嚴重漏洞修複和安全修複重新釋出:沒有增加會影響該系列的重要功能。 

MySQL 5.0:Older stable release nearing the end of the product lifecycle

第二條-5.4.xx開始-到了5.7.xx産品線系列介紹 

為了更好地整合MySQL AB公司社群和第三方公司開發的新存儲引擎,以及吸收新的實作算法等,進而更好地支援SMP架構,提高性能而做了大量的代碼重構,版本編号從5.4.xx開始,目前發展到了5.6.x MySQL 5.5:LatestGeneral Availability(Production)release 

主流:網際網路公司用MySQL.5.5

第三條-6.0.xx到7.1.xx産品線系列介紹 

為了更好地推廣MySQL Cluster版本,以及提高MySQL Cluster的性能和穩定性,以及功能改進和增加,以及改動MySQL基礎功能,使其對Cluster存儲引擎提供更有效的支援與優化。版本号為6.0.xx開發。目前發展到7.1.xx 

官方位址提供資料庫下載下傳版本: 

現在國内的鏡像站也支援下載下傳: 

<a>http://mirrors.sohu.com/mysql/</a>

MySQL入門介紹

例如,像mysql-5.0.56.tar.gz的版本号解釋: 

(1) 第1個數字(5)是主版本号,描述了檔案格式。所有版本5發行都有相同檔案格式 

(2) 第2個數字(0)是發行級别。主版本号和發行級别組合到一起便構成了發型序列号。 

(3) 第3個數字(56)是在此系列的版本号,随每個新分發遞增,通常你需要已經選擇的發行(release)的最新版本 。

(4) 字尾顯示發行的穩定級别,通過一系列字尾顯示如何改進穩定性,可能的字尾有:*alpha版

企業生産場景選擇MySQL資料庫建議: 

1) 穩定版:選擇開源的社群版的穩定版GA版本 。

2) 産品線:可以選擇5.1或5.5 網際網路公司主流5.5,其次是5.1和5.6 。

3) 選擇MySQL資料庫GA版釋出後6個月以上的GA版本。 

4)要選擇前後幾個月沒有大的BUG修複的版本,而不是大量修複BUG的集中版本 。

5)最好向後較長時間沒有更新釋出的版本 。

6)要考慮開發人員開發程式使用的版本是否相容你選的版本 。

7)作為内部開發人員開發測試資料庫環境,跑大概3-6個月的事件 。

8)優先企業非核心業務采用新版本的資料庫GA版本軟體 。

9)向DBA高手請教,或者在及技術氛圍好的群裡和大家一起交流,使用真正的高手們用過的好用的GA版本産品。

10)若是沒有重要的功能BUG或性能瓶頸,則可以開始考慮作為任何任務資料服務的後端資料庫軟體。

yum/rpm安裝适合對資料庫要求不太高的場合,例如并釋出大,公司内部,企業内部的一些應用場景。大的門戶把源碼根據企業需求制作成rpm,搭建rpm倉庫。

本文轉自 tianya1993 51CTO部落格,原文連結:http://blog.51cto.com/dreamlinux/1835067,如需轉載請自行聯系原作者