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

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

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

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

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

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

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

具体可以体现在:

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

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

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

相关推荐
时差9531 小时前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
CXDNW3 小时前
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
网络·笔记·http·面试·https·http2.0
嚣张农民3 小时前
JavaScript中Promise分别有哪些函数?
前端·javascript·面试
阑梦清川7 小时前
在鱼皮的模拟面试里面学习有感
学习·面试·职场和发展
鱼跃鹰飞16 小时前
大厂面试真题-简单说说线程池接到新任务之后的操作流程
java·jvm·面试
程序员清风19 小时前
浅析Web实时通信技术!
java·后端·面试
测试199819 小时前
外包干了2年,快要废了。。。
自动化测试·软件测试·python·面试·职场和发展·单元测试·压力测试
mingzhi6120 小时前
渗透测试-快速获取目标中存在的漏洞(小白版)
安全·web安全·面试·职场和发展
嚣张农民20 小时前
一文简单看懂Promise实现原理
前端·javascript·面试
Liknana1 天前
Android 网易游戏面经
android·面试