使用一个 Mongo 文档来保存数千个对象,还是使用数千个文档每个保存一个对象?

蓝色标记

在我的网络应用程序中,经过身份验证的用户可以从他的 Spotify 播放列表中挑选歌曲在聚会上播放。我希望客人(未经身份验证的用户)能够在动态创建的反应路线上查看挑选的歌曲,并在他们自己的设备(可能是手机)上对他们最喜欢的歌曲进行投票。

我正在使用 Mongo、Express、React/Redux、Node 堆栈。

由于客人无权访问我的应用程序的 redux 商店,他们查看经过身份验证的用户选择的歌曲的唯一方法是通过对我的应用程序数据库的 GET 请求。我最初的计划是只存储播放列表文档,用户可以通过获取这些播放列表向 Spotify api 发出请求。但是,它们是未经授权的,需要访问令牌。这意味着我的数据库必须存储经过身份验证的用户选择的每一首歌曲。

我的问题与设计有关。我不认为让我的一个文档保存所有歌曲是一个好主意,因为有些人可能想要挑选数千首歌曲,而一个文档将无法保存所有歌曲。另一方面,为每首歌曲创建一个单独的文档似乎有点过分。

谁能帮我找出哪个选项更好,或者如果有我没有想到的其他选项可以完全避免这个问题?谢谢

古斯塔沃·洛佩斯

假设您将每首歌曲存储在一个单独的文档中,此策略的主要缺点是空间复杂性,您将需要更多空间来存储所有文档。

但是,假设您将所有歌曲文档保存在同一个集合中,它会提供一些优势,例如:查询和排序操作将更加灵活和快速。它可以帮助您节省处理和开发时间。这里显示类似的逻辑

仅使用一个文档来存储所有歌曲会使您的数据库操作更加复杂,这需要更多的开发时间和代码来以正确的方式组织所有检索到的数据。另一个缺点是它不是一个长期可扩展的策略,主要是因为 BSON 文档的限制是 16MB

在我看来,每首歌分开文件的设计更合适,原因如下:

  1. 空间在金钱上是便宜的。
  2. 节省时间复杂度必须是软件开发所有点的优先事项。数据库查询通常是软件中较慢的操作。所以,减少数据库操作的时间成本是一个很好的追求目标。将所有文档存储在一个集合中而不是一个文档中将检索所有已组织的数据,无需退缩代码。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

每10秒保存数千个对象的状态

来自分类Dev

使用EF Core FAST读取数千个对象

来自分类Dev

具有多个包含数千个文档的集合或一个包含1亿个文档的集合更好?

来自分类Dev

如何将数千个对象保存到Parse.com?

来自分类Dev

读取一个大文件与打开数千个文件

来自分类Dev

读取一个大文件与打开数千个文件

来自分类Dev

C ++格式的整数将一个点分隔成数千个

来自分类Dev

imagemagick通过堆积数千个相同宽度的图像来创建一个大图像?

来自分类Dev

运行数千个命令

来自分类Dev

在同一HD上复制数千个文件

来自分类Dev

使用python下载数千个文件的最快方法?

来自分类Dev

使用Leaflet处理数千个标记的最佳实践

来自分类Dev

使用python绘制数千个文件

来自分类Dev

如何使用Inno Setup支持数千个文件?

来自分类Dev

使用JS从数千个地方获取数字

来自分类Dev

使用画布绘制数千个矩形

来自分类Dev

Pouchdb的生产准备就绪且功能强大,可以处理数千个文档

来自分类Dev

用PHP更新数千个唯一行的快速方法[不使用循环]

来自分类Dev

是否有一个类似于StrToCurr的函数可以处理数千个分隔符?

来自分类Dev

将数千个Excel文件中的数据编译到一个工作簿中的最佳方法?

来自分类Dev

强大的查询对一个小表发出数千个请求,从而减慢了刷新速度

来自分类Dev

如何将数千个域名绑定到一个Web应用程序?

来自分类Dev

创建一个能够每秒处理数千个请求的 TCP 套接字服务器

来自分类Dev

我可以在一个 Azure 事件中心命名空间中创建数千个事件中心吗

来自分类Dev

实体框架将数千个对象转移到Elastic Search

来自分类Dev

.NET任务性能与数千个被阻止的任务

来自分类Dev

Rethinkdb是否支持数千个表?

来自分类Dev

MatPlotLib美元符号与数千个逗号刻度标签

来自分类Dev

更快地遍历数千个文件

Related 相关文章

  1. 1

    每10秒保存数千个对象的状态

  2. 2

    使用EF Core FAST读取数千个对象

  3. 3

    具有多个包含数千个文档的集合或一个包含1亿个文档的集合更好?

  4. 4

    如何将数千个对象保存到Parse.com?

  5. 5

    读取一个大文件与打开数千个文件

  6. 6

    读取一个大文件与打开数千个文件

  7. 7

    C ++格式的整数将一个点分隔成数千个

  8. 8

    imagemagick通过堆积数千个相同宽度的图像来创建一个大图像?

  9. 9

    运行数千个命令

  10. 10

    在同一HD上复制数千个文件

  11. 11

    使用python下载数千个文件的最快方法?

  12. 12

    使用Leaflet处理数千个标记的最佳实践

  13. 13

    使用python绘制数千个文件

  14. 14

    如何使用Inno Setup支持数千个文件?

  15. 15

    使用JS从数千个地方获取数字

  16. 16

    使用画布绘制数千个矩形

  17. 17

    Pouchdb的生产准备就绪且功能强大,可以处理数千个文档

  18. 18

    用PHP更新数千个唯一行的快速方法[不使用循环]

  19. 19

    是否有一个类似于StrToCurr的函数可以处理数千个分隔符?

  20. 20

    将数千个Excel文件中的数据编译到一个工作簿中的最佳方法?

  21. 21

    强大的查询对一个小表发出数千个请求,从而减慢了刷新速度

  22. 22

    如何将数千个域名绑定到一个Web应用程序?

  23. 23

    创建一个能够每秒处理数千个请求的 TCP 套接字服务器

  24. 24

    我可以在一个 Azure 事件中心命名空间中创建数千个事件中心吗

  25. 25

    实体框架将数千个对象转移到Elastic Search

  26. 26

    .NET任务性能与数千个被阻止的任务

  27. 27

    Rethinkdb是否支持数千个表?

  28. 28

    MatPlotLib美元符号与数千个逗号刻度标签

  29. 29

    更快地遍历数千个文件

热门标签

归档