数据库应用与设计-大型数据库系统架构设计方法.pdf
文本预览下载声明
第三章
大型数据库系统应用
设计方法
可扩展性、高可用性及负载均衡
基本概念
可扩展性(Scalability|伸缩性):
在一些大的系统中,预测最终用户的数量和行为是非常困难的,可扩展性是指系统
适应不断增长的用户数的能力。提高这种并发会话能力的一种最直观的方式就增加
资源(CPU,内存,硬盘等),集群是解决这个问题的另一种方式,它允许一组服
务器组在一起,像单个服务器一样分担处理一个繁重的任务。
高可用性(High availability):
单一服务器的解决方案并不是一个健壮方式,因为容易出现单点失效。像银行、账
单处理这样一些关键的应用程序是不能容忍哪怕是几分钟的死机。它们需要这样一
些服务在任何时间都可以访问并在可预期的合理的时间周期内有响应。集群方案通
过在集群中增加的冗余的服务器,使得在其中一台服务器失效后仍能提供服务,从
而获得高的可用性。
负载均衡(Load balancing):
负载均衡是集群的一项关键技术,通过把请求分发给不同的服务器,从而获得高可
用性和较好的性能。一个负载均衡器可以是从一个简单的Servlet或Plug-Ins (例如
一个Linux box利用ipchains来实现),到昂贵的内置SSL加速器的硬件。除此之外,
负载均衡器还需执行一些其他的重要任务,如“会话胶粘”让一个用户会话始终存
在一个服务器上,“健康检查”用于防止将请求分发到已失效的服务器上。有些负
载均衡器也会参与我们下面将要谈到“失效转移”过程。
基本概念
容错(Fault tolerance):
高可用性意味着对数据正确性的要求不那么高。在J2EE集群中,当一个服务器实例
失效后,服务仍然是有效的,这是因为新的请求将被冗余服务器处理。但是,当一
个请求在一个正在失效的服务器中处理时,可能得到不正确的结果。不管有多少个
错误,容错的服务应当能确保有严格的正确的行为。
失效转移(Failover):
失效转移是集群中用来获取容错能力的另一项关键的技术。当一个结点失效后,通
过选择集群中的另一个结点,处理将会继续而不会终止。转移到另一个结点可以被
显式的编码,或是通过底层平台自动地透明地路由到另一个服务器。
等幂方法(Idempotent methods):
等幂方法是指这样一些方法:重复用相同的参数调用都能得到相同的结果。这些方
法不会影响系统状态,可以重复调用而不用担心改变系统。例如:getUsername()
就是等幂的,而deleteFile就不是。当我们讨论HTTP Session失效转移和EJB失效转
移时,它是一个重要的概念。
讨论的背景
主题
数据库基本问题调查
关系数据库的基本背景
ACID基本概念解析
范式问题解析(Normalization )
数据库基本问题调查
大家都使用过哪些数据库?
哪些内容是数据库系统的关键点?
常见的数据存储
传统的数据库系统
• Oracle
• DB2、SQL Server
• MySQL、PosgreSQL
分布式数据库
• Google Spanner BigTable MegaStore
• OceanBase、Hbase
缓存服务器 &KeyValue Store
• Tair
• Memcached
• Redis
数据库的主要特性
ACID
• 原子性(Atomicity )
• 完整性(Consistency )
• 隔离性 (Isolation )
• 持久性 (Durability )
Relation &SQL
• Structured Query Language (即SQL )
• A Relational Model of Data for Large Shared Data Banks
(By Edgar Codd )
RDBMS之前的数据库的问题
不支持数据独立性
数据库与应用系统之间的强耦合
应用系统的复杂度
应用系统本身的规模较小(性价比?)
关系数据库的主要业务场景
Billing (记账类业务,电信、银行)
Booking (订票类业务,航空)
Inventory (库存管理,零售)
这些业务的共同特征是什么?
关系数据库的关系来自哪里?
这是关系的一个来源
另一个来源是Normalization
ACID的基础概念
Transaction的概念借自Contract Law
• 一手交钱、一手
显示全部