数据库

大流量网站的底层系统架构

纵然是瞬间 提交于 2020-03-21 19:49:38
  动态应用,是相对于网站静态内容而言, 是指以c/c++、php、Java、perl、.net等 服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通 常与数据库系统、缓存系统、分布式存储系统等密不可分。   大型动态应用系统平台主要是针对于大流 量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平稳运行。   大型动态应用系统又可分为几个子系统:   l Web前 端系统   l 负 载均衡系统   l 数 据库集群系统   l 缓 存系统   l 分 布式存储系统   l 分 布式服务器管理系统   l 代 码分发系统   Web前端系统   结构图:   为了达到不同应用的服务器共享、避免单点故障、集中管理、统一配置等目的,不以应用划分服 务器,而是将所有服务器做统一使用,每台服务器都可以对多个应用提供服务,当某些应用访问量升高时,通过增加服务器节点达到整个服务器集群的性能提高,同 时使他应用也会受益。该Web前端系统基于Apache/Lighttpd/Eginx等 的虚拟主机平台,提供PHP程序运行环境。服务器对开发人员是透明的,不需要开发人员介入服务器管理   负载均衡系统   负载均衡系统分为硬件和软件两种。硬件负载均衡效率高,但是价格贵,比如F5等

大流量网站的底层系统架构

早过忘川 提交于 2020-03-21 19:48:14
动态应用,是相对于网站静态内容而言,像我们.NET 服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。   大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平稳运行。   大型动态应用系统又可分为几个子系统:   l Web前端系统   l 负载均衡系统   l 数据库集群系统   l 缓存系统   l 分布式存储系统   l 分布式服务器管理系统   l 代码分发系统   Web前端系统   结构图:   为了达到不同应用的服务器共享、避免单点故障、集中管理、统一配置等目的,不以应用划分服务器,而是将所有服务器做统一使用,每台服务器都可以对多个应用提供服务,当某些应用访问量升高时,通过增加服务器节点达到整个服务器集群的性能提高,同时使他应用也会受益。   负载均衡系统   负载均衡系统分为硬件和软件两种。硬件负载均衡效率高,但是价格贵,比如F5等。软件负载均衡系统价格较低或者免费,效率较硬件负载均衡系统低,不过对于流量一般或稍大些网站来讲也足够使用,比如lvs,nginx。大多数网站都是硬件、软件负载均衡系统并用。    数据库集群系统   结构图:

oracle中ddl为什么不能回滚

与世无争的帅哥 提交于 2020-03-21 19:35:47
3 月,跳不动了?>>> 在 ITPUB 上看到有人提出了这个问题。在 Sqlserver 或一些其他的 数据库 中, DDL 语句也是可以回滚的,那么 Oracle 为什么不能回滚 DDL 语句呢。 这个问题来自: http://www.itpub.net/thread-1300088-1-5.html 要说明这个问题,首先需要说明什么是 DDL 语句。 DDL 语句是数据定义语句,包括各种数据对象的创建、修改和删除,以及授权等操作。 在 Oracle 中 DDL 语句将转化为修改数据字典表的 DML 语句。一个简单的修改表的 DDL 语句,会导致 Oracle 在后台通过递归 SQL 语句进行大量的查询和修改的操作。 如果有兴趣,可以通过 SQL_TRACE 根据一下 DDL 语句,检查一下 Oracle 后台实际执行了哪些操作。 在 Oracle 中, Oracle 执行 DDL 前会发出一个 COMMIT 语句,然后执行 DDL 操作,最后再发出一个 COMMIT 操作。 前面提到了对于 Oracle 而言, DDL 实际上是数据字典表的一系列的修改,也就是数据字典表的 DML 操作,那么理论上讲 Oracle 是完全有能力实现 DDL 语句的回滚的,那么 Oracle 为什么设计成现在的工作方式。要知道 Oracle 以灵活和强大的可定制性著称,但是 Oracle

数据库3大范式

让人想犯罪 __ 提交于 2020-03-21 18:15:29
第一范式:每个列不可拆分 第二范式:在第一范式上,非主键列完全依赖主键,而不能依赖主键一部分 第三范式:在第二范式上,非主键列只能依赖主键,不依赖其他非主键 设计数据库结构,尽量遵守3范式。考虑性能等问题,可以不严格遵守。 来源: https://www.cnblogs.com/ivy-xu/p/12540145.html

存储过程系列之调试存储过程 SQL Server 2005

主宰稳场 提交于 2020-03-21 14:27:33
在数据库中直接调试 在数据库中直接调试是调试SQL Server 2005的 存储 过程的最简单的方法。 在Visual Stuido的IDE中你可以选择单步执行存储过程,然后就可以一条语句一条语句地单步执行了,同时你也可以检查和修改存储过程内的T-SQL变量和参数。本文结尾处提供下载的压缩包中包括一个SQL Server 2005 Express版本的Northwind数据库。我在其中添加了一个名为“DoThings”的存储过程,它有一个参数@CategoryID。这是一个没什么实用价值的存储过程,但是它有很多的T-SQL语句和变量,另外还有一个参数,这将使我们能更好地练习存储过程的调试。 在 服务器 资源管理器中右键单击“DoThings”存储过程,然后选择单步执行存储过程的选项。 (注意:SQL Server调试只有Team Systems和Professional版本的Visual Studio才支持。) 调试器启动并且执行存储过程。因为存储过程“DoThings”需要一个传入值给@CategoryID,所以会弹出一个对话框让我们提供该值。输入1后单击OK。 首先会执行第一条语句。你可以选择逐语句或逐过程进行调试(快捷键分别为F11和F10),也可以在监视窗口中添加参数和变量。 存储 过程调试期间的截屏如下图所示。左侧的黄色箭头指的是当前执行的语句。监视窗口中显示的是

为上阿里云(RDS),有人掏钱又出力?Why?

♀尐吖头ヾ 提交于 2020-03-21 12:49:58
3 月,跳不动了?>>> 周剑飞是阿里云几十万客户中的一个。我们在阿里云的一次线上活动上认识,经过几次聊天知道了他的故事。现在整个阿里云关系型数据库RDS团队的人都知道,周剑飞是RDS的一个“死忠”客户,自己花了好几天时间,把MySQL数据库从4.0升级到5.5,研究编码重构,就是为了用上RDS。 这其实挺触动神经的。屏幕另一头我们从未见过,身处深圳的客户,对我们竟然有如此的信任,愿意为使用我们的一个产品,将自己另一个能继续用的产品换了。这就是王坚博士那句“云计算是个信任生意” 的真实写照。 周剑飞用阿里云的时间不算长,在“触云”之前,他用的是一台物理服务器,托管在电信机房,Web网站、图片和数据库都放在物理机上。周剑飞表示,物理服务器的不好用一次次伤透了他的心,“有次快到春节了,都准备回家过年。快上火车时,收到短信说服务器遭攻击了。只能不回家过年,在公司做实时监控,那次心情down到谷底;还有一次,备份盘坏了,虽然是备份盘,全部数据都没了,更换花了3天;另外,平时服务器常遭受攻击,不稳定,会经常半夜收到短信报警,常常晚上睡不好,整天担心服务器挂了,老是要处理服务器的问题,也没办法专心在应用开发上,更不太有时间关注数据库升级,数据库也一直用的MySQL 4.0。“ 周剑飞的搜索引擎优化推广网站 www.cpoo.com 已经做了6年,这些年头中同服务器的“纠缠”让他疲惫不堪

276.数据库的连接方式

落爺英雄遲暮 提交于 2020-03-21 12:31:07
1.简介 1.1ODBC数据库接口 ODBC即开放式数据库互连(Open DataBase Connectivity),是微软公司推出的一种实现应用程序和关系数据库之间通信的接口标准。符合标准的数据库就可以通过SQL语言编写的命令对数据库进行操作,但只针对关系数据库。目前所有的关系数据库都符合该标准(如SQL Server,Oracle,Access,Excel等)。 ODBC本质上是一组数据库访问API(应用程序编程接口),它由一组函数调用组成,核心是SQL语句,其结构如图1.8所示。 图1.8 ODBC数据库接口 1.2OLE DB数据库接口 OLE DB即数据库链接和嵌入对象(Object Linking and EMBedding DataBase)。OLE DB是微软提出的基于COM思想且面向对象的一种技术标准,其目的是提供一种统一的数据访问接口来访问各种数据源。 这里所说的“数据”除了标准的关系型数据库中的数据之外,还包括邮件数据、Web上的文本或图形、目录服务(Directory Services)、主机系统中的文件和地理数据以及自定义业务对象等。 OLE DB标准的核心内容就是,提供一种相同的访问接口,使得数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型,其结构如图1.9所示。 图1.9 OLE DB数据库接口 1

关于ADO.NET连接池

可紊 提交于 2020-03-21 11:33:46
前几天同事问我一个问题,一种CS架构的程序,直接把SQL Server作为服务端,每个客户端直接连接数据库操作,如果客户端打开的数量过多时SQL Server的连接数将会特别高,数据库端形成性能瓶颈,这种情况下怎么办?想了想,造成这种情况的原因是ADO.NET的内部机制造成的。ADO.NET中为了提高性能,所以使用了连接池,这样每个请求就不必都创建一个连接,然后认证,然后执行SQL,而是从连接池中直接取出连接执行SQL,执行完成后也并不是真正关闭连接,而是将该连接重新放回连接池中。如果有100个客户端,每个客户端在使用一段时间后连接池中保存了10个连接,那么在这种情况下,即使不在客户端做任何操作,SQL Server上都有1000个连接,这样不出性能问题才怪。 既然是连接池的问题,那么我就针对该问题想到了2个解决办法: 1.关闭ADO.NET的连接池,每次执行SQL时都是新建一个连接执行,然后关闭。这样做将使数据查询有所减慢(每次都建立连接,每次都认证,当然会慢了),不过这个慢是毫秒级的,一般感觉不到的,但是如果一个操作就涉及到几百个SQL语句的情况可能会明细感觉到减慢。修改方法特别简单,都不用修改代码,在数据库链接字符串中加入Pooling=False;即可。 2.修改架构,这种CS架构除了性能问题外还会出现其他的比如安全上的问题。可以将直接连数据库的方法改成连接服务

Mongodb安全认证

瘦欲@ 提交于 2020-03-21 10:23:41
Mongodb安全认证在单实例和副本集两种情况下不太一样,单实例相对简单,只要在启动时加上 --auth参数即可,但副本集则需要keyfile。 一、单实例 1.启动服务(先不要加auth参数) 2.登陆后切换到admin库并添加管理员账号 2.1 创建系统管理员用户 默认条件下,超级管理员只能用于帐号管理,不能进行其他数据库操作,可以通过自己给自己授权实现。生产环境中的管理员,如果某个帐号包含了角色userAdminAnyDatabase或者userAdmin,就应该仅仅用于帐号和角色管理,不应该再授予别的角色了。 (1)我们首先就要建立一个超级管理员,然后再用超级管理员建立其他帐号: use admin db.addUser( { user: "admin", pwd: "admin", roles: [ "userAdminAnyDatabase" ] } ) (2)为帐号启用admin数据库认证,这样他就可以操作admin数据库了。 db.auth("admin", "admin") //认证帐号 db.system.users.find(); //查看当前已有的用户信息 (3)使用用刚才的超级帐号登录数据库(admin)mongo localhost:27017admin -u admin -p admin 现在,我们就可以为其他数据库添加用户了: 比如filedb库

比较MySQL 与SQL server

戏子无情 提交于 2020-03-21 10:12:03
MySQL 和SQL server 都是后台数据库管理软件,都比较常用。 SQL server 多用于对某平台数据库的管理,数据的操作,比如财务系统数据等的录入、操作。 MySQL的图形化用户界面是SQLyog,它常用于后端中数据库的搭建,多站点多用户读取数据库数据常用其搭建。 因此,对于后端开发来说,熟悉SQLyog更重要。 来源: https://www.cnblogs.com/beautypatty/p/12536504.html