近日,汇丰银行数据设计师 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
评论 3 条评论