热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

OracleRAC之外的方案无需重写而实现读写扩展性

使用普通的数据库及硬件mdash;mdash;单独部署OracleRAC可能要花掉50万美元。将数据网络放入数据库的前端则使我们不需要Oracle

使用普通的数据库及硬件mdash;mdash;单独部署Oracle RAC可能要花掉50万美元。将数据网络放入数据库的前端则使我们不需要Oracle

编者按:对现有系统进行扩展对于各个技术团队而言都是或大或小的挑战。尤其对于银行这种业务而言,由于要照顾到现有的系统(也就是现有的客户),不太容易通过修改架构或系统重写的方式来实现扩展,一般的做法就是用Oracle RAC等高端硬件来弥补现有扩展性的不足,但是这个做法相对昂贵。本文作者,专注于Java和.NET应用平台的GigaSpaces公司创始人兼CTO Nati Shalom以其一个银行客户Avanza为例,介绍了另一种扩展性的解决思路,其原则就是:无需重写而实现读写扩展性。

相关阅读:Oracle 11g中定位trace文件简便办法

以下为正文:

上周我参加了我们某位合作伙伴于斯德哥尔摩举办的研讨会,在该活动中我提出了数据扩展性领域的整合趋势——特别是从NoSQL向NewSQL的过渡以及整合趋势使得现有SQL及NewSQL更紧密地联系在一起。正如我在自己之前的某篇文章中就已经指出过的,,“YeSQL:一种只存在于后SQL领域中,对各类Query语义进行归纳的概括。”

在本次活动中,Ronnie Bodinger——Avanza银行的IT部门主管给出了精彩的评述,详尽说明了他们是如何将既有银行业务应用程序迁移至读写扩展性更好的新站点的。

Avanza系统概述:

Avanza是一家瑞典银行,以为投资者提供便利的产权交易及资金转移业务而闻名。它同时处理着斯德哥尔摩证券交易所中最大比例的交易活动。

该银行通过网上银行系统为其投资者提供服务,其目前的在线系统所使用的是典型的基于Java,JSP及Spring的站点。

现有站点的架构扩展

目前绝大多数站点的交互功能都以读取访问居多,而扩展性方面最主要的挑战是对现有并行读取操作进行调整。读取扩展是由端点缓存结构处理的,该结构通常存在于多数现有的LAMP及分布式缓存部署当中。在那里的首个查询指令指向数据库,而其后的查询指令则指向缓存内容。

新系统

新网站的设计理念要求契合当前的实时同步及社交使用的需求。这就意味着大多数流量及网络活动如今都是由用户所发起,而不同于以往常见的由网站所发起。此外,这类指令的执行过程及结果必须实时提交给使用银行业务的所有用户。

挑战

新网页的变更会带来流量及负载响应方面的一系列变化,这些变化无疑对扩展性提出了更高的要求。

写入扩展性

当我们现有的端点缓存架构需要应对大量的更新活动时,其性能表现就会大打折扣。这时缓存响应速度会变得极为缓慢,缓存同步过程也会因此成为一项增加开销却毫无效果的工作。

采用甲骨文出品的RAC高端硬件平台同样无法收到理想的结果。该解决方案不仅贵得离谱,同时也无法契合保证扩展性所必需的各项要求。

与从零开始建造一个应用不同,Avanza目前已然建立起一套服务现有客户群体的在线应用程序。这又带来了以下列举的数项额外挑战:

◆现有数据模型

与应用程序配套的整套数据模型是由这样一种模型关系所衍生的。数据模型的改变或将其迁移至新的NoSQL架构都会被认为将引发巨大的变化,而这些变化可能会在今后的数年时间中持续带来各种不利影响。

◆系统残余

网上银行应用程序中包含着大量残余的应用程序及第三方服务内容。由于其对第三方工具的依赖性,对现有基础设施进行重写既不可能也不实际。

◆复杂的环境

由于通常情况下,很大一部分的剩余应用程序在设计过程中都没有考虑到扩展性的需要,并且也不具备明确的整体架构,因为多年以来这类程序的编写一直习惯于采用分层处理的方式。这也使完善扩展性的复杂程度更进一步。

◆现有基础知识

现有的开发团队在Java及Java EE方面具备良好的知识与技巧,而强迫团队/开发小组立即接受一套全新的基础知识不仅仅是一项沉重的负担。这种毫无缓冲的高速发展要求以及随之而来的系统复杂性也可能会成为难以逾越的巨大障碍,并且需要耗费数年时间才会被克服。


推荐阅读
  • 迎接云数据库新时代:程序员如何应对变革?
    在数据无处不在的时代,数据库成为了管理和处理数据的核心工具。从早期的信息记录方式到现代的云数据库,数据库技术经历了巨大的变革。本文将探讨云数据库的特点及其对程序员的影响。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 本文旨在探讨机器学习与数据分析之间的差异,不仅在于它们处理的数据类型,还包括技术背景、业务应用场景以及参与者的不同。通过深入分析,希望能为读者提供清晰的理解。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
author-avatar
黄ll明雪_742
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有