版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫原理與應(yīng)用基礎(chǔ)第15章MySQL數(shù)據(jù)庫備份與還原第15章MySQL數(shù)據(jù)庫備份與還原備份與還原概述通過文件備份和還原通過命令mysqldump備份還原表的導(dǎo)入和導(dǎo)出知識點小結(jié)為了保證數(shù)據(jù)的安全,需要定期對數(shù)據(jù)進(jìn)行備份。備份的方式有很多種,效果也不一樣。如果數(shù)據(jù)庫中的數(shù)據(jù)出現(xiàn)了錯誤,就需要使用備份好的數(shù)據(jù)進(jìn)行數(shù)據(jù)還原,這樣可以將損失降至最低。MySQL數(shù)據(jù)庫備份的方法多種多樣(例如完全備份、增量備份等),無論使用哪一種方法,都要求備份期間的數(shù)據(jù)庫必須處于數(shù)據(jù)一致狀態(tài),即數(shù)據(jù)備份期間,盡量不要對數(shù)據(jù)進(jìn)行更新操作。第15章MySQL數(shù)據(jù)庫備份與還原第15章MySQL數(shù)據(jù)庫備份與還原備份與還原概述通過文件備份和還原通過命令mysqldump備份還原表的導(dǎo)入和導(dǎo)出知識點小結(jié)備份與還原概述數(shù)據(jù)庫備份是指通過導(dǎo)出數(shù)據(jù)或者拷貝表文件的方式來制作數(shù)據(jù)庫的副本。數(shù)據(jù)庫的恢復(fù)(也稱為數(shù)據(jù)庫的還原)是將數(shù)據(jù)庫從某一種“錯誤”狀態(tài)(如硬件故障、操作失誤、數(shù)據(jù)丟失、數(shù)據(jù)不一致等狀態(tài))恢復(fù)到某一已知的“正確”狀態(tài)。備份與還原概述MySQL數(shù)據(jù)庫中具體實現(xiàn)備份數(shù)據(jù)庫的方法很多,可分為以下幾種:完全備份表備份增量備份備份與還原概述完全備份:完全備份就是將數(shù)據(jù)庫中的數(shù)據(jù)及所有對象全部備份。完全備份最簡單也最快速的方式就是復(fù)制數(shù)據(jù)庫文件,在復(fù)制時對MySQL數(shù)據(jù)庫會有些要求。只要服務(wù)器不在進(jìn)行更新,就可以復(fù)制所有文件(*.frm、*.MYD、*.MYI文件)。對InnoDB表,可以進(jìn)行在線備份,不需要對表進(jìn)行鎖定。備份與還原概述表備份:表備份就是僅將一張或多張表中的數(shù)據(jù)進(jìn)行備份,可以使用selectinto…outfile或backuptable語句,只提取數(shù)據(jù)庫中的數(shù)據(jù),而不備份表的結(jié)構(gòu)和定義。備份與還原概述增量備份:增量備份就是在某次完全備份的基礎(chǔ)上,只備份其后數(shù)據(jù)的變化。可用于定期備份和自動恢復(fù)。增量備份使用mysqlbinlog處理二進(jìn)制日志文件。通過增量備份,當(dāng)出現(xiàn)操作系統(tǒng)崩潰或電源故障,InnoDB自己可以完成所有數(shù)據(jù)恢復(fù)的工作。第15章MySQL數(shù)據(jù)庫備份與還原備份與還原概述通過文件備份和還原通過命令mysqldump備份還原表的導(dǎo)入和導(dǎo)出知識點小結(jié)通過文件備份和還原由于MYSQL服務(wù)器中的數(shù)據(jù)文件是基于磁盤的文本文件,所以最簡單、最直接的備份操作就是把數(shù)據(jù)庫文件直接復(fù)制出來。由于MySQL服務(wù)器的數(shù)據(jù)文件在服務(wù)運(yùn)行期間,總是處于打開和使用狀態(tài),因此文本文件副本備份不一定總是有效。為了解決該問題,在復(fù)制數(shù)據(jù)庫文件時,需要先停止MySQL數(shù)據(jù)庫服務(wù)器。通過文件備份和還原雖然停止MySQL數(shù)據(jù)庫服務(wù)器,可以解決復(fù)制數(shù)據(jù)庫文件實現(xiàn)數(shù)據(jù)備份的問題,但是這種方法不是最好的備份方法。這是因為實際情況下,MySQL數(shù)據(jù)庫服務(wù)器不允許被停止,同時該方式對InnoDB儲存引擎的表不適合,只適合MyISAM引擎。第15章MySQL數(shù)據(jù)庫備份與還原備份與還原概述通過文件備份和還原通過命令mysqldump備份還原表的導(dǎo)入和導(dǎo)出知識點小結(jié)通過命令mysqldump備份還原MySQL提供了許多免費(fèi)的客戶端實用程序,且存放于MySQL安裝目錄下的bin子目錄中。這些客戶端實用程序可以連接到MySQL服務(wù)器進(jìn)行數(shù)據(jù)庫的訪問,或者對MySQL執(zhí)行不同的管理任務(wù)。其中,mysqldump程序和mysqlimport程序就分別是兩個常用的用于實現(xiàn)MySQL數(shù)據(jù)庫備份和恢復(fù)的實用工具。通過命令mysqldump備份還原備份還原備份使用MySQL客戶端實用程序的方法:打開計算機(jī)中的DOS終端,進(jìn)去MySQL安裝目錄下的bin子目錄,如C:\ProgramFiles\MySQL\MySQL5.7\bin,出現(xiàn)MySQL客戶端實用程序運(yùn)行界面,由此可輸入所需的MySQL客戶端實用程序的命令。備份使用mysqldump程序備份數(shù)據(jù):可以使用客戶端實用程序mysqldump來實現(xiàn)mysql數(shù)據(jù)庫的備份,它除了可以與前面使用SQL語句備份表數(shù)據(jù)一樣導(dǎo)出備份的表數(shù)據(jù)文件之外,還可以在導(dǎo)出的文件中包含數(shù)據(jù)庫中表結(jié)構(gòu)的SQL語句。備份使用mysqldump程序備份數(shù)據(jù):備份表備份數(shù)據(jù)庫備份整個數(shù)據(jù)庫系統(tǒng)備份備份表語法格式:
mysqldump[options]database[tables]>filename注:options:mysqldump命令支持的選項,可以通過執(zhí)行 mysqldump–help命令得到mysql-dump選項表及更多
幫助信息。備份備份數(shù)據(jù)庫
語法格式:
mysqldump[options]—databases[options]db1[db2db3...]>filename備份備份整個數(shù)據(jù)庫系統(tǒng)mysqldump程序還能夠備份整個數(shù)據(jù)庫系統(tǒng),即系統(tǒng)中的所有數(shù)據(jù)庫,其語法格式:
mysqldump[options]--all-databases[options]>filename;通過命令mysqldump備份還原備份還原還原使用MySQL命令將mysqldump程序備份的文件中全部的SQL語句還原到MySQL中。還原使用mysqlimport程序恢復(fù)數(shù)據(jù)語法格式:
mysqlimport[options]databasetextfile...;注:options:mysqlimport命令支持的選項,可以通過執(zhí)行 mysqlimport–help命令查看這些選項的內(nèi)容和作用。第15章MySQL數(shù)據(jù)庫備份與還原備份與還原概述通過文件備份和還原通過命令mysqldump備份還原表的導(dǎo)入和導(dǎo)出知識點小結(jié)表的導(dǎo)入和導(dǎo)出導(dǎo)出備份語句語法格式:select*intooutfile’file_name’[charactersetcharset_name]export_options|intodumpfile’file_name’
表的導(dǎo)入和導(dǎo)出其中,export_options的格式為:[fields[terminatedby’string’][[optionally]enclosedby’char’][escapedby’char’]][linesterminatedby’string’]
表的導(dǎo)入和導(dǎo)出注:導(dǎo)出備份語句的作用是將表中select語句選中的所有數(shù)據(jù)行寫入到一個文件中,file_name指定數(shù)據(jù)備份文件的名稱。導(dǎo)出語句中使用關(guān)鍵字outfile時,可以在export_options中加入以下兩個自選的子句,它們的作用是決定數(shù)據(jù)行在備份文件中存放的格式。 在fields子句中有三個亞子句,如果指定了fields子句,則這三個亞子句中至少要求指定一個。
表的導(dǎo)入和導(dǎo)出導(dǎo)入恢復(fù)語句語法格式: loaddata[low_priority|concurrent][local]infile’file_name.txt’ [replace|ignore] intotabletbl_name [fields [terminatedby'string'][[optionally]enclosedby'char'] [escapedby'char'] ](接下一頁)表的導(dǎo)入和導(dǎo)出[lines(接上一頁)[startingby'string'][terminatedby'string']][ignorenumberlines][(col_name_or_user_var,...)][setcol_name=expr,...)]表的導(dǎo)入和導(dǎo)出注:low_priority|concurrent:若指定low_priority,則延遲該語句的執(zhí)行;若指定concurrent,則當(dāng)loaddata正在執(zhí)行的時候,其他線程可以同時使用該表的數(shù)據(jù)。local:若指定了local,則文件會被客戶主機(jī)上的客戶端讀取,并被發(fā)送到服務(wù)器。若沒有指定local,則文件必須位于服務(wù)器機(jī)上,并且被服務(wù)器直接讀取。
表的導(dǎo)入和導(dǎo)出注:replace|ignore:如果指定replace,則當(dāng)導(dǎo)入文件中出現(xiàn)與數(shù)據(jù)庫中原有行相同的唯一關(guān)鍵字值時,輸入行會替換原有行;如果指定ignore,則把與原有行有相同的唯一關(guān)鍵字值的輸入行跳過。ignorenumberlines:這個選項可以用于忽略文件的前幾行。col_name_or_user_var:如果需要載入一個表的部分列,或者文件中字段值順序與原表中列的順序不同時,就必須指定一個列清單,其中可以包含列名或用戶變量,第15章MySQL數(shù)據(jù)庫備份與還原備份與還原概述通過文件備份和還原通過命令mysqldump備份還原表的導(dǎo)入和導(dǎo)出知識點小結(jié)知識點小結(jié)本章主要講述了備份數(shù)據(jù)庫,還原數(shù)據(jù)庫、導(dǎo)入表和導(dǎo)出表的內(nèi)容。數(shù)據(jù)庫的備份和還原是本章的重點內(nèi)容。在實際應(yīng)用中,通常使用mysqldump命令備份數(shù)據(jù)庫。數(shù)據(jù)庫原理與應(yīng)用基礎(chǔ)第16章 MySQL日志管理第16章 MySQL日志管理MySQL支持的日志二進(jìn)制日志慢查詢?nèi)罩就ㄓ貌樵內(nèi)罩局R點小結(jié)本章實驗第16章 MySQL日志管理MySQL數(shù)據(jù)庫中包含多種不同類型的日志文件,這些文件記錄了MySQL數(shù)據(jù)庫的日常操作和錯誤信息,分析這些日志文件可以了解MySQL數(shù)據(jù)庫的運(yùn)行情況、日常操作、錯誤信息以及哪些地方需要進(jìn)行優(yōu)化。本章將介紹MySQL數(shù)據(jù)庫中常見的幾種日志文件,包括錯誤日志、通用查詢?nèi)罩?、慢查詢和二進(jìn)制日志文件。第16章 MySQL日志管理MySQL支持的日志二進(jìn)制日志慢查詢?nèi)罩就ㄓ貌樵內(nèi)罩局R點小結(jié)本章實驗MySQL支持的日志錯誤日志啟動查看刪除MySQL支持的日志錯誤日志錯誤日志是MySQL數(shù)據(jù)庫中最常用的一種日志。錯誤日志主要用來記錄MySQL服務(wù)的開啟、關(guān)閉和錯誤信息。本節(jié)將為讀者介紹錯誤日志的內(nèi)容。MySQL支持的日志啟動注:DIR參數(shù)指定慢查詢?nèi)罩镜拇鎯β窂皆贛ySQL數(shù)據(jù)庫中,錯誤日志功能是默認(rèn)開啟的。而且,錯誤日志無法被禁止。默認(rèn)情況下,錯誤日志存儲在MySQL數(shù)據(jù)庫的數(shù)據(jù)文件夾下。錯誤日志的存儲位置可以通過log-error選項來設(shè)置。將log-error選項加入到my.Ini文件的[mysqld]組中,形式如下:log-error[=DIR/[filename]]MySQL支持的日志查看錯誤日志中記錄著開啟和關(guān)閉MySQL服務(wù)的時間,以及服務(wù)運(yùn)行過程中出現(xiàn)哪些異常等信息。如果MySQL服務(wù)出現(xiàn)異常,可以到錯誤日志中查找原因。錯誤日志是以文本文件的形式存儲的,可以直接使用普通文本工具就可以查看。MySQL支持的日志刪除數(shù)據(jù)庫管理員可以刪除很長時間之前的錯誤日志,以保證MySQL服務(wù)器上的硬盤空間。MySQL數(shù)據(jù)庫中,可以使用mysqladmin命令來開啟新的錯誤日志。mysqladmin命令的語法如下:mysqladmin-uroot-pflush-logs執(zhí)行該命令后,數(shù)據(jù)庫系統(tǒng)會自動創(chuàng)建一個新的錯誤日志。舊的錯誤日志仍然保留著,只是已經(jīng)更名為filename.err-old。第16章 MySQL日志管理MySQL支持的日志二進(jìn)制日志慢查詢?nèi)罩就ㄓ貌樵內(nèi)罩局R點小結(jié)本章實驗二進(jìn)制日志二進(jìn)制日志也叫作變更日志(updatelog),主要用于記錄數(shù)據(jù)庫的變化情況。通過二進(jìn)制日志可以查詢MySQL數(shù)據(jù)庫中進(jìn)行了哪些改變。二進(jìn)制日志啟動查看刪除二進(jìn)制日志還原數(shù)據(jù)庫二進(jìn)制日志啟動注:DIR參數(shù)指定慢查詢?nèi)罩镜拇鎯β窂侥J(rèn)情況下,二進(jìn)制日志功能是關(guān)閉的。通過my.ini的log-bin選項可以開啟二進(jìn)制日志。將log-bin選項加入到my.ini文件的[mysqld]組中,形式如下:log-bin[=DIR\[filename]]二進(jìn)制日志查看mysqlbinlog命令將在當(dāng)前文件夾下查找指定的二進(jìn)制日志。因此需要在二進(jìn)制日志filename.number所在的目錄下運(yùn)行該命令,否則將會找不到指定的二進(jìn)制日志文件。使用二進(jìn)制格式可以存儲更多的信息,并且可以使寫入二進(jìn)制日志的效率更高。打開二進(jìn)制日志的命令的語法形式如下:mysqlbinlogfilename.number二進(jìn)制日志刪除二進(jìn)制日記會記錄大量的信息,如果很長時間不清理,將會浪費(fèi)很多的磁盤空間,以下為刪除二進(jìn)制日志的幾種方法:刪除所有二進(jìn)制日志根據(jù)編號來刪除二進(jìn)制日志根據(jù)創(chuàng)建時間來刪除二進(jìn)制日志二進(jìn)制日志刪除所有二進(jìn)制使用resetmaster語句可以刪除所有二進(jìn)制日志。該語句的形式如下:
resetmaster;注:刪除所有二進(jìn)制日志后,MySQL將會重新創(chuàng)建新的二進(jìn)制日志。二進(jìn)制日志2.根據(jù)編號來刪除二進(jìn)制日志每個二進(jìn)制日志文件后面有一個六位數(shù)的編號,如000001。使用purgemasterlogsto語句可以刪除編號小于這個二進(jìn)制日志的所有二進(jìn)制日志。該語句的基本語法形式如下:
purgemasterlogsto'filename.number';二進(jìn)制日志3.根據(jù)創(chuàng)建時間來刪除二進(jìn)制日志使用purgemasterlogsto語句可以刪除指定時間之前創(chuàng)建的二進(jìn)制日志。該語句的基本語法形式如下:
purgemasterlogsbefore'yyyy-mm-ddhh:mm;ss';二進(jìn)制日志二進(jìn)制日志還原數(shù)據(jù)庫
命令如下:mysqlbinlogfilename.number|mysql-uroot-p注:使用mysqlbinlog命令來讀取filename.Number中的內(nèi)容,然后使用mysql命令將這些內(nèi)容還原到數(shù)據(jù)庫中第16章 MySQL日志管理MySQL支持的日志二進(jìn)制日志慢查詢?nèi)罩就ㄓ貌樵內(nèi)罩局R點小結(jié)本章實驗慢查詢?nèi)罩締硬榭磩h除慢查詢?nèi)罩締幼ⅲ篋IR參數(shù)指定慢查詢?nèi)罩镜拇鎯β窂侥J(rèn)情況下,慢查詢?nèi)罩竟δ苁顷P(guān)閉的。在windows下,通過修改my.ini文件的slow-query-log選項可以開啟慢查詢?nèi)罩?。在[mysqld]組,把slow-query-log的值設(shè)置為1(默認(rèn)是0),重新啟動MySQL服務(wù)即可開啟慢查詢?nèi)罩尽F湔Z法格式如下:slow_query_log_file[=DIR\[filename]]慢查詢?nèi)罩静榭磮?zhí)行時間超過指定時間的查詢語句會被記錄到慢查詢?nèi)罩局?。如果用戶希望查詢哪些查詢語句的執(zhí)行效率低,可以從慢查詢?nèi)罩局蝎@得想要的信息。慢查詢?nèi)罩疽彩且晕谋疚募男问酱鎯Φ摹?梢允褂闷胀ǖ奈谋疚募榭垂ぞ邅聿榭?。慢查詢?nèi)罩緞h除執(zhí)行該命令后,命令行會提示輸入密碼。輸入正確密碼后,將執(zhí)行刪除操作。新的慢查詢?nèi)罩緯苯痈采w舊的查詢?nèi)罩?,不需要再手動刪除了。慢查詢?nèi)罩镜膭h除方法可以使用mysqladmin命令來刪除,也可以使用手工方式來刪除。mysqladmin命令的語法如下:slow_query_log_file[=DIR\[filename]]第16章 MySQL日志管理MySQL支持的日志二進(jìn)制日志慢查詢?nèi)罩就ㄓ貌樵內(nèi)罩局R點小結(jié)本章實驗通用查詢?nèi)罩締硬榭磩h除通用查詢?nèi)罩締幼ⅲ篋IR參數(shù)指定通用查詢?nèi)罩镜拇鎯β窂侥J(rèn)情況下,通用查詢?nèi)罩竟δ苁顷P(guān)閉的。在windows下,通過修改my.ini文件的log選項可以開啟通用查詢?nèi)罩?。在[mysqld]組,把general-log的值設(shè)置為1(默認(rèn)是0),重新啟動MySQL服務(wù)即可開啟查詢?nèi)罩?,general_log_file表示日志的路徑,形式如下:general_log_file[=DIR\[filename]]通用查詢?nèi)罩静榭从脩舻乃胁僮鞫紩涗浀酵ㄓ貌樵內(nèi)罩局?。如果希望了解某個用戶最近的操作,可以查看通用查詢?nèi)罩?,通用查詢?nèi)罩臼且晕谋疚募男问酱鎯Φ?。通用查詢?nèi)罩緞h除MySQL數(shù)據(jù)庫中,可使用mysqladmin命令來開啟新的通用查詢?nèi)罩?。新的通用查詢?nèi)罩緯苯痈采w舊的查詢?nèi)罩?,不需要再手動刪除了。mysqladmin命令的語法如下:mysqladmin–uroot–pflush-logs除了上述方法以外,可以手工刪除通用查詢?nèi)罩尽h除之后需要重新啟動MySQL服務(wù),重啟之后就會生成新的通用查詢?nèi)罩?。?6章 MySQL日志管理MySQL支持的日志二進(jìn)制日志慢查詢?nèi)罩就ㄓ貌樵內(nèi)罩局R點小結(jié)本章實驗知識點小結(jié)本章介紹了日志的含義、作用和優(yōu)缺點,然后介紹了二進(jìn)制日志、錯誤日志、通用日志和慢查詢?nèi)罩镜膬?nèi)容。其中二進(jìn)制日志是本章的難點。二進(jìn)制日志的查詢方法與其他日志不同,需要讀者特別注意。而且二進(jìn)制日志可以還原數(shù)據(jù)庫。第16章 MySQL日志管理MySQL支持的日志二進(jìn)制日志慢查詢?nèi)罩就ㄓ貌樵內(nèi)罩局R點小結(jié)本章實驗本章實驗實驗內(nèi)容:
MySQL日志管理實驗數(shù)據(jù)庫原理與應(yīng)用基礎(chǔ)第17章分布式數(shù)據(jù)庫與MySQL的復(fù)制、集群技術(shù)第17章分布式數(shù)據(jù)庫與MySQL的復(fù)制、集群技術(shù)分布式數(shù)據(jù)庫系統(tǒng)分布式數(shù)據(jù)存儲MySQL復(fù)制技術(shù)MySQL集群技術(shù)知識點小結(jié)第17章分布式數(shù)據(jù)庫與MySQL的復(fù)制、集群技術(shù)分布式數(shù)據(jù)庫系統(tǒng)(DistributedDataBaseSystem,DDBS)是地理上分散而邏輯上集中的數(shù)據(jù)庫系統(tǒng),即通過計算機(jī)網(wǎng)絡(luò)將地理上分散的各局域節(jié)點連接起來共同組成一個邏輯上統(tǒng)一的數(shù)據(jù)庫系統(tǒng)。是數(shù)據(jù)庫技術(shù)與網(wǎng)絡(luò)技術(shù)相結(jié)合的產(chǎn)物。分布式數(shù)據(jù)庫系統(tǒng)有兩種:一種是物理上分布的,但邏輯上卻是集中的。另一種分布式數(shù)據(jù)庫系統(tǒng)在物理上和邏輯上都是分布的,也就是所謂聯(lián)邦式分布數(shù)據(jù)庫系統(tǒng)。第17章分布式數(shù)據(jù)庫與MySQL的復(fù)制、集群技術(shù)分布式數(shù)據(jù)庫系統(tǒng)分布式數(shù)據(jù)存儲MySQL復(fù)制技術(shù)MySQL集群技術(shù)知識點小結(jié)分布式數(shù)據(jù)庫系統(tǒng)集中式與分布式傳統(tǒng)數(shù)據(jù)庫系統(tǒng)作為一種主機(jī)/終端式系統(tǒng),表現(xiàn)出明顯的集中式數(shù)據(jù)庫體系結(jié)構(gòu)。集中式數(shù)據(jù)庫基本特征是“單點”數(shù)據(jù)存取與“單點”數(shù)據(jù)處理。數(shù)據(jù)庫管理系統(tǒng)、所有用戶數(shù)據(jù)以及所有應(yīng)用程序都安裝和存儲在同一個“中心”計算機(jī)系統(tǒng)當(dāng)中。這個中心計算機(jī)通常是大型機(jī),也稱為主機(jī)。用戶通過終端發(fā)出存取數(shù)據(jù)請求,由通信線路傳輸?shù)街鳈C(jī)。主機(jī)予以響應(yīng)并加以相應(yīng)處理,然后再通過通信線路將處理結(jié)果返回到用戶終端。分布式數(shù)據(jù)庫系統(tǒng)集中式數(shù)據(jù)庫結(jié)構(gòu):存在問題:1.通信開銷巨大。2.故障影響系統(tǒng)。3.靈活擴(kuò)展不足。分布式數(shù)據(jù)庫系統(tǒng)集中式與分布式分布計算先后經(jīng)歷了“處理分布”、“功能分布”和“數(shù)據(jù)分布”的演變過程。其中功能分布產(chǎn)生客戶機(jī)/服務(wù)器結(jié)構(gòu)應(yīng)當(dāng)遵循的基本的原則,而數(shù)據(jù)分布就導(dǎo)入了分布式數(shù)據(jù)庫概念。分布計算的三層含義:1.處理分布:數(shù)據(jù)集中,處理分布2.功能分布3.?dāng)?shù)據(jù)分布:數(shù)據(jù)物理分布在不同節(jié)點上,但在邏輯上構(gòu)成一個整體,是一個邏輯數(shù)據(jù)庫。分布式數(shù)據(jù)庫系統(tǒng)DDB基本概念分布式數(shù)據(jù)庫(DistributedDatabase,DDB)作為數(shù)據(jù)庫技術(shù)與計算機(jī)網(wǎng)絡(luò)技術(shù)相結(jié)合的產(chǎn)物。在本質(zhì)上是一種虛擬的數(shù)據(jù)庫,整個系統(tǒng)由一些松散耦合的站點構(gòu)成,系統(tǒng)中的數(shù)據(jù)都物理地存儲在不同地理站點的不同數(shù)據(jù)庫(站點)中,而系統(tǒng)中每個站點上運(yùn)行的數(shù)據(jù)庫系統(tǒng)之間實現(xiàn)著真正意義下的相互對立性。分布式數(shù)據(jù)庫系統(tǒng)DDBS基本概念分布式數(shù)據(jù)庫系統(tǒng)(DistributedDatabaseSystems,DDBS)是由一組地理上分布在網(wǎng)絡(luò)不同節(jié)點而在邏輯上屬于同一系統(tǒng)的數(shù)據(jù)庫子系統(tǒng)組成,這些數(shù)據(jù)庫子系統(tǒng)分散在計算機(jī)網(wǎng)絡(luò)不同計算實體之中,網(wǎng)絡(luò)中每個節(jié)點都具有獨立處理數(shù)據(jù)的能力,即是站點自治的。既可以執(zhí)行局部應(yīng)用,同時也可以通過網(wǎng)絡(luò)通信系統(tǒng)執(zhí)行全局應(yīng)用。分布式數(shù)據(jù)庫系統(tǒng)分布式數(shù)據(jù)庫的基本特征:1.物理分布性2.邏輯整體性3.站點自治性4.站點協(xié)作三個站點分布式數(shù)據(jù)庫系統(tǒng)示意圖分布式數(shù)據(jù)庫系統(tǒng)DDB模式結(jié)構(gòu)
1.六層模式結(jié)構(gòu)1)全局外模式結(jié)構(gòu)2)基于分布的模式結(jié)構(gòu)3)局部數(shù)據(jù)庫模式結(jié)構(gòu)2.五級映射與分布透明
分布式數(shù)據(jù)庫系統(tǒng)分布式數(shù)據(jù)庫的分層模式結(jié)構(gòu)
分布式數(shù)據(jù)庫系統(tǒng)六層模式結(jié)構(gòu)1)全局外模式結(jié)構(gòu)全局外部級(全局外模式)是全局應(yīng)用的用戶視圖,可以看作是全局模式的—個子集。一個分布式數(shù)據(jù)庫可以有多個全局外模式。2)基于分布的模式結(jié)構(gòu)該層是基于分布式數(shù)據(jù)庫基本要求而構(gòu)建的,其中包括三個結(jié)構(gòu)層面。分布式數(shù)據(jù)庫系統(tǒng)(1)全局概念級(全局模式)類似于集中式數(shù)據(jù)庫的模式,它定義分布式數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu),是整個分布式數(shù)據(jù)庫所有全局關(guān)系的描述。全局模式提供了分布式系統(tǒng)中數(shù)據(jù)的物理獨立性,而全局外模式提供了數(shù)據(jù)的邏輯獨立性。(2)分片級(分片模式)(FragmentationSchema)描述了數(shù)據(jù)在邏輯上是怎樣進(jìn)行劃分的。每一個全局關(guān)系可以劃分為若干互不相交的片(Fragment),片是全局關(guān)系的邏輯劃分,在物理上位于網(wǎng)絡(luò)的若干節(jié)點上。全局關(guān)系和片之間的映射在分片模式中定義,這種映射通常是一對多的。一個全局關(guān)系可以對應(yīng)多個片,而一個片只能來自于一個全局關(guān)系。(3)分布級(分布模式)(AllocationSchema)定義了片的存儲節(jié)點,即定義了一個片位于哪一個節(jié)點或哪些節(jié)點。分布式數(shù)據(jù)庫系統(tǒng)3)局部數(shù)據(jù)庫模式結(jié)構(gòu)(1)局部概念級(局部模式)全局關(guān)系被邏輯劃分成為一個或多個邏輯分片,每個邏輯分片被放置在一個或多個站點,稱為邏輯分片在某站點的物理映像或分片。分配在同一站點的同一全局模式的若干片段(物理片段)構(gòu)成該全局模式在該站點的一個物理映像。一個站點局部模式是該站點所有全局模式在該處物理映像的集合。全局模式與站點獨立,局部模式與站點相關(guān)。(2)局部內(nèi)部級(局部內(nèi)模式)是DDB中關(guān)于物理數(shù)據(jù)庫的描述,與集中式數(shù)據(jù)庫內(nèi)模式相似,但描述內(nèi)容不僅包含局部本站點數(shù)據(jù)存儲,也包含全局?jǐn)?shù)據(jù)在本站點存儲描述。分布式數(shù)據(jù)庫系統(tǒng)五級映射與分布透明在DDB體系結(jié)構(gòu)中,六層模式之間存在著五級映射,它們分別為:映射1:全局外模式層到全局模式層之間的映射。映射2:局部模式層到分片層之間的映射。映射3:分片層到分配層之間的映射。映射4:分配層到局部模式層之間的映射。映射5:局部概念層到局部內(nèi)模式層之間的映射。分布式數(shù)據(jù)庫系統(tǒng)這里映射l和映射5類似于集中式數(shù)據(jù)庫中體現(xiàn)邏輯獨立性與物理獨立性的相應(yīng)“兩級映射”。而映射2、映射3和映射4是DDB中所特有的。在DDB中,人們?yōu)榱送怀銎浠咎攸c,通常數(shù)據(jù)獨立性主要是指數(shù)據(jù)的“分布透明性”。映射2、映射3和映射4體現(xiàn)的相應(yīng)獨立性分別稱為數(shù)據(jù)的“分片透明性”、“位置透明性”和“模型透明性”,三者就組成了數(shù)據(jù)的“分布透明性”。分布透明性實際上屬于物理獨立性范疇。分布式數(shù)據(jù)庫系統(tǒng)DDB中映射和相應(yīng)數(shù)據(jù)獨立性分布式數(shù)據(jù)庫系統(tǒng)1)分片透明性分片透明性(FragmentationTransparency)是最高層面的分布透明性,由位于全局概念層和分片層之間的映射2實現(xiàn)。當(dāng)DDB具有分片透明性時,應(yīng)用程序只需要對全局關(guān)系操作,不必考慮數(shù)據(jù)分片及其存儲站點。當(dāng)分片模式改變時,只需改變映射2即可,不會影響全局模式和應(yīng)用程序,從而完成分片透明性。分布式數(shù)據(jù)庫系統(tǒng)2)位置透明性位置透明性(LocationTransparency)由位于分片層和分配層的映射3實現(xiàn)。當(dāng)DDB不具有分片透明性但具有位置透明性時,編寫程序需要指明數(shù)據(jù)片段名稱,但不必指明片段存儲站點。當(dāng)存儲站點發(fā)生改變時,只需改變分片模式到分配模式之間映射3,而不會影響分片模式、全局模式和應(yīng)用程序。分布式數(shù)據(jù)庫系統(tǒng)3)局部數(shù)據(jù)模型透明性局部數(shù)據(jù)模型透明性(LocalDataTransparency)也稱為局部映像透明性或模型透明性,由位于分配模式和局部模式之間的映射4實現(xiàn)。當(dāng)DDB不具有分片透明性和位置透明性,但具有模型透明性時,用戶編寫的程序需要指明數(shù)據(jù)片段名稱和片段存儲站點,但不必指明站點使用的是何種數(shù)據(jù)模型,而模型轉(zhuǎn)換和查詢語言轉(zhuǎn)換都由映射4完成。分布式數(shù)據(jù)庫系統(tǒng)DDB的分層、映射模式結(jié)構(gòu)為DDB提供了一種通用的概念結(jié)構(gòu),這種框架具有較好的數(shù)據(jù)管理優(yōu)勢,其主要表現(xiàn)在下述幾個方面:(1)數(shù)據(jù)分片與數(shù)據(jù)分配分離,形成了“數(shù)據(jù)分布獨立性”的狀態(tài)。(2)數(shù)據(jù)冗余的顯式控制,數(shù)據(jù)在不同站點分配情況在分配模式中易于理解和把握,便于系統(tǒng)管理。(3)局部DBMS獨立性,也就是通常所說“局部映射透明性”,這就允許人們在不考慮局部DBMS專用數(shù)據(jù)模型情況下,研究DDB管理相關(guān)問題。分布式數(shù)據(jù)庫管理系統(tǒng)分布式數(shù)據(jù)庫管理系統(tǒng)(DistributedDatabaseManagementSystem,DDBMS)是一組負(fù)責(zé)管理分布式環(huán)境下邏輯集成數(shù)據(jù)存取、一致性和完備性的軟件系統(tǒng)。由于數(shù)據(jù)上的分布DDBMS在管理機(jī)制上還必須具有計算機(jī)網(wǎng)絡(luò)通信協(xié)議的分布管理特性。分布式數(shù)據(jù)庫管理系統(tǒng)1.DDBMS基本功能(1)接受用戶請求,并判定將其發(fā)送到何處,或必須訪問哪些計算實體才能滿足要求。(2)訪問網(wǎng)絡(luò)數(shù)據(jù)字典,了解如何請求和使用其中的信息。(3)如果目標(biāo)數(shù)據(jù)存儲與系統(tǒng)的多臺計算機(jī)上,對其進(jìn)行必需的分布式處理。(4)在用戶、局部DBMS和其他計算實體的DBMS之間進(jìn)行協(xié)調(diào),發(fā)揮接口功能。(5)在異構(gòu)分布式處理器環(huán)境中提供數(shù)據(jù)和進(jìn)行移植的支持,其中異構(gòu)是指各個站點的軟件、硬件之間存在著差別。分布式數(shù)據(jù)庫管理系統(tǒng)2.DDBMS組成模塊DDBMS由本地DBMS模塊、數(shù)據(jù)連接模塊、全局系統(tǒng)目錄模塊和分布式DBMS模塊四個基本模塊組成。1)本地DBMS模塊本地DBMS模塊(L-DBMS),是一個標(biāo)準(zhǔn)的DBMS,負(fù)責(zé)管理本站點數(shù)據(jù)庫中數(shù)據(jù),具有自身的系統(tǒng)目錄表,其中存儲的是本站點上數(shù)據(jù)的總體信息。在同構(gòu)系統(tǒng)中,每個站點的L-DBMS實現(xiàn)相同,而在異構(gòu)系統(tǒng)中則不相同。分布式數(shù)據(jù)庫管理系統(tǒng)2)數(shù)據(jù)連接模塊數(shù)據(jù)連接模塊(DataCommunication,DC)作為一種可以讓所有站點與其他站點相互連接的軟件,包含了站點及其連接方面的信息。3)全局系統(tǒng)目錄模塊全局系統(tǒng)目錄模塊(GlobalSystemCatalog,GSC)除了具有集中式數(shù)據(jù)庫的數(shù)數(shù)據(jù)目錄(數(shù)據(jù)字典)內(nèi)容之外,還包含數(shù)據(jù)分布信息,例如,分片、復(fù)制和分配模式,其本身可以像關(guān)系一樣被分片和復(fù)制分配到各個站點。一個全復(fù)制的GSC允許站點自治(SiteAutonomy),但如果某個站點的GSC改動,其他站點的GSC也需要相應(yīng)變動。分布式數(shù)據(jù)庫管理系統(tǒng)4)分布式DBMS模塊分布式DBMS模塊(D-DBMS)是整個系統(tǒng)的控制中心,主要負(fù)責(zé)執(zhí)行全局事務(wù),協(xié)調(diào)各個局部DBMS以完成全局應(yīng)用,保證數(shù)據(jù)庫的全局一致性。分布式數(shù)據(jù)庫管理系統(tǒng)同構(gòu)系統(tǒng)與異構(gòu)系統(tǒng)分布式數(shù)據(jù)庫可以根據(jù)各個站點的數(shù)據(jù)庫管理系統(tǒng)是否相同劃分為同構(gòu)(Homogeneous)系統(tǒng)和異構(gòu)(Heterogeneous)系統(tǒng)。1)同構(gòu)系統(tǒng)同構(gòu)系統(tǒng)中所有站點都使用相同的數(shù)據(jù)庫管理系統(tǒng),相互之間彼此熟悉,合作處理客戶需求。在同構(gòu)系統(tǒng)中,各個站點都無法獨自更改模式或數(shù)據(jù)庫管理系統(tǒng)。為了,保證涉及多個站點的事務(wù)順利執(zhí)行,數(shù)據(jù)庫管理系統(tǒng)還需要和其他站點合作以交換事務(wù)信息。同構(gòu)系統(tǒng)又可以分為兩種類型:分布式數(shù)據(jù)庫管理系統(tǒng)(1)同構(gòu)異質(zhì)系統(tǒng)各站點采用同一數(shù)據(jù)模型和同一型號DBMS。(2)同構(gòu)異質(zhì)系統(tǒng)各站點采用同一數(shù)據(jù)模型,但采用不同型號DBMS。2)異構(gòu)系統(tǒng)異構(gòu)系統(tǒng)中不同站點有不同模式和數(shù)據(jù)庫管理系統(tǒng),各個站點之間可能彼此并不熟悉,在事務(wù)處理過程中,它們僅僅提供有限功能。模式差別是查詢處理中難以解決的問題,而軟件的差別則成為全局應(yīng)用的主要障礙。分布式數(shù)據(jù)庫系統(tǒng)DDBS基本概念分布式數(shù)據(jù)系統(tǒng)(DistributedDatabaseSystem,DDBS)由DDB和DDBMS組成,其要點是系統(tǒng)中的數(shù)據(jù)物理上分布存放在通過計算機(jī)網(wǎng)絡(luò)連接的不同站點計算機(jī)中,這些數(shù)據(jù)在邏輯上是一個整體,由系統(tǒng)統(tǒng)一管理并被全體用戶共享,每一個站點都有自治即獨立處理能力以完成局部應(yīng)用,而每一站點也參與至少一種全局應(yīng)用,并且通過網(wǎng)絡(luò)通信子系統(tǒng)執(zhí)行全局應(yīng)用。集中式數(shù)據(jù)庫系統(tǒng)由計算機(jī)系統(tǒng)(硬件和操作系統(tǒng)及應(yīng)用軟件系統(tǒng))、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)和用戶(一般用戶與數(shù)據(jù)庫管理人員)組成。分布式數(shù)據(jù)庫系統(tǒng)分布式數(shù)據(jù)庫系統(tǒng)在此基礎(chǔ)上結(jié)合自身特點進(jìn)行了擴(kuò)充。1)數(shù)據(jù)庫分為局部數(shù)據(jù)庫(LDB)和全局?jǐn)?shù)據(jù)庫(GDB)。2)數(shù)據(jù)庫管理系統(tǒng)分為局部數(shù)據(jù)庫管理系統(tǒng)(LDBMS)和全局?jǐn)?shù)據(jù)庫管理系統(tǒng)(GDBMS)。3)用戶分為局部用戶和全局用戶。4)數(shù)據(jù)庫管理人員分為局部數(shù)據(jù)庫管理人員(LDBA)和全局?jǐn)?shù)據(jù)庫管理人員(GDBA)。分布式數(shù)據(jù)庫系統(tǒng)2.DDBS基本性質(zhì)1)數(shù)據(jù)分布透明性質(zhì)2)集中與自治相結(jié)合控制機(jī)制3)適度數(shù)據(jù)冗余性質(zhì)4)事務(wù)管理分布性質(zhì)分布式數(shù)據(jù)庫系統(tǒng)2.DDBS基本性質(zhì)1)數(shù)據(jù)分布透明性質(zhì)在DDBS中,數(shù)據(jù)獨立性包括數(shù)據(jù)的邏輯獨立性、數(shù)據(jù)的物理獨立性和數(shù)據(jù)的分布透明性,因而具有更廣泛含義。數(shù)據(jù)分布透明性要求用戶或應(yīng)用程序不必關(guān)心數(shù)據(jù)的邏輯分片、數(shù)據(jù)物理位置分配細(xì)節(jié)以及各個站點數(shù)據(jù)庫使用何種數(shù)據(jù)模型,可以像使用集中式數(shù)據(jù)庫一樣對物理上分布的數(shù)據(jù)庫進(jìn)行數(shù)據(jù)操作。分布式數(shù)據(jù)庫系統(tǒng)2.DDBS基本性質(zhì)2)集中與自治相結(jié)合控制機(jī)制在DDBS中,數(shù)據(jù)共享有兩個層面:一是局部共享,即每個站點上各個用戶可以共享本站點上局部數(shù)據(jù)庫中的數(shù)據(jù),以完成局部應(yīng)用;二是全局共享,即系統(tǒng)中用戶可以共享各個站點上存儲的數(shù)據(jù),以完成全局應(yīng)用。相應(yīng)控制機(jī)構(gòu)也就分為兩個層面:集中控制和自治控制。局部DBMS獨立管理局部數(shù)據(jù)庫,具有自治功能,同時系統(tǒng)也設(shè)有集中控制機(jī)制,協(xié)調(diào)各個局部DBMS工作,執(zhí)行全局管理功能。分布式數(shù)據(jù)庫系統(tǒng)2.DDBS基本性質(zhì)3)適度數(shù)據(jù)冗余性質(zhì)在DDBS中,數(shù)據(jù)冗余可以作為提高系統(tǒng)可靠性、可用性和改善其性能的基本技術(shù)手段。當(dāng)一個站點出現(xiàn)故障時,通過數(shù)據(jù)冗余,系統(tǒng)就可以對另一個站點相同副本進(jìn)行操作,從而避免了因個別站點故障而使得整個系統(tǒng)出現(xiàn)癱瘓。同時,系統(tǒng)也可通過選擇距用戶最近的數(shù)據(jù)副本進(jìn)行操作,減少通信代價,改善整個系統(tǒng)性能。由于DDBS是集中式數(shù)據(jù)庫的拓廣,數(shù)據(jù)冗余也會帶來各個冗余副本之間數(shù)據(jù)可能不一致的問題,設(shè)計時需要權(quán)衡利弊,優(yōu)化選擇。分布式數(shù)據(jù)庫系統(tǒng)2.DDBS基本性質(zhì)4)事務(wù)管理分布性質(zhì)數(shù)據(jù)分布引發(fā)事務(wù)執(zhí)行和管理分布,一個全局事務(wù)執(zhí)行能夠分解為在若干站片點上子事務(wù)(局部事務(wù))的執(zhí)行。事務(wù)的ACID性質(zhì)和事務(wù)恢復(fù)具有分布性特點。第17章分布式數(shù)據(jù)庫與MySQL的復(fù)制、集群技術(shù)分布式數(shù)據(jù)庫系統(tǒng)分布式數(shù)據(jù)存儲MySQL復(fù)制技術(shù)MySQL集群技術(shù)知識點小結(jié)分布式數(shù)據(jù)存儲分布式數(shù)據(jù)庫系統(tǒng)各個站點的數(shù)據(jù)在邏輯上是一個整體,數(shù)據(jù)的存放是分散的。對于關(guān)系數(shù)據(jù)庫中的關(guān)系R,通常使用“數(shù)據(jù)復(fù)制”和“數(shù)據(jù)分片”來存儲數(shù)據(jù)庫。1.數(shù)據(jù)復(fù)制
數(shù)據(jù)復(fù)制(DataReplication)即將關(guān)系R的若干完全相同的副本分別存儲在不同的站點中。2.數(shù)據(jù)分片
數(shù)據(jù)分片(DataFragmentation)即將關(guān)系R分割成幾個部分,每個部分存儲在不同站點中。
數(shù)據(jù)復(fù)制和數(shù)據(jù)分片可以結(jié)合起來使用,即將關(guān)系R分割成幾個片之后,每個分片再擁有幾個副本,分別存儲在不同的站點之中。數(shù)據(jù)復(fù)制方法數(shù)據(jù)復(fù)制有部分復(fù)制和全部復(fù)制兩種方式。部分復(fù)制是指在某些站點存儲一個副本。全部復(fù)制是在系統(tǒng)每個站點都存儲一個副本。數(shù)據(jù)復(fù)制的優(yōu)勢(1)連續(xù)操作性(2)系統(tǒng)自治性數(shù)據(jù)復(fù)制方法數(shù)據(jù)復(fù)制的問題(1)更新傳播:存在多個副本,一旦某個副本發(fā)生改動操作,如何進(jìn)行操作使得所有副本保持一致。(2)冗余控制:數(shù)據(jù)復(fù)制就是數(shù)據(jù)冗余,數(shù)據(jù)冗余可以分為完全冗余、部分冗余和非冗余分配三類。(3)數(shù)據(jù)獨立:復(fù)制獨立性是指用戶操作時感覺不到副本的存在,數(shù)據(jù)就好像沒有復(fù)制過一樣。數(shù)據(jù)分片將給定的關(guān)系分割為若干片段,但用戶感覺不到數(shù)據(jù)分片,用戶能感覺到的仍然是一個完整的數(shù)據(jù)視圖。注意的問題:分片存儲的數(shù)據(jù)重構(gòu)后仍然是完整的。將經(jīng)常使用的數(shù)據(jù)放在本地存儲,這樣大部分的數(shù)據(jù)存儲操作在本地站點進(jìn)行,能減少大量的網(wǎng)絡(luò)開銷。分片技術(shù)的分類:“水平分片”、“垂直分片”、“導(dǎo)出分片”和“混合分片”。數(shù)據(jù)分片數(shù)據(jù)分片滿足的條件:1.完備性條件要求必須將全局關(guān)系的所有數(shù)據(jù)都映射到分片中,在劃分片段時不允許存在這樣的屬性,其屬于全局關(guān)系但不屬于任何一個數(shù)據(jù)分片。2.不相交條件要求一個全局關(guān)系被分片后所得到的各個數(shù)據(jù)分片互不重疊,但對垂直分片的主鍵除外。3.可重構(gòu)條件要求劃分后的數(shù)據(jù)分片可以通過一定的操作重新構(gòu)建全局關(guān)系。對干水平分片可以通過并操作重構(gòu)全局關(guān)系,對于垂直分片可以通過連接操作構(gòu)建全局關(guān)系。數(shù)據(jù)分片1.水平分片水平分片是指按照一定條件把全局關(guān)系分成若干不相交的元組子集,每個子集均為關(guān)系的一個片段,都有一定的邏輯意義。水平分片可以通過對關(guān)系進(jìn)行選擇運(yùn)算實現(xiàn)。行的方向(水平的方向)將關(guān)系分為若干不相交的元組子集,每一個子集都有一定的邏輯意義。例:數(shù)據(jù)分片1.水平分片分片的結(jié)果:學(xué)生信息關(guān)系S-CS學(xué)生信息關(guān)系S-IS數(shù)據(jù)分片2.垂直分片垂直分片是指按照列的方向(垂直的方向)將關(guān)系分為若干子集,每一個子集保留了關(guān)系的某些屬性。例:數(shù)據(jù)分片2.垂直分片分片的結(jié)果:學(xué)生信息關(guān)系S-1學(xué)生信息關(guān)系S-2數(shù)據(jù)分片3.導(dǎo)出分片導(dǎo)出分片是指導(dǎo)出水平分片,即定義水平分片的選擇條件不是本身屬性的條件而是其他關(guān)系屬性的條件。設(shè)有如圖l8-12所示的學(xué)生選課關(guān)系表SC(SNO,Cno,Grade)。例:數(shù)據(jù)分片3.導(dǎo)出分片學(xué)生年齡小于20的學(xué)生課程關(guān)系分片SC-1(Sno,Cno,GRADE)是下述查詢的結(jié)果:SELCETSno,Cno,GRADE FROMStudent,SCWHEREStudent.Sno=SC.SnoANDStudent.Sa<20;學(xué)生年齡大于或等于19的學(xué)生課程關(guān)系分片SC-1(Sno,Cno,GRADE)是下述查詢的結(jié)果:SELCETSno,Cno,GRADE FROMStudent,SCWHEREStudent.Sno=SC.SnoANDStudent.Sa=>19;數(shù)據(jù)分片4.混合分片混合分片就是交替使用水平分片和垂直分片,比如先用水平分片的方式得到某一個分片再采用垂直分片的方式對這個分片進(jìn)行再分片例:先進(jìn)行水平分片(分片R1和R2),再進(jìn)行垂直分片(對R1進(jìn)行垂直分片:R11,和R12)。先進(jìn)行垂直分片(分片R1和R2),再進(jìn)行水平分片(對R2進(jìn)行垂直分:R21、R22和R23)。第17章分布式數(shù)據(jù)庫與MySQL的復(fù)制、集群技術(shù)分布式數(shù)據(jù)庫系統(tǒng)分布式數(shù)據(jù)存儲MySQL復(fù)制技術(shù)MySQL集群技術(shù)知識點小結(jié)MySQL復(fù)制技術(shù)MySQL復(fù)制是指從一個MySQL主服務(wù)器(master)將數(shù)據(jù)復(fù)制到另一臺或多臺MySQL從服務(wù)器(slaves)的過程,將主數(shù)據(jù)庫的DDL和DML操作通過二進(jìn)制日志傳到復(fù)制服務(wù)器上,然后在從服務(wù)器上對這些日志重新執(zhí)行,從而使得主從服務(wù)器的數(shù)據(jù)保持同步。步驟:1)主服務(wù)器將數(shù)據(jù)的改變記錄到二進(jìn)制日志(binarylog)中。2)從服務(wù)器將主服務(wù)器的binarylogevents復(fù)制到它的中繼日志(relaylog)中。3)從服務(wù)器重做中繼日志中的事件,將數(shù)據(jù)的改變與從服務(wù)器保持同步。第17章分布式數(shù)據(jù)庫與MySQL的復(fù)制、集群技術(shù)分布式數(shù)據(jù)庫系統(tǒng)分布式數(shù)據(jù)存儲MySQL復(fù)制技術(shù)MySQL集群技術(shù)知識點小結(jié)MySQL集群技術(shù)MySQLCluster基本概念MySQLCluster是一種MySQL集群的技術(shù),是由一組計算機(jī)構(gòu)成的,每臺計算機(jī)可以存放一個或者多個節(jié)點,其中包括MySQL服務(wù)器、DNBCluster的數(shù)據(jù)節(jié)點、其他管理節(jié)點,以及專門的數(shù)據(jù)訪問程序,這些節(jié)點組合在一起,就可以為應(yīng)用提供高性能、高可用性和可縮放性的Cluster數(shù)據(jù)管理。MySQL集群技術(shù)MySQLCluster訪問過程應(yīng)用通常使用一定的負(fù)載均衡算法將對數(shù)據(jù)的訪問分散到不同的SQL節(jié)點,SQL節(jié)點對數(shù)據(jù)節(jié)點進(jìn)行數(shù)據(jù)訪問并從數(shù)據(jù)節(jié)點返回數(shù)據(jù)結(jié)果,管理節(jié)點僅僅只是對SQL節(jié)點和數(shù)據(jù)節(jié)點進(jìn)行配置管理,MySQLCluster的系統(tǒng)架構(gòu)。MySQL集群技術(shù)MySQLCluster節(jié)點分類:管理節(jié)點主要用來對其他節(jié)點進(jìn)行管理。SQL節(jié)點即MySQLd服務(wù)器,應(yīng)用不能直接訪問數(shù)據(jù)節(jié)點,只能通過SQL節(jié)點訪問數(shù)據(jù)節(jié)點來返回數(shù)據(jù)。數(shù)據(jù)節(jié)點用來存放Cluster里面的數(shù)據(jù)。第17章分布式數(shù)據(jù)庫與MySQL的復(fù)制、集群技術(shù)分布式數(shù)據(jù)庫系統(tǒng)分布式數(shù)據(jù)存儲MySQL復(fù)制技術(shù)MySQL集群技術(shù)知識點小結(jié)知識點小結(jié)本章知識小結(jié):分布式數(shù)據(jù)庫MySQL的復(fù)制、集群技術(shù)的基本概念數(shù)據(jù)庫原理與應(yīng)用基礎(chǔ)第18章非關(guān)系型數(shù)據(jù)庫—NoSQL第18章非關(guān)系型數(shù)據(jù)庫—NoSQLNoSQL概述NoSQL數(shù)據(jù)庫的優(yōu)勢比較NoSQL數(shù)據(jù)庫的類型NoSQL數(shù)據(jù)庫選用原則NoSQL的CAP理論主流NoSQL數(shù)據(jù)庫知識點小結(jié)第18章非關(guān)系型數(shù)據(jù)庫—NoSQL隨著互聯(lián)網(wǎng)Web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)付Web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的Web2.0純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫的產(chǎn)生是為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn)。本章重點介紹NoSQL的相關(guān)知識。第18章非關(guān)系型數(shù)據(jù)庫—NoSQLNoSQL概述NoSQL數(shù)據(jù)庫的優(yōu)勢比較NoSQL數(shù)據(jù)庫的類型NoSQL數(shù)據(jù)庫選用原則NoSQL的CAP理論主流NoSQL數(shù)據(jù)庫知識點小結(jié)NoSQL概述隨著大數(shù)據(jù)的興起,NoSQL數(shù)據(jù)庫現(xiàn)在成了一個極其熱門的新領(lǐng)域?!癗oSQL”不是“NoSQL”的縮寫,它是“NotOnlySQL”的縮寫。它的意義是:適用關(guān)系型數(shù)據(jù)庫的時候就便用關(guān)系型數(shù)據(jù)庫,不適用的時候也沒有必要非使用關(guān)系型數(shù)據(jù)庫不可,可以考慮使用更加合適的數(shù)據(jù)存儲。為彌補(bǔ)關(guān)系型數(shù)據(jù)庫的不足,各種各樣的NoSQL數(shù)據(jù)庫應(yīng)運(yùn)而生。第18章非關(guān)系型數(shù)據(jù)庫—NoSQLNoSQL概述NoSQL數(shù)據(jù)庫的優(yōu)勢比較NoSQL數(shù)據(jù)庫的類型NoSQL數(shù)據(jù)庫選用原則NoSQL的CAP理論主流NoSQL數(shù)據(jù)庫知識點小結(jié)關(guān)系型數(shù)據(jù)庫的優(yōu)勢1.通用性及高性能2.突出的優(yōu)勢1>保持?jǐn)?shù)據(jù)的一致性(事務(wù)處理);2>由于以標(biāo)準(zhǔn)化為前提,數(shù)據(jù)更新的開銷很?。ㄏ嗤淖侄位旧隙贾挥幸惶帲?>可以進(jìn)行JOIN等復(fù)雜查詢;4>存在很多實際成果和專業(yè)技術(shù)信息(成熟的技術(shù))。關(guān)系型數(shù)據(jù)庫的劣勢1.大量數(shù)據(jù)的寫入處理存在困難2.對有數(shù)據(jù)更新的表做索引或表結(jié)構(gòu)(schema)變更處理不利3.字段不固定時應(yīng)用存在缺陷4.對簡單查詢需要快速返回結(jié)果的處理響應(yīng)慢NoSQL數(shù)據(jù)庫的優(yōu)勢1.靈活的可擴(kuò)展性2.輕松應(yīng)對海量數(shù)據(jù)3.維護(hù)簡單4.經(jīng)濟(jì)5.靈活的數(shù)據(jù)模型第18章非關(guān)系型數(shù)據(jù)庫—NoSQLNoSQL概述NoSQL數(shù)據(jù)庫的優(yōu)勢比較NoSQL數(shù)據(jù)庫的類型NoSQL數(shù)據(jù)庫選用原則NoSQL的CAP理論主流NoSQL數(shù)據(jù)庫知識點小結(jié)NoSQL數(shù)據(jù)庫的類型NoSQL的官方網(wǎng)站()上已經(jīng)有超過225種數(shù)據(jù)庫。具有代表性的NoSQL數(shù)據(jù)庫主要有鍵值(Key/Value)存儲、面向文檔的數(shù)據(jù)庫及面向列的數(shù)據(jù)庫三種類型。鍵值(Key/Value)存儲鍵值(Key/Value)存儲的數(shù)據(jù)庫是最常見的NoSQL數(shù)據(jù)庫,它的數(shù)據(jù)是以鍵值的形式存儲的。它的處理速度非???,基本上只能通過鍵查詢獲取數(shù)據(jù)。根據(jù)數(shù)據(jù)的保存方式可以分為臨時性、永久性和兩者兼具3種。鍵值(Key/Value)存儲1.臨時性:“數(shù)據(jù)有可能丟失”Memcached屬于這種類型。Memcached把所有數(shù)據(jù)都保存在內(nèi)存中,保存和讀取的速度非??欤钱?dāng)Memcached停止的時候,數(shù)據(jù)就不存在了。由于數(shù)據(jù)保存在內(nèi)存中,所以無法操作超出內(nèi)存容量的數(shù)據(jù)(舊數(shù)據(jù)會丟失)。有如下特點:1>在內(nèi)存中保存數(shù)據(jù);2>可以進(jìn)行非??焖俚谋4婧妥x取處理;3>數(shù)據(jù)有可能丟失。鍵值(Key/Value)存儲2.永久性:“數(shù)據(jù)不會丟失”TokyoTyrant、Flare和ROMA等屬于這種類型這里的鍵值存儲不像Memcached那樣在內(nèi)存中保存數(shù)據(jù),而是把數(shù)據(jù)保存在硬盤上。與Memcached在內(nèi)存中處理數(shù)據(jù)比起來,由于必然要發(fā)生對硬盤的IO操作,所以性能上還是有差距的。但數(shù)據(jù)不會丟失是它最大的優(yōu)勢。有如下特點:1>在硬盤上保存數(shù)據(jù);2>可以進(jìn)行非??焖俚谋4婧妥x取處理(但無法與Memcached相比);3>數(shù)據(jù)不會丟失。鍵值(Key/Value)存儲3.兩者兼具型Redis屬于這種類型。Redis臨時性和永久性兼具,且集合了臨時性鍵值存儲和永久性鍵值存儲的優(yōu)點。Redis首先把數(shù)據(jù)保存到內(nèi)存中,在滿足特定條件(默認(rèn)是15分鐘一次以上,5分鐘內(nèi)10個以上,1分鐘內(nèi)10000個以上的鍵發(fā)生變更)的時候?qū)?shù)據(jù)寫入到硬盤中。這樣既確保了內(nèi)存中數(shù)據(jù)的處理速度,又可以通過寫入硬盤來保證數(shù)據(jù)的永久性。這種類型的數(shù)據(jù)庫特別適舌合于處理數(shù)組類型的數(shù)據(jù)。有如下特點:1>同時在內(nèi)存和硬盤上保存數(shù)據(jù);2>可以進(jìn)行非??焖俚谋4婧妥x取處理;3>保存在硬盤上的數(shù)據(jù)不會消失(可以恢復(fù));4>適合于處理數(shù)組類型的數(shù)據(jù)。面向文檔的數(shù)據(jù)庫MongoDB和CouchDB屬于這種類型。1.不定義表結(jié)構(gòu)特征:即使不定義表結(jié)構(gòu),也可以像定義了表結(jié)構(gòu)一樣使用。2.可以使用復(fù)雜的查詢條件跟鍵值存儲不同的是,面向文檔的數(shù)據(jù)庫可以通過復(fù)雜的查詢條件來獲取數(shù)據(jù)。這是非常容易使用的NoSQL數(shù)據(jù)庫。有如下特點:1>不需要定義表結(jié)構(gòu);2>可以利用復(fù)雜的查詢條件。面向列的數(shù)據(jù)庫Cassandra、Hbase和HyperTable屬于這種類型。1.面向行的數(shù)據(jù)庫和面向列的數(shù)據(jù)庫普通的關(guān)系型數(shù)據(jù)庫(面向行的數(shù)據(jù)庫)都是以行為單位來存儲數(shù)據(jù)的,擅長進(jìn)行以行為單位的數(shù)據(jù)處。面向列的數(shù)據(jù)庫是以列為單位來存儲數(shù)據(jù)的,擅長以列為單位讀入數(shù)據(jù)。2.高擴(kuò)展性有如下特點:(1)高擴(kuò)展性(特別是寫入處理):(2)應(yīng)用十分困難。第18章非關(guān)系型數(shù)據(jù)庫—NoSQLNoSQL概述NoSQL數(shù)據(jù)庫的優(yōu)勢比較NoSQL數(shù)據(jù)庫的類型NoSQL數(shù)據(jù)庫選用原則NoSQL的CAP理論主流NoSQL數(shù)據(jù)庫知識點小結(jié)NoSQL數(shù)據(jù)庫選用原則1.并非對立而是互補(bǔ)的關(guān)系關(guān)系型數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫與其說是對立的(替代關(guān)系),倒不如說是互補(bǔ)的。通常情況下使用關(guān)系型數(shù)據(jù)庫,在適合使用NoSQL的時候使用NoSQL數(shù)據(jù)庫。2.量材適用:“更高的處理速度”和“更恰當(dāng)?shù)臄?shù)據(jù)存儲”3.增加了數(shù)據(jù)存儲的方式第18章非關(guān)系型數(shù)據(jù)庫—NoSQLNoSQL概述NoSQL數(shù)據(jù)庫的優(yōu)勢比較NoSQL數(shù)據(jù)庫的類型NoSQL數(shù)據(jù)庫選用原則NoSQL的CAP理論主流NoSQL數(shù)據(jù)庫知識點小結(jié)NoSQL系統(tǒng)是分布式系統(tǒng)分布式系統(tǒng)(DistributedSystem)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng),具有高度的透明性。透明性是指每一個節(jié)點對用戶的應(yīng)用來說都是透明的,看不出是本地還是遠(yuǎn)程。在分布式數(shù)據(jù)庫系統(tǒng)中,用戶感覺不到數(shù)據(jù)是分布的,即用戶不需要知道關(guān)系是否分割、有無副本、數(shù)據(jù)存于哪臺機(jī)器及操作在哪臺機(jī)器上執(zhí)行等。NoSQL系統(tǒng)是分布式系統(tǒng),因為為用戶是通過一些API接口來訪問它們,并不知道其最終內(nèi)部工作需要由很多臺機(jī)器協(xié)同完成。CAP理論闡述字母“C”、“A”和“P”分別代表了強(qiáng)一致性、可用性和分區(qū)容錯性三個特征。1.強(qiáng)一致性(Consistency)系統(tǒng)在執(zhí)行過某項操作后仍然處于一致的狀態(tài)。在分布式系統(tǒng)中,更新操作執(zhí)行成功后所有的用戶都應(yīng)該讀取到最新的值,這樣的系統(tǒng)被認(rèn)為具有強(qiáng)一致性。2.可用性(Availability)每一個操作總是能夠在一定的時間內(nèi)返回結(jié)果。3.分區(qū)容錯性(PartitionTolerance)分區(qū)容錯性可以理解為系統(tǒng)在存在網(wǎng)絡(luò)分區(qū)的情況仍然可以接受請求(滿足一致性和可用性)。第18章非關(guān)系型數(shù)據(jù)庫—NoSQLNoSQL概述NoSQL數(shù)據(jù)庫的優(yōu)勢比較NoSQL數(shù)據(jù)庫的類型NoSQL數(shù)據(jù)庫選用原則NoSQL的CAP理論主流NoSQL數(shù)據(jù)庫知識點小結(jié)主流NoSQL數(shù)據(jù)庫主流NoSQL數(shù)據(jù)庫HBaseRedisMongoDBCouchbaseLevelDBHBaseHBaseHBase是ApacheHadoop中的一個子項目,屬于bigtable的開源版本,所實現(xiàn)的語言為Java(故依賴JavaSDK)。HBase依托于Hadoop的HDFS(分布式文件系統(tǒng))作為最基本存儲基礎(chǔ)單元。HBase在列上實現(xiàn)了BigTable論文提到的壓縮算法、內(nèi)存操作和布隆過濾器。HBase的表能夠作為MapReduce任務(wù)的輸入和輸出,可以通過JavaAPI來訪問數(shù)據(jù),也可以通過REST、Avro或者Thrift的API來訪問。HBaseHBase的特點:1.1數(shù)據(jù)格式數(shù)據(jù)存儲是基于列(ColumnFamily)的,且非常松散允許表下某行某列值為空時不做任何存儲(也不占位),減少了空間占用也提高了讀性能。1.2性能HStore存儲是HBase存儲的核心,它由兩部分組成,一部分是MemStore,一部分是StoreFiles。1.3數(shù)據(jù)版本能直接檢索到往昔版本的數(shù)據(jù),這意味著我們更新數(shù)據(jù)時,舊數(shù)據(jù)并沒有即時被清除,而是保留著。1.4CAP類別:CP類型HBaseHBase的優(yōu)缺點:優(yōu)勢1.存儲容量大,一個表可以容納上億行,上百萬列;2.可通過版本進(jìn)行檢索,能搜到所需的歷史版本數(shù)據(jù);3.負(fù)載高時,可通過簡單的添加機(jī)器來實現(xiàn)水平切分?jǐn)U展,跟Hadoop的無縫集成保障了其數(shù)據(jù)可靠性(HDFS)和海量數(shù)據(jù)分析的高性能(MapReduce);4.在第3點的基礎(chǔ)上可有效避免單點故障的發(fā)生。4.API相比其他NoSql的相對笨拙。HBaseHBase的優(yōu)缺點:缺點1.基于Java語言實現(xiàn)及Hadoop架構(gòu)意味著其API更適用于Java項目;2.node開發(fā)環(huán)境下所需依賴項較多、配置麻煩(或不知如何配置,如持久化配置),缺乏文檔;3.占用內(nèi)存很大,且鑒于建立在為批量分析而優(yōu)化的HDFS上,導(dǎo)致讀取性能不高;4.API相比其他NoSql的相對笨拙。HBaseHBase的適用場景:1.bigtable類型的數(shù)據(jù)存儲;2.對數(shù)據(jù)有版本查詢需求;3.應(yīng)對超大數(shù)據(jù)量要求擴(kuò)展簡單的需求。RedisRedisRedis是一個開源的使用ANSIC語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。目前由VMware主持開發(fā)工作。RedisRedis的特點:1.1數(shù)據(jù)格式:Redis通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因為值(value)可以是字符串(String),哈希(Hash/Map),列表(list),集合(sets)和有序集合(sortedsets)五種類型。1.2性能:Redis數(shù)據(jù)庫完全在內(nèi)存中,因此處理速度非??臁?.3持久化:通過定時快照(snapshot)和基于語句的追加(AppendOnlyFile,aof)兩種方式,redis可以支持?jǐn)?shù)據(jù)持久化。1.4CAP類別:CP類型。RedisRedis的優(yōu)缺點:優(yōu)勢1.非常豐富的數(shù)據(jù)結(jié)構(gòu);2.Redis提供了事務(wù)的功能,可以保證一串命令的原子性,中間不會被任何操作打斷;3.數(shù)據(jù)存在內(nèi)存中,讀寫非常的高速,可以達(dá)到10w/s的頻率。RedisRedis的優(yōu)缺點:缺點1.Redis3.0后才出來官方的集群方案,但仍存在一些架構(gòu)上的問題;2.持久化功能體驗不佳。3.由于是內(nèi)存數(shù)據(jù)庫,所以,單臺機(jī)器存儲的數(shù)據(jù)量,跟機(jī)器本身的內(nèi)存大小。雖然redis本身有key過期策略,但是還是需要提前預(yù)估和節(jié)約內(nèi)存。如果內(nèi)存增長過快,需要定期刪除數(shù)據(jù)。適用場景適用于數(shù)據(jù)變化快且數(shù)據(jù)庫大小可遇見(適合內(nèi)存容量)的應(yīng)用程序。MongoDBMongoDBMongoDB是一個高性能,開源,無模式的文檔型數(shù)據(jù)庫,開發(fā)語言是C++。它在許多場景下可用于替代傳統(tǒng)的關(guān)系型數(shù)據(jù)庫或鍵/值存儲方式。MongoDBMongoDB的特點1.1數(shù)據(jù)格式在MongoDB中,文檔是對數(shù)據(jù)的抽象,它的表現(xiàn)形式是BSON(BinaryJSON)。BSON是一個輕量級的二進(jìn)制數(shù)據(jù)格式。MongoDB能夠使用BSON,并將BSON作為數(shù)據(jù)的存儲存放在磁盤中。1.2性能MongoDB目前支持的存儲引擎為內(nèi)存映射引擎。引擎的特點:MongoDB中關(guān)于內(nèi)存管理的代碼非常精簡MongoDB服務(wù)器使用的虛擬內(nèi)存將非常巨大,并將超過整個數(shù)據(jù)文件的大小MongoDBMongoDB的特點1.2性能(續(xù))MongoDB提供了全索引支持:包括文檔內(nèi)嵌對象及數(shù)組。Mongo的查詢優(yōu)化器會分析查詢表達(dá)式,并生成一個高效的查詢計劃。通常能夠極大的提高查詢的效率。1.3持久化MongoDB在1.8版本之后開始支持journal,就是我們常說的redolog,用于故障恢復(fù)和持久化。1.4CAP類別MongoDB比較靈活,可以設(shè)置成strongconsistent(CP類型)或者eventualconsistent(AP類型)。默認(rèn)是CP類型。MongoDBMongoDB的優(yōu)缺點優(yōu)勢1.強(qiáng)大的自動化shading功能;2.全索引支持,查詢非常高效;3.面向文檔(BSON)存儲,數(shù)據(jù)模式簡單而強(qiáng)大;4.支持動態(tài)查詢,查詢指令也使用JSON形式的標(biāo)記,可輕易查詢文檔中內(nèi)嵌的對象及數(shù)組;5.支持javascript表達(dá)式查詢,可在服務(wù)器端執(zhí)行任意的javascript函數(shù)。MongoDBMongoDB的優(yōu)缺點缺點1.單個文檔大小限制為16M,32位系統(tǒng)上,不支持大于2.5G的數(shù)據(jù);2.對內(nèi)存要求比較大,至少要保證熱數(shù)據(jù)(索引,數(shù)據(jù)及系統(tǒng)其他開銷)都能裝進(jìn)內(nèi)存;3.非事務(wù)機(jī)制,無法保證事件的原子性。MongoDBMongoDB的適用場景1.適用于實時的插入、更新與查詢的需求,并具備應(yīng)用程序?qū)崟r數(shù)據(jù)存儲所需的復(fù)制及高度伸縮性;2.非常適合文檔化格式的存儲及查詢;3.高伸縮性的場景:MongoDB非常適合由數(shù)十或者數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫。4.對性能的關(guān)注超過對功能的要求。第18章非關(guān)系型數(shù)據(jù)庫—NoSQLNoSQL概述NoSQL數(shù)據(jù)庫的優(yōu)勢比較NoSQL數(shù)據(jù)庫的類型NoSQL數(shù)據(jù)庫選用原則NoSQL的CAP理論主流NoSQL數(shù)據(jù)庫知識點小結(jié)知識點小結(jié)本章知識小結(jié):NoSQL數(shù)據(jù)庫的概念NoSQL數(shù)據(jù)庫的優(yōu)、劣勢NoSQL數(shù)據(jù)庫類型以及選用原則數(shù)據(jù)庫原理與應(yīng)用基礎(chǔ)第19章PHP+MySQL編程應(yīng)用與實例第19章PHP+MySQL編程應(yīng)用與實例PHP簡介PHP編程基礎(chǔ)使用PHP進(jìn)行MySQL數(shù)據(jù)庫編程學(xué)生信息管理系統(tǒng)開發(fā)實例知識點小結(jié)第19章PHP+MySQL編程應(yīng)用與實例MySQL作為中小型數(shù)據(jù)庫管理系統(tǒng),廣泛應(yīng)用于互聯(lián)網(wǎng)的各種中小型網(wǎng)站或者管理系統(tǒng)中。應(yīng)用環(huán)境主要是LAMP和XAMPP兩種,它們均可使用PHP作為與MySQL數(shù)據(jù)庫進(jìn)行交互的服務(wù)器腳本語言。本章重點介紹腳本語言PHP進(jìn)行MySQL數(shù)據(jù)庫編程開發(fā)的相關(guān)知識。第19章PHP+MySQL編程應(yīng)用與實例PHP簡介PHP編程基礎(chǔ)使用PHP進(jìn)行MySQL數(shù)據(jù)庫編程學(xué)生信息管理系統(tǒng)開發(fā)實例知識點小結(jié)PHP簡介PHP(HypertextPreprocessor,超文本預(yù)處理器)是一種通用開源腳本語言。主要適用于Web開發(fā)領(lǐng)域。PHP的文件后綴名為*.php。PHP作為一種服務(wù)器端的腳本/編程語言,憑借其簡單、面向?qū)ο蟆⒔忉屝?、高性能、獨立于框架、動態(tài)、可移植等特點,成為了當(dāng)前世界上最流行的構(gòu)建B/S模式Web應(yīng)用程序的編程語言之一。支持多平臺,對各種數(shù)據(jù)庫都提供了良好的接口,并且操作簡單。PHP和MySQL目前是Web應(yīng)用的最佳組合。PHP簡介本章主要在環(huán)境XAMPP(Windows+Apache+MySQL+PHP/Per/Python組合)下,介紹PHP作為服務(wù)器腳本,MySQL數(shù)據(jù)庫編程。第19章PHP+MySQL編程應(yīng)用與實例PHP簡介PHP編程基礎(chǔ)使用PHP進(jìn)行MySQL數(shù)據(jù)庫編程學(xué)生信息管理系統(tǒng)開發(fā)實例知識點小結(jié)PHP編程基礎(chǔ)使用PHP編程的最大好處是學(xué)習(xí)這種編程語言非常容易,只需要很少的編程知識就可以使用PHP建立一個真正交互的Web站點。PHP網(wǎng)頁文件會被當(dāng)作一般的HTML網(wǎng)頁文件來處理,并且在編輯時可以使用編輯HTML的常規(guī)方法來編寫PHP程序。在執(zhí)行PHP程序前,需要配置PHP的運(yùn)行環(huán)境,即Windows下的XAMPP和Linux下的LAMP。PHP編程基礎(chǔ)例:編寫一個PHP的示例程序first.php來理解服務(wù)器端的PHP腳本編程。第一步:利用文本編輯器輸入以下PHP程序,并將其命名為“first.php”。<html><head><title>Thisisthefirstphp</title></head><body><?php $str="helloworld"; echo$str;?></body></html>PHP編程基礎(chǔ)第二步:將“first.php”文件部署在XAMPP平臺環(huán)境中,并放置在XAMPP程序根目錄下。在瀏覽器地址欄中輸入“/d18/first.php”或“http://localhost/d18/first.php”(本書PHP程序運(yùn)行在本地安裝的XAMPP環(huán)境下,其中“”為本地測試IP地址,所有的源程序都在XAMPP安裝環(huán)境的D:\Xampp\htdocs\d18目錄下),若程序成功被執(zhí)行,則輸出結(jié)果如圖所示。PHP編程基礎(chǔ)“<?php”和“?>”之間的這段代碼將會在服務(wù)器端解析,并且輸出該段代碼的執(zhí)行結(jié)果。在上一頁圖所示的頁面上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“查看源代碼”命令,效果如圖所示。第19章PHP+MySQL編程應(yīng)用與實例PHP簡介PHP編程基礎(chǔ)使用PHP進(jìn)行MySQL數(shù)據(jù)庫編程學(xué)生信息管理系統(tǒng)開發(fā)實例知識點小結(jié)使用PHP進(jìn)行MySQL數(shù)據(jù)庫編程PHP的mysql函數(shù)庫可以實現(xiàn)PHP程序?qū)ySQL數(shù)據(jù)庫的各種操作。在利用mysql庫函數(shù)訪問MySQL數(shù)據(jù)庫之前,需要在PHP的配置文件php.ini中,將“;extension=php_mysql.dll”修改為“extension=php_mysql.dll”,即刪除該選項前面的注釋符號“;”,然后重新啟動Web服務(wù)器(例如Apache),這時,PHP程序即可使用mysql函數(shù)庫。通過使用內(nèi)置函數(shù)庫mysql,PHP程序能夠很好地與MySQL數(shù)據(jù)庫進(jìn)行交互。使用PHP進(jìn)行MySQL數(shù)據(jù)庫編程使用這種方式所構(gòu)建的基于B/S模式的Web應(yīng)用程序的工作流程:(1)在用戶計算機(jī)的瀏覽器,通過在地址欄中輸人相應(yīng)URI信息,向網(wǎng)頁服務(wù)器提出交互請求。(2)網(wǎng)頁服務(wù)器收到用戶瀏覽器端的交互請求。(3)網(wǎng)頁服務(wù)器根據(jù)請求尋找服務(wù)器上的網(wǎng)頁。(4)Web應(yīng)用服務(wù)器(例如Apache)執(zhí)行頁面內(nèi)包含的PHP代碼腳本程序。(5)PHP代碼腳本程序通過內(nèi)置的MySQLAPI函數(shù)訪問后臺MySQL數(shù)據(jù)庫服務(wù)器。(6)PHP代碼腳本程序取回后臺MySQL數(shù)據(jù)庫服務(wù)器的查詢結(jié)果。(7)網(wǎng)頁服務(wù)器將查詢處理結(jié)果以HTML文檔的格式返回給用戶瀏覽器端。使用PHP進(jìn)行MySQL數(shù)據(jù)庫編程編程步驟:(1)首先建立與MySQL數(shù)據(jù)庫服務(wù)器的連接。(2)然后選擇要對其進(jìn)行操作的數(shù)據(jù)庫。(3)再執(zhí)行相應(yīng)的數(shù)據(jù)庫操作,包括對數(shù)據(jù)的添加、刪除、修改和查詢等。(4)最后關(guān)閉與MySQL數(shù)據(jù)庫服務(wù)器的連接。以上各步驟,均是通過PHP內(nèi)置函數(shù)庫mysql中相應(yīng)的函數(shù)來實現(xiàn)的。使用PHP進(jìn)行MySQL數(shù)據(jù)庫編程建立與MySQL數(shù)據(jù)庫服務(wù)器的連接:mysql_connect():用于建立非持久連接mysql_connect([<服務(wù)器名>[,<用戶名>[,<密碼>]]])mysql_pconnect():用于建立持久連接mysql_pconnect()([<服務(wù)器名>[,<用戶名>[,<密碼>]]])◆<服務(wù)器名>:可選項,為字符串型,用于指定要連接的數(shù)據(jù)庫服務(wù)器。默認(rèn)值是“l(fā)ocalhost:3306”?!?lt;用戶名>:可選項,為字符串型,用于指定登錄數(shù)據(jù)庫服務(wù)器所使用的用戶名。默認(rèn)值是擁有服務(wù)器進(jìn)程的用戶的名稱,如超級用戶root。◆<密碼>:可選項,為字符串型,用于指定登錄數(shù)據(jù)庫服務(wù)器所的密碼。默認(rèn)為空串。使用PHP進(jìn)行MySQL數(shù)據(jù)庫編程◆函數(shù)mysql_connect()的返回值為資源句柄型(resource)。若其成功執(zhí)行,則退回一個連接標(biāo)識號;否則返回邏輯值FALSE?!粲珊瘮?shù)mysql_connect()建立的連接,當(dāng)數(shù)據(jù)庫操作結(jié)束之后將自動關(guān)閉;而由函數(shù)mysql_pconnect()建立的連接會一直存在,是一種穩(wěn)固持久的鏈接?!魧τ诤瘮?shù)mysql_pconnect()而言,每次連接前都會檢查是否使用了同樣的<服務(wù)器名><用戶名><密碼>進(jìn)行連接,如果有,則直接使用上次的連接,而不會重復(fù)打開?!粲珊瘮?shù)mysql
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)園藝(觀賞園藝學(xué))試題及答案
- 2025年中職安全技術(shù)管理(安全生產(chǎn)法規(guī))試題及答案
- 2025年高職模具設(shè)計與制造(模具設(shè)計制造)試題及答案
- 2025年大學(xué)油氣儲運(yùn)技術(shù)(安全管理)模擬試題
- 2025年中職(老年服務(wù)與管理)老年人心理護(hù)理階段測試試題及答案
- 2025年高職地理學(xué)(人文地理學(xué))試題及答案
- 2025年中職藥品經(jīng)營與管理(藥品經(jīng)營管理)試題及答案
- 2025年大學(xué)(軟件工程)Java程序設(shè)計階段測試卷
- 2025年本科護(hù)理學(xué)(外科護(hù)理)試題及答案
- 2025年大學(xué)四年級(公共事業(yè)管理)公共項目評估試題及答案
- 2025年國家開放大學(xué)《數(shù)據(jù)分析與統(tǒng)計學(xué)基礎(chǔ)》期末考試備考試題及答案解析
- 吊水魚專業(yè)知識培訓(xùn)內(nèi)容課件
- 汽車產(chǎn)業(yè)自動駕駛政策法規(guī)2025年研究報告
- 口岸安全聯(lián)合防控工作制度
- 水處理設(shè)備維護(hù)課件
- 架梁人員安全教育培訓(xùn)課件
- 槐鄉(xiāng)五月課件教學(xué)
- 江蘇省蘇州市2024-2025學(xué)年七年級上學(xué)期期末陽光調(diào)研英語試卷(含答案解析)
- 人教版八年級道德與法治上冊復(fù)習(xí)提綱
- 2025年江蘇保安員考試題庫及答案
- 印刷出版材料配備計劃
評論
0/150
提交評論