ОК, это много вопросов, давайте посмотрим, на какие из них я действительно могу ответить.
Имеет ли смысл переносить существующие реляционные хранилища данных?
Нет, если только у вас не очень большая проблема с производительностью. Дело в том, что проблемы с производительностью в масштабе сети обычно решаются путем денормализации. MongoDB - это изначально денормализованная база данных.
Если начать с нуля, вы бы предпочли решение NoSQL реляционному для проекта интернет-магазина ...
Да. MongoDB очень подходит для типичных веб-проектов. Однако, если у вас есть большой опыт работы с SQL, вы, вероятно, сочтете эту отчетность немного неловкой.
.NET 4.0 поддержка? Могу ли я рассчитывать на богатые инструменты генерации кода, подобные мастеру EF, мастеру L2SQL и т. Д. Для MongoDB?
В Mongo есть драйвер для .NET.
Там нет мастера L2SQL или EF для Mongo, но на самом деле не должно быть. Честно говоря, больше всего вам будет не хватать Enterprise Manager для анализа БД.
MongoDB на самом деле не нуждается в мастере EF. EF - это решение MS для «несоответствия импеданса» между БД и объектами. MongoDB не имеет «несоответствия импеданса», просто заполняет объекты в БД и уходит. Многое из этого относится и к L2SQL. Люди создали некоторую поддержку Linq (просто быстрый Google), но такие вещи, как объединения, не будут работать, потому что Монго не делает объединений.
С точки зрения «объектов данных», Mongo нужна только очень легкая структура. Честно говоря, это так же просто, как вставить свойства в БД. Если вы хотите «добавить столбец», вы просто добавляете свойство к своему объекту, и оно начинает сохраняться в БД. Таким образом, такие вещи, как L2SQL, становятся действительно ненужными.
Не поймите меня неправильно, есть место для другой парадигмы запросов, но в этом отношении вы находитесь на новой территории. (Вы будете работать со всеми магазинами, ориентированными на ключевые значения и документы).