TDSQL:腾讯金融级分布式数据库解决方案

TDSQL:腾讯金融级分布式数据库解决方案

本博主是腾讯云的使用者与爱好者,前后分别试用了腾讯云服务器、云开发、微搭低代码开发平台,可以说算是见证腾讯的云上历程


本博文将从基础概念、TDSQL介绍、发展历程等多角度介绍TDSQL的使用心得

目录导航

  • TDSQL:腾讯金融级分布式数据库解决方案
  • 前言
  • 一、概念梳理
    • 1、数据库(DataBase,DB)
    • 2、数据库管理系统(DataBase Management System ,DBMS)
    • 3、数据库系统(DataBase System,DS)
    • 4、分布式数据库
    • 5、分布式数据库的核心
      • 1)数据分片
      • 2)数据同步
  • 二、TDSQL
    • 1、技术简介
    • 2、技术历程
    • 3、部署步骤
    • 4、使用心得
  • 总结


前言

项目需要上云,恰好看到TDSQL的介绍,就跟着开发文档与官方视频讲解实操了一遍,将传统的Mysql迁移到TDSQL上,并写一博文纪念此操作!!!


一、概念梳理

1、数据库(DataBase,DB)

     ~~~~     简单来说,数据库就是按照一定规则存在一定机制存放大量数据的仓库。
     ~~~~     
     ~~~~     严格来讲,数据库是长期存在计算机内、有组织的、可共享的的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具备较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。

2、数据库管理系统(DataBase Management System ,DBMS)

     ~~~~     如何高效地获取和维护数据,完成这个任务的是一个系统软件——数据库管理系统。
     ~~~~     
     ~~~~     数据库管理系统是位于用户与操作系统之间的一层数据管理软件。数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统。

3、数据库系统(DataBase System,DS)

     ~~~~     简单来说,数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的一套体系叫做数据库系统。
     ~~~~     
     ~~~~     严格来说,数据系统是又数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员所组成的存储、管理、处理和维护数据的系统。
     ~~~~     

4、分布式数据库

     ~~~~     分布式数据库,从名字上可以拆解为:分布式+数据库。用一句话总结为: 由多个独立实体组成,并且彼此通过网络进行互联的数据库
     ~~~~     

以下图表对比分布式数据库和集中式数据库之间的五个差异点。TDSQL:腾讯金融级分布式数据库解决方案_第1张图片

5、分布式数据库的核心

1)数据分片

     ~~~~     该特性是分布式数据库的技术创新。它可以突破中心化数据库单机的容量限制,从而将数据分散到多节点,以更灵活、高效的方式来处理数据。这是分布式理论带给数据库的一份礼物。
     ~~~~     分片方式包括两种。

水平分片:按行进行数据分割,数据被切割为一个个数据组,分散到不同节点上。

垂直分片:按列进行数据切割,一个数据表的模式(Schema)被切割为多个小的模式。

     ~~~~     

2)数据同步

     ~~~~     它是分布式数据库的底线。由于数据库理论传统上是建立在单机数据库基础上,而引入分布式理论后,一致性原则被打破。因此需要引入数据库同步技术来帮助数据库恢复一致性。

     ~~~~     简而言之,就是 使分布式数据库用起来像“正常的数据库” 。所以数据同步背后的推动力,就是人们对数据 “一致性” 的追求。这两个概念相辅相成,互相作用。
     ~~~~     

二、TDSQL

1、技术简介

     ~~~~     TDSQL(Tencent Distributed SQL)是腾讯推出的一款 兼容MySQL的自主可控 高一致性分布式 数据库产品。

高度兼容MySQL——TDSQL完全兼容MySQL协议,并且做到完全自主可控、数据强一致性。

TDSQL具备分布式的特性,具备一个弹性扩展、高可用的架构。在互联网行业,海量的用户流量场景很常见,如果数据库不具备可伸缩性、可扩展性,是很难应对如:电商的大型促销,春节抢红包等突增流量的场景,这些其实都是对数据库应对海量用户流量的考验。
TDSQL:腾讯金融级分布式数据库解决方案_第2张图片
整体架构 TDSQL:腾讯金融级分布式数据库解决方案_第3张图片

2、技术历程

     ~~~~     目前TDSQL已经服务超过500+的金融政企,行业覆盖银行、保险、证券、政务、互联网金融等各个领域。
     ~~~~     
     ~~~~     TDSQL最早可以追溯到2002年,那个时候其实还不叫TDSQL,它是腾讯计费平台部的一个数据库服务,当时使用了开源的MySQL。2002年-2007年随着公司业务的发展,腾讯所面临的用户量的压力也越来越大。这个时候腾讯TDSQL研发团队提出了7×24小时不宕机的高可用设计方案,来保证数据库能提供7×24小时不间断连续高可用服务。那个时候,腾讯的增值业务日渐成规模,业务对数据也越来越敏感,对数据可用性的要求越来越高,甚至平时还要防备一些像运营商的光纤被挖断等各种各样的异常场景。

TDSQL:腾讯金融级分布式数据库解决方案_第4张图片

在2007年-2012年,这可能是互联网时代从互联网到移动互联网的发展的快速5年。当然,公司的业务也是突飞猛进。腾讯开始把这个高可用的数据库产品化。到2012年,TDSQL的雏形就已经出来了,作为一款内部产品,开始在公司内部提供金融级的数据强一致性、可靠性服务。

从2012年起,TDSQL已经在腾讯内部做得已经比较成熟,已经是一个知名的产品了,但是它一直没有对外做商业化。2014年恰逢一个很好的机会——微众银行的成立。微众银行做数据库选型的时候关注到了TDSQL,经过反复测试验证,发现当时的TDSQL已经完全具备了微众银行对数据可用性和一致性的要求。借此机会,TDSQL成功在微众银行投产,成为微众银行唯一的数据库,覆盖了银行的核心业务。

所以说2014年,TDSQL完成了商业化,也实现了私有化部署。2014年以后,TDSQL推广到了很多银行、金融机构,这过程中是借鉴了2014年TDSQL在微众银行成功实施的宝贵的经验。因为在2014年微众银行的部署中,腾讯研发团队也踩了很多坑,也认识到在私有化部署环境的各种各样的挑战,并一一攻克了这些挑战。当2014年在私有化部署完成之后,再到2015年TDSQL上公有云,腾讯TDSQL研发团队继续通过公有云服务打磨自己的产品。

所以从2012年作为一个内部产品到2014年的私有化部署,再到2015年公有云上的部署,TDSQL已经逐步从一个内部产品逐渐走向行业,成为一个正式对外的商用数据库。从2015年到2019年,TDSQL已经推广到许多银行和金融政企。但是很重要的一点是,虽然服务了很多银行、金融客户,但是在银行领域有一块比较难动的蛋糕叫银行的传统核心系统。传统核心系统数据库长期以来一直是被国外的商用数据库所垄断,比如说ORACLE、DB2,像TDSQL这类分布式数据库是很难介入的。

2018年,腾讯TDSQL研发团队关注到张家港银行有更换核心系统的需求,就此建立联系并成功达成合作,最终,2019年,腾讯TDSQL研发团队将腾讯这套分布式数据库系统成功应用到了张家港银行的传统核心系统。张家港行也是作为全国第一家传统核心系统上分布式数据库的银行,分布式数据库不再是只局限于银行的互联网核心、互联网银行等外围系统的尝试,而是真真正正切入到银行系统的心脏—传统核心,这也是国产数据库领域一个具有里程碑意义的事件。

3、部署步骤

内容较多,仅列出总体部署说明和要求
TDSQL:腾讯金融级分布式数据库解决方案_第5张图片TDSQL:腾讯金融级分布式数据库解决方案_第6张图片

4、使用心得

1)只使用InnoDB存储引擎【默认】,避免使用MyISAM引擎>
2)使用utf8或utf8mb4
3)不在数据库中存储图片、二进制文件等大数据
4)提前规划好单标规模,行数和大小
5)对象命名要使用富有意义的英文词汇,不要使用SQL关键字和特殊字符
6)字段属性尽量加上NOT NULL约束以及默认值
7)数据库用户权限按照最小分配原则
8)除核心维护人员外,其他用户不能拥有SUPEP权限账号(腾讯云权限授理通过“赤兔”上进行授权,且9)用户不拥有super权限)
10)避免使用简单密码
11)开发、测试和生产环境中用户权限设置保持一致
12)在数据库中存储密码明文
13)不超过80个字符
14)关键词大写

     ~~~~     
     ~~~~     起初也是朋友介绍,抱着试一试的心态跟着郭老师学习了1期腾讯云TDSQL课程。作为小白的我,从第一节课就严重跟不上节奏,可能对于我来说是个束手无策的问题,但对于老师和其他同学来说就可以轻而易举的帮我解答。求学的路上难免有些坎坷,庆幸的是同期的同学从没因为我的问题太简单而忽略不以作答,只要他们有空都会帮我。
     ~~~~     

     ~~~~     跟了一期之后老师让我讲讲学习心得,我想了下,学习路上最优质的搭档,当属bai度;犹如当年独自全国旅行的时候,最忠实的合作伙伴也是此软件。

     ~~~~     万事开头难,小白入门需理解的、所有的专有名词都要去查;

     ~~~~     上机操作,遇到所有报错,都要第一时间上网搜索;看不懂意思的时候,还要做客某软件翻译。

     ~~~~     不要小看这两步,对于小白来说,都是极大的工作量,查找之后要阅读、理解、测试、筛选。

     ~~~~     前者帮忙理解老师授课理论内容,后者帮忙通关课程实操部分。

     ~~~~     打比方说实践第一步,我开始用电脑便签存知识点,每回电脑开机铺满整个屏幕……后来换文档存,还是不方便……最后发现可以用文档存网页,现在也已经存了好多,应该还会持续增加。

     ~~~~     活到老学到老是人尽皆知的,人生是一个不断学习的过程,学无止境,只有学习更多的知识,才能把自己打造成一个坚不可摧的巨人,然而我不止活到老学到老还玩到老,活得开心,活得漂亮。现阶段我需要灵活运用目前所拥有的所有资源。学习课件、视频、开发文档,这是我们这次学习课程的精华所在,再强大的搜索引擎也是为此服务的,需要翻来覆去地看。深刻理解,才能化为自己的修为,最终才能成为终身的财富!

总结

     ~~~~     以上就是自己作为一个TDSQL开发小白对TDSQL做出的一些介绍与使用心得。最后,衷心祝愿TDSQL的发展势如破竹,痛快酣畅!!!
     ~~~~     星星之火,足以燎原!!!

你可能感兴趣的:(云原生)