数据库中动态列的几种设计思路
发布日期:2021-06-28 21:54:52 浏览次数:2 分类:技术文章

本文共 836 字,大约阅读时间需要 2 分钟。

在需求开发的时候,可能会碰到一种场景,在需求中,涉及的某具体业务中,属性是动态的,在条件允许的情况下,可以使用穷举法对所有可能情况进行属性分析,然后进行分类,最终可以形成一套可以解决的方案。这通常是理想情况,Leader和客户通常不会给这个时间。下面简单说明一下,这种需求的一般解决方案。

一、使用数据库DDL进行动态创建。

优点, 1:使用简单,sql管理即可实现。

缺点,显而易见,

           1:不同情况都会动态增加字段,表容易爆炸

           2:在已存在数据的表中修改字段,容易锁表,影响性能。

二、使用数据库预留字段。

优点,1:与数据库无关性,对业务侵入小

缺点,1:扩展性差,超越了预留字段还有新字段,怎么处理?

          2:可读性差,一般预留的字段都是attr1,attr2等字段,影响了字段的可读性。

           3:性能低,为兼容绝大多数数据类型,一般预留字段会采用较长的文本数据类型进行存储,比较影响数据库性能。

三、使用数据库中的json数据类型

优点,1:使用简单,绝大多数编程语言都支持json操作,方便快捷。

          2:对于mysql或者pg数据库,已原生支持json字段,可以基于json进行扩展查询。

          3、json使用key:value形式存储数据,可避免字段可读性差的问题,通过规范命名提高可读性。

           4、扩展性高,增加或者删除某字段,实现简单,直接移除key即可,不涉及表性能。

缺点,1:json字段查询操作,与普通字段稍有差异,有一定复杂度。

        2:json字段的索引性能有待提高。

四、使用NOSQL

优点,1:采用mongoDb等json数据库,可以快速扩展。

          2:专业数据存储,查询等性能可针对优化,性能高

缺点,1:需要一定学习成本。

 

综上,第一种和第二种,无非必要,强烈不建议采用这种方案。第三种方案在中小项目中能应对绝大多数需求,如果存储的数据比较多,同时性能要求比较高,可以采用第四种或者三、四两种相结合。

您的项目中,会采用什么办法来解决这种需求呢?欢迎关注交流。

转载地址:https://blog.csdn.net/yelangkingwuzuhu/article/details/109458962 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:干货!教你在PostgreSql中使用JSON字段
下一篇:单体架构中事务的使用姿势略谈

发表评论

最新留言

不错!
[***.144.177.141]2024年04月16日 20时53分43秒