2012-07-30 83 views
0

我正在爲圖庫應用程序構建一個sqlite數據庫。我想知道是否使用時間戳來檢查數據庫是否已更新是一種好的做法,或者是否有更好的方法來做到這一點。確定數據庫是否已更改的最佳方法?

這裏就是我有...三個表:

buildings 
    buliding_id PK 
    code 
    name 
    description 
    timestamp 

building_album 
album_id PK 
building_id FK (reference to buildings->building_id) 
album_url 
timestamp 

building_images 
image_id PK 
album_id FK (reference to building_album->album_id) 
image 
timestamp 

截至目前,我將不得不對服務器的數據庫應用程序檢查,看是否有時間戳已經改變,如果他們有改變這些領域。

+0

反對什麼,你比較時間戳? – 2012-07-30 14:14:14

+1

如果您實際上並不關心時間戳,聽起來您並不在意,請改用版本號。如果您還爲整個數據庫添加版本號,則檢查更新過程將非常快速。 – bzlm 2012-07-30 14:15:05

+0

@Tichodroma,數據庫應用程序當前擁有的時間戳 – 2012-07-30 14:15:06

回答

1

我會從這裏開始有關該主題的更廣泛的討論:How to Sync iPhone Core Data with web server, and then push to other devices?

但是,如果你想要做的從服務器到移動設備的信息的一些簡單的,單向同步,一個「簡單」的方法是:

  1. 修改服務器數據庫中引入的概念在所有表中使用的某個唯一標識符(無論是事務標識還是版本標識);

  2. 確保服務器被修改爲使用該標識符自動增加/更新記錄對「主」表的任何創建,更新和刪除操作;這個事務/版本標識符可以在表本身中使用,也可以使用某些共享事務日誌;

  3. 在服務器上寫一個程序,以便客戶端可以檢索當前標識符;

  4. 具有該應用跟蹤對於其成功接收並完成同步/複製的最後一個標識符;

  5. 寫一些服務器例行程序在客戶端可以用它的「一次成功」標識,該服務器將返回,因爲該標識符已更改的所有記錄調用;和

  6. 寫入一些移動設備的代碼來採取自前面步驟的響應,並且相應地更新其內部數據庫。

如果你也想同步的移動變化,並將它們發送回服務器,或者如果你有在什麼樣的變化,你可以在服務器數據庫中做出限制,那麼這一切都變得顯著更加複雜。

相關問題