以前,只是介绍了一种数据库。
未来:会有很多种。
一、按照用途分类
1.1 三种
- 在线-事务处理
- 在线-分析处理
1.2 OLTP:事务处理
MySQL数据库,就是用来跑事务的。
现在,开发的大部分业务,都是此类。
- 经常是成千上万的用户,来访问
内心OS:
我印象中,数据库不就是干这活儿的吗?还有干其他活儿?
1.3 OLAP:分析处理
1.
- 专门大数据处理的,支持商业决策
- 分析语句:一个甚至有两百多行
- Hive,就是基于Hadoop的;GreenPlum是基于上面的PostgreSQL
2.
分析型的SQL语句:
在销售的数据中,筛选出某个产品每个月的销售排名,以及找出上一名的产品、下一名的产品。并对比与它们的差距:
三层的嵌套子查询、复杂的聚合等
3.
事务型的数据库,比如MySQL,能跑得了上述分析型的sql语句吗?
跑的了。
但是,很慢。
因为MySQL不擅长大数据量、大sql语句,而是擅长短小事务。
同理,分析型的数据库,跑高并发的短小事务,就不擅长。
术业有专攻:
可以完成功能,但是性能不好。
1.4 HTAP:混合
混合动力汽车:油电混合
既擅长短小高并发事务,有擅长大数据量的大sql语句。
二、按存储形式分类
2.1 三种
2.2 行存(最常用):跑事务场景
比如行记录格式。
因为,平时的业务开发,就是一行一行的操作。
2.3 列存:跑分析场景
比如:
求所有人的平均年龄。
列存,更好用。直接把那一列拿出来即可。如果是行存,就必须全表扫描。
2.4 KV
非关系型数据库,只有键值对。
三、按架构分类
3.1 四种
3.2 Shared-Everything :不用
右边:是电脑的三大件:CPU、内存、硬盘
这个数据库集群,就在这一台大的服务器上。即,在一个服务器上,起了很多的数据库节点。
3.3 Shared-Memory:共享内存
还是那一台大的服务器,分开了多个独立的CPU。可以拓展计算能力。
但是,内存、硬盘,还是公用的。
好处:CPU之间,可以用内存进行通信。
不足:存储没有扩展
场景:数据库用的少,但是超级计算机用的多。比如神威-太湖之光
3.4 Shared-Disk:共享硬盘(外存)
每个数据节点,有它自己的CPU、内存,这就可以称为一台独立的电脑或服务器。
场景:
- 比如阿里的PolarDB数据库
- 比如网吧:所有网吧的电脑都有CPU、内存,啥都有,就是没有硬盘。因为所有的电脑,都共享同一个大型的中央存储。
优点:统一管理、节约硬盘成本
3.5 Shared-Nothing:啥也不共享
最常见。不管是主从复制,还是分库分表,都是独立的电脑。
比如:我在自己的物理机上面,创建了三个虚拟机,各自独立。
啥都不共享,如果有数据交互,走网络。
Comments | NOTHING