我有不同的模型生成关于它们的统计数据:
Model Example stats
----- -------------
User qty_logins... qty_toys... qty_friends
Group qty_users... qty_invites...
Section qty_visits
因此所有统计数据都会转到具有此结构的MySQL stats 表中:
model_id kind name value
----- ---- ---- -----
123 user qty_logins 5
123 user qty_toys 14
456 group qty_invites 21
789 section qty_visits 23
目前我有100k行,性能还可以。
问题1)这是存储统计数据的好方法吗?或者我应该在不同的表格中分开(例如,每种模型类型一个)。
问题2)我正在尝试实施动态结果生成,例如 qty_logins + qty_visits 。问题是每次数据发生变化时都会自动更新。是否有任何类型的动态数据生成数据库或其他任何工具可以帮助实时实现这一目标?
答案 0 :(得分:1)
您的架构很好,假设值都是数字(对于统计值来说是合理的)。
此结构称为实体值属性(EVA)模型。它们将每个值存储在单独的行中。通常,它们不是存储数据的最佳方式。但是,在这种情况下,您可以在各种表上获得灵活的统计数量。两者都可能随着时间而改变。所以,这似乎是一个合理的应用程序。
您可以使用适当的索引来提高查询的性能。没有看到查询,正确的方法是推测性的。
问题(2)相当困难。对于您的示例并不难,但如果您想支持分层表达式,它将变得复杂(即,基于其他表达式的表达式)。对于您的示例,您有三个基本选项:
第二种选择是我的第一种方法。第三个是我的偏好。