如何在Django 0.97中分离读取和写入数据库服务器?
我现在用的是Django 0.97版本,数据库是postgresql 9.0。我在一个主数据库服务器和一个从数据库服务器上配置了热备份复制。我的应用程序有很多机器人在数据库上写入数据,而用户只进行读取操作。所以,如果我让用户从从数据库读取数据,而让机器人在主数据库写入数据,这样会非常高效。不幸的是,只有Django 1.2版本支持多个数据库,而升级到这个版本对我的应用来说工作量很大。我通过以下链接找到了一些线索:http://www.eflorenzano.com/blog/post/easy-multi-database-support-django/。不过,这也需要我修改应用中所有数据库访问的地方。有没有更简单的方法,可以通过调整Django的核心数据库模块来为读取和写入分配不同的数据库服务器呢?
1 个回答
1
你最好的选择是升级到1.2版本,因为这样做会比拼凑现有功能省事多了。如果你继续使用0.97版本,未来只会让你的工作变得更加困难。
我猜你可能对Django 1.2中使用多个数据库的方式有些误解。如果你使用Django的数据库路由器功能,就不需要“在你的应用中更改所有数据库访问的实例”。
通过路由器,你可以指定读取和写入时使用哪个数据库。你现有的Django模型应该都能正常工作,并开始向正确的数据库发送请求。设置路由器其实很简单,只需要查看一下文档。你只需创建一个路由器类,把它放在某个地方,然后在你的设置中添加一行代码。
这项功能运行得很好,工作量也没有你想象的那么大。你可能还有其他升级的问题没有告诉我们,但就模型而言,你应该不会遇到太多麻烦。