2017-02-21 248 views
2

我的應用程序使用領域處於脫機狀態,第一,因此,境界得到了精彩的堅持和訪問數據。我喜歡它。但是,我也希望將用戶數據存儲在雲中(用於備份,但以後我會添加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,我很想聽聽爲什麼。

這對我來說是一個重大決定,所以我會很感激所有我能得到的幫助!謝謝

+0

我認爲DynamoDB(或任何其他數據庫)將爲您提供您尋找的靈活性。所以是的,我會使用自定義構建API來管理設備的數據。至於實時同步和通信,特別是聊天或其他內容,同步API方法並不理想。爲了專注於實時socket.io將是一個更好的主意。 – Orlando

+0

「對Realm團隊沒有冒犯,但我被Parse搞砸了」---沒有采取任何行動,但請注意ROS是一種自己動手解決方案,所以即使我們要走出渡渡鳥的道路,沒有人可以帶走你:)。 – teotwaki

回答

1

聲明:我是ROS的領導者,所以我顯然有偏見。我發佈這不是一個答案,但作爲一般意見,不適合評論格式。

我喜歡Realm實際上是一個關係數據庫,因爲從客戶端我需要運行復雜的查詢。

你會通過調用Realm關係數據庫來激怒衆神。我們支持查詢,鏈接和所有這些,但我們與關係數據庫非常不同)。

此外,如果我應該重新考慮使用Realm對象服務器或其他的東西而不是DynamoDB,我有興趣聽聽爲什麼。

您錯過了Realm Mobile Platform提供的許多非常重要的功能,您可以自己重新實現同步。

主要是,我們有幾千行代碼來處理無衝突合併解決方案,在這種情況下,您有多個客戶端將數據寫入同一個領域,而所有脫機。另外:

  • 我們爲您處理網絡。您不必擔心或關心設置連接,客戶端和服務器之間的協議,以及事物是否正確序列化。
  • 我們的協議也非常輕便,因爲我們只能從Realm數據庫傳輸事務日誌;沒有序列化的對象或類似的東西。
  • 我們的同步速度非常快。當我們啓動RMP時,您可能已經看過了繪製演示視頻。因爲我們的同步是直接集成到Realm中的,所以我們可以通過擠壓額外的性能。我們已經建立了許多聊天應用程序,而不是內部的,而且人們對郵件傳輸的速度一直感到驚訝。
  • 您在服務器和客戶端上使用相同的SDK和API(儘管是不同的語言)。
  • 我們不斷添加不需要手動構建的功能(例如經常請求的部分複製和對象級權限)。

在另一方面:

你有非常密切的內置系統類似於我們採用訂單/請求發送到服務器後臺的技術。通常,我們在客戶端上創建FooRequest對象,這些對象被同步,然後事件處理程序選擇這些對象,處理它們,並創建一個將同步回客戶端的對象。

總的來說,我很印象深刻,你已經建立了所有這些在香草領域之上。如果有一天我們有機會,我很樂意看看你的整個籌碼。

最後,我們正在研究我們的定價,因爲您對價格點的反饋不是唯一的(但它非常有幫助!)。