Порт Из Entity Framework в MongoDB - PullRequest
5 голосов
/ 10 октября 2011

Я планирую портировать с Entity Framework 4.0 на MongoDb.Каковы наилучшие практики, которые могут минимизировать влияние, поскольку проект обладает функциональностью социальных сетей, поэтому поддерживайте сложную реляционную базу данных. В результате производительность должна зависеть от того, будем ли мы использовать реляционную базу данных.

Мы использовалиСлой домена (с использованием POCO), шаблон репозитория и DTO Mapping в проекте. Также, каковы преимущества и недостатки решения?В то же время, как это повлияет на реализацию моего уровня домена?

1 Ответ

2 голосов
/ 24 апреля 2012

Если вы хотите 'минимизировать влияние' , вы захотите создать базу данных в MongoDB, такую ​​же, как у вас в SQL. Поскольку в базе данных нет соединений, вам нужно выполнить несколько чтений, чтобы завершить запрос. Само по себе это не так уж и плохо, потому что MongoDB действительно быстр, но, очевидно, у него есть другие проблемы (параллелизм и т. Д.).

Однако, если вы хотите полностью перейти на NOSQL-способ выполнения действий, которые вы, вероятно, не сможете «минимизировать влияние» , вам необходимо внести существенные изменения в как вы храните контент, как вы получаете к нему доступ и как вы его обновляете.

Хранилище : Скорее всего, вы создадите документы в вашей базе данных, которые денормализованы и намного ближе к «ViewModels», чем «Models». Например, вы можете сохранить количество дочерних записей в родительской записи, чтобы вы могли отображать их без необходимости загружать или подсчитывать их.

Доступ : Вы можете в конечном итоге использовать Map-Reduce для некоторых запросов к вашей базе данных, что сильно отличается от традиционного запроса.

Обновления : По всей вероятности, ваш подход к обновлению будет отличаться, чтобы воспользоваться множеством детальных функций обновления MongoDB, таких как $inc. Вместо того, чтобы отправлять обратно какую-либо модель большого представления, а затем применять ее к своей модели и затем обновлять базу данных, вы могли бы вместо этого предоставить гораздо более детальный обратный вызов Ajax, который обновляет одно значение. Взгляните на CQRS, чтобы узнать больше о том, как думать о моделях обновлений и запросов.

...