在二级应用程序中导入我的Django应用程序的模型并查询数据库是一个好习惯吗?它有任何性能问题吗? 实际上第二个应用程序是一个简单的轻量级websocket服务器。
答案 0 :(得分:1)
我已经回答了,虽然Programmers SE.
可能会更好Tl;博士:不,这不是好习惯,但并不一定会导致性能问题。它确实使一切变得更加复杂。如果可以,请避免使用它。我有一个系统可以做到这一点,我正试图摆脱这种设置。
现在首先,正如Apero在评论中所说:
Django模型只能由Django应用程序使用。您的websocket服务很可能不是用Django编写的,因此您将无法使用这些模型
但我可以提供一些背景和实用性:
拥有多个系统或应用程序不会必然导致性能问题,而不仅仅是拥有多个应用程序实例,具体取决于下面的警告。
您的主要问题是系统是否可以打开和维护连接和查询,以及您是否有任何特别长时间运行或密集的查询,以及这些不同系统之间的重叠。您是否容易看到它?
我们有一个中等规模的遗留系统CRM数据库(250个用户,平均每天3页/秒,大约30Gb的数据,在MySQL中),具有:
我们在Amazon Web Services上的T2 Micro实例上运行所有这些操作。除非我们正在运行大规模的批处理作业(将250k记录插入到我们的110米行分析表中,设计设计不合理且没有正确编制索引,但这是另一个故事),否则它从未真正特别征税。这会在一夜之间发生,因为它往往会减慢一切。
但您询问了最佳做法。
This answer is a good overview of some of the pitfalls
在我上面描述的示例中,我们有许多数据库在更新方面重叠的区域。这很糟糕,并且很难调试发生的事情。金融系统或CRM改变了这一记录吗?
从广义上讲,其他(非CRM)应用程序正在运行报告系统 - 所以只有SELECT
语句才能有效。考虑到这一点,我到达时的第一件事就是为报告系统安装了一个读取副本,并将它们转移到那里。现在,即使有人在我们最大的表中运行文本关键字搜索,它也不会影响主CRM系统在更新客户记录和其他INSERT
或UPDATE
查询方面的性能。
答案 1 :(得分:0)
如果来自两个应用的流量超载数据库但是这是一个可解决的问题,则可能会遇到数据库性能问题