meteor 如何处理大量对较大文档的订阅?
How does meteor perform with many subscriptions over larger documents?
我目前正在为一个相当大的 meteor 应用程序设计一个数据库,我们正在讨论 Meteor 是否会使用更多的订阅来更好地执行 collections 小文档,或者更少的订阅 collections 较大的文件。
其中一些文档最终可能会变得非常大,例如用户收藏夹或偏好的列表,这些文档只能在特定视图中对单个用户可见。
就数量而言,我们谈论的是 10 个订阅,其中至少有四个不会持续订阅,在特定视图中仅返回一个较大的文档。
与 4 个订阅 collections 的可能非常大的文档相比,(我意识到如果数据已经在客户端上,这些单独的视图可能会呈现得更快)。
任何见解或经验数据都将非常有用。
谢谢。
这可能不是一个完整的答案。我目前正在自己解决这个问题。
我对更大的数据集有一些经验。我订阅了一个collection没有任何限制:
Meteor.publish('collectionName', function () {
return collectionName.find();
});
我的 collection 包含 400 个文档,总大小约为 600KB(转储 collection使用 mongodump
)。系统中有大约 100 个用户(每天来自不同大陆的用户),我们确实遇到了一些性能问题:
- 当我加载显示 400 个项目的页面时,您可以看到正在填充的列表。
- 您对 400 份文件的处理方式也很重要。我的每个条目都是一个相当复杂的 DOM 节点,每个条目都执行了多个助手。
生成 DOM 需要一些时间并导致客户端 CPU 达到峰值。还有很多数据被传输到客户端。
解决问题的几点思路:
- 使用分页(例如包
alethes:pages
)防止大量客户端计算。
- 对列表视图使用单独的 publication/subscription,仅包括显示列表项所需的字段,以减少每个文档的大小
- 仅publish/subscribe当前用户可见的文档(例如检查登录状态、访问权限等)以减少文档数量。
- 缓存订阅:https://github.com/meteorhacks/subs-manager(还没试过)
我目前正在为一个相当大的 meteor 应用程序设计一个数据库,我们正在讨论 Meteor 是否会使用更多的订阅来更好地执行 collections 小文档,或者更少的订阅 collections 较大的文件。
其中一些文档最终可能会变得非常大,例如用户收藏夹或偏好的列表,这些文档只能在特定视图中对单个用户可见。
就数量而言,我们谈论的是 10 个订阅,其中至少有四个不会持续订阅,在特定视图中仅返回一个较大的文档。
与 4 个订阅 collections 的可能非常大的文档相比,(我意识到如果数据已经在客户端上,这些单独的视图可能会呈现得更快)。
任何见解或经验数据都将非常有用。
谢谢。
这可能不是一个完整的答案。我目前正在自己解决这个问题。
我对更大的数据集有一些经验。我订阅了一个collection没有任何限制:
Meteor.publish('collectionName', function () {
return collectionName.find();
});
我的 collection 包含 400 个文档,总大小约为 600KB(转储 collection使用 mongodump
)。系统中有大约 100 个用户(每天来自不同大陆的用户),我们确实遇到了一些性能问题:
- 当我加载显示 400 个项目的页面时,您可以看到正在填充的列表。
- 您对 400 份文件的处理方式也很重要。我的每个条目都是一个相当复杂的 DOM 节点,每个条目都执行了多个助手。
生成 DOM 需要一些时间并导致客户端 CPU 达到峰值。还有很多数据被传输到客户端。
解决问题的几点思路:
- 使用分页(例如包
alethes:pages
)防止大量客户端计算。 - 对列表视图使用单独的 publication/subscription,仅包括显示列表项所需的字段,以减少每个文档的大小
- 仅publish/subscribe当前用户可见的文档(例如检查登录状态、访问权限等)以减少文档数量。
- 缓存订阅:https://github.com/meteorhacks/subs-manager(还没试过)