Question about Merge Box

Hi everyone!

(I still have a lot to explore and learn, so this question is just to clearify some things)
I was thinking about making a bigger project with Meteor, which might have a chance to have a decent amount of users at the same time.
Recently as I was digging deeper in the world of Meteor and I bumped into the mechaninsm that controles, how the apps work in real time, with Merge Box, the Publish function and the Mongo driver. It seemed ok, until I read that, Merge Box contains the coppy of what we sent to the client (or at least what we store in MiniMongo). As we know, if we subscribe to, let’s say a collection, than if something changes in that, than the client copy in the server memory will be checked, and it will see that there is a difference, so we send that smaller difference to the client.

Maybe its just because I worked with Socket.IO and I’m thinking with that, but I don’t really understand why the Merge Box part is necessary? For example if we have 100 people, subscribed to the same collection, and one of them sends some data that changes it, than it is clear that the other 99 people doesn’t have it, so we could send it right away, without checking 99 copy in the Merge Box. The situation is the same, when the collection changes by the server, so we know that none of the 100 subscribers have the data, so the checking is unnecessary again.

My main problem is, that if there are a lot of users, than the memory and CPU usage might be too high. The feature itself would be useful with the project that I’m planning to start, but if this problem still exist, than a different approach might be necessary.

Again I still have a lot to learn about Meteor, so my question might be a bit dump because I don’t have the whole image, but that is why I’m asking.

Thanks in advance for any reply!

4 Likes

I am also wondering if the MergeBox feature can be optionally turn on/off, so in some scenarios we don’t need Merge Box we can save memory and CPU.

1 Like