数据库中动态列的几种设计思路

简介: 本文介绍数据库中动态列的几种设计思路

在需求开发的时候,可能会碰到一种场景,在需求中,涉及的某具体业务中,属性是动态的,在条件允许的情况下,可以使用穷举法对所有可能情况进行属性分析,然后进行分类,最终可以形成一套可以解决的方案。这通常是理想情况,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:需要一定学习成本。



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


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


目录
相关文章
|
2月前
|
SQL 存储 安全
SQL查询数据库:基础概念与操作指南
在数字化时代,数据库已成为信息管理的重要工具之一。作为管理和操作数据库的核心语言,SQL(结构化查询语言)已成为数据管理和查询的关键技能。本文将全面介绍SQL查询数据库的基本概念、语句和操作指南,以帮助初学者快速上手,同时为进阶用户提供有价值的参考。一、数据库与SQL简介数据库是一种存储、管理和检索
57 3
|
7月前
|
算法 关系型数据库 数据库
关系型数据库表结构设计选择合适的主键
【5月更文挑战第13天】关系型数据库表结构设计选择合适的主键
121 3
|
7月前
|
存储 SQL 数据库
数据库库表结构设计:原理、实例与最佳实践
数据库库表结构设计:原理、实例与最佳实践
2221 0
|
数据库 索引
数据库 - 索引 设计与使用 原则
数据库 - 索引 设计与使用 原则
77 0
|
7月前
|
存储 NoSQL 数据挖掘
请解释一下列存储数据库的工作原理,并提供一个使用列存储数据库的实际应用场景。
请解释一下列存储数据库的工作原理,并提供一个使用列存储数据库的实际应用场景。
232 0
|
7月前
|
SQL 缓存 中间件
数据库为什么都设计为单表
数据库为什么都设计为单表
70 0
|
存储 数据库 索引
数据库视频第五章操作架构、视图和索引
数据库视频第五章操作架构、视图和索引
|
存储 数据库
数据库视频第四章 数据表管理
数据库视频第四章 数据表管理
|
存储 SQL 安全
数据库的视图与索引经典题
数据库的视图与索引经典题
253 0
|
SQL 存储 Oracle
34. 谈谈为什么要拆分数据库?有哪些方法?
34. 谈谈为什么要拆分数据库?有哪些方法?
165 0
34. 谈谈为什么要拆分数据库?有哪些方法?