mysql系统架构
数据处理值增删查改
数据类型和约束分页
索引和慢查询性能分析
数据库安全- 防止 SQL注入
数据库设计ER图设计
数据库事务和锁

数据库设计的三大范式
分组和聚合函数
基于角色的权限访问控制
role based access Control
image.png

image.png

1 数据库介绍

  1. 数据库的作用:保存数据
  2. 数据库的本质:也是一个个文件
  3. mysql数据库利于数据的管理(增加,修改,删除,查询)
  4. 只要学会一门数据库,其他数据库都是触类旁通
  5. 数据库密码 8位以上,数字和英文
  6. Mysql数据库的缺点
    1. 海量数据处理的时候效率会显著变慢

2 数据库分类

非关系型数据库 NoSQL Not Only SQL 不仅仅是SQL

  1. 临时性键值存储
    1. memcached、Redis
  2. 永久性键值存储
    1. ROMA、Redis
  3. 面向文档的数据库
    1. MongoDB、CouchDB
  4. 面向列的数据库
    1. Cassandra、HBase
    2. 列族数据库, 将数据放在列里面, 每组数据都在一个列里面
  1. MongoDB
    1. 主要解决海量数据的访问效率问题
  2. Redis
    1. 内存数据库,做高速缓存
    2. 可靠高性能的、功能丰富的Key-Value 存储数据库
    3. 数据量较小的更性能操作和运算上
  3. Memcached
    1. 内存数据库
    2. 用在动态系统中减少数据库负载,提升性能;
    3. 做缓存,提高性能(适合读多写少,对于数据量比较大,可以采用sharding)

NoSQL 数据库不支持事务

Redis & Memcached 区别 https://www.cnblogs.com/457248499-qq-com/p/7392653.html

关系型数据库 Structured QueryLanguage 结构化查询语言
关系型数据库的缺点

  • 大量数据的写入
  • 对简单的查询需要快速返回结果的处理
  • 字段不固定时的应用
  • 为有数据更新的表做索引或表结构 schema 的变更
  • 读写集中在一个数据上,会让数据库不堪重负,使用主从复制-实现读写分离,提高读写性能和读库的扩展性
    • 数据的写入有 主数据库负责
    • 数据的读入有 从数据库负责
  • 关系型数据库与 NoSQL数据库是互补的关系,让 NoSQL数据库对关系数据库的不足进行弥补
    • 通常情况下使用关系型数据库,在适合用 NoSQL的时候用 NoSQL,
  1. SQL Server
    1. 微软的产品, 是.net 程序员的最爱,
    2. 主要用于开发中型的项目,也可以开发大型项目
  2. Oracle
    1. 甲骨文公司, 是javaee程序员的最爱,
    2. 主要用于开发中型的项目,也可以开发大型项目
  3. Mysql
    1. mysql数据库最早是sun公司[java/solaris],后面sun公司被甲骨文公司收购了,
    2. php 程序员的最爱,
    3. mysql 数据库也可以开发中型和大型项目,尤其对多并发有很好处理
  4. DB2 开发电信级的项目
    1. IBM公司(蓝色巨人),是javaEE程序员使用到,
    2. 主要用于开发大型项目(金融,证券,海关.) 都是电信级的项目
  5. infomix 银行用的多
    1. IBM公司, 安全性很好,
    2. 在银行系统使用的特别的多

2.1 Mysql & MongoDB 的应用场景

Mysql & MongoDB是平级

  1. Mongodb所负责部分以文档形式存储,能够有较好的代码亲和性,json格式的直接写入方便。(如日志之类)
  2. 从 data models 数据模型设计阶段就将原子性考虑于其中,无需事务之类的辅助
    1. 开发用如nodejs之类的语言来进行开发,对开发比较方便
  3. Mongodb本身的failover机制,无需使用如MHA之类的方式实现
  4. 将 Mongodb作为类似redis ,memcache来做缓存DB,为mysql提供服务
  5. 将 Mongodb做为辅助mysql而使用的类redis memcache 之类的缓存DB来使用
    1. 或是仅作日志收集分析

3 Mysql 发展前景

  • 开源的数据库
  • 去IOE的受益者
  • Oracle 从业人员趋于稳定
  • 更有前途

4 Mysql如何到大神

  1. 职业规划
    数据库设计,指导公司数据库整体架构
    应用程序建表
    表的索引创建
    SQL优化
    搭建高可用集群,大规模运维
    监控数据库状态
    数据备份 / 恢复
    数据库内核级开发,深入学习 Mysql内核原理,快速定位问题,根据需求定制源码
    处理内核级的相关
    跟踪最新的数据库内核
    2. 要事第一
    3. 吃透原理
    4. 测试验证
    5. 提升原理

5 Mysql相关技能

备份
备份原理
逻辑备份
物理备份
备份工具

监控
监控指示:LOAD CPU TPS QPS IOW AIT CONN
监控系统:ZABBIX

高可用
为什么要高可用?
传统的主从复制
MHA

高性能
深入理解体系结构,SQL优化

6 Linux

Shell 终端

7 数据理论

1.关系型数据库基础理论
MVCC / ACID
范式设计
索引设计

  1. 分布式数据库基础理论
    PC
    CAP
    base
    paxos 算法

  2. 数据处理

    OLTP
    OLAP