What's the difference among "statuses/filter", "statuses/sample" and "statuses/firehose" in public streaming?


In public streaming api, there’re three endpoint, /filter, /firehose and /sample. The “/filter” is easy to understand according to the doc.

But for “/sample”, the doc says “a small random sample of all public statuses”. Is that mean, twitter server will push some random tweets to the streaming client?

And for “/firehose”, the streaming client will receive all public tweets on twitter posted by any user, am I right? If true, that would be a very very huge data to consume.