Mongodb嵌入式文档最佳实践

用户名

我有一个视频文档,每个视频都有一些特定的细分,根据视频时长,它可能从100到5000。

videoModel = {
  id: 'vid334',
  codec: 'avc1.4d401e,mp4a.40.2',
  resolution : { "width": 854, "height": 480 },
  segments : [
   {
    segment : 1,
    file : seg-1.ts
   },
   {
    segment : 1,
    file : seg-1.ts
   },
   ....
  ]
}

一旦创建了每个视频,就无需更新视频或片段。

现在我想知道保存细分的最佳方法是什么?我应该将片段嵌入视频文档中还是将每个片段保存在单独的集合中?

戴维·马科贡

没有最好的办法。只有您可以决定。没有关于嵌入还是引用的规则,通常会引用其他文档中的文档。但客观地考虑一下:

您最终会遇到的问题是“无界数组的概念-带有嵌入式文档数组的主要代码气味。在某个时候,具有足够的细分,并且数量不受限制。您将达到文档的大小限制。届时,您的应用将被破坏,因为您将无法存储其他细分。而且您需要重构代码(和模型)以应对这种情况。

如果段的数量是有界的,并且您确定不会超过单个文档的大小,则无界数组条件(以及相关的风险)将不适用。

当使用如此大的阵列时,另一个问题是复制和性能。$push()由于oplog是幂等的,整个数组都包含在oplog中,因为该数组幂等的(您可以多次重播条目,并获得相同的结果)。因此,随着阵列的增长,oplog中条目的大小也会增加,复制可能会减慢速度并影响整体性能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档