Mongo DB или Couch DB с django для создания приложения, похожего на топ-кодер? - PullRequest
3 голосов
/ 22 октября 2011

Вот что у меня есть: -

  1. Ubuntu 11.10.
  2. Django 1,3
  3. Python 2,7

Что я хочудля этого нужно создать приложение, похожее на топ-кодер, и у меня есть скелетная версия приложения.Основные требования будут: - 1. Сохранение кода.2. Сохранение имени пользователя и рангов (профиль пользователя). 3. Должно позволять учителю создавать вопросы с несколькими вариантами ответов (аналогично документам Google).

У меня есть базовые знания о Django, и я уже создавал пару (базовых) приложений.Вместо того, чтобы создавать онлайн-инструмент, возможно ли создать что-то очень похожее на conf2py, которое находится поверх web2py в Django.

Давайте назовем этот маленький проект examPy (я знаю, очень оригинально), возможно ли создать приложение, которое больше работает как плагин для Django, или моя концепция Django абсолютно неверна?

Основной вопрос: поскольку я хочу изучать новую БД и работать на postgres в Django, мне следует выбрать CouchDB или MongoDB для Django?

Ответами могут быть объяснения или ссылки на определенные документы или блоги, которые могут рассказать мне о плюсах и минусах.

Ответы [ 3 ]

3 голосов
/ 18 апреля 2012

Я использовал mongo-движок с Django, но вам нужно создать файл специально для документов Mongo, например. Mongo_models.py. В этом файле вы определяете ваши монго документы. Затем вы создаете формы, соответствующие каждому монго-документу. Каждая форма имеет метод сохранения, который вставляет или обновляет то, что хранится в Mongo. Формы Django предназначены для подключения к любому бэкэнду данных (с небольшим хитростью).

Если вы пойдете этим путем, вы можете увернуться от Django non-rel, который все еще не является частью Django 1.4. Кроме того, я считаю, что Джанго-нонрел сейчас в перерыве.

Я широко использовал CouchDB и Mongo. CouchDB имеет прекрасный интерфейс. Мой коллега работает над чем-то похожим на Монго. Карта Монго и уменьшение намного быстрее, чем CouchDB. Mongo быстрее реагирует на загрузку и получение данных. С библиотеками python для Mongo легче работать (отлично работают и pymongo, и mongo-engine)

Обязательно прочитайте рекомендации производства Mongo! Не запускайте один экземпляр на том же узле, что и Django, и не готовьтесь к жесточайшему сгоранию при пиковых нагрузках. Mondo прекрасно работает с Memcache / Redis, где можно хранить сокращенные данные для быстрого поиска.

ВНИМАНИЕ: Если у вас есть очень хорошо определенные и структурированные данные, которые можно описать в документах или моделях, не используйте Mongo. Он не предназначен для этого, и что-то вроде PostGreSQL будет работать намного лучше.

  • Я использую PostGreSQL для реляционных или хорошо структурированных данных, потому что это хорошо для этого. Небольшой объем памяти и хороший отклик.
  • Я использую Redis для кэширования или работы в очередях / списках памяти, потому что это очень хорошо для этого. отличная производительность, если у вас есть память, чтобы справиться с ней.
  • Я использую Mongo для хранения больших документов JSON, а также для выполнения Map и сокращения их (при необходимости), потому что это очень хорошо для этого. Обязательно используйте индексацию для определенных столбцов, если вы можете ускорить поиск.

Не используйте круг, чтобы заполнить квадратное отверстие. Это не заполнит его.

3 голосов
/ 22 октября 2011

Общие различия

Django Specific

Все мои исследования указывают мне на мысль, что Монго и Куш достаточно похожи, чтобы ваш выбор, вероятно, сводился к личным (субъективным) предпочтениям даже по сравнению с вариантом использования.Лично я разработал фетиш CouchDB и ищу причину его использования.

Ключевым фактором, влияющим на ваше решение, вероятно, должно быть какое решение noSQL имеет наиболее зрелую среду ORM для Django?

2 голосов
/ 24 октября 2011

Я использовал CouchDB с Django для производственного приложения.Couch - это хорошо, и у него есть отличные идеи, но я перенес это приложение в MongoDB.Зачем?В сообществе Джанго есть поддержка Монго.У Django-nonrel есть бэкэнд MongoDB.Используя Django-toolbox , я могу встраивать модели в модели и иметь некоторую базовую поддержку администратора.

Если я правильно помню, Django-nonrel в конечном итоге будет свернуто в ядро ​​Django,Через пять лет я вижу гораздо большую поддержку Mongo в Django, чем Couch.Конечно, это может измениться, но я вижу, Монго лучше подходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...