2012-07-05 74 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

相關問題