码迷,mamicode.com
首页 > 数据库 > 详细

第二十二天 IO模型理论、数据库基础、LAMP平台基础理论及MySQL安装部署

时间:2016-06-04 18:09:58      阅读:341      评论:0      收藏:0      [点我收藏+]

标签:如何   模型   domain   数据库基础   

一、I/O模型理论

     http或https都是基于tcp协议完成通讯。在tcp中使用socket通讯模型,在domain中界定socket是如何定义。
                           domain有三种工作类型:
                                        unix domain:每个socket地址是个文件路径
                                        ipv4 domain:每个socket是ipv4:port
                                         ipv6 domain:每个socket是ipv6:port
                        
                   函数和过程:有返回值为函数。无返回值的称为过程。 
                   I/O:进程调用请求发起之后是否会被挂起
                            阻塞:进程发起I/O调用,recvfrom未完成之前,进程会被挂起,在数据未完成前该进程不能做任何工作;
                            非阻塞:进程发起I/O调用,被调用函数完成不会阻塞当前进程,而是立即返回; 
                            同步:进程发起一个过程或函数调用后,在没有得到结果之前,该调用将不会返回;
                            异步:进程发起一个过程或函数调用后,即使被调用者不能立即结果准备好,但也会返回结果(未完成),内核通知调用者结果什么时候会OK;                             

                   5种I/O模型:
                             同步阻塞:进程发起I/O调用由用户模式转为内核模式,进程进入不可中断睡眠,内核准备数据,数据准备完成后把数据从内核内存复制到进程内存中,复制完成后唤醒进程,
                             同步非阻塞:进程发起I/O调用并处于忙等待状态,进程频繁和内核交互查询数据准备情况,内核数据准备好后,进程由非阻塞(忙等待过程中)转为阻塞状态等待内核复制数据到进程内存中才能继续工作
                             I/O复用:prefork工作于复用I/O模型,当I/O请求发给进程后,进程使用select调用子进程接收请求并阻塞请求I/O准备数据,数据准备完成后通知进程,并用recvform进行数据复制,进程用(select | poll)同时监控多个I/O,实现一个进程可以同时处理多个I/O, 信号驱动I/O:event 工作于信号驱动I/O,进程发起SIGIO(sigaction)调用,进程处于非阻塞状态,数据准备完成后会通知进程,并返回给请求I/O,请求I/O发起recvform进行数据复制
                             异步I/O:nginx支持异步I/O,I/O请求发给进程,进程使用aio传给内核,内核完成数据准备和数据复制后通知进程。该进程一直处于非阻塞模型,文件请求可以异步,网络I/O无法异步
               

               套接字:监听套接字、连接套接字


                    sendfile和sendfile64:可以在内核中直接构建发送报文通过tcp响应客户端请求,实现静态文件直接内核响应
                    mmap()--内存隐射:磁盘数据映射到内核内存中,在映射到进程内存中加快客户端请求响应

                    事件驱动机制:信号通知(水平触发、边缘触发(轻量级触发机制、灵活高效))


二、数据库基础理论

        静态资源:

        动态资源:由某编程语言,编写的代码能读入数据,对数据进行加工,而后输出结果(通常包含html标记,使得生成的结果能被浏览器解析,并显示用户期望的样子)

                程序是由数据和指令组成,

                程序是由算法和数据结构组成,

                开发一个程序,指令存在什么地方,数据存在什么地方?

                        指令:程序文件

                        数据:变量、数组、 文件、数据管理系统(如果大量数据有一定的规格,通过管理系统组织在一起存在磁盘上,能够高效的查询和调用,这个管理系统就是数据库)

          管理工具(系统)都有 编程接口和交互式接口供程序员和用户使用。程序员使用API接口,Linux内核是C语言编写,如果想用JAVA来编写Linux内核,就的重新封装Java成C语言兼容接口。

            SQL:结构化查询语言(Structure Query Language)

            数据模型(发展):

                        层次模型(树状结构)---->网状模型(缺点:独立性受限制)---->关系模型(二维表)

            约束:候选键(主键)、 唯一键(主键的数据可以为空,唯一键不能为空)、 组合主键

            DBMS的有点:

                    数据独立性、

                    高效的数据存取、

                    数据完整性和安全性

                    数据管理

                    并发存储和故障恢复

                    开发周期缩短

            DBMS管理系统的结构:C/S模式


                                                         SQL 语句

                                                                 I  

                                            计划执行器     分析器 

                                            操作求解器     优化器  

                              事务管理器      文件和存取接口

                              锁管理器          缓冲管理器                                                                                                       

                                                     磁盘空间管理器

                                                          磁盘                            


三、MySQL理论基础及LAMP平台

        关系型数据库:Oracle、DB2、Sqlserver、MySQL--->MariaDB

            Oracle:(sybase,infomin 曾经三足鼎立),开源大敌,

            DB2::只在IBM系统盛行,IBM硬件、操作系统、数据库都是开发。

            SQL server:sybase和微软合作产生SQL server,后来sybase退出

            MySQL:(sun公司收购MySQL,oracle有收购sun公司保存了MySQL的开源)---->MariaDB

            MariaDB: Mysql分支  redhat 7 、centos7默认安装MariaDB(MySQL被oracle收购后不再受欢迎了,哈哈)

            pgsql(postgresql):

            SQLite:

            MySQL---->MariaDB ,MYSQL有客户端包和服务器包 #


        关系型数据库组件:

            库:表的集合,每个表都有一个唯一的名字,

            表:(关系)  行 (raw,record,tuple)和列(field,column,attribute)

                    行:代表一组之间的联系

                    列:有起允许取值的集合,称之为该属性的域,包括空(null)

        数据库模式和数据库实例:逻辑角度

        约束:

                候选键(码)

                主键(primary key):标识唯一身份

                唯一键(unique key)不能为空

                外键(foreign key):引用性约束

        关系型查询语言:sql ,仅针对单张表实施的查询,简单查询

                关系运算:

                        选择:挑选出符合条件的行

                        投影:挑选出关心的列

                连接运算:
                              笛卡尔积:从两个输入关系中输出所有的元组对(无论它们在共同的属性上取值是否相同),因此,也被称为交叉连接;
                               自然连接: 从两个输入关系中输出这样的元组对:它们在相同的名字的所有属性上取值相同;

         SQL最早有IBM研发,叫做sequel,ANSI,ISO :SQL-86,SQL-89,SQL-92,SQL-99,SQL-03

                SQL语言有如下几个部分组成:
                                  数据定义语言:DDL(CREATE, DROP, ALTER, GRANT(授权), REVOKE(取消授权))
                                  数据操纵语言:DML(INSERT, DELETE, UPDATE(修改数据), SELECT(查询语句))
                                  事务控制:创建事务和结束事务

                       SQL的数据定义:
                                   创建关系,即创建表:
                                          每个关系模式;###有多少个模式
                                          每个属性的取值类型; ###数值还是字符,比如 存储年龄 
                                          完整性约束;###定义主键、外键、唯一键
                                          索引的集合;### 有几个索引都要创建出来
                                          表的安全性和权限信息;###
                                          表的物理存储结构;###
                                                    MyISAM表有三个相关的文件:定义文件 .frm,数据文件.MYD,索引文件 .MYI
                                                    InnoDB:(目标文件)定义文件 .frm,表空间文件 .ibd(数据+索引)
                        SQL数据的类型:
                                     字符型:
                                                 固定长度的字符型:char
                                                 可变长度的字符型: varchar
                                       数值型:
                                                  整型:精确数值型(int) 
                                                   浮点型: 近似数值型(float、double)

       LAMP

    Linux + apache(httpd) + php (php-myql)+ mysql(php写的程序和MySQL连接,php连接MySQL驱动)
            mysql: 3306/tcp

     
            php与httpd的三种连接方式  :httpd + php

                                   1、  php作为httpd的模块()
                                         当php以模块化使用时,只需重新启动httpd
                                                /etc/httpd/conf.d/php.conf:主配置文件
                                                /usr/lib64/httpd/modules/libphp5.so:模块位置 
                                    2、 httpd基于cgi协议与php通信(很少用)
                                    3、 php工作为一个服务器:httpd以fastcgi协议与php服务器进程进行通信(主流)
      
                         php的安装:
                                     rpm包、编译安装
                         开源php站点程序:
                                     wordpress
                                     drupal, joomlar
                                     phpwind(阿里)
                                     discuz(腾讯)
                                     phpbb
                                     phpMyAdmin: php, 管理 mysql程序

                        php测试代码:
                               <html>
                                         <h1> this page </h1>
                                         <?php
                                                    phpinfo();   测试php是否正常工作
                                                
                                          ?>
                                         <?php
                                                    $link = mysql_connect(‘127.0.0.1‘,‘root‘,‘123456‘);测试php连接mysql是否成功
                                                                if ($link)
                                                                     echo "ok"; 
                                                                else 
                                                                       echo "no";
                                                     mysql_close(); 
                                           ?>
                                          

                                 </html>


4、LAMP平台理论基础及部署       
                         MySQL安装:
                                      1、rpm包安装 :(OS vendor 、项目方提供(较新))
                                      2、通用二进制格式: 展开、简单配置后即可使用
                                      3、源码编译安装: cmake编译器(对make进行过封装)

                           CentOS 6 安装mysql-server: 默认mysql-5.1版本,流行mysql-5.6版本

                                        # yum -y install mysql-server (mysql客户端程序、mysql-lib客户端和服务器的共享库)

                            CentOS 7 安装mysql-server:       #yum -y install mariadb-server 即可。 

                                 

                             CentOS 6为例:

                                 #rpm -ql  mysql-server | less

                                        服务脚本:/etc/rc.d/init.d/mysqld
                                       主服务程序:/usr/bin/mysqld_safe
                                       数据文件:/var/lib/mysql
                                       配置文件:/etc/my.cnf        #rpm -qf /etc/my.cnf
                                       客户端程序:/usr/bin/mysql
                                       unix sock: /var/lib/mysql/mysql.sock
                             mysqld第一次启动之前需要先初始化:创建mysqld服务自身运行依赖元数据数据库:mysql

                            CentOS 7
                                         systemctl start mariadb.service
                       
                             mysql客户端程序的基本使用:
                                          -u USERNAME: 默认为root
                                          -h HOST: 默认为localhost
                                          -p [PASSWORD]: 输入密码

                             mysql的用户账号:USERNAME@HOST
                                           USERNAME: 用户名
                                           HOST: 此用户仅允许通过此处指定的主机登录mysqld服务;
                                           root@localhost, root@‘127.0.0.1‘, root@‘HOSTNAME‘

                              交互式命令:
                                           客户端命令:无需分号结尾;
                                           服务器端命令:必需分号结尾;

mysql注意事项:
             mysql命令和字段名不区分大小写,表名在linux中会区分大小写

 mysql常用命令:
             show databases;显示所有的数据库名称
             select version(); 显示数据库版本
             select user();显示用户
             use mysql;指定使用哪个数据库
             show tables;显示当前库中的表
             desc user;显示表结构
             select user,host,password from user;查看用户登录限制
             show table status\G;显示表的详细信息
             show character set;显示数据库支持的字符集
             show collation;查看字符排序规则
             show global variables;显示服务器工作属性所有环境变量,show global variables like ‘wait_timeout‘;查看单个
             show global status;显示所有执行命令统计数据;show global status like ‘com_select‘;显示单个



第二十二天 IO模型理论、数据库基础、LAMP平台基础理论及MySQL安装部署

标签:如何   模型   domain   数据库基础   

原文地址:http://liwenjia.blog.51cto.com/2656598/1786042

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!