《高并发Oracle数据库系统的架构与设计》一1.3 在Oracle的世界里

简介:

本节书摘来自华章出版社《高并发Oracle数据库系统的架构与设计》一书中的第1章,第1.3节,作者 侯松,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.3 在Oracle的世界里

如果你是一位Oracle数据库的使用者,那么我们说你将是立足在Oracle的世界里的。本书的主旨也是以此为出发点,立足Oracle的世界,以海纳百川的胸怀选择性吸收各种数据库的使用。
立足点的不同,同样会影响到我们视角不同,那么在Oracle的世界里的高并发数据库系统架构设计将会是怎么样的呢?这也将是本书需要给读者们介绍的。
相信在每一个Oracle数据库用户的眼中都有其独特的风景,对Oracle的理解可以是技术的,更可以是艺术的。在讨论中,我经常提及的一个观点:“将技术的东西当成一种艺术去做,那你将不再是简单的技术者,而是更富创造力的艺术家。”

1.3.1 数据库森林体系

在这里,我们也不妨东施效颦一回,模仿经济学里的“布林顿森林体系”,架构一个属于数据库领域的“数据库森林体系”。
数据库森林体系,是指以Oracle数据库为核心的多种数据库集群工作的生态体系。该体系的特点应该是:
应用系统核心内容和性能直接与Oracle数据库挂钩;
其他类别和功能的数据库与Oracle核心库挂钩;
其他类别和功能的数据库与Oracle数据库按业务需求实现数据同步与交互;
其他类别和功能的数据库作为Oracle核心库的扩展,分摊前端或外围业务支持。
图1-5所示为一套比较完备的数据库森林体系架构图。秉承以Oracle核心库为中心,从业务逻辑层面、数据库功能层面两个维度展开纵横方向的扩展。

image

Oracle核心库与Oracle子系统库、MySQL子系统库之间,使用GoldenGate实现即时的数据同步,MySQL子系统库是单向同步,它的角色更像是一只伸出去的手,处理前置业务。
Oracle核心库与灾备库之间通过Data Guard功能实现异步同步,起到灾难备份的作用,特殊情况下,也是可以临时打开使用的。
同样,在核心库与ADG库、T-1交易库之间也是通过Data Guard功能实现数据同步。ADG库可以看成是核心库即时的映像,服务于只读业务;T-1交易库则可视为过期的核心库映像,可以给时效要求不高的业务提供读写服务。如果必要的话,通过ADG库衍生出一些开源数据库的业务应用,就像伸出去的另一只手,处理前置业务。
对于前面提到的Oracle核心库的高并发热点争用问题,可以将这部分业务分离到前置的TimesTen内存数据库中,提高高并发会话的响应速度,其可通过TimesTen提供的方法和接口实现与Oracle核心库的即时数据同步。
当然,数据库森林体系也可以视为一种高并发热点争用问题的解决方法论,不要求全盘实现,可以选择性地搭建,满足了需求就是最佳的架构设计。
说到高并发处理能力的提升,就会不只一次地被问及Oracle数据库的RAC架构。我只能说RAC只是一种高可用的解决方案,对于高并发问题,它未必擅长。高并发热点问题,往往成了它的短板,RAC环境甚至会加剧问题的影响程度。举个例子来说,我们将会在高效索引设计章节提到的高并发会话导致主键索引分裂的等待事件——“enq:TX-index contention”,如果这个问题不先解决掉,从单节点到RAC的迁移后,问题将更加显著。
从历史来看,国人好像都很喜好RAC数据库架构,并无形中夸大了RAC数据库的作用,集高可用、高可靠、高并发、高性能的光环于一身。RAC一度风行的时候,技术人员如果不会RAC都不好意思说自己是Oracle数据库的DBA,公司如果没有RAC数据库都不好意思说自己的业务量大。这和前面提到的盲目夸大去IOE的现象是一样的,光环效应是要不得的。
然而,RAC确实也是一个不错的东西,如果在节点应用之间尽可能地实现了业务的独立,也就是说按节点完全区分业务应用,其处理并发的能力是有一定的优势的,但是是在解决了数据库结构分散的前提下。
为什么这么说呢?我们知道不论是RAC数据库还是单节点数据库,物理存在的数据库只有一套,如果数据库内部实现了业务逻辑上的必要隔离,各节点就能各行其道,反之,各节点的争用会更加剧烈。与其纠结在这个问题上,不如跳出来看问题,为什么不干脆将其按业务逻辑拆成多个库呢?必要的共享数据,可以通过即时同步来实现。
如图1-6所示,在左边RAC架构中,实例1对应业务1,有其独有的数据部分,实例2对应业务2,也有其独有的数据部分,两种业务有一定的关联性,所以还存在共享数据部分。演变成右边的架构,将其拆分成两个独立的单节点数据库,其中数据共享时效要求较低的进行数据库间即时同步,时效要求很高的冗余到各自业务数据库中。这样做虽然数据库的总容量大了,但是架构简单了,少了内存的即时同步,业务并发处理能力也提高了。回过头再来看一下我们的数据库森林体系,核心库、子系统库以及各种功能库,不就是数据库按业务逻辑拆分的结果吗?

image

近年来,大家也能更加理性地看待RAC数据库架构了,与其面对额外的采购成本和运维成本,不如干脆拆开来,用简单的架构来取而代之,这也正是大道至简的精神。
我们说高并发处理未必是RAC的强项,但高可用就一定是了。当一套数据库应用系统提出如下需求的时候,我们将毋庸置疑地给出RAC的解决方案:
业务7×24小时在线;
尽可能短的故障停机修复时间,10分钟以内、5分钟以内,甚至更短。

1.3.2 大道至简

在此我们不得不先提到一个概念,就是数据库架构师的“术”与“道”。业内很多数据库架构师往往是技术水平比较高的DBA的升级版,这是一个比较典型的以“术”为导向的结果,一切以技术说话,这往往造就了架构的局限性,甚至凡事唯技术论。好比很多项目在制定目标的时候,会把某项新技术的实现作为目标之一,造成驴唇不对马嘴的后果。一个成功的数据库架构师应该是以“道”为导向,那何为数据库架构师的“道”呢?在这里我先卖一个关子,将在本书的第9章中展开讨论。
我曾经在一次技术沙龙上跟几位朋友讨论过一个话题:如何看待数据库五花八门的新特性呢?当说起需求是高并发处理的数据库的时候,大家达成一种共识,就是架构需要设计得充分简单,简单了才能灵活地扩展,对于一些不熟悉或者没有实战经验的新特性,可以不用就不要用。
然而,设计简单的架构并不意味着架构简单的设计,越是简单的东西越是考验设计者的思想,需要对简单的东西充分细化。立足在Oracle的世界里,有哪些是至简而至要的东西呢?就是数据库森林体系中蕴藏的设计的大道。
数据库森林体系看似复杂的架构背后,至简的大道无外乎就是对表、索引、优化器设计的把握,以及以核心库为中心的功能数据库与前置数据库的纵横扩展。本书将分作两个部分,对这两项内容具体展开阐述,其目的不在于帮助读者解决某个具体的高并发问题,而是旨在分享一种方法论,开辟一种思路。或许你在阅读的时候能够得到一点启发,演化出更高明的观点,那么我写作本书的目的也就达到了,也正是我的大道。

相关文章
|
30天前
|
存储 自然语言处理 Oracle
Oracle数据库字符集概述及修改方式
【8月更文挑战第15天】Oracle 数据库字符集定义了数据的编码方案,决定可存储的字符类型及其表示方式。主要作用包括数据存储、检索及跨系统传输时的正确表示。常见字符集如 AL32UTF8 支持多语言,而 WE8MSWIN1252 主用于西欧语言。修改字符集风险高,可能导致数据问题,需事先备份并评估兼容性。可通过 ALTER DATABASE 语句直接修改或采用导出-导入数据的方式进行。完成后应验证数据完整性。此操作复杂,须谨慎处理。
|
27天前
|
数据采集 Oracle 关系型数据库
实时计算 Flink版产品使用问题之怎么实现从Oracle数据库读取多个表并将数据写入到Iceberg表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4天前
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
14天前
|
存储 Oracle 关系型数据库
Oracle同一台服务器创建多个数据库
【8月更文挑战第30天】在 Oracle 中,可在同一服务器上创建多个数据库。首先确保已安装 Oracle 软件并具有足够资源,然后使用 DBCA 工具按步骤创建,包括选择模板、配置存储及字符集等。重复此过程可创建多个数据库,需确保名称、SID 和存储位置唯一。创建后,可通过 Oracle Enterprise Manager 进行管理,注意服务器资源分配与规划。
28 10
|
22天前
|
存储 Oracle 关系型数据库
分享几个Oracle数据库日常维护中常见的问题
分享几个Oracle数据库日常维护中常见的问题
69 1
|
27天前
|
存储 缓存 负载均衡
高并发系统架构的设计挑战与应对策略
【8月更文挑战第18天】高并发系统架构设计是一项复杂而重要的任务。面对性能瓶颈、稳定性与可靠性、并发控制和可扩展性等挑战,开发人员需要采取一系列有效的策略和技术手段来应对。通过负载均衡、缓存技术、数据库优化、异步处理、并发控制、弹性设计及监控与调优等手段,可以设计出高性能、高可用和高可扩展性的高并发系统架构,为用户提供优质的服务体验。
|
1月前
|
Oracle 关系型数据库 MySQL
Mysql和Oracle数据库死锁查看以及解决
【8月更文挑战第11天】本文介绍了解决MySQL与Oracle数据库死锁的方法。MySQL可通过`SHOW ENGINE INNODB STATUS`查看死锁详情,并自动回滚一个事务解除死锁;也可手动KILL事务。Oracle则通过查询V$LOCK与V$SESSION视图定位死锁,并用`ALTER SYSTEM KILL SESSION`命令终止相关会话。预防措施包括遵循ACID原则、优化索引及拆分大型事务。
|
1月前
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
97 2
|
16天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用问题之Oracle数据库是集群部署的,怎么进行数据同步
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
22天前
|
Oracle 关系型数据库 数据库
Oracle数据库备份脚本分享-Python
Oracle数据库备份脚本分享-Python
22 0

推荐镜像

更多