我有以下问题:
我们想要在(MariaDB)数据库中记录许多不同但相似类型的数据项。所有数据项都有一些常见的参数,如id,username,status,file glob,type,comments,start&结束时间戳。此外,还有许多(比如40到100之间)参数,这些参数特定于每种类型的数据项。
我们希望在同一个表中使用不同的数据项类型,因为它们将与Web应用程序中的单个列表中的其他几个数据一起显示。这看起来像是一个活动流或者#34; Facebook墙"。
似乎使用顶层通用表与下面的特定表连接的规范化方法将导致性能不佳。为了显示活动流,我们必须同时执行大量的连接和联合,并且应用程序将经常使用此查询进行轮询,因此查询运行速度非常快。
那么,在性能和存储优化方面哪个是更好的解决方案?
如果我们使用常规列时,它们中的大量数据是否为空,这是否重要?
我们什么时候应该使用动态列?什么时候使用常规列更好?
答案 0 :(得分:1)
我相信您应该为要过滤的值分别设置列。但是,您可能有一些未过滤的值。对于那些将它们作为json对象存储在单个列中可能是个好主意(对编码/解码很简单)。
答案 1 :(得分:1)
在why not to use EAV schema上查看我的博客。我专注于如何在JSON中实现它,但MariaDB的动态列可以说更好。