MariaDB动态列用于活动流?

时间:2015-03-25 11:59:03

标签: mysql database-design relational-database mariadb

我有以下问题:

我们想要在(MariaDB)数据库中记录许多不同但相似类型的数据项。所有数据项都有一些常见的参数,如id,username,status,file glob,type,comments,start&结束时间戳。此外,还有许多(比如40到100之间)参数,这些参数特定于每种类型的数据项。

我们希望在同一个表中使用不同的数据项类型,因为它们将与Web应用程序中的单个列表中的其他几个数据一起显示。这看起来像是一个活动流或者#34; Facebook墙"。

似乎使用顶层通用表与下面的特定表连接的规范化方法将导致性能不佳。为了显示活动流,我们必须同时执行大量的连接和联合,并且应用程序将经常使用此查询进行轮询,因此查询运行速度非常快。

那么,在性能和存储优化方面哪个是更好的解决方案?

  1. 使用MariaDB的动态列
  2. 只需在一个表中添加我们需要的所有不同类型的列,并且只接受每个数据项类型只使用一些列,即其余列将为null。
  3. 别的什么?
  4. 如果我们使用常规列时,它们中的大量数据是否为空,这是否重要?

    我们什么时候应该使用动态列?什么时候使用常规列更好?

2 个答案:

答案 0 :(得分:1)

我相信您应该为要过滤的值分别设置列。但是,您可能有一些未过滤的值。对于那些将它们作为json对象存储在单个列中可能是个好主意(对编码/解码很简单)。

答案 1 :(得分:1)

  • 几列 - 在WHERE和ORDER BY子句中使用的主要列(但不一定是您可能会过滤的所有列。
  • JSON列或MariaDB动态列。

why not to use EAV schema上查看我的博客。我专注于如何在JSON中实现它,但MariaDB的动态列可以说更好。