一、关系与非关系型数据库
二、OLTP与OLAP
三、行式与列式数据库
学习数据库之前,我们必须要先足够了解它!本阶段学习目标课程为MySQL
MySQL的既往史通常都不是新生的关注点,却往往错过了什么最重要的东西,须知越是基础的东西却显得越发重要 下面就数据库方面一些基础知识进行概述
大的概念上来说,MySQL是一个数据库,对于新生来讲数据库大环境相关的基础知识也必须了解一些 例如什么是数据库?数据库是用来做什么的?都有哪些数据库?他们都有什么特点或不同?
数据库形形色色分很多情景类型;总体来说分为关系型和非关系型
什么是关系型数据库与非关系型数据库呢?
关系型数据库
关系型数据库,我们需要记住常用的几个:mysql /oracle/sql server/sqlite
关系型数据库是最典型的是存储结构化数据表,由二维表及其之间的联系所组成的一个数组。通俗的来讲,这里表数据一般都是规整的字符数值类型,相互之间还存在一定的逻辑关系例如id,name,sex,age
非关系型数据库
我们只需要 记住常用的:redis / hbase /mongoDB /CouchDB /Neo4J 【注意:hive 不是数据库,是数据仓库 不是一个概念】
非关系型数据库严格上应该是一种数据结构化存储方法的集合,可以是文档或者键值对等非结构化的数据 从它存储的内容即可以看出它与关系型数据库存储的结构化数据大不同
非关系型数据库存储数据的分类和比较:
1、文档型
2、key-value型
3、列式数据库
4、图形数据库
了解完关系型数据库 与 非关系型数据库之后 接下来就根据它们的特性,以及业务场景需求 将数据库分为OLTP / OLAP
OLTP主要用来记录某类业务事件的发生,如购买行为,当行为产生后,系统会记录是谁在何时何地做了何事,这样的一行(或多行)数据会以增删改的方式在数据库中进行数据的更新处理操作,要求实时性高、稳定性强、确保数据及时更新成功,像公司常见的业务系统如ERP,CRM,OA等系统都属于OLTP。
当数据积累到一定的程度,我们需要对过去发生的事情做一个总结分析时,就需要把过去一段时间内产生的数据拿出来进行统计分析,从中获取我们想要的信息,为公司做决策提供支持,这时候就是在做OLAP了。
因为OLTP所产生的业务数据分散在不同的业务系统中,而OLAP往往需要将不同的业务数据集中到一起进行统一综合的分析,这时候就需要根据业务分析需求做对应的数据清洗后存储在数据仓库中,然后由数据仓库来统一提供OLAP分析。所以我们常说OLTP是数据库的应用,OLAP是数据仓库的应用,下面用一张图来简要对比。
1、基本含义不同:OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,记录即时的增、删、改、查,比如在银行存取一笔款,就是一个事务交易。OLAP即联机分析处理,是数据仓库的核心,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。典型的应用就是复杂的动态报表系统。
2、实时性要求不同:OLTP实时性要求高,OLTP 数据库旨在使事务应用程序仅写入所需的数据,以便尽快处理单个事务。OLAP的实时性要求不是很高,很多应用顶多是每天更新一下数据。
3、数据量不同:OLTP数据量不是很大,一般只读/写数十条记录,处理简单的事务。OLAP数据量大,因为OLAP支持的是动态查询,所以用户也许要通过将很多数据的统计后才能得到想要知道的信息,例如时间序列分析等等,所以处理的数据量很大。
4、用户和系统的面向性不同:OLTP是面向顾客的,用于事务和查询处理。OLAP是面向市场的,用于数据分析。
5、数据库设计不同:OLTP采用实体-联系ER模型和面向应用的数据库设计。OLAP采用星型或雪花模型和面向主题的数据库设计。
行式数据库与列式数据库
优缺点比较
优点 | 数据被保存在一起 Dml 操作简单 大多数支持事务 | 查询时涉及到的列被读取 压缩率很高 任何列都是索引 增加列操作简单 可以有1-2千个列 |
缺点 | 查询需要载入所有数据 DDL(增加列操作麻烦) 列数目需要限制 | DML麻烦 完成选择,被选择的列要重新组装返回 |
代表 | MySQL ORACLE SQLSERVER | Hbase infobright |
适用场景 | OLTP线上事务业务 | 数据仓库,大容量存储快速返回结果业务 |