使用扩展数据库将查询延迟从秒减少到毫秒

2021-06-17 中国浙商银行 金融服务

工业:银行业

作者:中国浙商银行

Transcreator:陈彩婷;编辑器:汤姆政府高级官员

一个用于MySQL水平扩展的开源SQL数据库

中国浙商银行是一家总部位于中国的全国性股份制商业银行。我们致力于为客户提供开放、高效、灵活、共享的综合金融服务。截至2020年6月底,我们在全国设立了260家分支机构。总资产在英国《金融时报》“2020年世界银行1000强”中排名第97位银行家

随着我们业务的增长,我们的数据规模也迅速扩大。我们的数据库无法满足我们对数据存储和分析的需求。通过对多个分布式数据库的比较,我们采用了TiDB,一个开源的混合事务/分析处理(HTAP)数据库。多亏了TiDB,我们可以轻松扩展数据库并执行实时分析。在我们的电信欺诈风险查询系统中,我们的查询延迟从几十秒减少到几十秒毫秒

在这篇文章中,我们将分享我们的痛点,为什么选择TiDB,我们现在如何使用它,以及我们未来的计划。

我们的痛苦点

随着我们业务的发展,我们的数据量迅速增加,我们逐渐发现了原始数据库解决方案在数据处理和存储方面的不足。我们的数据体系结构系统无法满足新应用场景的要求。因此,我们在互联网行业广泛使用的各种分布式数据库中寻找解决方案。

我们的数据库要求

我们想要一个OLTP数据库:

  • 支持海量数据
  • 支持完整的分布式事务
  • 提供企业级高性能、高并发性和连续高可用性
  • 支持水平可扩展性,并在各种应用程序中平滑处理流量
  • 是否有一个强大的生态系统连接到各种数据应用生态系统

在我们测试了多个产品并验证了应用程序的兼容性后,我们发现TiDB在数据库可伸缩性、海量数据下的查询性能和事务完整性方面处于领先地位. 所以我们采纳了它。

我们为什么选择TiDB

TiDB是一个开源、云本机、分布式SQL数据库,由PingCAP它的开源社区。它兼容MySQL,具有水平可伸缩性、强一致性和高可用性。您可以了解更多关于TiDB的架构在这里

就其功能而言,TiDB支持完整的分布式事务。对于海量数据的在线事务处理(OLTP)和在线分析处理(OLAP)工作负载,它是一个一站式解决方案。它提供了企业级的高可靠性和高可用性。如果数据中心(DC)关闭,群集可以自动进行故障切换。

就其架构而言,TiDB是一个NewSQL分布式数据库。它将计算层和存储层分开,因此我们可以根据需要按不同的数量扩展存储容量和计算资源。它适用于广泛的应用。

在运维方面,TiDB与MySQL协议兼容,大大降低了人员学习和开发成本。为应用操作人员提供了灵活的查询界面。它易于监控和维护。

TiDB用例

目前,我们在当地城市的两个DC中部署了TiDB,并使用了五个数据副本,我们可以在以后扩展。最后,我们计划在两个城市部署三个DC。在生产环境中,我们在三个应用程序中运行了TiDB:电信欺诈风险查询(电信反欺诈)、外汇交易管理和高管座舱。我们将逐步将TiDB部署到运营数据存储(ODS)和互联网消费者终端查询事务场景中。

电信诈骗风险查询系统

电信欺诈风险查询系统保存全国电信反欺诈数据,包括交易账户和交易金额。系统支持查询和监控可疑交易。它分析了交易金额、交易数量、类型、时间、频率以及收款人和付款人的特征。如果发现异常交易,将暂停交易或立即向公安机关报告。

电信反欺诈系统在一个表中的数据超过20亿行,数据量每天增加数百万行。我们以前的OLAP数据库无法满足我们对数据存储和应用程序查询性能的期望。

但TiDB可以弹性伸缩。只需添加节点,我们就可以提高系统性能和吞吐量。此外,TiDB支持存储和查询海量结构数据。因此我们的SQL查询的处理时间从几十秒减少到几十毫秒.多亏了TiDB闪电,一个数据导入工具,我们可以在一个发布的数据文件中快速导入数百万条数据记录,以满足应用程序操作窗口的要求。

外汇交易管理

外汇交易管理系统根据外汇监管要求,对外汇交易数据进行采集、导入、存储、分析和挖掘。相关数据需要长期存储。我们预计,在未来几年内,数据规模将达到10亿行。我们之前的数据库Oracle需要分片。这增加了我们的操作、维护和开发成本。

我们从甲骨文转到TiDB,发现:

  • TiDB的分布式架构满足了我们对数据可伸缩性的需求。
  • TiDB的弹性可扩展性有助于实现数据自动再平衡。扩展过程对应用程序操作和维护人员是透明的。
  • TiDB为位于不同位置的主/主数据中心提供高可用性能力。当TiDB集群中的某个节点故障时,系统可以自动进行故障切换,保证集群的高可用性。

执行驾驶舱(实时运行度量分析)

高管座舱是一个为银行经理提供实时运营指标的分析系统。通过打破数据孤岛,它可以实时反映各种应用程序的运行状态,并将收集的数据可视化,以分析指标和实施决策。

我们使用数据复制工具将上游Db2的数据更改实时写入TiDB。同时,我们将TiDB的变更数据复制到下游的ApacheKafka平台。ApacheFlink从Kafka接收用于流式计算的消息。该系统形成了一个高效、易用的实时计算平台。实时统计本行各项业务运行情况,并在大屏幕上显示。通过在线捕获大量金融数据变化并执行实时分析,该系统帮助银行经理做出业务决策,并提高服务效率。

探索TiDB的进一步用途

分布式实时ODS

TiDB是OLTP和OLAP应用程序处理HTAP工作负载的一站式解决方案。TiFlash是TiDB的分析引擎和专栏存储。包含TiFlash的TiDB数据库允许您执行实时HTAP分析。

我们的银行有多个OLTP异构数据库,主要是Db2和MySQL,以及Oracle和SQL Server。我们没有一种有效的方法在这些数据库之间复制数据,因此这就产生了数据竖井。

为了对各种应用程序进行实时分析,我们计划扩展现有平台,并基于TiDB构建一个分布式实时ODS。这将使我们能够在异构数据库中近乎实时地复制不同类型的数据。

TiCDC是TiDB变化数据捕获框架。这个开源特性将TiDB的增量变化复制到下游平台,如MySQL、Apache Kafka、Pulsar、Flink和Canal。TiCDC提供实时、高吞吐量、高可用性的复制服务。

互联网查询事务

我行为政府和企业用户提供工资单服务。每个月,我们处理数千万笔交易。我们现有的数据库不能满足我们的应用程序存储需求。一方面,它缓慢的查询速度影响了我们的客户体验。另一方面,它不能与其他数据连接。在未来,我们将考虑使用TiDB作为一个试点,以取代我们现有的数据库。

如果您有任何问题或想了解我们经验的详细信息,您可以加入工业贸易署

准备好开始使用TiDB了吗?