我想知道Django是一个大型网络应用程序(社交网络)的不错选择吗?更具体地说,当数据库事务数量增加时,我需要一些关于性能的建议,我想知道Django中包含的嵌入式OR映射是一个不错的选择,还是我应该实现它们。
由于
答案 0 :(得分:4)
当数据库事务数量增加时执行。
真的不是Django问题。
你可以通过Apache和mod_wsgi进行大量的并发Django会话。所有这些都将共享一个共同的数据库。
因此,这完全是一个数据库问题。您应该能够配置数据库被淹没的足够的Apache / Django会话。
OR Django中包含的映射是一个不错的选择,或者我应该实现它们。
是。这是一个非常好的选择。
在您证明 ORM是您的瓶颈之前,请使用它。
随着您的扩展,您将重新编写数据库,缓存和其他架构功能。由于ORM具有缓存(与数据库一样),因此您很少遇到性能问题。
你可以。
但是,大多数性能问题都是通过Apache下载静态媒体文件。
答案 1 :(得分:3)
我应该补充一点,企业应用程序在使用Django ORM时可能遇到的一个大问题是它的功能有限(即它可以表达什么样的查询)。如果你做两件事,我认为这是可以控制的:
作为第2点的示例:您没有理由不能编写以下列方式使用的查询存储管理器:假设您有一个名为blogs的应用程序,其模型名为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""",
}
答案 2 :(得分:0)
我的公司刚刚为基于Django的大型企业构建了这样一个系统,包括所有移动系统。使用django,开发成本很低,企业服务器堆栈内的运行性没有问题。甚至Django设法让我们通过渗透和安全测试。使用任何其他语言,我们无法在极端预算限制下使用此项目取得成功