关系型数据库

关系型数据库:mysql、Oracle…

1.数据之间有关联关系

2.数据存储在硬盘的文件上:增删改查需要对文件进行IO操作,性能较低

非关系型数据库(NoSQL)

非关系型数据库:redis、HBASE…

NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题

1.存储的是键值对:key-value;

//例如:
name:zhangsan		
age:23

2.数据之间没有关联关系

3.数据存储在内存中速度较高

如果数据量里面的内容非常大,操作关系型数据库比较耗时。如:查询的时候

当经常查询一些不太经常发生变化的数据使用缓存思想解决这个问题,

缓存里有数据的话,就直接返回,没有数据的话,就从数据库查询,再将数据放入缓存,返回数据

NoSQL与关系型数据库的比较

非关系型数据库

优点

  • 成本低:NoSQL是开源软件,相较于关系型数据库价格较便宜
  • 查询速度快:NoSQL数据存储在缓存中,关系型数据库存储在硬盘中,不需要经过SQL层的解析,所以性能非常高,一次NoSQL查询速度高
  • 存储数据的格式为键值对:nosql键值((Key-Value)存储数据库)存储格式为key,value形式、文档形式、图片形式等等,可以存储基础类型以及对象或者是集合等各种格式而数据库则只支持基础类型
  • 扩展性好:NoSQL因为是储存键值对,所以数据之间没有耦合性,非常容易水平扩展关系型数据库的扩展难,因为有多表查询机制

缺点

  • 维护相对比较困难:维护的工具和资料有限
  • 不提供对sql的支持,没有一个统一的标准一定的学习和使用成本
  • 不提供关系型数据库对事务的处理

关系型数据库

优点

  • 可以进行多表操作:可以使用SQL语句可以完成在一个表以及多个表之间做非常复杂的数据查询。
  • 事务支持,可以提高安全性,使得对于安全性能很高的数据访问要求得以实现。

二者关系

  • 关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库
  • 一般会将数据存储在关系型数据库中在nosql数据库中备份存储关系型数据库的数据

二者区别

1.数据存储方式不同(主要区别)。

关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,进行多表操作,也很容易提取数据

非关系型数据库不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。

2.扩展方式不同(最大的差别)。

支持更多并发量SQL(关系型)数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限

NoSQL数据库横向扩展的。非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载

3.对事务性的支持不同

SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。

NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正的价值是在操作的扩展性和大数据量处理方面