Col,
Let me make sure I have this all straight. It sounds like you will
have a reasonably write heavy application, with a relatively small
working data set (100 most recent) in terms of reads.
Occasionally a new component/node will be brought online and need to
get all events, not just the most recent, as it bootstraps itself with
subsequent reads then reverting to the normal pattern.
Given that you don't want to negatively impact the writes on the
primary when you are bringing up a new node, I think this will fit
most easily into a replica set configuration. The majority of your
reads (and all your writes, of course) hit the primary. When you run
a query that is abnormally large (a new node, or a node playing catch
up) you can then set the slaveOK options and direct that long read to
the secondaries in the replica set. Think of this option more like a
"prefer slave" than "it's OK to use a slave" - any query with that
option set will then hit a secondary rather than the primary, giving
you the behavior you want.
As always, what really needs to happen is some testing with real data
to model this and determine how you need to scale, but based on the
description, this would be the approach I would start with.
Adam.