我正在构建一个应用程序,我将从游戏中收集统计数据。本质上,我将解析每行都是游戏事件的日志。大约有 50 种不同类型的事件,但其中很多是相关的。每个事件都有一组与之关联的特定值,并且相关事件共享许多这些属性。总的来说,大约有 50 个属性,但任何给定的事件只有大约 5-10 个属性。
我想使用 Rails 作为后端。大多数查询将与事件类型相关,这意味着我并不特别关心两种事件类型在任何给定轮次中如何相互关联,就像我关心来自多个轮次的单个事件类型的数据一样。我应该构建什么样的架构,应该使用什么样的数据库?
给定一个关系数据库,我想到了以下几点:
具有扁平结构,其中只有几个表,但事件表的列数与总体事件属性一样多。这会导致每一行都有很多空值,但它可以让我轻松访问我需要的内容。
除其他事项外,为每种事件类型设置一个表格。这可以让我节省空间并提高性能,但考虑到事件并不是真正独立的“想法”,拥有这么多表似乎有些过分。
将相关事件组合在一起,最大限度地减少表格数量和每个表格的属性数量。那么问题就变成了分组。它远非明确,正确建立事件超类型可能需要很长时间。此外,它并不能完全解决存在大量 nil 的问题。
也有人建议我考虑使用 NoSQL 数据库,例如 MongoDB。在这种情况下似乎非常适用,但我以前从未使用过非关系数据库。似乎我仍然需要很多不同的模型,即使我不会为每个模型设置表格。
有任何想法吗?