在数据库中存储单个记录的元数据的最佳实践是什么?
我需要为我的数据库中的许多表存储常见的元数据,比如创建上次更新的时间和时间。我找到了几个不同的解决方案:
缺点:
- A lot of duplicate columns are required (unless inheritance is used)
- Meta data and business data are not separated
缺点:
- No direct links between meta data and data (FK's can't be used)
- Joins require an additional condition
缺点:
- A lot of extra tables are required
- A lot of duplicate columns are required (unless inheritance is used)
是否有比我在这里提到的更多的选择、利弊?存储这些元数据的最佳实践是什么?
发布于 2013-06-13 23:24:23
您正在讨论的列占用20个字节(如果对齐没有填充):
创建时间、更新时间和创建源
时间戳..。8个字节
时间戳..。8个字节
整数..。4字节
单独表中一个单独行的元组头和项标识符将占用23 +1+4= 28字节加上实际数据的20字节,加上末尾的4字节填充。每行生成52个字节。请参见:
关于存储,你没有什么可获得的。在性能方面,每一行只多16到24个字节,您几乎不会丢失任何东西。
列也直接属于行,因此将它们保持在一起是有意义的。我习惯于将这样的列(加上上次更新的单独源)添加到所有相关表中。
编写一个TRIGGER ON INSERT OR UPDATE
以保持它们的最新也更容易。
长话短说:强烈支持你的选择1。
我将选择方案3:
如果元数据经常更新,而核心行不更新。然后,它可能会花钱保持一个单独的1:1表,以使更新更便宜,减少膨胀的主台-甚至选择2。
我将选择备选案文2:
如果元数据列的集合是高度重复的。主表中的元数据集可以有一个FK列(S)。不会为您的示例中的三个小列节省太多。
https://dba.stackexchange.com/questions/44351
复制相似问题