伴随大数据和云计算的快速发展,数据库已成为企业信息化建设的基石。有效地管理数据库对于保证数据的安全、提高企业运营效率和支持决策制定至关重要。基于此,选择适合的数据库工具成为企业和技术人员面临的关键任务。
本文作为《数据库工具选型指南》系列的一部分,通过对话一线技术专家,旨在帮助用户了解选型的重要性和方法,提供关键因素和考虑要点。通过比较和评估不同工具,读者可以深入了解每种工具的性能和成本差异。
近日,我们有幸采访到了货拉拉数据库负责人蔡鹏,就数据库工具的选型问题进行了深入探讨。
▲货拉拉数据库负责人 蔡鹏
嘉宾介绍:前饿了么、蚂蚁金服技术专家,现任货拉拉数据库部门负责人。负责货拉拉全球化业务场景下整体数据库、消息队列、缓存、数据库中间件的稳定性及管控体系化建设工作,主持过饿了么数据库异地多活建设,对数据库库中间件、分布式数据库和自动化运维平台设计开发有丰富的实践经验。
评估数据库工具的重要因素
我们要分别从研发&DBA两个不同角度来考量数据库工具的选型需求。对于研发人员,他们往往追求的是能够提升工作效率的客户端工具,例如表结构设计、数据查询、数据编辑、数据导入导出等。
而对于数据库管理员(DBA),他们更倾向于选择运维管理的相关工具或平台,其目标主要是为了提高运维管理效率,例如监控告警、容量保障、风险治理、应急保障、SQL审核、备份、归档、慢查询管理、高可用管理、DTS数据转换等等。
在选型过程中,除了考虑常规的可靠性、可扩展性、安全性、兼容性、可维护性、社区支持因素外,还需特别关注工具或平台与自身业务场景的契合度。
具体而言,应评估工具能否无缝集成至现有的运维体系中,并能否顺利打通上下游数据,如数据库集群或实例元数据信息,以提升操作便捷性和效率。通过这样的综合考量,我们能够确保所选工具或平台不仅能够满足基本的技术要求,还能在实际应用中发挥最大效用。
此外,将新引入的工具嵌入自身的权限认证体系也比较重要,尤其是对于那些研发部门广泛使用的客户端工具,实现其权限管控与审计往往面临一定的挑战。
选择“小而美”还是“大而全”
在企业发展的初期,通常会采用各种开源工具来快速构建系统,尽管这样的系统可能缺乏统一的标准和章法,但至少能够满足基本的业务需求。在这一阶段,企业更需要注重流程的沉淀和规范化,以确保系统的稳定性和可扩展性。
随着公司规模的扩大,原有的系统无法满足更高的业务需求,这时就需要推翻重来,重新打造一套更加体系化、用户体验更优、研发和运维效率更高的系统。这一阶段的重点在于全面优化系统的各个方面,以适应企业不断发展的需求。
蔡鹏认为,“对于拥有百人以上研发规模的公司,在选择数据库工具时,应优先考虑平台型工具,这些工具最好是开箱即用且功能相对完善的。它们应能满足研发团队的日常开发需求,同时也能满足DBA的运维需求。”
在这个规模下,选择的工具往往是开源的,因此其适配性可能会稍显不足。若公司有能力,建议进行一定的个性化定制,以更好地满足公司的特定需求。
对于拥有几百甚至上千人研发规模的公司,那么自主投入资源开发一个定制化的数据库工具将是最 佳选择。这样做不仅可以确保工具能够持续迭代演进,满足不断变化的业务需求,还能确保工具在多场景下具有高度的适配性。
在蔡鹏看来,“低于100人的研发团队选择工具上功能要小而美即可,功能太全也不见得能用的上。如果是体量比较大的公司对工具要求就比较高了,因为研发团队越大工具对研发效率的提升就会越显著,反之制约研发效率也很明显。”
尽管“造轮子”这个词在某些情境下可能被视为贬义,但基于蔡鹏10余年的从业经验,他发现中大型互联网公司往往更倾向于自主研发解决方案,而非依赖商业产品。
体系化的数据库工具至关重要
大约十多年前,MySQL刚开始崭露头角,那时工具资源相对匮乏。DBA最常用诸如PT工具包等,它主要解决了DBA在运维过程中遇到的问题。在那个MySQL DDL能力比较薄弱的时代,pt-osc成为了DBA运维神器。
当时的行业水平普遍不高,MySQL的周边生态也不完善,能够编写复杂脚本的DBA都被视为“大神”,更不用说那些高端的数据库工具。
随着MySQL周边生态的逐渐完善,我们看到了SQL解析库的成熟,催生了一系列SQLReview工具,实现了SQL的自动化审核。
同时,Binlog解析库的完善也催生了各类数据回滚工具、事务分析工具、DDL工具(如gh-ost),以及数据流量处理工具(如binlog2mq/es等)。甚至,许多公司自研的DRC跨数据中心同步工具,也是对相关数据库或原理的应用。
尽管围绕MySQL的周边生态工具众多,但使用过程中普遍存在的问题是它们难以深度融合,形成合力。这些数据库工具零散分散,难以高效利用。数据库工具的目的是提升效率,但如果不能很好地整合(如基础元数据的共享、统一的权限管控、嵌入运维SOP、操作界面友好化),就很难说它们是趁手好用的,可以赋能效率。
蔡鹏表示,“在经历的几家公司中,我主要负责数据库平台的建设。我的一贯做法是基于对原理的理解及结合实际需求,进行深度的定制,或在开源的基础上进行改造,使其适应自己的场景。最终无缝的嵌入到自己的平台中,将一个个零散的数据库工具经过改造或者重构后深度的集成在一起,使之更加强大好用。”
对研发而言,数据库工具主要满足研发过程中对数据库的全部诉求,如资源申请、数据库设计、查询服务、安全变更、监控查看看、告警订阅、资源退订等。
对DBA而言,数据库工具的核心功能聚焦在以下几点:可观测性、容灾保障、容量保障、安全变更、数据安全、应急保障、服务治理等。
如果按照上述的要求来选择,目前市面上几乎没有一款数据库工具可以满足,因为这需要对整个系统进行体系化的建设。虽然市场上有一些开源工具,但它们往往覆盖范围有限,无法满足全面的需求。
蔡鹏指出,“目前很多产品普遍还只是单纯的‘工具’,只是解决某一个场景的问题,没有体系化的解决运维跟开发场景的问题。尤其当下在上云趋势的影响下,应该立足云产品,兼容多家云构建一整套完整的解决方案。”
最后,他并没有推荐常见的诸如查询客户端:navicate,及一众SQL审核工具等特定场景化工具解决方案,而是推荐了一些商业化解决方案,如云和恩墨、九章数据、爱可生等体系化解决方案。蔡鹏认为,单一工具是不能满足研发及DBA对复杂的场景要求的,并再次强调平台体系化(大而全且美)建设的重要性。