作者 | 雷海林       责编 | 田玮靖

出品 | 《新程序员》

如今,数据库越来越受到业界的广泛关注,许多高校毕业生及资深技术人也逐渐投身于数据库产业。《新程序员002》经过用户、专家调研,收集汇总了十个开发者关心的数据库技术问题,并邀请腾讯云TDSQL技术负责人、首席架构师雷海林作出解答,希望为越来越多投身数据库的技术人才提供参考。

数据技术应用与创新

1. 数据库产品在面向企业时(涉及负载均衡、数据传输、运营平台、故障发现分析和治愈、发布系统、冷备系统等等),核心服务有哪些?

数据库是一个复杂的技术系统,真正在业务中投产,要求同时满足稳定、高性能、一致、高可靠、易运维等特性,缺一不可。也就是说,从数据库设计到数据库引擎的运营、迁移,再到数据安全等,包含数据全生命周期在内的每一环都需要考虑。例如,计算和存储都需要实现独立弹性扩展,保障系统的事务处理与分析查询能够稳定、高效地完成。而在云时代,保障跨城、跨中心大型集群的高可用比以往集中式数据库更复杂,因此自动化运营以及智能运维、智能监控等能力,是提升日常运营效率的关键,也是故障识别、全局仲裁、自动资源配置和调度,以及保障系统稳定、高可用的关键支撑。

2. 数据库迁移怎么做?

通常数据库迁移包含两个层面:全量迁移和增量同步。针对增量可以通过数据日志同步、数据订阅等手段进行,但问题在于,数据库迁移涉及业务系统数据库的迁移替换,这类数据库一般都服务于关键业务场景,因此“快”和“稳”缺一不可。快速迁移数据和保证数据持续准实时同步,是数据库迁移过程的两个关键要素。这就要求,迁移方案需要包含数据校验、回滚、安全风险控制机制等,实现迁移过程中的系统高性能、数据一致、服务高可用。针对高性能的优化可通过并发控制机制、有序消息并发重放、并发解析机制等方案来实现。数据一致性可通过消息异常检测、自动化切换、自动化冲突检测与恢复等技术机制来保障。服务高可用可以基于自动化扩容感知、多机容灾保护等能力实现。如果涉及迁移的源端与目标端异构,还需要自动化迁移评估平台,进行库表结构、数据库对象、数据类型自动转换等等。

3. 如何在低配服务器中,实现数据库高性能、高可用运行?

首先,云上数据库应用,可以通过云原生、多租户能力很好地控制资源,做到按需使用,不用担心资源瓶颈问题,也不会使资源过度消耗。同时,设置一套自动化资源配置规则,当系统识别到资源即将打满时,可以有效地进行资源分配与调度,管理资源开销,保障系统稳定。这就要求开发阶段尽量避免使用动态分配的方式,而是采用内存池等优化手段来管理内存,提升应急能力。

当然,也有一些场景,需要将数据库部署在配置很低的服务器上(如低规格的虚拟机),这个时候对数据库的稳定运行确实是一个考验。所以我们在设计时要注意尽量控制配套的辅助模块,降低对资源(如CPU、IO等)的利用率,让资源真正为业务所用。低配服务器,当SQL请求增加时,更容易触发资源阈值告警,这时DBA人员需要根据情况考虑是否扩容。另一种方式,是从DB设计侧支持自动限流,通过对请求进行流控,以保证整体的高可用。

4. 大数据量的并行处理如何应对? 

大数据量的并行处理意味着数据库计算框架要具备并行化处理能力,比如能够把SQL拆解成一个并行的执行计划,采用多线程的方式去执行,需要时能够将这些子查询计划推到对应的数据节点上并行执行。而在并行处理中,也有很多问题要解决,比如当海量流量涌入,我们需要针对用户或者某类SQL控制总的资源消耗度(如并行的连接数,线程数,总的资源利用率等),另外也需要对在线SQL和离线分析SQL进行区分,在资源不够的时候要优先保障在线SQL的执行,这都是设计数据库时需要考虑的问题。

数据技术融合发展洞见

5. 实时计算大行其道,数据库如何应对?

随着技术的发展,物联网、大数据和互联网监控等拥有海量时序数据、需要实时数据作决策的场景越来越广泛,这些新兴的场景都是云计算、“产业互联网+”深化发展的必然结果,也是数据库等基础数据技术需要提前应对布局的技术场景。针对实时计算场景提出的要求(比如大量数据输入、秒级别计算响应),数据库技术需要具备高性能服务、低成本存储、超强聚合分析能力等基本特性。而这些要求,时序数据库产品能够很好地满足。随着未来场景特征的融合,实时计算的需求也将可能出现在各行各业的实际场景中。因此作为底层技术,数据库也将走向满足多种计算能力要求的多引擎融合发展,用强大的底层能力支撑通用场景应用。这也是我们应该探索的方向。

6. 数据库与大数据是什么关系? 

从宏观层面来看,数据库是一个非常宽泛的概念,大数据应该也属于数据库的一种形态。当然从更细粒度的角度来看,数据库主要用来处理联机交易和中等规模的数据分析,强调高性能低延时的数据存取。而大数据一般面向海量数据以及基于这些数据从产生、收集、存储到计算的分布式计算框架,如Hadoop、Spark生态下的各种软件和框架。

7. 数据库基础研究创新有哪些值得考虑的方向?

基础研究创新的方向要从未来行业对数据库的需求角度来分析。

第一,数据库的主流方向是分布式架构,同时在数据规模不断增长、对数据价值分析效率要求不断提升的背景下,满足HTAP场景是一个重要的发展方向。而数据库需要很好支持HTAP的能力,系统需要真正实现计算层高扩容能力,以及支持不同的计算和存储引擎,还要做到资源良好地隔离等等。目前从整个行业来看,这一方面的能力还有待完善和探索。

第二,执行器、优化器等技术模块也将是数据库发展中值得关注的技术。

第三,“数据库+AI”等多技术生态底层融合将带来新的发展机会,如通过“AI for DB”实现数据库自治是当前广受关注的方向。第四,“数据库+新硬件”结合也是值得关注的发展方向,如今,新硬件层出不穷,我们如何基于新硬件实现创新式应用、释放创新源动能,同时保持数据库ACID能力?如何实现数据库面向新硬件的技术迁移?这些都是值得探索的方向。

8. “AI+智能运维”是否会取代DBA?

智能化运维能力,更多的作用是覆盖云时代大规模实例运维中基础、重复的工作,以及提升诊断、资源配置的效率,也就是说,它最终能够释放DBA烦琐的日常工作、提高DBA处理问题的效率、减少故障对企业带来的损失(也降低了DBA的精神压力),让DBA有更多时间和精力去做一些有助于个人成长和业务发展的事,包括但不限于业务整体数据架构的梳理、内核源码的研究等。

9. 未来数据库的核心是什么?

关于未来数据库发展的核心,我个人认为,一方面是面向未来的高精尖技术发展与技术基础设施升级,另一方面是国产分布式数据库生态的培育建设。而数据库的发展仍将以云原生、HTAP等多模态融合、智能自治为主要核心:

  • 云原生与Serverless

云数据库时代,我们将探索极致的弹性伸缩架构,来解决性能、效率和成本问题。云原生数据库具有高性能和高度兼容的优势,敏捷、灵活的部署能力,可以让企业像使用水、电、煤一样使用云数据库,从而降低企业上云门槛,提升上云进程,更好地应对智慧时代复杂的业务场景。针对不同的场景,云原生分布式数据库可分为两种架构:Shared Nothing与Shared Storage,两者都可以通过实现计算与存储分离架构来整体获得更优秀的弹性伸缩能力,克服传统架构下的存储量受限、扩展难、主从延迟高等缺点,同时也能够将成本控制得更低,充分释放领先技术的成本效益。而计算与存储全Serverless架构的数据库服务也是未来可以重点关注的方向,它在可自动无感扩缩容的基础上,按实际使用计费,不用不付费,提升云数据库效用。

  • 多模态融合

在信息化建设和数字化转型的浪潮之下,涌现出大量的新兴场景。数据库作为支撑各类 IT 系统架构的基础软件技术,也随之出现在各类新的应用实现中,包括大量的NoSQL实践和存储领域的B+树、 LSM树以及行存、列存等架构形态产品,还有OLTP、OLAP,HTAP数据库等。多种多样的引擎产品,在大多数情况下不会独立存在,服务于一个企业或系统,即“One size fits none”。从技术角度看,极致的性能成本与通用性有着天然的矛盾。因此,在多样化场景下,一定会是多引擎共存,充分发挥各种引擎的特点与优势,才能实现极致与通用的兼得。

  • 标准化服务与智能自治

多模态技术引擎的现状必然给开发者带来选型、开发应用的困难,即如何能够适应不同场景,还有足够高的性能表现,这也是当前数据库发展面临的困境。为了解决这个问题,一个办法是无需用户进行复杂选择,而是由系统基于AI智能调度、Serverless等解决方案,彻底实现多引擎的统一标准化服务。从底层的角度看,未来开发者无需感知具体的产品选型,比如在做数据分析时,系统会自动调度性能最好、事务交易一致性的方案。与此同时,面对云数据库时代数十万的数据库实例,人力运维是不现实的,智能化技术与数据库底层的融合,可以智慧管理数据库全生命周期,也是未来数据库的关键特征。

程序员职业发展建议

10. 如何将程序员做成具有长久生命力的职业?

程序员从来不是一个只吃青春饭的职业。当你经历的东西越多,见过的架构越多,你的经验肯定会更丰富,看问题更能迅速看到本质。所以,做技术没有天花板,而技术人员的职业生涯,也没有瓶颈期。但是,最好在某些方面有比较深入的钻研,追求精度与深度。同时,不能放弃广度,广度意味着更多的机会,帮助你由点及面地开展工作。例如,一些通用的底层技术,就值得钻研。只要你从事计算机系统工作,那你在大多数时候都离不开它们,包括内核、网络、数据结构、算法等等。对底层技术的研究相当于不断发现水面下的冰山,它具有持久延续性、广泛延展性。不管你做什么工作,你依赖的这些基础都是相通的,所以我相信,提高基础能力,你的前景肯定会越来越光明。


雷海林:腾讯云数据库专家工程师,腾讯云TDSQL技术负责人、首席架构师。2007年加入腾讯,持续专注于金融级分布式数据库研发,带领团队实现多次业界领先的分布式数据库技术突破,在分布式事务、SQL兼容性、内核安全、智能运维方面持续创新,产品获得大量金融客户的认可,市场规模大幅领先同业。

本文出自《新程序员002:新数据库时代&软件定义汽车》,由60余位专家倾力创作。随书附赠《2021数据库全景图V1.0》和《2021汽车技术与产业生态全景图V1.0》,同时内含《2021年度数据库发展研究报告》和《2021年度软件定义汽车研究报告》,图文与视频多媒体呈现。

数据库作为核心技术三大件之一,我们从新型数据库普及、数据库开源趋势、数字化转型实现,以及资本助力产业等角度,邀请到27位数据库行业专家,共著非关系型数据库、文档型数据库、分布式数据库、混合式数据库、时序数据库、图数据库等的理论技术及行业实践,让数据库开发者快速提升。

《新数据库时代》目录

智能驾驶作为人工智能的顶上皇冠,我们以技术和商业融合创新为主线,邀请到23位汽车领域专家,从开源系统、车路协同、数字孪生等不同视角分析了云计算、人工智能、物联网等技术给汽车行业带来的影响和机会,让汽车从业者深入了解产业动态。

《软件定义汽车》目录

本书高屋建瓴的产业分析和趋势预判适合中高端从业人员参考决策。同时,多位专家亲历的入门和实践之旅也为初学者提供了可借鉴的专业路径。

扫描图中二维码立即订阅

扫描下方二维码,添加小助手,即可加入《新程序员002》「读者群」,抢先一步获取杂志最新资讯,精彩内容不再错过。

开发者关心的十个数据库技术问题相关推荐

  1. 倒计时2天丨鲲鹏开发者峰会召开在即,云和恩墨与您相约东莞松山湖华为小镇,畅聊数据库技术!...

    鲲鹏开发者峰会2023将于5月6-7日在东莞松山湖华为小镇召开,一场KeyNote主题演讲汇聚行业大咖.学术领军人物.技术大牛,十余场技术专场涵盖鲲鹏技术发展.解决方案和生态建设.5月6日晚举办的开发 ...

  2. 从实践出发,腾讯云深入解读云端数据库技术

    毋庸置疑,数据已经成为信息化社会最关键的基础元素之一.离开数据的支持,大数据.人工智能等技术就都没有了用武之地,信息化.智能化也就成了空谈.而数据库则是存储和承载数据的重要场所,因此,其重要性不言而喻 ...

  3. Stackoverflow 年度报告 2020:开发者最喜爱的数据库是什么?

    墨墨导读:2020年2月,近6.5万名开发者参与了 Stackoverflow 的 2020 年度调查,这份报告中展示了开发人员对于数据库的看法. 从数据库技术来看,结果与去年的情况基本一致: MyS ...

  4. 【数据库】【NCRE】NCRE三级数据库技术选择题历年真题汇编(更新中)

    温馨提示:请不要在任何禁用通讯设备的场合阅读本文章. 目录 2015年-2 2015年-1 2014年9月 2014年3月 2013年9月 2013年3月 2012年9月 2012年3月-2 2015 ...

  5. DTCC 2021 黄东旭:从 DB 到 DBaaS,数据库技术的当前和未来

    10 月 18 日~ 20 日,第 12 届中国数据库技术大会(DTCC2021)在北京国际会议中心隆重召开.PingCAP 联合创始人兼 CTO 黄东旭受邀在主会场进行了以 "TiDB C ...

  6. 开源数据库技术分享及未来展望|CIC 真·全明星阵容

    从 60 年代中期开始到现在,随着计算机硬件技术的进步和互联网技术的发展,数据库也在一次次技术浪潮中不断地演化,现在已成为世界上最重要的基础设施之一. 1998 年,业界正式提出了 开源 概念,开源运 ...

  7. 致开发者:2018年AI技术趋势展望

    来源|公众号"AI 前线",(ID:ai-front) 译者|核子可乐 编辑|Emily 概要:在 2018 年,开发者如何将一系列 AI 技术成果应用于当前的工作当中呢? 近日, ...

  8. 观点 | 云原生时代来袭 下一代云数据库技术将走向何方?

    全面云化的时代已经到来,面对一系列的新技术和挑战,数据库市场将面临怎样的变革?作为云服务提供商,如何帮助更多的企业级用户把握"云"潮,提供最高效.最具价值的数据库解决方案? 日前, ...

  9. 大数据数据库技术简介与分类分析

    说起大数据生态,不得不提大数据生态系统图,而大数据行业却不断的发生着巨变,目前的这张图应该还算比较新了. 创业者们蜂拥至这个行业,这个行业正变得越来越拥挤.Hadoop似乎已经奠定了其作为整个大数据生 ...

最新文章

  1. Phoenix连接安全模式下的HBase集群
  2. c++ 向量的值逆序输出_C++中vector的常用方法
  3. 一家典型的云原生企业,如何在创业早期数次“弯道超车”?
  4. sqlsession.selectlist 会返回null么_如何在Java代码中去掉烦人的“!=null”
  5. Windows 10 再爆 Bug;罗永浩怼苹果失去灵魂;马化腾回应系 PS | CSDN 极客头条
  6. entity framework扩展实战,小项目重构,不折腾
  7. ReentrantLock深入学习
  8. TensorFlow by Google CNN识别猫和狗 Machine Learning Foundations: Ep #6 - Convolutional cats and dogs
  9. MATLAB安装教程
  10. php抓取数据去除空格,php读取文本去除空格
  11. Linux下通用打印系统CUPS使用教程
  12. TCP和UDP的区别与联系
  13. 人工智能及其应用-产生式系统实验-植物识别系统-java
  14. python怎样分析文献综述怎么写_如何写文献综述?
  15. 机器学习实战(一)KNN算法
  16. Quorum工作原理
  17. 尚硅谷docker基础篇 2018版
  18. Python基本环境配置
  19. Pyspark学习笔记小总
  20. 微信小程序苹果IOS手机无法加载显示临时图片路径

热门文章

  1. 中文详解phpmailer所有对象和属性
  2. 什么是Bootstrap Aggregating
  3. Ubuntu 忘记root登录密码的解决办法
  4. SpringMVC + Hibernate-Validator 参数校验
  5. error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
  6. PHP中file_exists与is_file,is_dir的区别介绍
  7. STM32中GPIO的8种工作模式
  8. HTML Inspector – 帮助你编写高质量的 HTML 代码
  9. Android 控件之ImageSwitcher图片切换器
  10. 关于局域网共享访问问题总结