2012-12-19 86 views
1

我有一個場景,即使沒有互聯網連接,我的軟件也必須工作。與Google Appengine數據庫同步離線數據庫Cron Job

我都以這樣的方式,整個邏輯部署生成數據到本地數據庫在本地系統上的設計我的應用程序。

當過互聯網可cron作業將從本地數據庫使用web服務的AppEngine上mysql數據庫更新數據。

在這兩種情況下的數據庫結構,脫機和appengine數據庫是相同的。

由於DB結構是完全一樣的,有沒有什麼辦法可以同步了兩個數據庫(本地和App引擎)比使用webserivce或其他類似?

回答

1

不,AppEngine只是HTTP,所以它必須是某種web服務。

單向同步,客戶端只發送數據到服務器嗎?在這種情況下,它更像是一個備份,您可以將數據庫轉儲到文件並將文件上傳到AppEngine。

+0

這不是一個時間移動。我需要這個客戶端服務器移動到每15分鐘左右發生和反映在數據庫 – takrishna

0

它是一個Web應用程序(AppEngine上託管)或你使用AppEngine上只有本機應用程序連接到數據庫?你使用哪個appengine數據庫?

如果您使用Web技術(HTML5)這樣的連接是難以處理,因爲你不能用JavaScript直接連接到數據庫[1]。所以沒有其他辦法 - >你必須將db結構發送到服務器並更新服務器上的遠程數據庫。

如果您使用的是原生應用也許是谷歌雲SQL對你是一個更好的解決方案[2]。

[1] Can JavaScript connect with MySQL?

[2] https://developers.google.com/cloud-sql/

+0

葉..它也是應用引擎託管。它既適用於本地也適用於應用程序引擎。但在應用程序引擎版本可以工作之前,cron作業會同步數據庫,以便提供所需的數據。我需要一個解決方案來通過除「Web服務」之外的其他方式來同步數據庫。所以我不需要每次更新/升級數據庫時都將我的同步更新爲cron作業。我希望在線提供本地存在的整個數據庫。 – takrishna

+0

這是不可能的,當沒有互聯網連接可用:)。一個實例更新過程只能通過一個有效的互聯網連接才能實現。也許你可以編寫一個保存每個sql語句(SELECT語句除外)的SQL-Wrapper,並且每隔2s檢查一次互聯網連接是否可用。如果是這樣,則將所有語句發送到遠程系統(servlet,web service,...)並在那裏執行它們。 – Eich

+0

如果您使用的是mysql,也許複製是您要搜索的內容:http://dev.mysql.com/doc/refman/5.0/en/replication.html – Eich