0

我在是否选择(如我所见)最佳实践或权宜之计方面陷入困境。我目前正在开发的应用程序是由用户相互交换的“令牌”系统支撑的。这些令牌可以组合在一起作为“单元”(固定大小)。

原始架构

我最初为表示这一点而绘制的数据模型单独跟踪每个“令牌”,并记录其每一个动作。结果是一个模式,其中包含许多表来表示每个唯一项目、它们的历史、历史事件类型、单位和单位成员资格(包括历史记录——因此每个成员资格记录都会跟踪每个令牌的进入/退出时间。

虽然原始模型是全面的,并提供了很大的分析范围,但它使查询(例如确定用户总共有多少令牌 - 考虑历史)特别复杂,因为每个表都连接了许多表,并求助于之类的机制COUNT()

选择

如果不单独跟踪令牌,则可以显着简化模型。在这种情况下,可以将跟踪历史记录的表折叠成单个余额表,该表记录每个用户的数值(例如,“ xn 个令牌”)。类似地,由于单元之间的移动不需要在数据模型中进行跟踪,并且它们始终具有固定大小,因此它们也不需要单独建模,并且可以在需要时生成(例如,取来自用户余额的 2 个代币并将其称为一个单位 - 假设固定单位大小为 2)。

当然,缺点是执行分析的能力会随着详细的跟踪数据而丢失。我能想出的最佳解决方案是以固定格式(取决于消息类型)的详细应用程序日志记录,可以对其进行解析并(如有必要)转储到单独的数据库中 - 或保存在文件中存放在某处。

不幸的是,这里最大的警告是时间。从最佳实践的角度来看,原始的、更详细的模型让我觉得更好(这就是我最初选择它的原因),但是时间限制(背景:创业公司)让我转向简化模型 + 日志记录选项。

任何人都可以提供任何见解吗?

谢谢!

编辑:感谢下面的 Thilo 提醒我关于可扩展性 - 另一个支持简化模式的观点(我最初写问题时忘记提及它,但磁盘空间一直是我的问题 - 一旦应用程序的使用开始增加向上)。

4

0 回答 0