跳到主要内容

1.2-认识数据库

Create by fall on:2020-11-10 Recently revised in:2021-08-27

数据库

关系型数据库

RDBMS(Relational Database Management System)

关系型数据库遵循 ACID 规则

  • A(Atomicity)原子性:事务要么全做完,要么都不做,成功条件是所有都操作成功,只要有一个失败就要回滚。
  • C(Consistency)一致性:事务一直处于一致状态,a+b=10,现在a+=2,10也要改变。
  • I(Isolation)独立性:一个事务和另一个事物之间不会影响,只要事务未提交,就看不到修改。
  • D(durability)持久性:事务一旦提交,所做的修改将永久保存在数据库上,宕机也不会消失。

数据特点

  • 数据以表格的形式出现
  • 每行为各种记录名称
  • 每列为记录名称所对应的数据域
  • 许多的行和列组成一张表单
  • 若干的表单组成database

非关系型数据库

NoSQL(not only sql)

这类数据库不需要固定的格式,无需多余的操作就可以进行横向扩展。

使用NoSQL的原因是,关系型数据库的局限性:

  • 数据量总大小一个机器放不下
  • 数据的索引(B+tree)一个机器的内存放不下
  • 访问量(读写混合)一个实力不能接受

只要上述满足一个,就要对数据库整体架构进行重构。

  • 存储方式:虚拟内存+持久化。
  • 查询语句:是独特的Mongodb的查询方式。
  • 适合场景:事件的记录,内容管理或者博客平台等等。
  • 架构特点:可以通过副本集,以及分片来实现高可用。
  • 数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
  • 成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。

RDBMS vs NoSQL

RDBMS

  • 高度组织化结构化数据
  • 结构化查询语言(SQL)
  • 数据和关系都存储在单独的表中。
  • 数据操纵语言,数据定义语言
    • 严格的一致性
      • 基础事务

NoSQL

  • 没有声明性查询语言
  • 没有预定义的模式
    • 键 - 值对存储,列存储,文档存储,图形数据库
    • 最终一致性,而非ACID属性
    • 非结构化和不可预知的数据
    • CAP定理
    • 高性能,高可用性和可伸缩性

分布式系统

分布式系统(distributed system):多台计算机和通信的软件组件通过计算机网络连接。

  • 优点:
    • 可靠性,一台服务器崩溃也不会影响其余服务器
    • 可扩展性,当前的服务器数量不够,继续添加新的数据库
    • 资源共享,资源大家都可以互相调用。
    • 灵活性,也不知道咋灵活
    • 更快的速度,利用多台计算机的算力,处理速度更快
    • 开放系统,本地和远程都可以访问
  • 缺点
    • 故障排除:困难,那个设备出现问题,要一个个排除
    • 软件:更少的软件支持
    • 网络:网络负载,信息丢失,传输问题
    • 安全性:数据共享带来的风险

CAP定理

对于一个分布式系统来说,不可能同时满足三点

  • 一致性(Consistency)所有节点在同一时间具有相同的数据
  • 可用性(Availability)保证每个请求不管成功或者失败都有响应
  • 分隔容忍(Partutuib tolerance)系统中任意信息的丢失或者失败不会影响系统的继续工作。

该原理的核心是,分布式系统不可能同时满足一致性,可用性,和分区容错。最多只能较好满足两个。

所以将数据库分为三大类

  • CA 单点集群,满足一致性,可用性,可扩展性往往不大好
  • CP 满足一致性,分区容忍,性能不是特别好
  • AP 可用性,通常对一致性的要求低一点

常用术语

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
  • **行:**一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • **外键:**外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • **索引:**使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。