標籤:struggle strive endeavo
一、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引擎(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
部落格
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/07/C3/wKiom1nPLnDSJM8yAABpHaLUCWY511.png" title="QQ20170927224449.png" alt="wKiom1nPLnDSJM8yAABpHaLUCWY511.png" />
關於作者
郵件:[email protected]
QQ: 2192383945
本文出自 “Reading” 部落格,請務必保留此出處http://sonlich.blog.51cto.com/12825953/1969965
+++++++php組件、SQL組件