1、NoSQL数据库概念
NoSQL数据库是非关系型数据库,主要是针对关系型数据库而言,它主要是用来解决半结构化数据和非机构化数据的存储问题。
2、为什么使用NoSQL数据库?
(1)对数据库的高并发读写的需求
关系型数据库能够应付每秒上万次的读请求,但是却没有办法应付每秒上万次的写请求,如果达到每秒上万次的写请求,磁盘的IO就无法承受这么大的压力了。
(2)对海量数据的高效存储和访问的需求
NoSQL数据库可以处理超大量的数据,能够运行在便宜的PC集群上。
(3)对数据库的高可用性和高可扩展性的需求
关系型数据库难以横向扩展,但是NoSQL数据库却可以通过增加硬件的数量和服务节点的数量来扩展性能和服务器的负载能力。
3、关系型数据库的缺陷
(1)对于数据库事务一致性的需求
(2)数据库的写实时性和读实时性的需求
(3)对于复杂的SQL语句,特别是多表关联的查询
4、NoSQL数据库有哪些?
(1)K/V:memcached和redis
(2)列存储数据库:mongoDB和hbase
5、NoSQL的三大基石:CAP、BASE和最终一致性
(1)CAP:(consistency)一致性、(Availability)可用性、(Tolerance of network partition)分区容忍性
(2)BASE:提出牺牲强一致性换取可用性和高性能,支持分区失败,允许一段时间的状态不同步,只要达到数据的最终一致性即可。而不需要时时一致。
(3)最终一致性:要求最终读取的操作都是最新写入的数据
6、IO的五分钟法则
如果数据库的一条记录被频繁访问,就应该将它放到内存中,否则就放到磁盘中按需访问。这个临界值是5分钟。
7、行存储和列存储的概念
(1)行存储:把一行中的数据值串在一起进行存储,然后再存储下一行,依次类推;
(2)列存储:把一列中的数据值串在一起进行存储,然后再存储下一列,依次类推;