导入:随着信息技术的快速发展,特别是大数据和云计算的兴起,数据库已成为企业信息化建设的核心。
有效地管理数据库对于保证数据的安全、提高企业运营效率和支持决策制定至关重要。在这样的背景下,选择合适的数据库工具成为了企业和技术人员面临的重要任务。
本文作为《数据库工具选型指南》系列的一部分,通过对话一线技术专家,旨在帮助用户了解选型的重要性和方法,提供关键因素和考虑要点。通过比较和评估不同工具,读者可以深入了解每种工具的性能和成本差异。
近日,我们有幸采访到了欧冶云商首席数据库专家薛晓刚,围绕数据库工具的需求分析、选型策略、用户反馈等话题进行深入探讨。
▲欧冶云商首席数据库专家 薛晓刚
一、数据库工具选型的需求分析
ITPUB:对于您而言,选择使用数据库工具的原因是什么?为了解决哪些需求和痛点?
薛晓刚:使用数据库工具可以更加方便、简化、省时省力、安全可靠的解决很多在数据库开发和运维上的问题。
数据库监控的需求:数据库运行过程中CPU、IO或者会话增多等异常问题需要及时掌握。所以,一定需要有图形化的监控工具。这样可以在出现问题第一时间知道发生了什么?甚至在问题没有发生时候,感受到趋势及时预防。
数据库可观测性的需求:数据库在运行的过程中,可提供数据库的运行指标、当前运行状态、当前资源使用情况,内部执行步骤等;提供接口对底层文件结构、底层进程状态等信息的访问。从而让数据库使用者更清晰地了解数据库的当前运行状态、性能状况,或者在出现故障时,更准确地定位故障原因,甚至给出处理问题的建议或者方案。
动态SQL审核的需求:对于在开发验证环境中,违反开发规范中规则的SQL进行标注,以及发现并及时改进,避免上线后发生重大性能问题或者逻辑问题。
数据库审计的需求:对于等保和数据安全要求,必须有数据库审计。记录一定时间段的特定或不特定的SQL。
数据库设计的需求:数据库对象的设计需要专业的人来完成或者有专业的人来审核。所以,也需要一个平台工具让相关人员共同设计或者审核这些数据对象。
数据库变更的需求:审核过的数据库对象可以直接对应的发布到带变更的数据库实例上。
二、选型过程中的关键方法和策略
ITPUB:在进行数据库工具选型时,可以采取哪些方法和策略(可以从需求分析、候选工具筛选、实验和评估、考虑业务场景、参考案例、最终选型、持续优化和调整等方面展开)?
薛晓刚:首先,结合当前企业需要的是上述需求,有针对性的选型。当然也可以一次性全选,这样的成本会变大,覆盖面会更广。
其次,选型一定要是专业的数据库从业人员来决定,而不是非数据库领域背景的人来决定。缺乏数据库从业背景的选型,导致选型的工具可能在使用过程中达不到预期效果。
因为一个专业的数据库从业人员有着丰富的运维经验,深知必须具备哪些功能,如果没有这些功能,选型将失去意义,这些功能可以切实帮助用户解决日常面对的问题,这些问题都是过去案例和经验的总结。
ITPUB:在选型过程中,需要综合考虑数据库工具的哪些关键因素?
薛晓刚:首先,考虑到数据库供应商有没有数据库从业的背景和相关人才。如果供应商是一家依靠开发起家的公司,那便做不好数据库工具。
其次,看该数据库工具的功能是否满足或者基本满足需求,以及是不是可以结合用户实际场景做定制化开发。
最后,该数据库工具的价格能否接受。
ITPUB:数据库工具既有免费的,也有付费的,亦有国外和国内的软件之分,您更趋于选择哪一类?为什么?
薛晓刚:我更趋向于付费的。因为免费的工具遇到问题没有支持,需要改进的地方也没有办法去要求改进。国内的数据库工具可能响应更快一些,更加贴合本土化,价格也不昂贵。国外的数据库工具未必能满足用户所有的需求,价格上有点贵。
三、数据库工具的种类及适用范围
ITPUB:您使用过哪些数据库工具,它们的适用范围,优缺点分别是什么?在使用过程中,可能会遇到哪些问题?您有什么运维建议吗?
薛晓刚:数据库监控工具,适用于各种关系型数据库和非关系型数据库的监控。这里不包括zabbix等通用型监控工具,而是类似Oracle的EM这种真正的数据库监控工具。
一般数据库原厂的监控工具对自身产品支持非常好,但是只负责自己的产品。而目前用户环境不止一种数据库,所以需要一个可以负责所有的数据库监控工具。但是这种大而广的监控就不如原厂自身的精细,无法做到真正的调和。
数据库审计工具,数据库原厂也都自带审计工具,一般都是企业版或者是收费版。国内也有专门从事安全的供应商做相关产品。如前文所说,不是数据库专业背景的供应商做出来的软件,不是非常贴合数据库。推荐使用各种数据库企业版或者数据库自身的收费组件。
动态SQL审核工具,有开源的也有商用的,商用版支持度更好一些。目前没有能从Java代码中进行SQL审核的工具,而且实现起来比较难。因为不少Java文件中的SQL的过滤条件是靠传入参数组装,导致条件是动态的不好判断SQL的过滤条件是否合理。
数据库设计工具,目前有做到流程化的数据库对象设计和审核,也可以对接到相应的环境实施变更。但是数据库设计是一个承上启下的过程,如果不结合需求,很难得出表或者索引的设计是否合理。所以,数据库设计的工具应该把需求的工作流纳入进来。
然而,有了需求和数据库对象也并不意味着完成了设计,因为数据库最终执行的是SQL。结合需求和设计最终形成的SQL,也是数据库设计的一部分。所以,工具应该把SQL审核的功能纳入进来,目前还没看到能够满足这样需求的工具。
静态的SQL审核检查SQL的逻辑和表关联是否正确?是否用到关联列和索引。而动态的SQL审核是检查由于数据量导致关联顺序或者索引缺失导致的性能问题。两者是有区别的,静态审核看逻辑,动态审核看性能。国内的现状是有很多开发人员不仅仅不重视性能,甚至业务逻辑写的也不对。
四、好用的几款数据库工具推荐
ITPUB:在您看来,优秀的数据库工具应该具备哪些功能?请您推荐几款上手快、安装简单、方便易用、支持多种数据库的数据库管理工具?
薛晓刚:数据库工具分为好几种,有些安装起来真的是比较麻烦。除非是数据库自身自带的相关工具,可能随着数据库的安装一并完成了,但这种工具基本只支持自身。目前支持多数据库的工具都是需要商用付费的,供应商会上门安装。
云和恩墨的zcloud,支持多种关系型数据库、非关系型数据库和国产数据库监控巡检、SQL审核。磐基云数的Pigsty,支持PG的全方位监控。Oracle和MySQL的EM分别支持自身的数据库监控,以及分别有自身的数据库审计。
ITPUB:作为用户,您认为目前主流的数据库工具,还存在哪些需要改进的地方?
薛晓刚:一方面,数据库供应商自带的全套解决自己的数据库工具,但不够全面。另一方面,支持很多数据库产品的工具,但缺乏每个方向的深度。二者相互矛盾,估计也没有数据库工具能够既满足深度,又满足广度。
数据库运行的稳定性来源于三个方面:需求、设计和实现。如何控制好不合理的需求、不合理的设计和不合理的实现。数据库工具如果在监控、审核、审计的基础上,把这些因素也融合进去,会对开发者有很大的帮助。
文章来源:ITPUB微信公众号