先说一下NoSql的背景把:它解决的是传统的关系型数据库解决不了的问题,比方说数据的总量我们一台机器放不下了,数据的索引也是占内存的,内存满了,访问量太大了,传统的数据库受不了了。
1. 数据库的发展历史以及架构- 第一个阶段就是单机数据库,这就够用了,我们使用数据库关注的是功能的实现,不考虑性能。
- 第二个阶段是随着互联网的发展,场景的需求,用户的增多,单机已经成熟不住压力了。这个阶段压力没有那么大,我们采用的方案是在数据访问层和数据库之间加一个缓存,这在很大程度上缓解了数据库的压力。此外,我们还对数据库进行了垂直拆分。
垂直拆分的概念:比方说一张表有20个字段,我们在优化的时候,将一些固定不变的字段拆分出另一张表,将不同功能的拆分成一张表。 (将多字段变成少字段叫做垂直拆分)
- 第三个阶段是继续的发展,上边的解决方案解决不掉问题了,就出现了主从分离,读写分离。就是写操作都到主库去干,读操作都让从库去干。
- 分库分表+水平拆分+集群
水平拆分的概念:比方说数据库有1000万条数据,现在分成五个库,每个存放200万条数据。这只需要解决一个问题,那就是去哪个库里边查数据。
集群可以在物理上突破极限,从一台机器变多台机器。
- 下一个接阶段就是NoSql (我一开始以为这个是没有sql的意思,其实学过才知道,这是Not only sql 的意思)
not only sql 。不仅仅是sql,更是一种扩充。
说一个场景,在实际应用中,我们肯定会根据业务的不同,使用不同的数据源,不同类型的数据源。
比方说我们将一些用户信息,长用的,放在mysql数据库中,比方说用户名,密码。
对于长的问题信息,我们要存在文档数据库如MongDB。
对于像淘宝的海量的图片,存放在分布式文件系统中,并且淘宝自己出的TFS技术。
商品的关键字,用搜索引擎,如淘宝的Isearch
对于高频的数据我们可以放在内存数据库,比方redis。
3.CAP
对于大数据是CP(一致性,和容灾性)
对于电商的架构,一定是AP(高可用,容灾性)
4.base理论