Django与Heroku PostgreSQL数据库水平扩展
问题背景Django与Heroku PostgreSQL数据库水平扩展,django,postgresql,heroku,Django,Postgresql,Heroku,问题背景 我正在从事Django项目,该项目使用PostgreSQL,托管在Heroku上(也使用Heroku postgres)。一段时间后,数据量变得非常大,这会减慢应用程序的速度 为了从多个数据库读取数据,我尝试了复制,这有助于减少队列和连接时间,但大表仍然是问题所在 我可以根据用户的组对数据进行拆分,不同的组不需要相互交互 我已经读到了切分。但是由于我们使用了heroku postgres,所以很难定制切分 因此,我在下面提出了两个不同的想法 1。具有多数据库的应用程序群集(尚不允许
- 我正在从事Django项目,该项目使用PostgreSQL,托管在Heroku上(也使用Heroku postgres)。一段时间后,数据量变得非常大,这会减慢应用程序的速度
- 为了从多个数据库读取数据,我尝试了复制,这有助于减少队列和连接时间,但大表仍然是问题所在
- 我可以根据
的用户
对数据进行拆分,不同的组
不需要相互交互组
- 我已经读到了切分。但是由于我们使用了heroku postgres,所以很难定制切分
- 因此,我在下面提出了两个不同的想法
- 我们可以使用
和中间件
来实现这一点数据库路由器
- 但我不确定这对django是否友好
- 这比以前的设计需要更少的工作量
- 也可以在将来设置基于区域的子应用程序
我的问题是:从长远来看,这两种方法中,哪一种更适合django,并且更具可扩展性?您有多少数据(行和/或大小)以及哪些查询变得缓慢?您是否对数据进行了适当的索引并优化了查询?@IainShelvington存在问题的表的大小已经在15GB左右,并且呈指数级增长。缓慢的查询主要是列表(应用了排序和分页)。不能说查询已完全优化,但随着数据量的不断增长,我们总有一天会对其进行水平扩展。优化查询始终是您应该做的第一件事,它将提高查询时间、应用程序响应时间并减少资源使用,无论您是否扩展,都是双赢的。如果您扩展了一个非优化的解决方案,那么您只是在推迟不可避免的问题,很快,当您的查询再次开始表现糟糕时,您将不得不重构这个新的设计,但这将非常困难。15GB不是很多数据您有多少数据(行和/或大小)以及哪些查询变得缓慢?您是否对数据进行了适当的索引并优化了查询?@IainShelvington存在问题的表的大小已经在15GB左右,并且呈指数级增长。缓慢的查询主要是列表(应用了排序和分页)。不能说查询已完全优化,但随着数据量的不断增长,我们总有一天会对其进行水平扩展。优化查询始终是您应该做的第一件事,它将提高查询时间、应用程序响应时间并减少资源使用,无论您是否扩展,都是双赢的。如果您扩展了一个非优化的解决方案,那么您只是在推迟不可避免的问题,很快,当您的查询再次开始表现糟糕时,您将不得不重构这个新的设计,但这将非常困难。15GB不是很多数据