1) Что касается предела документов 4 МБ, то, что сказано в «MongoDB: Полное руководство»:
Документы размером более 4 МБ (при преобразовании в BSON) не могут быть сохранены в базе данных.Это несколько произвольный предел (и может быть повышен в будущем);это в основном предотвращает неправильное проектирование схемы и обеспечивает стабильную производительность.Чтобы увидеть размер BSON (в байтах) документа doc , запустите Object.bsonsize ( doc ) из оболочки.
Чтобы дать вам представление о том, как4МБ, весь текст Война и мир составляет всего 3,14МБ.
В конце концов, это зависит от того, насколько велики вы ожидаете увеличения счетов для пользователя.Я надеюсь, что приведенная выше выдержка даст вам представление об ограничениях, налагаемых размером документа.
2) Денормализованная схема (счета идут вместе с пользовательским документом) - это путь, если вы знаете, что никогда не будетезапускать глобальные запросы к счетам (например, если вы хотите получить десять последних счетов, введенных в систему).Вам придется использовать map-lower для получения результатов для таких запросов, если вы используете денормализованную схему.
Нормализованная схема (пользователь и счета в отдельных документах) - лучший выбор, если вы хотите гибко запрашивать счета.Однако, поскольку MongoDB не поддерживает объединения, вам придется запускать несколько запросов каждый раз, когда вы хотите получить счета, соответствующие пользователю.
Учитывая упомянутый вами вариант использования, я бы остановился на-нормализованная схема.
3) Все обновления в MongoDB являются атомарными и сериализованными.Это должно ответить на беспокойство Стива.
Вы можете найти эти слайды полезными.http://www.slideshare.net/kbanker/mongodb-meetup
Вы также можете заглянуть на страницу развертывания продукции MongoDB.Слайды SF.net могут оказаться полезными.