Я думаю, что это действительно зависит от веб-приложения. Нереляционные базы данных (NoSQL) преуспевают там, где вы либо
- Не нужна схема (хотите иметь возможность хранить разные типы данных в одной таблице) и/или
- Не создавайте слишком сложных отношений между объектами.
NoSQL, безусловно, может помочь быстрее начать работу, потому что вы можете просто добавлять вещи, как хотите, но с другой стороны, когда все становится сложнее, иногда вам хотеть немного более принудительной организации. Внешние ключи — это то, чего мне очень не хватает при работе с Mongo, просто возможность (используя ORM) переходить от одного объекта к связанному или их набору — это здорово. (Да, во многих базах данных NoSQL вы можете хранить документы, но в в какой-то момент вам нужно использовать для чего-то отдельную таблицу.)
Я настоятельно рекомендую NoSQL для веб-сайта в стиле брошюры, где клиент просто вводит текстовые поля, или сайта в стиле твиттера, где в основном вы храните много данных одного типа с несколькими атрибутами. Но если вы собираетесь создавать CMS с изменениями, рабочим процессом и т. д., вам понадобится возможность иметь явные отношения в SQL.
Что подводит меня к моему ответу: используйте правильный инструмент для работы. Обученный разработчик сможет сделать некоторые сайты быстрее и лучше с помощью SQL, а другие сайты быстрее и лучше с нереляционной базой данных.
Но попробуйте MongoDB или CouchDB и почувствуйте это, таким образом у вас будет лучшее понимание того, когда что использовать. (Мы используем оба на моей работе (не одновременно!) в зависимости от проекта)
person
Dave
schedule
23.09.2011