数据库架构:复杂/最佳实践与简化

时间:2013-10-01 03:51:18

标签: database schema

对于是否采用(我认为)最佳做法或权宜之计,我陷入了困境。我目前正在开发的应用程序由用户彼此交换的“令牌”系统支撑。这些令牌可以组合在一起作为“单位”(固定大小)。

原始架构

我最初编制的数据模型分别代表跟踪每个“标记”,并记录其每个动作。结果是一个包含多个表的模式,用于表示每个唯一项,它们的历史记录,历史事件类型,单位和单位成员资格(包括历史记录 - 因此每个成员资格记录都跟踪每个标记的进入/退出时间。

虽然原始模型是全面的,并且提供了很多分析范围,但它使得查询(例如确定用户总共有多少令牌 - 在历史中进行因子分析)特别复杂,因为每个都加入了多个表,并采用COUNT()等机制。

替代

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

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

不幸的是,这里最大的警告是时间。从最佳实践角度来看,原始的,更详细的模型让我感觉更好(这就是我最初选择它的原因),但是时间限制(上下文:启动业务)让我更倾向于简化模型+日志选项。 / p>

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

谢谢!

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

0 个答案:

没有答案