我的應用程序使用領域處於脫機狀態,第一,因此,境界得到了精彩的堅持和訪問數據。我喜歡它。但是,我也希望將用戶數據存儲在雲中(用於備份,但以後我會添加Web支持)。我知道這正是Realm Object Server的用途,但我認爲我更願意使用DynamoDB的原因如下:與亞馬遜DynamoDB
1)我已經投資了DynamoDB和亞馬遜的認證(Cognito)。
2)我喜歡那個境界實際上是一個關係型數據庫,因爲來自客戶端我需要運行復雜的查詢。然而,在後端我大多隻想備份,我可以很容易地訪問它,如果需要通過lambda函數處理)的方式中的所有數據。我與這一個的NoSQL解決方案完全好,我的理解是,DynamoDB是一種經濟高效的數據庫與水平擴展,這是吸引我。如果我想用Realm Object Server以這種方式訪問數據,我的理解是每月至少需要1500美元。 3)沒有進入Realm團隊的進攻,但我被Parse關閉了,所以我想用一些我可以信任的東西作爲我的後端將會有5年左右的時間。
無論如何,有了這樣的方式,這裏就是我目前如何使這項工作:
1)每當我創建或編輯一個域對象,我有邏輯,這將是改變映射到我的DynamoDB模式(這是由遠遠少於Realm的表組成的)。
2)我把這些更新稱爲UpdateTasks
,我將它們排隊並根據需要合併它們(例如,如果你多次更改同一個屬性)。
3)我通過隊列並將UpdateTasks
塊傳遞給我寫的Lambda函數,該函數將遍歷更新並執行必要的放入或更新命令到DynamoDB。
4)我的情況下,你是離線或請求失敗
5)假設一切正常同步,如果你有一個新的手機,並簽署了重試邏輯的地方,我有一個單獨的拉姆達函數將獲取所有用戶的數據並像以前一樣填充Realm文件。
就像我說的,這一切工作的權利,但感覺脆弱,我不禁覺得我要對這個錯誤的方式。此外,它不支持雙向同步或實時通信,如果我想添加一些社交功能
所以我的問題是,如果這是一個合理的方法使Realm與DynamoDB同步或者如果有更好/更多健壯的方式?另外,如果我應該重新考慮使用領域對象服務器或別的東西來代替DynamoDB,我很想聽聽爲什麼。
這對我來說是一個重大決定,所以我會很感激所有我能得到的幫助!謝謝
我認爲DynamoDB(或任何其他數據庫)將爲您提供您尋找的靈活性。所以是的,我會使用自定義構建API來管理設備的數據。至於實時同步和通信,特別是聊天或其他內容,同步API方法並不理想。爲了專注於實時socket.io將是一個更好的主意。 – Orlando
「對Realm團隊沒有冒犯,但我被Parse搞砸了」---沒有采取任何行動,但請注意ROS是一種自己動手解決方案,所以即使我們要走出渡渡鳥的道路,沒有人可以帶走你:)。 – teotwaki