Django для корпоративного веб-приложения - PullRequest
1 голос
/ 14 сентября 2010

Я хотел бы знать, является ли Django хорошим выбором для большого веб-приложения (Социальная сеть)?Точнее говоря, мне нужны некоторые рекомендации по производительности, когда количество транзакций БД увеличивается, и я хочу знать, является ли встроенное сопоставление ИЛИ, включенное в Django, хорошим выбором или я должен их реализовать.

Спасибо

Ответы [ 3 ]

4 голосов
/ 14 сентября 2010

производительность при увеличении количества транзакций БД.

На самом деле это не проблема Django.

Вы можете иметь много одновременных сессий Django через Apache и mod_wsgi.Все они будут иметь общую базу данных.

Таким образом, это полностью проблема базы данных.Вы должны иметь возможность сконфигурировать достаточное количество сеансов Apache / Django, чтобы ваша база данных была перегружена.

ИЛИ Отображение, включенное в Django, является хорошим выбором, или я должен их реализовать.

Да.Это действительно хороший выбор.

Пока вы не сможете доказать , что ORM является вашим узким местом, используйте его.

По мере масштабирования вы будете переделывать свою базу данных, свойкеш и другие архитектурные особенности.Поскольку ORM имеет кэш (как и ваша база данных), у вас редко возникают проблемы с производительностью.

Вы можете.

Но большинство ваших проблем с производительностью будут загружать статические медиа-файлы через Apache.

3 голосов
/ 14 сентября 2010

Я должен добавить, что одна большая проблема, которая может возникнуть у корпоративных приложений при использовании Django ORM, заключается в том, что он несколько ограничен в своих возможностях (то есть, какие запросы он может выражать).Я думаю, что это выполнимо, если вы делаете две вещи:

  1. Стремитесь максимально выражать запросы в Django ORM (без опыта может быть слишком легко отклонить запрос, поскольку это невозможно в Django).
  2. Если запрос действительно невозможен в Django (вы также можете задать IRC #django канал или группу django-users, если вы действительно не уверены), сохраните запрос в файле query.py, который ваш dbaможно управлять или смотреть.(Это может быть плоский словарь, на который ссылается файл вашей модели.)

В качестве примера для пункта 2: Нет причины, по которой вы не можете написать диспетчер хранилища запросов, который используется следующим образом:у вас было приложение под названием блоги с моделью Entry:

# models.py
class Entry(models.Model):
    objects = project.QueryStorageManager()
    author = models.ForeignKey(User)
    body = models.TextField()
    slug = models.CharField(max_length=512)
    published_date = models.DateField()

    @project.StoredQuery("getEntryMonthHistogram")
    def getEntryMonthHistogram(self, sql, author):
        return objects.runQuery(sql, author)

# queries.py
{
"getEntryMonthHistogram": """SELECT EXTRACT(MONTH FROM published_date),
                                    REPEAT('*', count(*)) histogram
                             FROM   blogs_entry
                             WHERE  author_id = %s""",

}

0 голосов
/ 28 марта 2012

Моя компания только что создала такую ​​систему для крупномасштабного предприятия на основе Django, включая все мобильные системы. Благодаря django затраты на разработку были низкими, и работоспособность внутри стека корпоративных серверов не была проблемой. Даже Джанго удалось дать нам пройти тест на проникновение и безопасность. с любым другим языком мы не смогли бы преуспеть с этим проектом при экстремальных бюджетных ограничениях

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