资源描述
,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,大规模网站下的数据库,云组:刘欣明,PHP,facebook,yahoo,Java,taobao,163,Python,google,语言,不是可伸缩性的关键,,,架构,才是,关键,!,大规模网站瓶颈,数据库,HTML静态化,缓存,负载均衡,图片服务器分离,数据库集群和库表散列,数据库设计,WEB,应用和数据库部署在同一台服务器上,WEB,应用和数据库部署在各自独立的服务器上,数据库服务器采用集群方式部署(比如,Oracle,的一个数据库多个实例的情况),数据库采用主从部署方式,数据库垂直分割,数据库水平分割,WEB,应用和数据库部署在同一台服务器上,一台服务器,Web,应用,数据库,WEB,应用和数据库部署在各自独立的服务器上,一台服务器,第二台服务器,Web,应用,数据库,数据库服务器采用集群方式部署,DB,DB,DB,DB(,镜像,),客户端,数据库采用主从部署方式,主从复制(二进制日志文件形式),数据库采用主从部署方式,读写分离,数据库采用主从部署方式,反向代理,数据库采用主从部署方式,好处一:实现服务器负载均衡,好处二:通过复制实现数据的异地备份,好处三:提高数据库系统的可用性,数据库垂直分割,数据库水平分割,1.,余数分区,将,User_ID%10,后的值为依据存入到不同的分区数据库中,2.,范围分区,User_ID,的范围进行分区,比如,1-100000,范围为一个分区数据库,,100001-200000,范围为一个分区数据库,3.,映射关系分区,将对分区索引字段的每个可能的结果创建一个分区映射关系,数据库垂直,+,水平分割,基于,ORM,缓存的数据库表设计,以减少数据库服务器,IO,为最终目的,而不是减少发送到数据库的,sql,条数。,尽量避免多表关联查询,尽量拆成多个表单独的主键查询。,基于,ORM,缓存的数据库表设计,举例:,blogs,blog_contents,accounts,比较:,Select blogs.*,blog_contents.content,account.name,from bogs,left join blog_contents on blogs.blog_content_id=blog_contents,left join accounts on blogs.account_id=account.id;,第一步:分布查询,Blogs=Blog.order(id desc).page(params:page);,第二步:主键查询,(,利用缓存直接获取,),Select blog_contents.*from blog_contents where blog_contents.id=29;,Select blog_contents.*from blog_contents where blog_contents.id=28;,Select blog_contents.*from blog_contents where blog_contents.id=27;,基于,ORM,缓存的数据库表设计,拆分,column,而非,row,实现细粒度对象缓存,方式一,方式二,将大字段拆分出来,放在一个单独的表里面,表只有主键和大字段,外键放在主表当中;,将不参加,where,条件和统计查询的字段拆分出来,放在独立的表中,外键放在主表当中。,按照,column,拆表本质上是一个去关系化的过程。主表只是保留参与关系运算的字段,将非关系型的字段剥离到关联表当中,关联表仅允许主键查询,以,key-value DB,的方式来访问。,id,authorid,time,content,id,authorid,time,contentid,id,content,
展开阅读全文