AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

汇丰银行将 65 套关系数据库迁移到 MongoDB

  • 2020-06-17
  • 本文字数:1917 字

    阅读完需:约 6 分钟

汇丰银行将65套关系数据库迁移到 MongoDB

近日,汇丰银行数据设计师 Narasimha Reddy 在 MongoDB.Live 上发表演讲称,汇丰银行已经将 65 套关系型数据库成功迁移到 MongoDB 全球统一实例中。


据了解,汇丰银行业务遍及 60 多个国家,为全球 4000 万客户提供服务。随着业务规模的不断扩大,运营的复杂性也随之大大提高,导致应用程序与数据模型的交付变得愈发艰难。通过此次调整,汇丰方面能够在各个国家维持不同的应用场景需求,而又不再需要依赖于对应的特定国家 / 地区数据库。他们创建的这套全新数据模型不仅能够帮助汇丰节约成本与资源,同时也让他们能够更自由、更灵活地推进模型设计。


Reddy 在演讲中展示了以下示意图,并解释汇丰此前如何为全球应用程序创建起一套复杂的全局数据模型。这套模型会在软件开发周期的各个环节当中建立起对应的高成本模型,导致变更灵活性大大降低,最终令业务运营成本持续增长。他指出:


目前,全球实体普遍在世界范围内的大多数国家 / 地区都运营着相同的应用程序。但需要强调的是,不同国家 / 地区所运行的具体应用程序版本必然有所区别。各个国家有着自己的特殊情况,旨在遵循>本地或者区域内的运营、功能以及法规需求。

换言之,我们无法单纯利用关系数据库维护起统一的应用程序版本与数据模型。

因此,我们只能面对一套又一套既相同又有所区别的代码库。众所周知,数据模型已经成为驱动大多数系统设计的关键所在。在使用关系数据库时,我们只能针对不同国家 / 地区建立起不同的数据模型,这彻底破坏了维持统一应用程序版本的可能性。



汇丰银行原有全球数据模型示意图

汇丰银行全球数据模型

汇丰银行一直在努力建立一套全球数据模型,并借此支撑起一套全球数据库,最终逐步实现真正的“全球统一应用程序”版本。据了解,这次转型给汇丰带来的收益包括降低成本、增强灵活性,同时也让汇丰银行获得轻松运行全球分析与报告的能力(各个国家 / 地区将对应统一的数据模型)。


如上图所示,之前汇丰银行就已经建立起一套核心应用程序环境,其中包括了应用场景所必需的大部分核心功能。但由于数据模型与数据库间存在差异,他们无法在所有国家 / 地区运行同一套统一的应用环境。


因此,汇丰银行需要在这套核心环境之上再分别面向各个国家 / 地区建立多个对应的独立环境,才能满足这些区域提出的特定应用需求。当来自不同国家 / 地区的用户访问应用程序时,实际指向的都是属于自己的独特路径。以此为基础,特定国家的程序环境及核心程序环境将共同接入与该国家对应的数据库,进而完成应用程序处理。


更具体地讲,不同国家 / 地区都拥有自己的函数、字段、业务逻辑接口、数据规则、数据生命周期以及数据访问控制方案。因此,如果需要对数据模型进行调整,则当前程序环境将无法与变更后的数据模型相兼容——这就迫使 IT 部门重建新的程序环境。


汇丰银行的大部分应用程序已经在 iSeries、大型机系统以及 DB2 上运行了数十年之久。Reddy 表示:


受到以上因素的综合影响,我们发现真的很难面向多个国家 / 地区以单实例加单数据库的形式进行应用程序设计。这样一套传统模型还带来了其他影响。我们需要开发并应用另外一套数据模型加数据库组合,用于运行数据分析并对全局数据进行报告。这肯定会带来额外的资源开销,对应的成本也会以不同方式渗透到整个业务体系当中。


好消息是,汇丰银行现在迎来了新的整体架构,他们终于能够在全球范围内的各国市场上使用相同的应用程序,并借此降低资源的整体使用量。如今,汇丰银行在所有国家 / 地区建立起统一的服务环境、数据库与执行路径。在 MongoDB 文档模型与子文档功能的支持下,各个国家 / 地区对应的所有不同表都能够映射至同一套数据集合当中。换言之,只要使用特定于各个国家 / 地区的标识符,全部数据内容都可简化为统一的集合形式。



汇丰银行新数据模型示意图


Reddy 进一步解释道:


应用程序当中将内置有面向各个国家 / 地区本地要求的机制,意味着汇丰银行不再需要维护单独的数据模型或者数据库。我们可以使用 MongoDB JSON schema 模式轻松设计出全局数据模型与数据库。由于来自所有运营国市场的数据都被整合进同一套数据库内,我们的应用程序也终于能够立足单一数据库实现运行,这大大降低了资源与维护成本。


此次转型的另一大收益,在于汇丰可以使用同一套数据库进行全局数据分析与报告。无需进行任何数据模型或数据库转换,我们就可以直接运行指向特定数据内容的分析与报告任务。这一切,又进一步帮助汇丰节约了宝贵的资源与成本。


在使用 MongoDB 之后,我意识到对于这样一套无 schema、且查询与索引功能都极为强大的数据库来说,我们能够真正以数据——而非数据库——作为模型设计的基本出发点。


原文链接:


https://diginomica.com/hsbc-moves-65-relational-databases-one-global-mongodb-database


2020-06-17 16:104281

评论 3 条评论

发布
用户头像
搞业务的2,没想到搞技术的也够
2020-06-19 10:48
回复
用户头像
哈哈, 确实钱可以取走了..
2020-06-18 20:07
回复
用户头像
暂时先把钱从汇丰取出来吧,看看再说
2020-06-17 17:27
回复
没有更多了
发现更多内容

2021年GitHub上爆火的999页Java面试宝典终开源

比伯

Java 编程 架构 面试 程序人生

Google Material Design 元件库

zhuchuanming

元件库

小鼎量化机器人系统开发详情介绍

系统开发咨询1357O98O718

EGG NETWORK永动金融EFTalk火爆来袭

币圈那点事

SpringBoot-技术专题-启动自动装配过程

码界西柚

spring springboot

【实战问题】-- 缓存穿透之布隆过滤器(1)

秦怀杂货店

缓存 布隆过滤器 java;

火币矿池pro系统开发介绍案例丨火币矿池pro源码功能

系统开发咨询1357O98O718

实例讲解如何制作Python模式程序

华为云开发者联盟

Python 编程语言 星型程序 Programs 模式程序

Ai调参炼丹,一篇就够了

泳鱼

Python 机器学习 深度学习 AI

一文归纳Python特征生成方法(全)

泳鱼

Python 机器学习 深度学习

Apache Ranger安全认证配置

大数据技术指南

大数据 3月日更

HUBDEX交易所系统开发源码案例

系统开发咨询1357O98O718

深入理解 JavaScript, 从作用域与作用域链开始

koala

JavaScript 大前端

Golang :后端开发中的万能药吗?

华为云开发者联盟

后端 开发 分布式系统 Go 语言

一束光的旅程

白洞计划

Android开发必须要会!2021大厂Android面试经验,全网疯传

欢喜学安卓

android 程序员 面试 移动开发

如何阅读 Java 字节码(Byte Code)

Kori Lin

Java JVM bytecode 字节码

领域驱动设计101 - 绑定模型与实现

luojiahu

领域驱动设计 DDD

经常被面试官问道的JavaScript数据类型知识你真的懂吗?

koala

JavaScript 面试 大前端

阿里P7大牛手把手教你!美团Android开发工程师岗位职能要求,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

4大华为云“安全镖局”秘密法宝揭秘

华为云开发者联盟

态势感知 华为云 企业主机安全 数据安全中心 Web应用防火墙

数据加密:你应该知道的数仓安全

华为云开发者联盟

数据加密 GaussDB(DWS) 数仓安全 透明加密 加密函数

由浅入深了解Nirvana NAC公链的两面性NA公链

区块链第一资讯

区块链 公链 挖矿

马特系统开发流程丨马特量化机器人系统开发案例

系统开发咨询1357O98O718

Ai特征选择,一篇就够了

泳鱼

Python 人工智能 机器学习 深度学习 AI

Spark性能调优-Shuffle调优及故障排除篇

五分钟学大数据

spark Spark调优 3月日更

巩固知识体系!应聘高级Android工程师历程感言,面试建议

欢喜学安卓

android 程序员 面试 移动开发

WC,误删数据库了,会被开除吗?

Java架构师迁哥

滴滴OCE惊喜福利!

滴滴云

Java面试必问:一位清华大牛用一个坦克大战讲明白了23种设计模式(视频+源码笔记)

Java架构追梦

Java 架构 面试 设计模式 坦克大战

【JS必知必会】高阶函数详解与实战

koala

JavaScript 面试 大前端

汇丰银行将65套关系数据库迁移到 MongoDB_数据库_Derek du Preez_InfoQ精选文章