关系型数据库的演变以及非关系型数据库
文章目录
数据库分类
而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库。
什么是关系型数据库
关系型数据库
是建立在关系模型基础上的数据库,就是说它需要预定义固定模式的表来存储所有数据
关系型数据库用了选择、投影、连接、并、交、差、除、增删查改等数学方法来实现对数据的存储和查询。可以用SQL语句方便的在一个表或多个表之间做非常复杂的数据查询。安全性高。
MySQL数据库的模式的发展
mysql的单机时代
这个时候网站的访问量不是很大,而且也是静态网页,动态交互类型的网站不多,产生的数据不是很大,这个时候mysql单机就足够了,但是当数据量增大,就存在瓶颈了。
分析一下这个时候的存储瓶颈
- 数据量的增大,大到一个机器放不下时
- 数据的索引(B+ Tree)一个机器的内存放不下时
- 访问量(读写混合)一个实例不能承受
这个时候为了解决访问量问题
就在App和Mysql数据库中间加了一个DAL(数据库访问层)
数据库访问层的主要职责是:读取数据和传递数据。
Memcached(缓存)+ MySQL + 垂直拆分
当访问量继续上升,几乎大部分使用MySQL架构的网站在数据库上都开始出现了性能问题,无法满足快速查询与插入数据的需求,这个时候程序员就开始大量使用缓存技术(在数据库访问层加缓存)来缓解数据库的压力,并且对数据库进行垂直拆分(主要是针对写压力)。
什么是垂直拆分?
垂直拆分它是数据库拆分的一种,数据库拆分分为 垂直拆分,水平拆分,基于hash拆分,基于路由拆分
-
按功能划分(垂直划分)
一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,拆分到不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面
比如淘宝中期开始的数据库端按照业务垂直拆分:按照业务交易数据库、用户数据库、商品数据库、店铺数据库等进行拆分。
优点:
-
拆分后业务清晰,拆分规则明确。
-
系统之间整合或扩展容易。
比如说:我们的系统现在要增加新的业务(功能),我们直接添加新的数据库,创建相应的表就可以了。
-
数据维护简单
缺点:
-
部分
-