青训营笔记 - 关系型数据库

145 阅读3分钟

关系型数据库一直以来是数据库的主导方向,并且在业界得到广泛应用。即使今天,仍占有很大比重。

为什么关系型数据库

发展历程

  1. 人工管理
  2. 文件系统
  3. 数据库管理系统(DBMS, DataBase Management System),按照某种数据模型来组织、存储和管理数据的仓库,分为网状数据库、层次数据库和关系型数据库。

网状模型

  • 能直接描述现实世界
  • 存储效率高

  • 结构复杂
  • 用户不易使用
  • 访问程序设计复杂

层次模型

  • 结构简单
  • 查询效率高
  • 可以提供较好的完整性支持

  • 无法表示M:N关系
  • 插入、删除限制多
  • 遍历子节点必须经过父节点
  • 访问程序设计 复杂

关系模型

  • 实体及实体间的联系都通过二维表结构表示
  • 可以方便表示M:N关系
  • 数据访问路径对用户透明

虽然

  • 关联查询效率不够高
  • 关系必须规范化

这些缺点也催生了近年来非关系型数据库的发展,不过这是后文了。

关键技术与实际应用

一条SQL语句,在用户发给服务端请求后由服务端对RDBMS发出。数据库管理系统在收到SQL后首先依次进行词法句法和语义解析;然后优化,选择最优路径;之后交给Executor完成操作。Executor与数据库的数据文件和日志文件完成操作,同时可用性、一致性等要求也在此阶段保证,

在实际应用中,面临着流量大、流量突增和稳定性需求等问题。

  • 流量大:单机数据容量有限,单节点读写容易成为瓶颈
    • 业务数据进行水平拆分
    • 代理层进行分片路由
  • 流量突增,活动期间流量暴增,需要短期扩容、代理连接池等操作
    • 扩容DB物理节点数量
    • 利用影子表进行压测
  • 稳定性&可靠性
    • 3AZ高可用(比如备用机房,不同机房间通过日志进行同步,代理进行读写分离、限流等操作,实时监控风险等)
    • HA(High Avalibility)管理,快速识别异常节点宕机问题,快速修复,热加载等。

其他

数据库整体理解还是

  • 内存速度快。所以会有缓存,内存池等操作。
  • 不同数据库底层架构不一样,及用户需求多样化。所以需要sql语句进行词法句法语义分析后进入Executor,最后再与数据库交互。
  • 数据库的事务引擎不同于存储引擎,进行索引查找、数据组织存储等操作,而是保证事务的原子性的操作,保证了数据库的可用性。针对比如多并发、多版本控制、读写冲突、一致性读的问题。