大数据系统

2018/07/29 大数据 数据库

关系型数据库管理系统

存储方式的演变

从人工管理阶段->文件系统阶段->数据库阶段。在数据库阶段,管理数据的软件叫做数据库管理系统。数据按照一定格式保存,通过这个软件可以方便的对数据进行增删查改操作,从而极大的提升了数据管理效率。

数据库系统架构

前端

SQL Parser(SQL解析)、Query Optimizer(产生可行的query plan,选择最佳query plan)

后端

存储引擎

负责如何在硬盘上存储数据如何高效地访问硬盘上的数据

MySQL服务器程序是真实数据的管理者,负责解析各个客户端发来的各种请求并返回相应的执行结果。MySQL服务器程序是MySQL数据库实例,简称数据库实例。

客户端和服务器通信方式:TCP/IP、命名管道和共享内存、Unix套接字。

Buffer Pool

在内存中缓存硬盘的数据。

  • Temporal locality(时间局部性)
  • Spatial locality(空间局部性)
Execution Engine

根据query plan,完成相应的运算和操作。

Transaction managemennt(事务管理)

目标是实现ACID。进行logging写日志,locking加锁;保证并行transactions事务的正确性。

数据存储与访问

数据表(Table)

通过表格来存放数据,而且不同的表格可以通过某种关系联系起来。这种数据库管理系统也称为关系型数据库管理系统。

索引(Index)

Tree based index:有序,支持点查询和范围查询。B+Tree。

  • 每个节点是一个page。
  • 所有key存储在叶子结点。
  • 内部节点完全是索引作用。

Hash based index:无序,只支持点查询。

Clustered index(主索引)Secondary index(二级索引)

  • Clustered:记录存储在index中,记录顺序就是index顺序。以主键值的大小为页和记录的排序规则,在叶子节点处存储的记录包含了表中所有的列。
  • Secondary:记录顺序不是index顺序。以自定义的列的大小为页和记录的排序规则,在叶子节点处存储的记录内容是列+主键。

缓冲池(Buffer pool)

提高性能,减少I/O。

替换策略:Random、FIFO、LRU

运算的实现

Selection/Projection:行的过滤,列的提取。

Join

  • Nested loop
  • Hashing:对R和S进行partitioning,然后对分在相同的partitioning进行hash join
  • Sorting

事务处理

ACID

Atomicity(原子性)、Consistenncy(一致性)、Isolation(隔离性)、Durability(持久性)

并发控制

数据冲突引起的问题:读脏数据(写读)(事务隔离级别调整到READ COMMITED)、不可重复读(读写)(事务隔离级别调整到REPEATABLE READ)、更新丢失(写写)、幻像读(读写)(事务隔离级别调整到SERIALIZATION)。

解决方法:乐观(读数据到私有工作区,在工作区完成事务处理;,检测是否与其他事务冲突;如果没有冲突,那么把私有工作区的修改更新到数据库公共数据中)、悲观(加锁,读写锁不同)。

持久性

WAL(Write Ahead Logging):logging优先于实际的操作。日志记录先于修改后的数据出现在硬盘上。

Crash Recovery(崩溃恢复)

恢复点、logging。

种类

Oracel、DB2、SQL Server、PostgreSQL(开源)和MySQL(开源)。

数据仓库

star schema:一个fact table,多个dimension table。

Roll up:某维上求和;Drill down:某维分解。Slice:某维上选一个值;Dice:多维上选多个值。

行式与列式数据库。

分布式数据库

系统架构

Shared memory,Shard disk,Shard nothing。

一般是Shard nothing。

系统类型

Client/Servet、P2P、Master/Workers

CAP定理

Connsistency(多份数据一致性)、Availability(可用性)、Partition tolerance(容忍网络断开)三者不可得兼。

参考

MySQL概述

InnoDB记录存储结构

InnoDB数据页结构

MySQL的索引

Search

    Table of Contents