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

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

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

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

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

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

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

具体可以体现在:

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

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

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

相关推荐
win x1 小时前
JavaSE(基础)高频面试点及 知识点
java·面试·职场和发展
编程彩机2 小时前
互联网大厂Java面试:从分布式缓存到消息队列的技术场景解析
java·redis·面试·kafka·消息队列·微服务架构·分布式缓存
xiaoye-duck3 小时前
C++ string 底层原理深度解析 + 模拟实现(上)——面试 / 开发都适用
c++·面试·stl
小旭95273 小时前
Java 反射详解
java·开发语言·jvm·面试·intellij-idea
indexsunny3 小时前
互联网大厂Java求职面试实战:Spring Boot微服务与Kafka消息队列应用解析
java·数据库·spring boot·微服务·面试·kafka·jpa
源代码•宸5 小时前
Golang面试题库(Interface、GMP)
开发语言·经验分享·后端·面试·golang·gmp·调度过程
努力学算法的蒟蒻5 小时前
day72(1.31)——leetcode面试经典150
面试·职场和发展
cyforkk5 小时前
10、Java 基础硬核复习:多线程(并发核心)的核心逻辑与面试考点
java·开发语言·面试
鱼跃鹰飞5 小时前
Leetcode会员尊享面试100题:333.最大二叉搜索子树
数据结构·算法·leetcode·面试
鱼跃鹰飞5 小时前
Leetcode会员尊享面试100题:255.验证二叉搜索树的前序遍历序列
算法·leetcode·面试