存储具有许多数据点的用户

Storing users with many data points

我正在尝试从游戏中获取用户并跟踪他们的统计数据。每个用户都有自己的统计数据,因此需要单独跟踪。最终每个用户都有一个数据集,每个数据集都有很多数据点。在代码中我最终得到..

public class User
{
    public string Name { get; set; }
    public List<DataPoint> Data { get; set;}
}

public class DataPoint
{
    public byte Month { get; set; }
    public byte Day { get; set; }
    public short Year { get; set; }
    public Stats stats { get; set; }
}

public class Stats
{
    //user stats, just numbers.
}

(我使用自己的月日和年,因为我不需要额外的 DateTime。)

这适用于将所有内容存储在内存中,我只是想不出一个好的方法来保存它。我一直在尝试在关系数据库(SQL)中这样做。真正让我失望的是这份清单。那个 table 是否应该只有一堆对数据点键的引用?应该只序列化它并存储序列化数据吗?我花了一些时间研究其他人如何存储数据点,但我找不到任何有用的东西。

我正在使用 C# Entity Framework。

  1. 如果在数据库上持久化对象,I would use Json as opposed to pure XML(serialization)。它更简洁、存储更轻且易于阅读
  2. 我当然同意放弃关系数据库用于此用途,并会考虑 NoSQL or key-value store options。如果您的要求如此之低,那么它们速度快、占地面积小、规模更便宜、效果更好。
  3. 对于 Entity FrameworkCode FirstNoSQL 解决方案,请尝试 BrightstarDb
  4. 最后,你知道吗,有一个专门的Gamedev section in the Stack Exchange network? Here's some goodie我从那里给你挖的。

如果我没理解错的话,可以在关系数据库中使用以下结构,您可以在 dataPoint 实体上使用外键来引用与 dataPoint 相关的用户。这假设统计数据集合非常一致。