基础软件十年铸一剑,企业级分布式数据库HotDB

2023-10-25 04:40

本文主要是介绍基础软件十年铸一剑,企业级分布式数据库HotDB,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“蓝字”可以关注我们哦

HotDB是一款专注MySQL数据库服务的高可靠高吞吐量的分布式数据库产品,能在分布式数据环境下为应用提供集中式数据库的操作体验,为海量数据、海量用户、高可用、高性能和高并发的业务系统提供强有力的支撑,同时具备强分布式透明、易扩展、无学习成本等特点。让技术工程师专注应用程序编码实现,不必知道也不必关心数据的存放和操作位置等细节;让数据库运维人员更轻松地管理海量数据和大规模的数据库集群。私有云数据库产品HotDB的定位概括如图1。

图1  私有云数据库HotDB定位

传统行业信息化的数据系统现状

当下,国内传统行业的企业信息化几乎都被甲骨文Oracle数据库、IBM小型机和存储设备、EMC存储设备垄断,几乎很难摆脱对这三家公司的依赖,成本、风险居高不下。IBM小型机和存储设备、Oracle数据库、EMC存储设备构成了业界经典的IOE集中式数据库架构,遗憾的是这种技术架构是基于欧美人口基数和增长率而设计的,不适应中国将近14亿人口的超级大国国情。

IOE技术架构是非常优秀的,最大优势是降低研发工程师的编码水平要求,降低架构师的架构设计水平要求,让技术人员只需关注信息系统的业务编码实现。IOE技术架构在中国大江南北互联网化,尤其移动互联网普及后,遇到IOE技术架构无法支持高并发和海量用户的业务场景的天花板,垂直扩展也达到其吞吐量的瓶颈。同时,不断地垂直升级硬件设备,不仅信息化成本急剧增加,还存在硬件设备投入与数据系统吞吐量增长远低于线性比例。企业实施IOE技术架构后,对设备和商业数据库软件的维护升级,尤其是硬件设备过保后必须购买厂商或厂商认可第三方的维保服务且设备维保费用昂贵;商业数据库软件Oracle按CPU核数量及产品类型购买许可费,同样也需要每年支付昂贵的维保费用,概括总结如图2所示。

图2  IOE架构缺陷

 

随着互联网的发展普及,移动互联网以接近光的速度迅速普及祖国的各个角落里。同时,过去十多年国内互联网聚焦于商业模式创新,带动消费者信任与依赖线上的聊天、交友、购物、办公等涉及工作和生活的方方面面,迫使整个社会体系正走向变革和商业模式重构。在线支付、互联网金融和在线销售保险等业务发展,迫使银行保险业不得不改变自己的服务模式。电子商务的发展,基本上达到重构生产-代理-销售的渠道模式,由C2C模式发展到B2C模式,及正在进行的C2B模式,越来越深入地改变企业生产管理经营的模式。

银行、保险、生产制造等行业的企业,将逐渐取消中间环节而直接面对消费者,采用纯线上、互联网+物流和互联网+上门的综合模式为消费者提供无微不至的服务,此时信息化就成为企业的核心部门。这就需要传统行业企业的信息化技术进行革新,建设面对服务海量用户和处理海量数据的能力,确保信息化系统稳定可靠。

传统行业的企业经营模式转型是势在必行的,转型过程和转型后的信息化的数据系统可能面临的挑战,总结如图3所示。

 

图3  企业信息化面临挑战

 

分布式数据库的价值

传统企业因要适应社会变革和生产经营转型升级,为此企业信息化的数据系统需要面临海量数据、海量用户、高可靠、高性能、高并发和可水平扩展(简称:二大三高一扩)的挑战。分布式数据库HotDB正是为此应运而生的技术产品,组合单体的计算处理能力,即数据系统的数据服务采用开源数据库MySQL、数据存储采用多块本地盘的X86物理服务器和分布式数据库中间件HotDB Server共同组成,分布式数据库管理平台HotDB Cloud完成相关的配置管理、监控、报表、服务管理等功能,图4是分布式数据库替换IOE集中式数据库的架构图。

图4 分布式数据库替换集中式数据库的架构图

 

分布式数据库的发展历史

图5是在过去的十年时间里,MySQL数据库社区一直在探索分布式数据库的技术产品路线,从最早的读写分离产品MySQL-Proxy,再到阿里巴巴开源的伪分布式数据库产品Amoeba和Cobar,尤其Cobar的技术架构思路成为指引行业的灯塔,惠及国内众多互联网企业。

我和热璞合伙人在开心农场合作的时期,继承Cobar的技术架构思路碰到业务场景不满足和产品功能不够完善的问题,为此我们结合社交游戏行业的写比例高达88%及以上的特点和大量玩家1-10秒内反复操作同一条记录,设计出伪分布式数据库产品Gaia(注释:希腊神话中大地女神,又称地母),类似于当下阿里巴巴的Oceanbase技术架构与算法特征。

后同惠普合作中国联通MSS域业务系统大集中和去IOE化,属于国内传统行业成功实施开源分布式技术架构的超大型项目。在实施过程中,碰到远超互联网行业业务复杂数倍和研发团队技术转型的问题,为此在伪分布式数据库Cobar基础上改进和封装了大量的功能,降低技术门槛和解决复杂业务场景的问题,例如E-R分片解决父子表的数据关联业务场景。

从最早的MySQL-Proxy到DaaS都存在一个通病,我们设计这类产品的时候只为解决某一个或一类问题,也即数据读负载均衡到如何解决数据分片,通过数据架构设计技巧和应用编程技巧规避数据分片后的问题,同时也存在维护的技术门槛等问题。为此热璞团队不断地反思过往的产品设计经验和去IOE实施过程的经验,从而分布式数据库产品HotDB的研发设计追求服务稳定可靠、分布式透明、数据安全和易维护易应用。

 

图5 基于MySQL数据库服务的分布式数据库发展史

 

分布式数据库的分片算法

经历多款分布式数据库产品设计与研发,及实施数十个私有云数据库项目后,总结发现分布式数据库产品需提供五种数据分片算法:路由表、约定范围、哈希约定、自动哈希和E-R关系,前四种分片算法是核心,第五种算法主要是为解决常见的某一类特殊数据分片关系,让分布式数据库HotDB优化器的性能更佳,五种算法的描述信息见图6。

补充说明:

  • n  E-R数据分片算法是为解决主从表或称父子表的数据分片而设计支持的。

  • n  自动哈希是按节点数量作为分母计算,哈希约定是按1024作为分母结算。

 

四种数据分片算法有各自的算法特征和最佳的业务场景,详细信息见表1:

见表1 数据分片算法特征与业务场景

 

分布式数据库的分片规则

MySQL Cluster的NDB存储引擎分布式数据库默认是按主键(注释:若没有主键则选择唯一索引,若二者都没有则默认创建一个主键)进行数据分片,这样设计可降低技术复杂度,但非主键的数据处理的成本较高。分布式数据库的数据架构设计最佳实践经验,需让每张表做到自由选择一个特有的分片字段和分片算法组成表对象的数据分片规则,可让数据结构设计更简洁和技术门槛更低,也更有利于降低数据访问的复杂度,同时能提升优化数据访问的性能。

选择作为表对象的分片字段,建议具备图7所示描述的属性:

图7 分片字段的属性

 

以金融行业的某大型支付平台数据库的数据分片规则为例,该平台需要处理所有网络支付业务的交易,支付宝、财付通、银联、银行的网银等渠道的在线支付业务都需要借助某大型支付平台中转完成。支付平台采用报文方式交互,则海量报文数据小文件直接采用分布式文件系统存储,从报文中解读出来的业务数据和帐务数据存储到MySQL分布式数据库中。依据每家机构的业务量规模大小和业务数据的特征,则业务数据和帐务数据的数据分片规则设计,如下:

  • (1)区域性银行采用机构号作为分片字段,数据分片算法为路由算法。

  • (2)全国或大型银行采用机构号与报文标识号组合作为分片字段,数据分片算法为路由算法和哈希约定算法组合。

  • (3)小型网络支付机构采用机构号作为分片字段,数据分片算法为路由算法。

  • (4)大型网络机构采用机构号与报文标识号组合作为分片字段,数据分片算法为路由算法和哈希约定算法组合。

 

总结

关系型数据库理论创新在上世纪八十年代已达到巅峰,九十年代已完全成熟且再无重大创新或补充,并行数据库较著名的产品有Teradata、Greenplum、Gamma等众多产品,而分布式数据库产品有ADA-DDM、分布式INGRES系统等,仅有无共享架构的MySQL Cluster(NDB存储引擎)较为通用和生产环境可用,但也存在业务场景和数据量的局限性。热璞技术团队耕耘数据库行业十年以上,一直探索与实践追求更优的数据库解决方案,吸收分布式数据库关系理论和并行数据库关系理论的技术算法优势,同时结合单机版开源数据库MySQL的算法特征和技术优势,研发出支持海量数据的存储与服务能力的分布式数据库产品HotDB,是热璞科技在基础软件领域十年铸一剑的成果,已在互联网、快递物流、广电传媒、金融等行业成功实施应用。

 我知道一种学习

于坚

这篇关于基础软件十年铸一剑,企业级分布式数据库HotDB的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/280083

相关文章

Mysql数据库聚簇索引与非聚簇索引举例详解

《Mysql数据库聚簇索引与非聚簇索引举例详解》在MySQL中聚簇索引和非聚簇索引是两种常见的索引结构,它们的主要区别在于数据的存储方式和索引的组织方式,:本文主要介绍Mysql数据库聚簇索引与非... 目录前言一、核心概念与本质区别二、聚簇索引(Clustered Index)1. 实现原理(以 Inno

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

MySQL批量替换数据库字符集的实用方法(附详细代码)

《MySQL批量替换数据库字符集的实用方法(附详细代码)》当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改,下面:本文主要介绍MySQL批量替换数据库字符集的实用方法... 目录前言为什么要批量修改字符集?整体脚本脚本逻辑解析1. 设置目标参数2. 生成修改表默认字符集的语句3