设计性框架:Struts,spring,springmvc
持久层框架:hebernate,mybatis
缓存数据库:减少IO操作
NoSQL数据库概述:
NoSQL(Not only SQL),不仅仅是sql,泛指非关系型的数据库
noSQL 以Key-value模式存储
不遵循SQL标准,不支持ACID
ACID:A(Atomicity)原子性、C(Consistency)一致性、I(Isolation)独立性、D(Durability)持久性
Nosql适用的场景:
CAP:C(Consistency)强一致性、A(Availability)可用性、P(Partition tolerance)分区容错性
对数据高并发的读写
海量数据读写
对数据高可扩展性的
Nosq不l适用的场景:
需要事务支持
基于sql的结构化查询存储,处理复杂的关系,需要即席查询
Memcached 和 redis 的区别
1、memcached一般不支持数据持久化,redis支持持久化
2、memcached只支持简单的key-value模式,redis支持五种数据结构存储(String,set,list,hash,zset)
NOSQL数据库是什么?
NOSQL定义:下一代数据库管理系统主要解决以下几个问题:非关系、分布式、开源和水平可伸缩性。
典型的Nosql数据库分为临时性键值存储:memcached,(redis)。永久性键值存储:Tokyo Tyrant、(redis),面向文档的数据库:MongoDB。面向列的数据库:HBase
临时性:memcached属于这种类型,所谓的临时性就是“数据可能丢失”的意思。memcached把所有的数据都保存在内存中,这样保存和读取的速度非常快,但是当memcached停止的时候,数据就不存在了。由于数据保存在内存中,所以无法操作超出内存容量的数据(旧数据会丢失)。
永久性:ROMA等属于这种类型。和临时性相反,所谓的永久性就是数据不会丢失的意思,这里的key-value存储不像memcached那样保存在内存中,而是把数据保存在硬盘上。与memcached在内存中处理数据比起来,由于必然要发生对硬盘的io操作,所以性能上还是有差距的。
两者兼具:redis就是属于这种类型。redis有些特殊,临时性和永久性兼具。redis首先将数据保存在内存中,在满足特定条件(默认是15分钟一次以上,5分钟内10个以上,1分钟内10000个以上的key发生变更)的时候将数据写入到硬盘。这样既确保了内存中数据的处理速度,又可以通过写入硬盘来保证数据的永久性。
CAP原理
CAP:C(Consistency)强一致性、A(Availability)可用性、P(Partition tolerance)分区容错性
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性、可用性、分区容错性这个三个需求,最多只能同时较好的满足两个。
因此,根据CAP原理将NoSQL数据库分成了满足CA原则,CP原则和满足AP原则三大类
CAP三进二
P :分区容忍性是我们必须需要实现的
CA: 传统Oracle数据库
AP:大多数网站架构的选择(比如双十一浏览量巨大,很难精确统计所有数据,强一致性不好实现)弱一致性+AP
CP: Redis
等到双十一过了之后,还要统计数据的最终一致性
BASE的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上的改观。也就是说,牺牲了C,成就了AP、
分布式和集群