Все примеры, которые вы упомянули, могут быть построены с использованием хранилища документов. следует ли вам использовать *1001*, зависит от точных требований.
Если вы имеете дело с социальным сообществом, которое поддерживает денежные транзакции , вам действительно следует использовать СУБД для обработки этих транзакций. Вы просто не можете позволить себе иметь противоречивые данные в этой области.
Если ваше приложение не предъявляет очень жестких требований в отношении согласованности данных, вы можете рассмотреть возможность использования базы данных документов. У этого есть несколько преимуществ перед RDBMS. Например, если вы используете доменный дизайн для создания своего приложения, вы обнаружите, что агрегированные корни могут естественно храниться как один документ. Это приведет к очень незначительной фрагментации данных внутри сущностей, что обеспечит вам лучшую производительность при распределении данных между несколькими узлами.
Некоторые драйверы, включая NoRM для MongoDB, поддерживают дискриминаторы типа . Это позволяет вам сохранять и повторно обрабатывать несколько подклассов, используя очень небольшую конфигурацию. Например, если ваше приложение поддерживает несколько типов домашних адресов, драйвер позаботится об обработке различных подтипов адресов. Вы также можете добавить новые подтипы, и драйвер будет автоматически обрабатывать их. См. эту статью для подробного примера.
Вышесказанное было бы невозможно без наибольшего преимущества ориентированных на документы хранилищ над базами данных SQL: данные без схемы . Если вы имеете дело с пользовательскими данными, лучше всего использовать базы данных документов. Например, если вы разрешаете пользователям загружать файлы и свободно маркировать их любыми данными, вы можете легко сохранить эти теги в виде простых пар ключ-значение или даже вложенных структур ключ-значение для категорированного тегирования.