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

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

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

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

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

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

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

具体可以体现在:

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

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

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

相关推荐
锥栗2 小时前
【Redis】【缓存】理解缓存三大问题:缓存穿透、缓存击穿与缓存雪崩及解决方案
java·后端·面试
9号达人2 小时前
泛型+函数式:让策略模式不再是复制粘贴地狱
java·后端·面试
怪兽20142 小时前
Looper、MessageQueue、Message及Handler的关系是什么?如何保证MessageQueue的并发访问安全?
android·面试
洛小豆4 小时前
java 中 char 类型变量能不能储存一个中文的汉字,为什么?
java·后端·面试
一只学java的小汉堡5 小时前
Java 面试高频题:HashMap 与 ConcurrentHashMap 深度解析(含 JDK1.8 优化与线程安全原理)
java·开发语言·面试
GISer_Jing14 小时前
ByteDance——jy真题
前端·javascript·面试
莫叫石榴姐14 小时前
SQL百题斩:从入门到精通,一站式解锁数据世界
大数据·数据仓库·sql·面试·职场和发展
你总是一副不开心的样子(´ . .̫ .15 小时前
一、十天速通Java面试(第三天)
java·面试·职场和发展·java面试
我是华为OD~HR~栗栗呀15 小时前
23届考研-Java面经(华为OD)
java·c++·python·华为od·华为·面试
DoraBigHead17 小时前
🧭 React 理念:让时间屈服于 UI —— 从同步到可中断的演化之路
前端·javascript·面试