【面试】你认为怎样才算是合理的数据库模型?

虽然问得简单,但是涉及的知识点可不是一般的多。为了方便各位的阅读我就不展开逐一说明了,下面我将总结一下我的看法。

首先,数据库模型建模的初衷是为了有效地存储和管理数据。通过抽象化的方式解决数据在管理、查询、更新等方面的复杂问题,以满足不同应用场景对数据高效利用的需求。

站在开发的角度,在设计时我会优先考虑以下 5 点:

  1. 使用简单的数据结构: 尽可能使用简单的数据结构将整体业务需求表现出来,这使得其他开发者或者维护者能快速理解和掌握其设计意图,方便后期的开发和维护工作;
  2. 尽可能避免数据冗余: 避免数据冗余可以提高数据的一致性和效率,但某些场景下适当的冗余可以提升程序性能;
  3. 使用标准的命名约定: 遵循数据库设计范式的同时使用标准的命名约定,以便于理解和维护数据库模型,我一般都是项目缩写开头作为前缀之后通过下划线进行功能层级划分的;
  4. 进行充分的测试: 在使用数据库模型之前,进行充分的测试,以确保其满足应用程序的需求。一般来说我会使用 Sysbench 对数据库进行基准测试。至于数据结构的评估将会通过人工走查的方式进行全面评审;当然了,现在也有很多数据质量分析工具能过快速进行评估,如:DataKitchen、IBM InfoSphere Information Analyzer 等等,不过对于穷逼的我来说还是走查实际一点;
  5. 安全性与权限控制: 合理的模型还应考虑到数据的安全性,包括设置适当的权限控制机制,保护敏感信息不被非法访问或修改;

再者,站在数据治理的角度还需要做好以下 2 点:

  1. 以业务为中心: 技术的一切都是要为了实现业务目标服务,脱离业务的技术将没有任何意义(至少在中国是这样的)。因此数据模型的设计也应该以业务需求为中心;
  2. 元数据管理: 应该对数据库模型进行元数据管理,以便于追踪数据来源、变化和使用情况;

具体可以体现在:

  • 在设计数据库模型之前,需要进行详细的业务需求分析,明确数据库模型需要满足哪些业务需求。除了邀请需求方参与评审之外,还可以利用人工智能大模型帮我们进一步打磨业务需求;

  • 建立元数据管理体系,对数据库模型的元数据进行统一管理。Github 上不乏优秀的元数据管理工具,目前我使用的是OpenMetadata 还挺好用的。因为 OpenMetadata 是 SaaS 模式的,如果您的数据比较敏感的话就不要用这个了。除此之外, 还有其他好用的元数据管理工具有机会会跟大家讲讲的;

除此之外,作为技术管理者可以建立数据库模型评审机制,定期对数据库模型进行评审,确保其满足业务需求。过程管理方面可以建立数据库模型变更管理机制,对数据库模型的变更进行严格控制也是一个不错的选择。

相关推荐
Moment2 小时前
前端工程化 + AI 赋能,从需求到运维一条龙怎么搭 ❓❓❓
前端·javascript·面试
独自破碎E2 小时前
【面试真题拆解】你知道ThreadLocal是什么吗
java·jvm·面试
我真会写代码4 小时前
Spring面试高频题:从基础到源码,通俗拆解+避坑指南
java·spring·面试
xlp666hub5 小时前
从零点亮 RK3568 的 LED:设备树,平台总线,现代gpio子系统全解析(附完整代码)
linux·面试
Fairy要carry5 小时前
面试08-“生产者-消费者” 模型实现并发 Agent
python·面试
零雲6 小时前
java面试:Spring事务失效的场景有哪些?
java·数据库·面试
发现一只大呆瓜6 小时前
React-深度拆解 React路由:从实战进阶到底层原理
前端·react.js·面试
发现一只大呆瓜6 小时前
React-手把手带你实现 Keep-Alive 效果
前端·react.js·面试
武藤一雄7 小时前
C#常见面试题100问 (第一弹)
windows·microsoft·面试·c#·.net·.netcore
发现一只大呆瓜7 小时前
Vue - @ 事件指南:原生 / 内置 / 自定义事件全解析
前端·vue.js·面试