数据库详解|青训营笔记

60 阅读3分钟

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

  • 数据库有很多种,至于各种数据库孰优孰劣,主要取决于企业希望如何使用数据。

  • 关系数据库:关系型数据库是把数据以表的形式进行储存,然后再各个表之间建立关系,通过这些表之间的关系来操作不同表之间的数据。

  • 非关系数据库 NoSQL 或非关系数据库,支持存储和操作非结构化及半结构化数据。相比于关系型数据库,NoSQL没有固定的表结构,且数据之间不存在表与表之间的关系,数据之间可以是独立的。NoSQL的关键是它们放弃了传统关系型数据库的强事务保证和关系模型,通过所谓最终一致性和非关系数据模型(例如键值对,图,文档)来提高Web应用所注重的高可用性和可扩展性。

  • 单机数据库:在一台计算机上完成数据的存储和查询的数据库系统。

  • 分布式数据库 分布式数据库由位于不同站点的两个或多个文件组成。数据库可以存储在多台计算机上,位于同一个物理位置,或分散在不同的网络上。

  • OLTP 数据库 OLTP(Online transactional processing)数据库是一种高速分析数据库,专为多个用户执行大量事务而设计。

  • OLAP 数据库:OLAP (Online analytical processing) 数据库旨在同时分析多个数据维度,帮助团队更好地理解其数据中的复杂关系

image.png

SQL语句

查询包含一系列含有最终结果的字段, 紧跟SELECT关键词。星号("*")也可以用来指定查询应当返回查询表所有字段,可选的关键词和子句包括:

  • FROM子句指定了选择的数据表。FROM子句也可以包含JOIN 二层子句来为数据表的连接设置规则。
  • WHERE子句后接一个比较谓词以限制返回的行。WHERE子句仅保留返回结果里使得比较谓词的值为True的行。
  • GROUP BY子句用于将若干含有相同值的行合并。 GROUP BY通常与SQL聚合函数连用,或者用于清除数据重复的行。GROUP BY子句要用在WHERE子句之后。
  • HAVING子句后接一个谓词来过滤从GROUP BY子句中获得的结果,由于其作用于GROUP BY子句之上,所以聚合函数也可以放到其谓词中。
  • ORDER BY子句指明将哪个字段用作排序关键字,以及排序顺序(升序/降序),如果无此子句,那么返回结果的顺序不能保证有序。

image.png

一条SQL语句的执行过程

image.png

parser 词法分析,语法分析,生成AST树 (Abstract syntax tree)

optimizer 为查询生成性能最优的执行计划

analyzer 变量绑定、类型推导、语义检查、安全、权限检查、完整性检查等,为生成计划做准备

Executor 将执行计划翻译成可执行的物理计划

Storage engine

a. 管理内存数据结构【index、内存数据、缓存(Query cache、Data cache、Index cache)】

b. 管理磁盘数据【磁盘数据的文件格式、磁盘数据的增删查改】

c. 读写算子【数据写入逻辑、数据读取逻辑】

image.png

ClickHouse是啥?是用于联机分析(OLAP)的列式数据库管理系统(DBMS

image.png

image.png

image.png 应用场景

  • 大宽表存储和查询
  • 离线数据分析
  • 实时数据分析
  • 复杂类型查询

数据库 - 什么是OLAP?主流八大开源OLAP技术架构对比 - 个人文章 - SegmentFault 思否

后端专场 学习资料七】第五届字节跳动青训营 - 掘金 (juejin.cn)