Linux学习84 数据库体系全面介绍-关系型数据库基础

一、回顾

  1、LAMP组合方式

    a、方式一:client --> http protocol --> httpd + php module --> (php-mysql,mysql protocol) --> mysqld

    b、方式二:client --> http protocol --> httpd --> fastcgi protocol --> fpm (php application server)--> (php-mysql,mysql protocol) --> mysqld

  2、运维的日常工作并不是搭建服务,而是发布,变更,故障处理

  3、快速部署amp

    a、CentOS7:

      (1)、Modules:程序包,httpd,php,php-mysql,mariadb-server

        启动的服务:systemctl start mariadb httpd

      (2)、FastCGI:程序包,httpd,php-fpm,php-mysql,mariadb-server

        启动的服务:systemctl start mariadb php-fpm httpd

    b、CentOS6:

      (1)、Modules:程序包,httpd,php,php-mysql,mysql-server

        启动的服务:service mysqld start,service httpd start

    c、DocumentRoot:/var/www/html

二、lamp(01)之mariadb(mysql)

  1、数据模型:层次模型,网状模型,关系模型

  2、数据分类:结构化数据,半结构化数据,非结构化数据。

    a、结构化数据:我们将我们内核访问文件的系统调用做了二次封装,再基于这个接口封装了一个接口,让访问数据的时候可以不用一次访问所有数据,我们需要一行的时候只拿一行即可而不用加载所有数据。能够对这些结构化数据按需索取能做到的原因在于如果是一个关系型数据库他就支持将关系型数据库中的数据构建成索引,我们把索引放在内存中基于索引去找内容就可以了,就好比我们书中的目录一样的道理。如果一个文件系统上放了两千万张图片,我要知道某一张图片有没有我们就需要遍历这个文件系统,这是非常麻烦的。因此我们可以做一张表,把这张图片的名字和这个文件放在哪个目录下的属性存进来,因此将来我找这个图片的时候我就不用再扫描文件系统,而是直接找这个表,如果这个表有索引的话我们直接以名字作为索引我直接找这个名字就行了,找到名字以后,名字对应的表中的某个列中就有这个图片所在的路径,这样我就直接在这个路径下找就可以了。

    b、假如有人和桌子两个对象,他们的属性是不一样的。那么我们如何将其放在一个系统同一存取呢?我们就不用定义每一行都是固定格式了。我们可以这样来存:

      <对象:桌子>名字,长,宽

      <对象:人>名字,年龄等等

      比如我们的xml,json等

  3、关系模型

    a、数据库:一个方案,一个项目

    b、二维关系:

      表:row,column

      索引:index

      视图:view,对于一张表来说有可能有四个列,我们将其中三个列虚化成一张假表,用户看的时候只能看到这张假表。原来的表就叫基表,这个假表就叫虚表,也就视图,他并不存在于数据库中

  4、SQL接口:Structured Query Language

    a、类似于OS的shell接口;也提供编程功能

    b、ANSI:SQL标准,SQL-86,SQL-89,SQL-92,SQL-99,SQL-03,...

      xml

    c、DDL(Data Defined Language):数据定义语言,定义库或表

      CREATE,ALTER,DROP,SHOW

    d、DML:Data Manapulating Language

      INSERT,DELETE,UPDATE,SELECT

    e、编程接口:选择,循环

    f、SQL代码:

      (1)、存储过程:procedure

      (2)、存储函数:function

      (3)、触发器:trigger

      (4)、事件调度器:event scheduler

      (5)、例程:routine

    g、用户和权限

      (1)、用户:用户名和密码

      (2)、权限:管理类,数据库,表,字段

  5、DBMS:DataBase Management System,数据库管理系统。

    a、RDBMS:Relational,关系型数据库管理系统,比如mysql pgsql等等..

    b、MySQL:单进程,多线程

      (1)、用户连接:通过线程来实现

      (2)、线程池

      (3)、AliSQL:阿里2017年开源的,MySQL的衍生版

      (4)、mariadb

      (5)、sqlite:他把数据直接存放在磁盘上,然后向上提供一个SQL接口,其实我们安卓上大多数管理通讯录的都是通过此种方式。即如果我们要存放大量的数据又不想启动相应的服务就可以通过sqlite来。

      (6)、插件式存储引擎:存储引擎也称为表类型

    c、PostgreSQL:

  6、事务(Transaction):组织多个操作为一个整体,要么全部都成功执行,要么全部都失败回滚。InnoDB存储引擎支持事务,MyISAM不支持事务。mysql5.5以及以后的版本默认都是InnoDB引擎,在之前是MyISAM存储引擎。

    a、“回滚”:rollback

    b、一个存储系统是否支持事务,测试标准

      (1)、ACID:

        A:原子性

        B:一致性

        C:隔离性

        D:持久性

    c、SQL接口:分析器和优化器

    d、存储引擎。可以通过show engines来查看存储引擎

  7、数据库:数据集合

    a、表:为了满足范式设计要求,将一个数据集分拆为多个

    b、约束:constraint,向数据表插入的数据要遵守的限制规则

      (1)、主键:一个或多个字段的组合,填入主键中的数据,必须不同于已存在的数据;而且不能为空;一个表只能有一个Primary Key;

      (2)、外键:一个表中某字段中能插入的数据,取决于另外一张表的主键中的数据;

      (3)、唯一键:一个或多个字段的组合,填入唯一键中的数据,必须不同于已存在的数据,可以为空,一个表可存在多个Unique Key;

      (4)、检查性约束:取决于表达式的要求

    c、索引:将表中的某一个或某些字段抽取出来,单独将其组织一个独特的数据结构中

      (1)、常见的索引类型:

        1)、树型(B + Tree:Balance Tree)

        2)、hash

        3)、注意:有助于读请求,但不利于写请求

    d、关系运算

      (1)、选择:挑选出符合条件的行

      (2)、投影:挑选出符合需要的列

      (3)、连接:将多张表关联起来

     e、数据抽象:

      (1)、物理层:决定数据的存储格式,即如何将数据组织成为物理文件

      (2)、逻辑层:描述DB存储什么数据,以及数据间存在什么样的关系

      (3)、视图层:描述DB中的部分数据

    f、关系模型的分类:

      (1)、关系模型

      (2)、实体关系模型

      (3)、基于对象的关系模型

      (4)、半结构化关系模型

 

posted @ 2020-05-19 21:04  Presley  阅读(255)  评论(0编辑  收藏  举报