数据库扩展字段设计在&大数据查询筛选优化

简单模式:

学生表(ID,姓名,年龄,生日)

学生扩展字段表(ID,扩展字段名称(班级、专业),编码, 扩展字段类型(int,string,arr等))

扩展字段存值表(学生表ID,扩展字段表编码,值)

现在添加一个学生张三{1,张三,22,1999-12-12,八班,计算机科学与技术},这条数据应该怎么插入数据库呢?

首先:将{1,张三,22,1999-12-12}插入学生表。然后在存值表插入两条数据。

这种模式可以随意扩展学生表的字段。

表结构图:

 

 

复杂模式:

 如下图:

 

 加了一级人员类别,扩展字段作用到人员类别上,这样更加灵活。

类似于电商中的商品分类-扩展设计。每个商品分类都可以有自己的扩展字段

 

问题:

当学生表数据非常多的时候,查询的时候要先查主表,然后还有根据主表的每一条记录去查存值表中的数据,查询效率慢。

如果筛选条件是字段扩展表中的字段,那么查询的速度将会更慢,因为要先查子表数据,根据子表中取出的学生表ID(还要去重)再去主表中in查询,这效率简直太低了。

 

解决问题

解决复杂模式设计方案问题

用mongodb来存储人员表和人员扩展字段值表中的数据。

因为mongodb不是关系型数据库,列可以随时扩展,列也可以内嵌数组或者对象。

同时mongodb的查询速度也是非常快速的,对扩展字段的筛选,甚至内嵌数组值的筛选都是非常快速的。

对于不懂mongodb的可以在网上了解它的应用场景。

个人认为mongodb在业务上有扩展字段这个场景就非常适合。

 

posted @ 2022-07-15 12:20  梦亦晓  阅读(200)  评论(0编辑  收藏  举报