+++++++php組件、SQL組件
一、php基本應用
Hypertext Preprocessor 嵌入thml文檔的腳本編程語言,動態網站的開發語言
源碼獲取:
www.php.net
動態網站開發
php, asp, ruby, c, bash<有程序功能的解釋器>
"php通過庫調用完成操作文件"
"bash通過內部程序"
配置文件
php包:為Httpd提供模塊 PHP scripting language for creating dynamic web sites
# rpm -ql php /etc/httpd/conf.d/php.conf //為模塊提供的配置 /usr/lib/httpd/modules/libphp5.so //為prefork提供的模塊 /var/lib/php/session /var/www/icons/php.gif
php-common為php提供運行環境
# rpm -ql php-common /etc/php.ini /etc/php.d/*.ini
配置格式
[Foo] directive = value
[MYSQL|MYSQLI] 連接mysql驅動的配置 持久:基於tcp連接發起mysql協議請求,不斷開,需要維持一個連接 非持久:每次建立都需要拆除連接
php.ini核心配置選項:"http://php.net/manual/zh/ini.core.php" php.ini配置選項列表:"http://php.net/manual/zh/ini.list.php"
配置讀取
CGI, CLI //每次httpd調用程序,啟動子進程時,讀取配置
FastCGI/module //在啟動web程序讀取一次
php添加模塊實現加速:
[EPEL]php-xcache提供php的驅動
執行php代碼: scan[語法] -->parsing[詞法-->表達式] --> complie[表達式-->opcode] --> exec
php-xache能實現,緩存opcode,進程間能相互使用opcode
二、存儲與協議
存儲
文件:
syscall
SQL存儲:(Mysql分支、oracle、mssql)
驅動
MYSQL分支:mysql, mariadb, percona-server, pgsql(enterpriseDB)
NoSQL: mongodb, hbase, redis
NewSQL: 分布式模式管理存儲引擎
協議:關系模型、RDMBS、SQL協議、數據存儲協議
關系模型:表(row: 2NF, column:1NF )
實現
: DBMS(Mysql, MariaDB)數據結構:層次、網狀、關系模型
關系模型的分類:
基本-關系模型 實體-關系模型 基於對象-關系模型 半結構化-關系模型 支持xml解析數據
RDBMS: 滿足關系型數據庫的設計範式
實現
:SQL存儲(MYSQL分支、Oracle、MSSQL)MYSQL分支:mysql官方, mariadb開源, percona-server著名, pgsql皮(enterpriseDB) Oracle: 傳統公司:在智能手機普級的時候,在高級的收音機又有什麽用呢? MS_SQL:微軟
設計範式:
"1NF": 原子性 Atomicity, 例如:一個字段包含班級和專業,不被允許 "2NF":行內有有限個字段惟一標識此行, "3NF":2個表有相同的字段時,1張表字段必須是主鍵 例如: 表1: 專業:非主鍵 表2: 專業:主鍵
滿足範式:
"拆表":將一個大的數據集拆分為小表,表必須滿足範式 "聯合":join, 基於index,算法 "數據集":一個庫、方案、集合內
表:先定義column, 後row
可以沒有row, 必須有column
結構:
SQL引擎: 執行[scan]、分析[parsing]、求解[解決方案]、優化[選擇路徑|修改路徑結果不變] "事務: 多個操作都完成或都不完成(Atomicity原子性, Consistency一致性, Isolating隔離性, Durability持久性) 恢復: 將事務日誌中的數據同步至數據區 鎖: 寫(自己rw,其它人:-)讀(自己:r,其它人:r) 空間管理、緩沖、文件存取接口
SQL協議:
Structure Query Language
結構化查詢語言實現
: SQL引擎或SQL解釋器 SQL引擎(SQL協議): 命令運行、函數、變量數據存儲協議:
C/S架構,mysql協議, mariadb協議, oracle協議, mssql協議(sql server)
實現
:Client: 程序:CLI(mysql), GUI(phpMyadmin) API: SQL接口, php-mysql, ODBC(底層庫) **API:寫程序面向的對象:硬件規格、匯編、syscall、libcall Server: 監聽socket,接收、處理、響應用戶的請求
三、MySQL/MariaDB基本知識
開源RDBMS的實現
MariaDB
MariaDB的來源
作者研發SQL接口:成立AB(瑞典公司),MySQL
MySQL-->Google,facebook改進-->SUN收購-->Oracle收購SUN-->
MySQL讀音:‘My‘ ‘SQL‘
作者不樂意:另起一攤:MariaDB Maria:女兒的名字
Oracle收購SUN的原因
Oracle不能提供硬件到軟件到系統
一體化的解決方案,而IBM(BIG BLUE)可以,為了比肩IBM,就收購了SUN
約束:插入的數據要遵守的限制
約束類型:
主鍵約束
:插入數據,惟一標識本行。Not NULL,惟一惟一鍵
: 插入數據,惟一標識本行。NULL,不惟一外鍵約束
:此表插入內容,取決於另一個表的主鍵檢查性約束
:字段定義表達式,插入數據必須滿足表達式
索引:抽取數據子集,排序
稠密、稀疏:1對1 or 1對多
簡單、組合: 索引字段是1個或多個
聚簇、非聚簇:索引字段與數據是否在一起
關系運算:抽取數據集
選擇、選擇row,WHERE
投影、選擇column, SELECT
連接、join
數據抽象:按視角
視圖層:view
,只能看到數據庫的部分內容:提升用戶體驗
邏輯層:元數據
, 依賴關系
物理層:據存儲格式
:表和文件的對應關系
MySQL安裝:
源碼 rpm
程序官方/項目官方:源碼和二進制程序
OS Vendor系統安裝光盤: rpm 穩定
感激
瑞哥QQ,博客
QQ: 2580259468
博客
關於作者
郵件:[email protected]
QQ: 2192383945
本文出自 “Reading” 博客,請務必保留此出處http://sonlich.blog.51cto.com/12825953/1969965
+++++++php組件、SQL組件