数据库知识 —— 数据库架构

文章目录

  • 数据库知识 —— 数据库架构
    • 了解数据库相关知识
    • 架构设计
      • 思路
        • 实例都有哪些?
    • 索引模块
      • 常见问题
        • 为什么要使用索引
        • 什么样的信息能成为索引
        • 索引的数据结构
        • 密集索引和稀疏索引的区别

数据库知识 —— 数据库架构

了解数据库相关知识

数据库知识 —— 数据库架构_第1张图片

架构设计

如何设计一个关系型数据库(RDBMS)

思路

开发一个数据库,与开发建立应用架构差不多,也要抽象出业务和各个“模块”,根据不同模块和功能采用最佳实践的技术。
数据库最主要的作用是存储数据(文件系统),而要实现这个功能需要建立多个程序实例)

实例都有哪些?

  • 存储管理模块
    模块功能要考虑如何优化存储效能
    • 尽可能的减少IO达到优化存储效能
  • 缓存模块
    为了更提高速率,可以把获取的数据块放入缓存中,下次需要时直接从内存中读取并返回,不会发生IO。
  • SQL解析模块
    目的是将SQL编译解析,转换成机器可识别的指令,可以通过缓存提升SQL的性能,编译好的SQL可直接从缓存中读取,无需重新创建。
  • 日志管理模块
    为了实现主从同步,灾难恢复,要有日志管理,binlog
  • 权限划分模块
    区分权限数据(根据组织结构设计)
  • 容灾机制
    当数据库宕机,要考虑如何恢复
  • 索引管理
    优化查询效率
  • 锁管理
    支持并发操作的锁模块

注:缓存不宜太大,并没有淘汰机制

如何设计一个关系型数据库?
首先设计两大部分,一部分为存储部分(类似文件系统),并实现程序实例模块,来对存储进行处理,存储模块包含存储管理模块、缓存模块、SQL解析模块、日志管理模块、权限划分模块、容灾机制、索引管理模块以及锁模块八个部分。

索引模块

常见问题

为什么要使用索引

提升查询速率,不添加索引时,是全表扫描,索引机制的用处是优化查询,类似于字典, 但是数据量较小的(例如几十行数据),不建议使用索引。

什么样的信息能成为索引

能把查询数据限制在某一个范围内的字段适合创建索引,例如:主键、唯一键以及普通键等。

索引的数据结构

  • 生成索引,建立二叉查找树进行二分查找
  • 生成索引,建立B-Tree结构进行查找
  • 生成索引,建立B±Tree结构进行查找
  • 生成索引,建立Hash结构进行查找

密集索引和稀疏索引的区别

你可能感兴趣的:(数据库知识,数据结构,数据库架构设计,弗兰克与数据结构)