数据库技术是通过钻研数据库的构造、存储、设计、治理以及利用的根本实践和实现办法,并利用这些实践和办法来实现对数据库中的数据的解决、剖析、转化等操作。
数据库技术作为计算机数据处理与信息管理系统的外围,钻研和解决了计算机信息处理过程中大量数据无效地组织和存储的问题,在数据库系统中缩小数据存储冗余、实现数据共享、保障数据安全以及高效地检索数据和解决数据。
在本篇文章中,将会介绍腾讯自研的分布式数据库 TcaplusDB 的技术原理。
存储原理
一个表通过 HASH 分表,依照路由数组长度(默认为 10k)进行取模运算分片(Mod Sharding),所以每张表最多能够分成 10k 个分片(Shard)。以下图为例,1 个 TcaplusDB 表被分为 5 个 Shard 文件散布到不同存储节点,每个结点散布有 1 个或多个分片的数据。
图 3.1 TcaplusDB 存储技术示意图
3.2 零碎扩容
TcaplusDB 扩容别离在存储层和接入层进行。从第 2 章节的架构图中,能够看到接入层即 Tcap Proxy 层,存储层即 Tcapsvr 层(主备节点)。对于接入层而言,采纳的是无状态设计,所以能够灵便程度扩缩容,且不影响线上业务,对业务无感知 ; 对于存储层而言,因为表采纳的是分片设计,在扩容时须要将原机器上的分片程度迁徙到新机器上,达到扩容存储空间的目标。以图 3.2 为例,Table A 在扩容前,只有一个分片 Shard 1,路由数组长度为 10k。在扩容时,将该表分为两个分片,其中路由项 0 -5k 放在 Shard1 , 路由项 5001-10k 放在 Shard2,2 个 shard 别离存储到两个存储节点上。
图 3.2 存储节点扩容示意图
数据迁徙过程见图 3.3,原 TcaplusDB Salve 节点上数据会复制到新的 TcaplusDB Master 节点,通过 binlog 同步放弃数据完整性,接入层 tcapoxy 的数据申请重定向到新的 TcaplusDB 集群。
图 3.3 扩容后申请重定向示意图
接入层扩容,如图 3.4 所示,通过一致性哈希路由切换,将原来由 4 个 tcaproxy 负责转发的路由,平均分配给 5 个 tcaproxy,路由切换过程不会造成音讯失落。
图 3.4 接入层扩容示意图
TcaplusDB 的扩容基于存储节点的磁盘使用率和 QPS (Queries per Second) 2 个维度。当单台存储节点容量应用达到肯定阈值后即触发扩容操作。
TcaplusDB 是腾讯出品的分布式 NoSQL 数据库,存储和调度的代码齐全自研。具备缓存 + 落地交融架构、PB 级存储、毫秒级时延、无损程度扩大和简单数据结构等个性。同时具备丰盛的生态、便捷的迁徙、极低的运维老本和五个九高可用等特点。客户笼罩游戏、互联网、政务、金融、制作和物联网等畛域。