一、資料庫管理軟體的由來
基於我們之前對資料的瞭解,資料想要進行永久儲存,一般都是儲存到檔案中,但是一個檔案僅僅只能存在於某一臺機器上。
如果我們暫且忽略直接基於檔案來存取資料的效率問題,並且假設程式所有的元件都執行在一臺機器上,那麼用檔案存取資料,並沒有問題。
很不幸,這些假設都是你自己意淫出來的,上述假設存在以下幾個問題。。。。。。
1、程式所有的元件就不可能執行在一臺機器上
# 因為這臺機器一旦掛掉則意味著整個軟體的崩潰,並且程式的執行效率依賴於承載它的硬體,而一臺機器機器的效能總歸是有限的,受限於目前的硬體水平,就一臺機器的效能垂直進行擴充套件是有極限的。
# 於是我們只能透過水平擴充套件來增強我們系統的整體效能,這就需要我們將程式的各個元件分佈於多臺機器去執行。
2、資料安全問題
# 根據1的描述,我們將程式的各個元件分佈到各臺機器,但需知各元件仍然是一個整體,言外之意,所有元件的資料還是要共享的。但每臺機器上的元件都只能操作本機的檔案,這就導致了資料必然不一致。
# 於是我們想到了將資料與應用程式分離:把檔案存放於一臺機器,然後將多臺機器透過網路去訪問這臺機器上的檔案(用socket實現),即共享這臺機器上的檔案,共享則意味著競爭,會發生資料不安全,需要加鎖處理。。。。
3、併發
# 1.遠端連線(支援併發)
# 2.開啟檔案
# 3.讀寫(加鎖)
# 4.關閉檔案
總結
我們在編寫任何程式之前,都需要事先寫好基於網路操作一臺主機上檔案的程式(socket服務端與客戶端程式),於是有人將此類程式寫成一個專門的處理軟體,這就是mysql等資料庫管理軟體的由來,但mysql解決的不僅僅是資料共享的問題,還有查詢效率,安全性等一系列問題,總之,把程式設計師從資料管理中解脫出來,專注於自己的程式邏輯的編寫。
ps:mysql資料庫管理軟體是一個cs架構的套接字程式,該程式的基本流程就是客戶端提交命令給服務端執行,然後服務端將結果返回給客戶端,所以說白了資料庫管理軟體如mysql本質就是一個遠端執行命令的套接字程式,資料庫管理軟體提供的這套命令稱之為sql。
二、資料庫基本概念
1、什麼是資料(Data)
事物的狀態
2、什麼是記錄
就是一組資料所構成,相當於檔案中的一行內容,如1,Tmars,male,22
3、什麼是表
檔案
4、什麼是庫(DataBase,簡稱DB)
資料夾
5、什麼是資料管理系統(DataBase Management System 簡稱DBMS)
管理資料的套接字軟體,CS架構
6、什麼是資料庫伺服器
執行有DBMS服務端的計算機,該計算機對記憶體和硬碟要求都相對較高
三、資料庫管理軟體分類
簡單分為兩類
- 關係型資料庫(RDBMS:Relational Database Management System)
sqllite
db2
access
sql server
微軟公司的產品,主要應用於大中型企業,如聯想、方正等。
oracle
主要用於銀行、鐵路、飛機場等。該資料庫功能強大,軟體費用高。
也是甲骨文公司的產品。
MySQL
主要用於大型門戶,例如搜狗、新浪等,它主要的優勢就是開放原始碼
因為開放原始碼這個資料庫是免費的,他現在是甲骨文公司的產品。
MariaDB
SUN被甲骨文收購後,MySQL 的原創人員有拉出另外一個分支,
命名MariaDB 。該資料庫被維基百科,Facebook 甚至 Google
等技術巨頭使用。 MariaDB 是一種可為 MySQL 提供外掛替換功能的
資料庫伺服器。開發人員的首要關注點是安全性,在每個版本釋出時,
開發人員還會合並所有 MySQL 的安全修補程式,
並在需要時對其進行增強。
注意:sql語句通用
- 非關係型資料庫
如
mongodb(可用來作為後端資料庫管理軟體)
redis(多用來作為快取)
memcache(多用來作為快取)
可以簡單的理解為:
關係型資料庫需要有表結構
非關係型資料庫是key-value儲存的,沒有表結構
MySQL介紹
MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關係型資料庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關聯式資料庫管理系統) 應用軟體之一。
mysql本質是一個基於socket套接字編寫的C/S架構的軟體
客戶端軟體
mysql自帶:如mysql命令,mysqldump命令等
python模組:pymysql