读写分离是架构分布式系统的一个重要思想。不少系统整体处理能力并不能同业务的增长保持同步,因此势必会带来瓶颈,单纯的升级硬件并不能一劳永逸。针对业务类型特点,需要从架构模式上进行一系列的调整,比如业务模块的分割,数据库的拆分等等。
集中式和分布式是两个对立的模式,不同行业的应用特点也决定了架构的思路。如互联网行业中一些门户站点,出于技术和成本等方面考虑,更多的采用开源的数据库产品(如MYSQL),由于大部分是典型的读多写少的请求,因此为MYSQL及其复制技术大行其道提供了条件。而相对一些传统密集交易型的行业,比如电信业、金融业等,考虑到单点处理能力和可靠性、稳定性等问题,可能更多的采用商用数据库,比如DB2、Oracle等。
就数据库层面来讲,大部分传统行业核心库采用集中式的架构思路,采用高配的小型机做主机载体,因为数据库本身和主机强大的处理能力,数据库端一般能支撑业务的运转,因此,Oracle读写分离式的架构相对MYSQL来讲,相对会少。
前段时间一直在规划公司新的数据库架构,考虑到我们的业务特点,采用Oracle读写分离的思路,Writer DB和Reader DB采用日志复制软件实现实时同步; Writer DB负责交易相关的实时查询和事务处理,Reader DB负责只读接入,处理一些非实时的交易明细,报表类的汇总查询等。同时,为了满足高可用性和扩展性等要求,对读写端适当做外延,比如Writer DB采用HA或者RAC的架构模式,Reader DB可以采用多套,通过负载均衡或者业务分离的方式,有效分担读库的压力。
对于Shared-nothing的数据库架构模式,核心的一个问题就是读写库的实时同步;另外,虽然Reader DB只负责业务查询,但并不代表数据库在功能上是只读的。只读是从应用角度出发,为了保证数据一致和冲突考虑,因为查询业务模块可能需要涉及一些中间处理,如果需要在数据库里面处理(取决与应用需求和设计),所以Reader DB在功能上仍然需要可写。
下面谈一下数据同步的技术选型问题:
能实现数据实时同步的技术很多,基于OS层(例如VERITAS VVR),基于存储复制(中高端存储大多都支持),基于应用分发或者基于数据库层的技术。因为数据同步可能并不是单一的DB整库同步,会涉及到业务数据选择以及多源整合等问题,因此OS复制和存储复制多数情况并不适合做读写分离的技术首选。
基于日志的Oracle复制技术,Oracle自身组件可以实现,同时也有成熟的商业软件。选商业的独立产品还是Oracle自身的组件功能,这取决于多方面的因素。比如团队的相应技术运维能力、项目投入成本、业务系统的负载程度等。
采用Oracle自身组件功能,无外乎Logical Standby、Stream以及11g的Physical Standby(Active Data Guard),对比来说,Stream最灵活,但最不稳定,11g Physical Standby支持恢复与只读并行,但由于并不是日志的逻辑应用机制,在读写分离的场景中最为局限。如果技术团队对相关技术掌握足够充分,而选型方案的处理能力又能支撑数据同步的要求,采用Oracle自身的组件完全可行。
选择商业化的产品,更多出于稳定性、处理能力等考虑。市面上成熟的Oracle复制软件也无外乎几种,无论是老牌的Shareplex,还是本土DSG公司的RealSync和九桥公司的DDS,或是Oracle新贵Goldengate,都是可供选择的目标。随着GoldenGate被Oracle收购和推广,个人认为GoldenGate在容灾、数据分发和同步方面将大行其道。
当然,架构好一个可靠的分布式读写分离的系统,还需要应用上做大量设计,不在本文讨论范围内。
相关推荐
Oracle数据库的读写分离是一种优化数据库性能的策略,它...不过,实施过程中需要注意监控和管理,确保数据一致性,避免归档日志的丢失或延迟,以及定期检查Standby数据库的状态和性能,以保证读写分离架构的稳定运行。
使用Oracle Active Data Guard实现PMS2.0数据库读写分离初探 本文研究了使用Oracle Active Data Guard实现PMS2.0数据库读写分离,以解决PMS2.0业务系统中数据库I/O吞吐量和资源耗用的性能瓶颈问题。本文首先介绍了...
MySQL 双主 + Keepalived 读写分离解决方案 MySQL 双主 + Keepalived 读写分离是一种高可用性解决方案,旨在解决 MySQL 单点故障问题。该方案通过双主 MySQL 实现高可用性,并使用 Keepalived 实现虚拟 IP(VIP)...
它支持多种数据库,如MySQL、Oracle等,并且提供读写分离、分库分表等多种功能。 1. **配置读写分离**:在Sharding-JDBC中,读写分离的配置主要涉及数据源和规则定义。数据源是指实际的数据库连接,通常我们会配置...
Oracle 数据库的读写分离是一种优化数据库性能的策略,它将数据的写操作集中在一台服务器(主库),而读操作则分散到多个...在设计数据库架构时,应当根据业务需求、资源限制和技术能力来选择最适合的读写分离技术。
然而,在这种模式下,由于网络延迟、系统负载等原因,主从库间可能存在数据同步延迟,这会给读写分离架构带来数据一致性问题。 处理读写分离时主从复制的数据延迟问题,关键在于识别延迟并制定合适的策略来应对。在...
### 基于Oracle数据库的读写分离电子商务系统的设计与实现 #### 1. 背景 随着电子商务行业的快速发展,各大电商平台面临着前所未有的技术挑战。例如,阿里巴巴、京东等平台不仅需要处理海量的用户数据,还要确保在...
本文将详细介绍 Oracle Data Guard 实施方案,旨在实现数据库读写分离解决方案。该方案通过 DG 实现主库与备库同步,主库作为业务应用库,备库作为查询库,应用根据不同需求配置对应数据库。 Oracle Data Guard ...
在现代企业级应用开发中,数据库的读写分离是提高系统性能和可用性的重要策略之一。Sharding-JDBC作为一款轻量级的Java框架,提供了对多数据源和读写分离的支持,帮助开发者轻松实现这一目标。本文将深入探讨如何...
Oracle Streams是一种先进的数据复制解决方案,它允许用户在Oracle数据库之间实时传输数据,从而实现数据库的复制、归档、故障恢复和读写分离等多种功能。在本配置文档中,你将找到有关Oracle Streams的全面信息,...
本资源摘要信息涵盖淘宝数据库架构演进历程的三个阶段,包括早期单机式的 MySQL 使用方式、Mysql 迁移到 Oracle 并升级到小型机、高端存储,最后到异构数据库读写分离的架构演进过程。 淘宝数据库发展三阶段 淘宝...
PPAS 的特点包括支持 Oracle 语法、具有高性能和高可用性、支持自动备份和时间点恢复、支持同城容灾和读写分离、支持异地容灾、支持 SQL 审计和慢 SQL 监控等功能。 知识点 6:EDB Postgres Advanced Server EDB ...
10. **数据库架构设计**:包括分区技术、物化视图、读写分离和数据复制策略,以适应不同的业务需求和性能要求。 通过学习《Oracle性能优化绝版好书:高级OWI与ORACLE性能调整》,读者将掌握如何运用OWI进行性能监控...
- **可刷新PDB的切换**:Refreshable PDB实现主从功能,用户连接可实现读写分离,且PDB角色可以互相切换。 6. **安全性提升**: - **与Active Directory集成**:用户认证和授权更加简便,无需通过Oracle Internet...
- 读写分离是一种数据库架构设计,将读操作和写操作分配到不同的服务器上,以提高并发处理能力。主服务器处理写操作,从服务器处理读操作。 - 这种模式可以减轻主数据库的负载,但需要同步机制来保证数据一致性,...
发展速度快,存储扩展性是潜在瓶颈u数据库拆分后的应用改造成本高解决方案uDRDS提升存储扩展能力和计算能力u访问应用透明、平滑扩容、透明升配、透明读写分离解决了客户应用改造成本高的问题 阿里巴巴数据传输的...
为了解决这些问题,阿里巴巴发展了分布式数据库解决方案,如DRDS,它提供了透明的读写分离、平滑扩容和透明升配等特性,降低了DBA的工作负担,同时也减少了应用改造的成本。DRDS通过分布式事务处理、全局唯一主键等...
以读写分离为例,2009年淘宝网实现了Oracle到Mysql的读写分离,主库集中,读库水平分割,实现了故障转移和性能提升。读写分离体系结构通过自主技术实现了数据的复制和读写操作的分离。 在未来,淘宝网预计将采用多...
标题中的"CynosDB for PostgreSQL 一主多读架构"提示我们这篇文档主要讲述的是CynosDB这个数据库产品是如何结合PostgreSQL数据库引擎来实现一种特别的主从读写分离架构的。在这种架构下,数据库系统能通过一个主节点...