网站建设-数据库横向扩展

news/2024/5/19 20:46:13/文章来源:https://blog.csdn.net/weixin_30555125/article/details/96316746

数据库横向扩展

         在网站建设的过程中,一个高扩展性的架构设计可以保证当网站业务量和访问量达到零界点时我们能够以较低的成本对现有系统进行扩展。而网站系统最难扩展的部分通常是数据库或者持久化存储。当今最流行的RDBMS数据库,如Oracle,Sql Server等,都是关系型数据库。大多数数据库都有依赖基于ACID属性的外键,如下表,

 

属性

说明

原子性(Atomicity)

要么完成事务中的所有操作,要么一个都不执行

一致性(Consistency)

事务开始和结束时,数据库的所有数据都要保持状态一致

隔离性(Isolation)

事务的表现就像它是对数据库执行的唯一操作

持久性(Duration)

事务完成时,操作将不能更改

 

         不管是使用哪种类型的外键,原则是只要写和读操作在同一时间发生就会出现两种情况,

  1. 读出来的数据与真实数据存在差异,因为数据在读出来的同时已经发生改变了;
  2. 必须保证读和写操作不能同时发生,操作必须等待另外一项操作完成后才能进行;

基于这个原则,当网站访问量达到一定数量时,根据使用的ACID外键属性的不同,就会出现数据存在较大差异或者操作等待时间过长的问题,因此我们就必须对数据库进行扩展来解决这一的问题。

 

         在90%以上的网站建设项目中,数据库的读操作远远大于写操作,特别是企业的网站制作,99%都是读操作,只有管理员对网站信息进行增删改查时才会对数据库有写操作。对于这种高读/写比例的网站应用,创建只读数据库副本就可以轻松地扩展这类系统。这种通过创建数据库副本来横向扩展数据库的技术叫做“读写分离”。

时间敏感度

         根据数据的时间敏感度,有两种方法可以分布数据的只读副本。什么叫时间敏感度?我们为什么要在乎它?时间敏感度指的是相对于数据库的写副本来说,只读副本有多新,还是完全同步的。因为对于读写分离的数据库来说,理论上可以做到读写副本完全同步,但是成本非常高,对于利益相关者来说这往往不是他们想要的性价比。因此,我们在这里讨论实际上是你到底能容忍多大的读写数据差异。

查询缓存

这种方法是在数据或应用层建立缓存层,每次查询可以先检查缓存中是否已存在对象,而不是每次都去读取数据库。当进行写操作后必须将数据标示为过期,下次读取时才需要查询事务数据库获取数据,更新缓存。现在有那么多优秀的键值存储系统可以作为缓存系统,如memcache,redis,couchbase等,所以先强烈推荐这种方法。

缓存机制

复制数据库

         除了建立缓存层外,还可以通过复制数据库来拆分数据,大多数关系数据库都有某种类型的复制功能。Sql Server是通过主-从数据库的概念来实现复制功能的。所谓的主数据库就是只进行写操作的数据库,从数据库是主数据库的只读副本。主数据库会把更新,插入,删除等操作记录在二进制日志中,每个从数据库则是从主数据库中请求这些日志,在自身重现这些操作。如下图,

数据库读写分离

 

         还记得我们上面提到的,90%以上的网站建设项目中,数据库的读操作远远大于写操作,这意味着我们可以通过这样的数据库扩展,将很少量的写操作在一台主数据库中完成,而大量的读操作由多台从数据库承担,这样可以很好的将用户读取操作分摊到多台从数据库上,大大减轻了单台数据库的负担,理论上还可以通过无限扩展从数据库的数量来适应无限增加的网站用户访问量。

 

         大多数的网站建设项目都可以通过这两种方法来增强网站扩展性,不仅仅是数据库,web服务器通常也能通过类似的原理轻松扩展,这样就能够把事务平均分配到多个服务器上进行横向扩展。但是遗憾的是,几乎没有一款现有的建站系统或建站软件原生支持这样的横向扩展,程序员必须对代码和数据库进行二次开发后才能实现。

 

         但是对于某些必须保证实时同步的数据而言,这种方法就不适用了。在内存中缓存客户的专有数据或者不同功能的特有数据可能会造成扩展服务瓶颈,很难在不影响客户响应时间的前提下扩展这些服务。要解决这种内存限制,就需要我们对系统进行纵深扩展了。

转载于:https://www.cnblogs.com/iNc0ming/p/3361097.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_747251.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 日志的启动与查看:有利于开发者研究网站一个页面执行时的sql语句变化...

2019独角兽企业重金招聘Python工程师标准>>> 当我们研究一个网站的时候,比如phpwind系统,我需要知道当发表帖子的时候mysql执行了哪些查询和更新和插入呢? 有个方法可以给我我们,那就是开启mysql的日志 查询日志&…

陆续放给大家一些拿钱买的收费的模板,今天先给一个在某销售网站上排行第一的管理端模板 Ace Responsive Admin Template...

下载地址: http://pan.baidu.com/s/1B2xjC 提取密码:le1p 原文地址:http://zhangrou.net/post/2014/06/23/陆续放给大家一些拿钱买的收费的模板,今天先给一个在某销售网站上排行第一的管理端模板-Ace-Responsive-Admin-Template.a…

新的Oracle网站登录界面

今天登录MOS的时候发觉居然用户登录界面更新了,新的界面更为大气,风格上也更Oracle了。可以看出后台仍使用Oracle Access Manager 11g,仅仅是UI发生了变化。

SEO培训对个人站长的价值

互联网个人站长需要被关注,不管他们的未来将如何发展,都离不开各种站长平台的支撑以及新知识的获取方式,谈起SEO培训,另许多个人站长兴奋不已的同时也会存在着各种谩骂。B君2012年进入互联网行业,大学期间闻声互联网一…

49 | 深入浅出网站高性能架构设计

转载于:https://www.cnblogs.com/lmx0621/p/10614980.html

.NET Web开发初学者必知的四个网站

No.1 W3school 链接: http://www.w3school.com.cn/ 预览: 介绍: 全球最大Web前端技术教程网站。内容涵盖从基础的 HTML 到 CSS到进阶的XML、SQL、JS、PHP 和 ASP.NET。 优点: 教程语言简练,通俗易懂。几乎每个知识点都…

【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

转载自:周旭龙 http://www.cnblogs.com/edisonchou/p/4126742.html 一、反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络…

让你的HTML5CSS3网站在老IE中也能正常显示的3种方法

起初,IE其实也是一款非常有进取心的浏览器。但经过一段时间的蛰伏后,它已经成为了我们生活中的一道障碍。微软现在又重新开始向其它浏览器发起挑战,但事实情况是,新版的现代IE浏览器一直滞后于谷歌浏览器和火狐浏览器。我们还不得…

PHP案例 网站会员管理设计

原文[下载/浏览]:http://www.xilinjie.com/university/123 内容介绍一、概述 会员管理的网页功能在现今网站构建上相当的重要,尤其是对于一些需要付费来取得会员认证的公司和个人网站。为了避免误闯的用户及有心的***,会员认证及管理的方式的…

基于阿里云ECS的phpwind网站备案前如何远程访问调试?

基于阿里云ECS的phpwind网站部署非常方便,但云主机的外网IP绑定域名却比较复杂。先要申请域名,成功后还需要备案。尤其是企业网站备案,需要提交的资料较多,准备资料以及审批的时间较长。这段时间在外网采用IP访问是不行的&#xf…

Python--爬虫之(斗图啦网站)图片爬取

学习重点: 一、主要的安装包,requests、BeautifulSoup4 二、首先爬取每页的网址 三、再爬取每页的全部图片 四、下载图片和设置保存路径和图片名字 五、整合代码 1、主要的安装包requests、BeautifulSoup4  1)用来请求网络数据requests 2)用…

电商网站jQuery放大镜代码

分享一款电商网站jQuery放大镜代码。这是一款基于jquery.elevatezoom插件实现的类似淘宝放大镜代码,提供40多种参数,可自由配置多种效果,适合电商或图片类网站使用。效果图如下: 在线预览 源码下载 实现的代码。 html代码&…

大型网站技术架构

1. 初始阶段的网站架构一般来讲,大型网站都是从小型网站发展而来,一开始的架构都比较简单,随着业务复杂和用户量的激增,才开始做很多架构上的改进。当它还是小型网站的时候,没有太多访客,一般来讲只需要一台…

IIS7绑定多个HTTPS网站并应用自签名证书

本文主要介绍如何在IIS中添加多个网站并使用同一个数字签名证书(win7IIS7.5) IIS中添加站点site1,端口号为80,主机名为空。如下图:创建证书 IIS->Server Certificates –>Create Self-Signed Certificate ,输入证书名如下图&#xff1a…

01_很好的网站:程序师

2019独角兽企业重金招聘Python工程师标准>>> http://www.techug.com/ 动画讲解Eclipse常用快捷键 http://www.techug.com/eclipse-shortcut-keys 十大编程算法助程序员走上高手之路 http://www.techug.com/10-algorithm-help-programmer-grow-up 转载于:https://my.…

如何构建高性能web网站:分布式缓存

一、数据库前端缓冲区 要清除数据库前缓冲区,首先必须明确什么是文件系统的内核缓冲区(Buffer Area):它位于内核的物理内存地址空间,除了使用O_DIRECT比其他标签中打开文件,所有的磁盘的读写操作&#xff0…

7月上旬国内网站流量统计TOP5:新浪跻身五强居四

IDC评述网(idcps.com)07月15日报道:根据中国互联网协会-中国网站排名公布的最新数据显示,截至2015年7月13日,国内网站独立访问量五强名单分别是百度、腾讯网、360安全中心、新浪网、淘宝网。具体情况如下图所示&#x…

网站集成微博登录功能

前几天写了一篇关于网站集成QQ登录的文章受到不少网友的好评,期间有不少网友私信能不能写一篇关于网站集成新浪微博登录功能的文章,于是这些天抽空写了这篇文章,希望能帮到有需要的朋友。 一.前期准备 网站要想集成新浪微博登录功能&#xff…

个人网站如何赚钱

2019独角兽企业重金招聘Python工程师标准>>> 好多人都说,个人站长已死,许多都开始慢慢转型了。有的开始找合作伙伴,组建团队,有的转型做了自媒体,有的干脆直接去上班了……但是,个人站长真的就没…

安全网站推荐

2019独角兽企业重金招聘Python工程师标准>>> 国内 https://www.t00ls.net t00ls是国内比较低调的民间组织&#xff0c;论坛质量较高。 <?php $head "80vul"; 黑哥所在团队&#xff0c;博客内容质量很好。 Worm.cc 我所在邪红色信息安全组织的不知名博…