我實際上將此標記爲過於寬泛,並且主要吸引以意見爲基礎的答案,但我會毫無疑問地將其付諸實踐,並希望保持客觀。
首先你在這裏有兩個單獨的問題。
- 我應該使用什麼數據庫系統。
- 如何在應用程序和服務器之間進行同步。
第一個是容易回答,因爲它並不重要。兩者都是存儲數據的好選擇。 MySQL是成熟和穩定的,而MongoDB雖然較新,但有很好的評論,但我不知道會阻止它被使用的任何已知問題。因此,採取您發現容易使用的數據庫。
現在對於第二,我會首先把在多個實體之間的數據同步整本書都寫一個聲明,它是這一切的時候還是博士的主題之後。
我會建議對移動應用程序和數據庫之間的直接同步,因爲需要將包含在應用中的數據庫憑據。移動應用程序可以進行反編譯並提取證書,這會危及整個數據庫的安全。所以你可能會想創建一些API,首先進行設備/用戶認證,然後更改數據庫。
這已經意味着使用MongoDB的爲這個份上可能是一個壞主意。
現在,JSON本身就是一種表示具有某種結構的數據的格式,就像XML一樣。因此,它不是一種同步而是運輸的方法。
爲了同步數據,重要的是要知道真相的來源。 如果你有1 device <-> 1 record
這很容易,因爲設備將成爲事實的根源,畢竟發生的唯一突變大概是由用戶在設備上完成的。
如果你有n devices <-> 1 record
那麼它會變得更加惱人。如果您希望允許設備在脫機時更改狀態,則需要在設備恢復聯機時執行一些技巧來同步數據。但這可能是一個太複雜的問題,需要依靠情況來回答。
但是,如果您強制設備始終立即將更改傳播到數據庫,那麼數據庫將始終包含最新的記錄或事實。缺點是應用程序的一部分在離線時無法使用。
如果脫機更新不會更改狀態,而只是添加新記錄,則可以在聯機時將這些記錄推送到服務器。但請記住,您將無法訂購這些活動。
另一種選擇是MariaDB。 –
mysql是關係數據庫,mongodb不是,所以你必須考慮這個。如果你只是想在數據庫中存儲json對象,我認爲你最好使用mongo – d1mitar
@ d1mitar謝謝,但我不會將json對象存儲在數據庫中,我只使用json進行同步過程。 – fish748