1. 程式人生 > >Mysql DBA高級運維學習筆記-mysql數據庫介紹

Mysql DBA高級運維學習筆記-mysql數據庫介紹

課程 一是 持久 金融 文檔 等等 base 數據庫管理系統 -m

本文為我自己學習老男孩MySQL DBA 高級運維課程的學習筆記,內容均出自老男孩MySQL DBA 高級運維課程,老男孩老師講的很好,非常感謝老男孩老師。我是一個菜鳥剛接觸運維,如果我寫的文章有不對的地方;請各位行業的精英、老師多多批評指點,呵呵~

1.1 數據庫介紹

1.1.1 什麽是數據庫?
簡單的說,數據庫就是一個存放數據的倉庫,這個倉庫是按照一定的數據結構(數據結構是指數據的組織形式或數據之間的聯系)來組織、存儲的,我們可以通過數據庫提供的多種方法來管理數據庫裏的數據。

1.2 數據庫的種類
比較流行的數據庫模型有三種,分別為層次式數據庫、網絡式數據庫和關系型數據庫。在當今的互聯網中,最常用的數據庫模型主要有兩種,即關系型數據庫和非關系型數據庫(Nosql)。

1.2.1 關系型數據庫介紹

(1)關系型數據庫的由來

雖然網狀數據庫和層次數據庫已經很好的解決了數據庫的集中和共享問題,但是在數據庫獨立性和抽象級別上仍有很大的欠缺,用戶在對這兩種數據庫進行存取時,仍然需要明確數據庫的存儲結構,指出存取路徑,而關系數據庫就可以較好的解決這些問題。

(2)關系型數據庫介紹
關系型數據庫模型是把復雜的數據結構歸結為簡單的二元關系(即二維表格形式),在關系數據庫中,對數據庫的操作幾乎全部建立在一個或多個關系表格上,通過對這些關聯的表格分類、合並、連接或選取等運算來實現數據的管理。

(3)關系型數據庫表格之間的關系舉例

用access或power builder完成下列關系表格

技術分享圖片

技術分享圖片

技術分享圖片

小結:什麽是關系型數據庫

(1)關系型數據庫就是類似於execl表格這種二維表來表示的。

(2)關系型數據庫使用結構化查詢語句SQL語句來對數據進行存取的。

(3)關系型數據庫的代表oracle 、mysql。

1.2.2 非關系型數據庫

1.2.2.1 非關系型數據庫誕生背景

非關系型數據庫也被稱為NoSQL數據庫,NoSQL的本意是“Not Only SQL”(不僅僅是關系型數據庫),指的是非關系型數據庫,而不是“No SQL”的意思(沒有SQL語句?),因此NoSQL並不是要徹底地否定關系型數據庫,而是作為傳統關系型數據庫的一個有效補充。

傳統的關系型數據庫在應對web 2.0這個高並發、高吞儲就很困難。關系型數據庫IO瓶頸、性能瓶頸都難以有效突破,於是NoSQL(非關系型)類的數據庫就這樣誕生了,並得到了非常迅速地發展。

Google的BigTable與Amazon的Dynamo是非常成功的商業NoSQL實現,一些開源的NoSQL體系如FaceBook的Cassandra,Apache的HBase也得到了廣泛認同,Redisd,mongodb也逐漸的越來越受到各類大中小行公司的歡迎和追捧。

總結:NoSQL為什麽誕生?

動態請求越來越多,對數據庫的要求越來越高。而傳統數據庫它遵循ACID理論,要保持數據一致性、又要使用結構化查詢語句SQL語句來對數據進行存儲;導致存取速度很慢,而且還要放磁盤裏面去不能保證數據不丟,所以在這種情況下非關系型數據庫就產生了。

1.3 常用關系型數據庫

1.3.1 Oracle數據庫

技術分享圖片

主要應用範圍:傳統發企業,大公司,政府,金融,證券等等。
版本升級:Oracle8i,Oracle9i,Oracle10q,Oracle11g

1.3.2 Mysql數據庫

技術分享圖片

目前MySQL被廣泛地應用在Internet上的大中小型網站中,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多大中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站數據庫。
MySQL數據庫主要應用範圍:互聯網領域,大中小型網站,遊戲公司,電商平臺等等。

1.3.3 MariaDB數據庫

技術分享圖片

MariaDB數據庫管理系統是MySQL數據庫的一個分支,主要由開源社區維護,采用GPL授權許可。開發這個MariaDB數據庫分支的可能原因之一是:甲骨文公司收購了MySQL後,有將MySQL閉源的風險,因此MySQL開源社區采用分支的方式來避開這個風險。MariaDB數據庫的名稱來自MySQL的創始人Michael Widenius的女兒Maria的名字。

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

官網:https://mariadb.org/。

1.3.4 SQL server

Microsoft SQL Server 是微軟公司開發的大型關系型數據庫。
主要應用範圍:部分企業電商,使用windows服務平臺的企業。

1.3.5 Access數據庫

Access數據庫是美國Microsoft公司於1994年推出的微機數據庫管理系統,它具有界面友好、易學易用、開發簡單、接口靈活等特點,是典型的新一代桌面關系型數據庫管理系統。它是Microsoft Office的成員之一。
Access是入門級小型桌面數據庫,性能安全性都很一般,可供個人管理或小型網站使用。它主要適用於中小型應用系統,或作為客戶機/服務器系統中的客戶端數據庫。
早期應用領域:小型程序系統asp+access系統,留言板、校友錄等。

1.4 常用非關系型數據庫

1.4.1 Memcached(key-value)

技術分享圖片

Memcached是一個開源的、高性能的、具有分布式內存對象的緩存系統。通過它可以減輕數據庫負擔,加載動態的web應用。緩存一般用來保存一些經常被存取的對象或數據,通過緩存來存取對象或數據要比在磁盤上存取快很多。Memcached是一種純內存緩存系統,把經常存取的對象或數據緩存在Memcached的內存中,這些緩存的數據被程序通過API的方式被存取Memcached 裏面的數據就像一張巨大的HASH表,數據以key-value的方式存在。Memcached通過緩存經常被存取的對象或數據,從而減輕頻繁讀取數據庫的壓力、提高網站的響應速度,構建出速度更快的可擴展的web應用,官方:http://memcached.org/。

由於Memcached為純內存緩存軟件,一旦重啟所有數據都會丟失,因此,新浪網基於Memcached開發了一個開源項目Memcachedb.通過Memcached增加Berkeley DB的持久化存儲機制和異步主鋪復制機制,使Memcached具備了事務恢復能力,持久化數據存儲能力和分布式復制能力,Memcached非常適合需要超高性能讀寫速度、持久化保存的應用場景,但是近幾年逐漸被持久化產品取代例如:redis。

1.4.2 Redis(key-value)

和Memcached類似,redis也是一個key-value型的存儲系統,單redis支持的存儲value類型相對更多,包括string(字符串)、set(集合)和zset(有序集合)等。Redis的數據都是緩存在內存中,區別是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。
官方:http://www.redis.io/documentation

Redis特點:

(1)支持內容緩存,這個功能相當於memcached。

(2)支持持久化,這個功能相當於memcachedb,ttserver。

(3)數據庫類型更豐富,比其他key-value庫功能更強。

(4)支持集群,分布式。

(5)支持隊列等特殊功能。

1.4.3 MongoDB(Document-oriented)

技術分享圖片

MongoDB是一個介於關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,類似json的bjson格式,因此可以存儲比較復雜的數據類型。Mongodb最大的特點是他支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言。

Mongodb更詳細文檔:http://www.mongodb.org/display/DOCS/Manual

官網:http://blog.mongodb.org/。

1.4.4 Cassandra(Column-oriented)

Apache Cassandra是一套開源分布式Key-Value存儲系統。

主要特性:

(1)分布式

(2)基於column的結構化

(3)高伸展性

Cassandra的主要特點就是它不是一個數據庫,而是由一堆數據庫節點共同構造的一個分布式網絡服務。

Mysql DBA高級運維學習筆記-mysql數據庫介紹