1. 程式人生 > >+++++++php組件、SQL組件

+++++++php組件、SQL組件

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協議、數據存儲協議

  1. 關系模型:表(row: 2NF, column:1NF )

    實現: DBMS(Mysql, MariaDB)

    數據結構:層次、網狀、關系模型

    關系模型的分類:

     基本-關系模型
    
     實體-關系模型
    
     基於對象-關系模型
    
     半結構化-關系模型
         支持xml解析數據
  2. 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)
     空間管理、緩沖、文件存取接口
  3. SQL協議:Structure Query Language結構化查詢語言

    實現: SQL引擎或SQL解釋器 SQL引擎(SQL協議): 命令運行、函數、變量

  4. 數據存儲協議:

    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組件