2015-12-15 179 views
0

我正在寫一個Android應用程序,它將與我的網絡服務器上的MySQL數據庫同步(也將有一個網站讀取/寫入相同的dB)。 android應用程序將在sqlite數據庫中本地存儲數據的副本,以在離線時提供訪問權限。如果用戶在離線狀態下創建一行,則下次有數據連接可用時,該記錄將上載到服務器。我自己在設計應用程序和網站,所以我有能力按照我認爲合適的方式進行設置(意味着它不必遵守別人的服務器)。在這種情況下哪種引擎類型會更好?

sqlite數據庫將有一個id列(這將代表存儲在服務器上的id)和一個localID列。當服務器接收到數據時,它會通過返回存儲在服務器上的ID號碼數組(json格式)來確認新數據。

對於這種類型的場景,事務安全的引擎還是非事務安全的(比如isam)會更好?我的理解是,isam會更快,佔用更少的空間,但我無法處理丟失的數據。我在想,如果android應用程序沒有收到確認,它會重新提交數據。看起來這樣可以防止數據丟失,但我需要第二種(更有經驗的)意見。如果你願意使用一個事務安全的數據庫,你會推薦這個數據庫,因爲我從來沒有使用過一個數據庫?

TIA!

+0

我投票決定關閉你的問題,因爲這是兩種主要基於輿論或過於寬泛。你有一個複雜的問題需要解決。你首先想到的是一個localid。但你缺乏例外情況。喜歡:如果其他人從另一個設備添加了相同的註冊表會怎麼樣?如果有人刪除您在設備上編輯的註冊表,該怎麼辦?如果刪除已從您的網站更新過的註冊表,該怎麼辦?在確定系統是否是事務性的之前,您應該瞭解許多情況並決定在每個人中應該發生什麼事情。 –

+0

儘管事務性幾乎總是一個更好的選擇。 –

+0

我知道它是基於意見的 - 作爲沒有太多使用MySQL經驗的人,我希望從有經驗的人那裏獲得信息,爲什麼一個人會比另一個人更有意義。 – doni49

回答

1

A real database應該是您的默認選擇,直到您看到它不夠快。

考慮使用UUID在客戶端上生成確保服務器上唯一的ID。

你有沒有想過如何處理來自多個設備的更新,這些設備都有離線更改?你應該考慮一些已知的模式來處理這種同步。

  1. Stack Overflow question
  2. Data Replication book
相關問題