一、简略
今,与众共论企业之互联网术。
吾欲言者,乃分布式数据库(distributed database)也。吾将竭力以浅言,明其理、述其物、晓其用,文末更附学资下载之途。
分布式数据库,诚为至要之数据库,凡尔所知之巨擘互联网服务,皆运行于其上。

平素,吾辈自研,所接者惟单机数据库(亦称集中式数据库),即数据库独运行于一台服务器。

(图注:左侧一数据库服务器,支撑全应用。)
分布式数据库者,谓数据库系统散布于多台服务器。

(图注:一数据库分置多台服务器,共担应用之任。)
于宏观之域,金融、电信、航空、物流、电商诸国计民生之要业,皆离不開分佈式數據庫。
倘無此,吾輩難想像生民之狀貌,譬如12306之購票之網,亦無法為民服務矣。
於個人而言,當君自初級開發者進而為大項目之架構師,多多少少必遇分佈式數據庫。
設計架構時,除非僅用一臺伺服器,否則難免須考量,數據於多臺伺服器間如何拆分而存儲。
總之,產品既大,分佈式數據庫乃避不開者。於個人,此亦意味著事業與能力之進步。
二、分佈式數據庫之優點
分佈式數據庫何以如此重要?以其有單機數據庫所難及之優點。
(1)更安全。分布式之库,含众节点,无论置于同舍,抑或异舍,皆远胜单机之库,安泰甚焉。
(2)高可用。若一节点废弛,众节点犹可如常,无单点之患。
(3)性能更优。遇大数据、繁计算之务,分布式之库可并行处置,时日大减。
(4)体验更佳。库分诸舍,可授用户近邻之节点,应速更优。
三、分布式之库之难
虽具此长,然分布式之库未广行,小肆多不用,何哉?
主因者,分布式之库,有二患,阻其行远:一曰价昂,二曰繁难。
此库属"异域并作",增冗余以固数据之安,价昂非所赘言。
其繁难者,具列于下:
(一)一致之患。何以保异节点之数据同?若异则如何?
(二)通联之患。何以保节点间之通信可恃?若迟滞或绝,又当何如?
(三)分域之患。若析巨表于众节点,则析法、移迁之策,或甚繁杂。
(四)优化之患若数据自多节点而需汇合,则查询必当优化,以增其效。
四、CAP定理
众人或知之,有著名 CAP 定理,言分布式系统(含分布式数据库)之局限,不可逾越也。

分布式之要旨有三:一曰数据一致(Consistency),二曰高可用(Availability),三曰数据分区(Partition tolerance)。
CAP定理云,三大目标不可兼得,最多能兼行其二。于数据分区之道,非强一致,则弃高可用;非高可用,则弃强一致。
由是观之,凡分布式之数据库,皆难臻至善,不过于三者之间,有所损益而求其衡耳。
五、分部数据库之产品
分布式之数据库,其源流久矣,市中至少有百种之品,有开源者,亦有闭源者。

凡分布式之数据库,皆可独行于单机(即单机数据库),亦可众机合用,行分布式。是故,吾辈所习之单机数据库,实亦为分布式数据库也。
开源之分布式数据库,较著者有Postgres与MySQL(关系型数据库),及MongoDB与CockroachDB(非关系型数据库)。
商業數據庫之中,最著者莫如 Oracle。此乃分佈式數據庫之實標,大商者多選而用之。
六、国货数据库 TDSQL
今,吾择国产数据库。TDSQL(TDSQL) 举

TDSQL 为例,述其分布式数据库之功能与用法。
TDSQL 乃腾讯之产品,属国内领先之分布式数据库。腾讯之几近全部关键业务,若微信、QQ、腾讯音乐、腾讯游戏等,皆运行于其上,历高强度、海量实战之考验。
外部多间大公司亦用之,如小红书、拼多多、B 站、海尔、深圳地铁等。 其完全依金融级标准打造,属金融级数据库,重安全、高可用、高并发,
客户逾五十万。于国内金融行业,其服务 TOP10 银行之七,已助三十余金融机构核心系统改造。__JHSNS_SEG_1309aa8e_57__TDSQL 为完全国产数据库,尤重 Oracle 兼容,企业既有 Oracle 数据库可平滑迁移,其成本远低于 Oracle。若国内企业虑国产化与供应链安全,其为绝佳替代品。
其产品之能、自研之力,已获国家认证(《中国信息安全测评中心之安全可靠测评结果公告(2023年第1号)》),于国有企业之技术择选,此亦重要考量之一也。
终,TDSQL乃腾讯云对外公开之服务,凡人皆可使用。但于网页上轻点数下,即可开通,甚易上手。
七、分布式数据库之功能
吾等通过TDSQL,观分布式数据库有何功能。
(一)强同步复制。分布式数据库多采主从式架构,一集群有一主节点(master)与若干从节点(slave)。系统支持节点间之强同步复制,以保数据一致。
具体而言,写入数据时,主节点必待从节点回报操作成功之讯,然后方向用户回报结果,如此则主从节点之数据完全一致矣。
(2)事務一貫系统为每笔事务赋以全局唯一之数字序列,各节点皆可查其执行之状,以保分布式间事务之一致。
(3)自能分拆分布式数据库之巨表,常须析而分之,藏于异节。TDSQL能自为之水平析(分表),使数据匀布于各节,询之亦自聚而返。
于用户而言,分表无形,可漠视之,业务端所见乃一完整之逻辑表,无需察后端分表之细。
(4)恢弘可展当数据库之性能或容量不足时,TDSQL可不停机而扩之,但于控制台轻点,自可升级毕事。系统内之数据迁、数据均、路由换,皆自动而行。
(5)至柔至变。用户得于线上更易变通表之结构;遇某些故障,系统可自能复元;凡节点,主从皆可读写。
(六)产品管控之能。TDSQL 对开发者亲善,供众多监控之器,实时监控并告警,日日推详尽之健康探查报告。
腾讯云有专云服务 DBbrain,用机器学习、大数据、专家经验引擎等术,为用户之数据库供性能、安全、管理等功能。
譬如,它能全方位诊断并优化 SQL,发性能之塞,使 SQL、事务、业务流水全链路可观测,可视化展死锁等异常,易于理会。
它大程度上替代了人工 DBA,将传统人工运维化成智能服务。
TDSQL 尚有 AI 智能应答之系,其图在右。此系基于智库与小模训练,速而准应人问,若智能之客,供专且别之解。

八、TDSQL 之用法
下,吾将示 TDSQL 之用法,甚简,于网开通后,尔即可用分布式之库。
第一步,于 TDSQL 之官网,入其产品控制台。

第二步,于控制台页,择数据库服务器所在之地(当与尔之云服务器同地),及数据库引擎,然后击"新建"之钮。

今 TDSQL 有三引擎:MySQL、自研之 TDStore、PostgreSQL。无论何引擎,皆具同容灾、高可用,兼兼容 Oracle。
第三步,将现配置页,使择数据库之配置。异配置,价亦异。
其中有一项,问欲否启"强同步"。

强同步可保主节点与从节点数据之一致。若应用不求强一致,更重速返之果,此可择"异步"。
第四步,配置既成,将入付款之节,继而数据库即开通,尔之分布式数据库已在线矣。
使用时,须先连数据库,分内网与外网之连,此可参酌文牍。当外网连通之际,其库昭然于众,凡人皆可索求,安危之虞,不可不察。
既接通库,则可施用 SQL 之语,至此,与寻常之库无殊。散布之库,其 SQL 与单机之库,大抵相仿。
九、TDSQL 之至善之道
散布之数据,有至善之道,今举其三(以 MySQL 引擎为例)。
(1)若何将数据移入散布之库
此分二途。一途乃将既有之单机,移入新建之散布。其法如左(详令见文牍)。者,
- 导出单机数据库之表结构与数据,得二SQL文件。
- 者,启数据库之表结构文件,设每表主键(primary key),及分片依据之shardkey。
- 者,将修改后之二SQL文件,上传于云服务器,导入于分布式数据库。
者,第二种情况,乃将现有之一分布式实例,导入于另一分布式实例。操作步骤与上同,惟少第二步,不须指定主键及shardkey,盖其原已具也。(详命见于文档)。
(2)夫如何分片
分片(sharding)者,分布式数据库之核心问题也:究应设几数据分区?数据于多分区如何分布?
分片之数,系乎全库所估之最大并发,及每片所能应之请求数,可依下式计之。
读写并发之能,乃诸片之能乘以片数之和也。
单片之能,主在实例之CPU、内存之多寡。片规愈高,片数愈众,则库系之能愈强。
除能外,分片尚须虑其量。常情下,单片至少容五千万众之数据。
(3)何如配置硬件
分布式库之硬件,今列三议。
A. 测试之用。
此非求能,惟验其系,宜设二节点,每节点内存二GB,硬盘二十五GB。
B. 业务初兴之时。
此情数据规模微,增势迅,宜设二节点,每节点内存十六GB,硬盘二百GB。
C. 事态稳定。
此情依事态实而设,可设四节点,每节点之器:(今事极峰*增率)/四。
十、总括
要之,当世之分布式数据库,隐其繁复,供人易用之接口。
常言,勿自筑分布式数据库,纵有专工司事,费亦甚巨。用云商之产,乃更省事之择。
若论 TDSQL,其有二版:曰集群版,曰基础版。前者多节点,供企业用于生产;后者单节点,费较低,专供个人,然功能无异,甚宜个人开发者习之或试分布式数据库。
(毕)
福利之属
当此 AI 之世,何以用云服务,助企业之数据管理?
今列三国内大厂之实案。
案一:微信读书之"AI 问书"。此功能使 AI 应对读者之问,于浩如烟海之书卷中,答各种疑。
案二:海峡银行核心系统之升格。。省银行何用 TDSQL,将核系统升为分布式数据库。
案例三:极光大数据平台架构优化。极光(URORA)乃国中领先之开发者服务者,数据近百 PB,节点逾千,文件四亿,当如何优化架构?
此皆出腾讯云内部所撰之资料《AGI 时代首选之全栈式数据管理方案》,内含工具指南、用户案例分享等众内容。
今可免费下载,但需微信扫描下方二维码。若尔关注国中真实环境之企业级开发,不妨一观。














