数据库口水话|青训营笔记

124 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 26 天

本篇文章归档于 “第五届字节跳动青训营”,主要是为了完成和记录掘金的 “伴学笔记创作活动” 活动,如果你对我的其他文章感兴趣,可以去我的 专栏 中逛逛看有没有你想要的东西。

存储系统的相关概念

概念:一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件。

特点:性能敏感;容易受硬件影响;代码既“简单”又复杂。

在多块小磁盘组合的价格低于、性能高于和容错高于单块大磁盘的背景下,存储系统诞生了一种技术叫 RAID(Redundant Array of Index Disks):

  • 0:多块磁盘简单组合;数据条带化存储,提高磁盘带宽;但没有容错设计;
  • 1:一块磁盘对应块额外镜像,真实空间的使用率只有 50%,但容错率高;
  • 0 + 1:真实空间的使用率只有 50%,但容错率高,且磁盘带宽高。

数据库的相关概念

数据库大致可分为关系型和非关系型,而这里提到的“关系”可以理解为一种集合,常用的 SQL 就是对该集合做运算的语句。

关系型和非关系型都是存储系统,但他们各有千秋:

  • 关系型:结构化(以表形式管理)数据友好;支持事物(ACID);支持复杂查询语句;
  • 非关系型:半结构化数据友好;可能支持事物或复杂查询语句。

并且实际控制数据的是 DSL(Domain Specific Language),尽管可以用 SQL 的形式展现出来。

主流数据库类型

单机存储:单个计算机节点上的存储软件系统,一般不涉及网络交互(如本地文件系统:Index Node & Directory Entry 或者 KV 存储:LSM-Tree);

分布式存储:在单机存储的基础上实现了分布式协议,涉及大量网络交互(如分布式文件系统:HDFS 和分布式对象存储:Ceph);

单机关系型数据库:单个计算机节点上的数据库系统,事物在单机内执行,也可能通过网络交互实现分布式事务(如 Oracle,MySQL 和 PostgreSQL);

单机非关系型数据库:相比于单机关系型数据库,交互方式各不相同,场景相对灵活,并且都在尝试支持 SQL(子集)和事物(如 MongoDB,Redis 和 Elasticsearch);

分布式数据库:利用存储节点池化,动态扩缩容解决容量、弹性和性价比问题。

放在最后的话

任何应用都可以看作数据库的前端!(暴论hhhhh