1、单机数据库的存储瓶颈
1)数量总量一个机器放不下
2)数据的索引(b-tree)一个机器放不下
3)访问量读写混合一个实力不能承受
2、memcache+mysql+垂直拆分
主要是在数据库上层增加缓存
3、主从复制,读写分离
4、分表分库+水平拆分+mysql集群
5、数据库事务正确执行的四个基本要素 acid,原子性,一致性,隔离性,持久性。
6、纵向增长有极限,nosql易横向扩展,特点:kv,cache,persistence、3V+3高:海量,多样,实时,高并发,高可扩,高性能
7、多数据源多数据类型的存储的问题
1)、商品基本信息:传统的关系型数据库mysql
2)、商品描述、详情、评价信息(多文字类) 多文字信息描述类,io读写性能变差,文档数据库MongDB中
3)商品的图片(淘宝的自己TFS,Google的GFS,Hadoop的HDFS)
4)商品的关键字:搜索引擎isearch淘宝内用。java p7 多隆:p11
5)商品的波段性的热点高频词汇信息 tair,redis,memcache
8、UDSL统一数据平台服务层,java工程师不用关心各个数据库,只需统一调用UDSL
9、nosql聚合模型:kv,bson,列簇,图形
数据库四大分类:
1)kv键值:新浪:BerkeleyDB+redis 美团:redis+tair 阿里、百度 :memcache+redis
2)bson文档数据库:MongoDB,CouchDB
3)列存储数据库:HBase,Cassandra
4)图文数据库:Neo4j,InfoGrid
CAP:强一致性,可用性,分区容错性。三个需求不能同时满足
CA:传统数据库
AP:大多数网络架构的选择:弱一致性+AP(高并发很难保证强一致性)如:商品的浏览量或者点赞数对用户不是很重要
CP:Redis mongodb
BASE:基本可用,软状态,最终一致。
让系统放松对某一个时刻数据一致性的要求来换取系统整体伸缩性和性能上改观。
分布式:不用的多台服务器上面部署不同的服务工程,他们之间通过rpc之间通信,对外提供服务和组内协调
集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问
10、redis的特点:
1)支持数据持久化 2)不仅支持key,value还支持list,set等数据类型3)支持数据的备份master-slave