2012-07-05 107 views
0

目前,我正在开发一个项目,在两个在不同主机上运行的django应用程序之间建立服务器 - 客户端关系。将数据从一个django应用程序转移到另一个应用程序的高效方式

的服务器来存储和提供了大量的相关数据,例如:供应商,公司的,产品,等等等等。

客户端下载数据从服务器请求,并将其添加到他们的数据库。客户端也可以从他们的工作站上传到数据库以扩展它。

以前开发这个的人使用XMLRPC将庞大的(13MB典型的)XML文件从服务器传输到客户端。现在我们发送的所有数据库都是数据库不可知对象,所以我想知道是否有更有效的方法来做到这一点?

请询问更多的细节,如果需要的话,我真的不知道你需要知道什么

编辑:在网络方面的高效,服务器端处理。客户可以完成繁重的工作。

+0

有效的网络带宽?在将原始数据转换为数据库就绪格式所需的处理方面? – scytale 2012-07-05 11:30:54

+0

@scytale参见编辑 – Jharwood 2012-07-05 11:39:33

回答

0

共享数据库设计似乎更合适。但当然可能有安全,政治或组织方面的理由。此外,还需要进行重大设计。

首先检查是否启用了HTTP gzip压缩,以减少网络带宽。

如果这只是一个愚蠢的数据传输JSON通常会比XMLRPC更紧凑。数据是否适合直接转换为JSON?这仍然需要一些服务器端处理。对于最小的服务器端处理(如果数据库表相对相似),向客户端发送相关数据库查询的转储可能非常有效。当然,除非表格具有相同的模式,否则您将不得不对原始SQL进行一些客户端处理,这并不理想。

+0

客户端和服务器是互联网的另一端,客户端不能直接访问,我如何在python xmlrpc上启用gzip?,Json可能会更好,因为它是一种数据传输在飞行中生成,并且两边的表格几乎完全相同。 – Jharwood 2012-07-05 12:35:18

+0

您可以通过查看firbug或equivelant中的响应标头来检查服务器上是否启用了gzip。至于启用它 - 选择你的图层 - 它可以在你的Web服务器上完成(检查它的文档),在Django中间件中 - https://docs.djangoproject.com/en/dev/ref/middleware/#module-django。 middleware.gzip - 或按视图 - https://docs.djangoproject.com/en/dev/topics/http/decorators/#gzip-compression – scytale 2012-07-05 13:09:46

+0

好吧,那么我将如何编码我的对象(querysets)到json? – Jharwood 2012-07-05 13:11:43

相关问题