- 浏览: 265339 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (298)
- 工作感悟 (6)
- java基础 (23)
- 计算机硬件知识 (1)
- 计算机网络知识 (2)
- Struts (3)
- Srping (4)
- hibernate (0)
- ibatis (0)
- webservice (4)
- Thread (22)
- maven (5)
- ubuntu/linux/centos/redhat (46)
- SSO (1)
- ESB (0)
- 工作流 (0)
- oracle (15)
- 云计算 (1)
- hadoop (1)
- nosql (0)
- mysql (3)
- sqlserver (0)
- jquery (0)
- 分布式 (3)
- 集群 (0)
- 设计模式 (2)
- EJB (0)
- map (0)
- cache (5)
- Niginx+varnish+squid+Ats (14)
- Apache (0)
- 工作/职业规划 (0)
- Scala & Groovy (1)
- English (4)
- 数据结构/算法 (6)
- 开发工具 (5)
- 测试 (2)
- Exception (0)
- 定时器 (3)
- j2ee (2)
- 部署 (1)
- Openssl (1)
- 操作系统 (3)
- kvm (13)
- libvirt (5)
- PostgreSql (5)
- 虚拟化 (3)
- 概念理解 (1)
- virt-manager (1)
- RESTful (3)
- 其它 (4)
- ssh2 (14)
- windows (1)
- 房产 (2)
- svn (1)
- 手机 (1)
- ant (1)
- flume (2)
- sqoop (1)
- fastdfs (5)
- log4j (1)
- SPDY (1)
- mongodb (2)
- MQ (2)
- Mina (1)
- dubbo (4)
- PMP (1)
- Webshpere (2)
- jvm (1)
- Btrace (1)
- zookeeper (7)
- UML (1)
- spring cloud (6)
- spring boot (5)
- storm (0)
- 软件管理 (1)
- elasticsearch (1)
- 协议 (2)
- docker (1)
- 性能 (2)
- 安全 (1)
- 代码规范 (1)
- mqtt (1)
- lombok (1)
- 车联网 (1)
- kafka (1)
最新评论
读写分离是架构分布式系统的一个重要思想。不少系统整体处理能力并不能同业务的增长保持同步,因此势必会带来瓶颈,单纯的升级硬件并不能一劳永逸。针对业务类型特点,需要从架构模式上进行一系列的调整,比如业务模块的分割,数据库的拆分等等。
集中式和分布式是两个对立的模式,不同行业的应用特点也决定了架构的思路。如互联网行业中一些门户站点,出于技术和成本等方面考虑,更多的采用开源的数据库产品(如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在容灾、数据分发和同步方面将大行其道。
当然,架构好一个可靠的分布式读写分离的系统,还需要应用上做大量设计,不在本文讨论范围内。
集中式和分布式是两个对立的模式,不同行业的应用特点也决定了架构的思路。如互联网行业中一些门户站点,出于技术和成本等方面考虑,更多的采用开源的数据库产品(如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在容灾、数据分发和同步方面将大行其道。
当然,架构好一个可靠的分布式读写分离的系统,还需要应用上做大量设计,不在本文讨论范围内。
发表评论
-
tomcat 数据源集群配置
2016-05-10 20:44 481jdbc:oracle:thin:@(DESCRIPTION= ... -
使用ORACLE自带工具sqlload导入文本文件
2014-07-17 13:36 778Dos 环境下使用SQl*Loader ... -
Oracle append有什么用
2014-07-17 13:27 860/*+append*/ 1. append 属于dire ... -
ORACLE锁机制
2013-08-22 10:11 601数据库是一个多用户使 ... -
Java中JDBC事务和JTA事务区别
2013-08-08 17:15 1375一、事务概述 事务表示 ... -
oracle hints用法大全
2013-07-16 10:52 787在向大家详细介绍Oracle ... -
oracle translate() 详解+实例
2013-07-08 14:58 692一、语法: TRANSLATE(strin ... -
oracle联合查询
2013-05-22 15:15 702等值连接 select * from books,books ... -
oracle锁表问题
2013-05-21 10:38 658oracle锁表问题 查询表 ... -
oracle中insert,copy,insert append执行对比
2013-04-09 13:20 800oracle中insert,copy,insert appen ... -
Oracle的表压缩
2013-04-09 11:09 722Oracle压缩数据的处 ... -
ORACLE 各种PARTITION 的分析(原)
2013-04-07 13:34 888总结自ORACLE官方在线帮助文档。 ORACLE 为构建 ... -
ORACLE分区表的使用和管理
2013-04-07 11:13 5861创建和使用分区表 Orac ... -
oracle常用语法和语句收藏
2013-03-22 10:08 7721.case when 示例 select ta ...
相关推荐
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...
- 读写分离是一种数据库架构设计,将读操作和写操作分配到不同的服务器上,以提高并发处理能力。主服务器处理写操作,从服务器处理读操作。 - 这种模式可以减轻主数据库的负载,但需要同步机制来保证数据一致性,...
【MySQL读写分离与Mycat】 MySQL数据库的读写分离是一种常见的数据库优化策略,旨在提高系统的并发处理能力和响应速度。在高并发场景下,读操作通常远多于写操作,将读写操作分离可以使得主库专注于处理写操作,而从...
标题中的"CynosDB for PostgreSQL 一主多读架构"提示我们这篇文档主要讲述的是CynosDB这个数据库产品是如何结合PostgreSQL数据库引擎来实现一种特别的主从读写分离架构的。在这种架构下,数据库系统能通过一个主节点...
- 发展到主从数据库架构,实现读写分离。 - 进一步分离不同业务,每个业务拥有独立的主从数据库架构。 - 地域或哈希基础的拆分,将不同业务分布在不同的主从数据库中。 6. Oracle数据库分片的历史发展: - 早期...
每个Oracle实例包括系统全局区(SGA)和Oracle进程,SGA是内存区域,存储数据库的缓存信息,而Oracle进程负责处理数据库的读写请求和其他任务。这种架构设计保证了高效的数据库操作和资源管理。 在培训过程中,安全...