iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >TDSQL 在微信支付数据密集型应用落地实践
  • 209
分享到

TDSQL 在微信支付数据密集型应用落地实践

TDSQL在微信支付数据密集型应用落地实践 2019-07-08 07:07:55 209人浏览 才女
摘要

日前,腾讯云数据库开源产品TDsql PG版(开源代号TBase)宣布推出重磅升级——经过一年半的打磨,上万张表访问场景下,内存占用节省60%;查询性能提升百倍;SQL语句兼容性增强。同时,大力提升原有数据库版本在分布式场景下的易用性。

TDSQL 在微信支付数据密集型应用落地实践

日前,腾讯云数据库开源产品TDsql PG版(开源代号TBase)宣布推出重磅升级——经过一年半的打磨,上万张表访问场景下,内存占用节省60%;查询性能提升百倍;SQL语句兼容性增强。同时,大力提升原有数据库版本在分布式场景下的易用性。

TDSQL PG版是一款具备HTAP能力、经过腾讯多年持续投入研发的数据库产品,是腾讯云数据库团队在开源的 postgresql 基础上研发的企业级分布式HTAP数据库管理系统,能够提供成熟的一站式解决方案。腾讯云数据库技术总监李跃森介绍到,“在首次开源的10天内,TDSQL PG版的Star数就达到了500多个。开源不久,就受到了欧洲航天局、国家天文台,以及医疗健康、零售等各个行业用户的青睐。”

作为新一代分布式企业级数据库管理系统,TDSQL 一直以来都应用于微信支付核心系统,支持微信支付实现高性能、高可用、数字化应用。近年来,微信支付基于TDSQL PG版构建数据密集型应用,实现单表数据轻松突破TB级海量存储,TDSQL PG版高吞吐、高并发,自动扩容的能力,充分满足了微信支付的业务场景需求。

那微信支付应用TDSQL PG版的过程中经历了哪些故事?TDSQL PG版在微信支付系统中又有哪些典型应用案例呢?

1

微信支付与TDSQL PG版的陪跑历程

“如果要用一个形容词来描述微信支付与TDSQL PG版的关系,那就是‘你侬我侬’。”腾讯高级工程师万志颖在介绍微信支付案例时表示,“TDSQL PG版为我们提供武器,微信支付则为TDSQL PG版提供了充足的试炼战场。”

以微信支付的商户服务平台为例,该平台主要是为千万级的商家提供帐单明细下载及帐单复杂条件查询及统计分析的平台。最开始,平台使用开源Mysql作为底端存储。但随着京东等大商户的接入,交易笔数逐步提升,数据增长单机存储容量受限,微信支付遇到严重的容量瓶颈和性能瓶颈。在当时的技术背景下,微信支付迫切需要一个好的解决方案,于是就选择了TDSQL PG版。

TDSQL提供的解决方案很好地解决了微信支付遇到的问题。在容量问题上,TDSQL提供了海量数据存储的在线线性扩容能力;在大商户的数据倾斜问题上,TDSQL基于双KEY分布等机制解决了数据存储均匀分布的问题;在分页查询性能问题上,TDSQL提供了基于Index only scan索引的相关优化方案,解决了传统WEB应用分页场景中总条数查询耗时高的问题。

“在交易系统基础上的更进一步应用的过程中,我们发现TDSQL PG版相关特性十分适合用于数据仓库中的维表存储,于是在2021年微信支付基于TDSQL PG版搭建了数据仓库的维表管理系统,使其成为大数据生态中的重要组件。”万志颖介绍。

2

TDSQL PG版在微信支付的应用实践

近年来,TDSQL PG版助力微信支付构建数据密集型应用,持续拓展应用场景,在多个领域体现出比较优势,保证了业务的稳定性和连续性。在此以报表系统和维表系统为例介绍TDSQL PG版在微信支付的应用实践。

微信支付报表系统中,存在两种典型的读写模型:一种是基于spark离线计算平台周期性写入,比如一天写入一次,每次写的数据很少,但也有可能写的数据量是十亿级或者百亿级。另外一种是通过消息队列的方式进行实时写入来构建实时报表。因为写入端是大数据系统,每次写入的数据量极其巨大,因此对底层数据存储的写入性能要求比较高。相比于开源mysql,TDSQL PG版在并行写入方面有明显优势,具备更好的并行写入性能及吞吐能力,可以大幅降低我们数据入库完成时间,也能够支撑实时报表等场景的需求。

在报表页面读取数据方面,TDSQL PG版相比较开源MySQL具备更为丰富的索引类型支持。例如微信支付有一个业务场景是从百亿级数据中模糊检索商户名称,在引入TDSQL PG版前该场景的查询耗时接近17秒,优化之后该场景的耗时直接降到50毫秒以内,性能实现了极大提升。

截至目前,TDSQL PG版已经累计承载了微信支付3600+报表的数据写入、存储和读取,报表打开时间均能稳定控制在3秒以内,为整个报表平台的性能带来极大的改善。

微信支付还基于TDSQL PG版来构建维表系统。维表是描述一个事物的不同角度,比如性别上的男和女,写代码时的枚举值也可以认为是一种维表。接下来就以枚举值为例阐述微信支付如何基于TDSQL PG版来构建维表系统。

微信支付所有系统的枚举值都是基于履约建表系统进行统一的录入,目前总共有2700+枚举值的数据,下游的OLTP数据仓库中的计算任务以及报表系统、运营系统都会读取这些枚举值。如果上游对枚举值进行了修改或者新增,而下游得不到感知,这就会给整个系统的稳定性造成严重后果。

为了解决这类问题,微信支付基于TDSQL PG版打通了OLTP系统与OLAP能力融合的维表系统,在OLTP维表管理系统中录入或更新维表数据后,不论是在在线业务中、Spark计算中或者是报表系统中,都能实时引用最小的枚举值数据参与计算。与此同时,数据使用方也可以直接在数据仓库中看到每个枚举值字段的枚举值,不需要一层一层去查询,枚举值管理的复杂性得以控制,降低了相应的质量风险,达到金融领域应用的要求,极大的提高了我们的维护效率。

在整体运营上,目前微信支付在TDSQL PG版的存储量已经达到400TB+,每秒的请求量超过24万次,99.6%的请求基本上耗时都可以控制在10毫秒以内,充分满足了微信支付的在性能和稳定性上的高要求。

TDSQL是腾讯云企业级分布式数据库,旗下涵盖金融级分布式、云原生、分析型等多引擎融合的完整数据库产品体系,提供业界领先的金融级高可用、计算存储分离、数据仓库、企业级安全等能力,同时具备智能运维平台、serverless版本等完善的产品服务体系。

截至2020年,TDSQL已对外服务数千家金融政企机构,同时广泛覆盖游戏、电商、移动互联网、云开发等泛互联网业务场景,助力新零售、教育、SaaS、广告等超过4000家行业客户进行数字化升级。

了解本次分享的更多详情,请搜索关注“腾讯云数据库”官方微信获取。

您可能感兴趣的文档:

--结束END--

本文标题: TDSQL 在微信支付数据密集型应用落地实践

本文链接: https://www.lsjlt.com/news/8718.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql拒绝访问怎么办
    mysql 出现拒绝访问的原因和解决方法:权限问题:授予用户适当的数据库或表访问权限。防火墙或安全组:允许对 mysql 端口(3306)的入站连接。密码错误:重置 mysql 密码或使...
    99+
    2024-05-20
    mysql
  • mysql怎么比较日期大小
    mysql 中比较日期大小的方法包括:直接比较两个日期,使用 、= 运算符。使用 date_format() 函数将日期转换为字符串,然后比较字符串大小。使用 str_to_date()...
    99+
    2024-05-20
    mysql
  • mysql怎么加锁
    mysql中加锁是一种确保数据并发访问一致性的机制。加锁方式有:表级锁(对整个表加锁)和行级锁(对特定行加锁)。加锁类型有共享锁(允许读取但禁止修改)、排他锁(禁止读取和修改)和意向锁(...
    99+
    2024-05-20
    mysql 并发访问
  • mysql误删数据怎么恢复
    mysql误删数据可通过以下步骤恢复:停止数据库服务,防止数据覆盖。若开启binlog日志,可从中提取删除语句,再重新执行后将数据恢复。使用恢复工具修复表文件或恢复事务。从备份中恢复数据...
    99+
    2024-05-20
    mysql
  • 怎么判断mysql安装成功
    成功安装 mysql 的方法:检查命令行界面版本号;连接到 mysql 服务器,输入 "mysql -u root -p";创建数据库,输入 "create database test;...
    99+
    2024-05-20
    mysql linux macos 防火墙配置
  • mysql怎么修改表名
    如何修改 mysql 表名:检查当前表名:show tables;运行 rename table 语句:rename table 旧表名 to 新表名;验证更改:show tables;...
    99+
    2024-05-20
    mysql
  • mysql删除的表怎么恢复
    mysql 中已删除表的恢复方法主要涉及以下步骤:检查 binlog 日志以获取删除事务信息;使用数据恢复工具扫描数据库文件;从备份还原表数据;或联系 mysql 支持寻求帮助。 My...
    99+
    2024-05-20
    mysql 数据丢失
  • mysql复合主键怎么写
    在 mysql 中编写复合主键:在 create table 语句中使用 primary key 约束并列出字段名称。复合主键的好处包括提高查询效率、保证数据完整性和强制数据顺序。注意选...
    99+
    2024-05-20
    mysql
  • 怎么查看mysql数据库版本
    如何查看 mysql 数据库版本?连接到数据库并执行查询:select version();检查命令行或 mysql workbench 中的服务器属性。 如何查看 MySQL 数据库...
    99+
    2024-05-20
    mysql linux
  • 怎么检测mysql安装成功
    要验证 mysql 安装是否成功,请执行以下步骤:检查系统服务是否正在运行。使用 mysql 命令行工具连接到服务器。创建一个测试数据库并使用它。在数据库中创建一个测试表。插入测试数据并...
    99+
    2024-05-20
    mysql linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作