Realm 移動端平臺發布:實時同步的 Realm 和完全開源的數據庫實現

Christina64 8年前發布 | 11K 次閱讀 Realm 開源

自 2014 年我們推出 Realm 以來,我們就一直秉持著一個目標:提供一款強大的、用以替代 SQLite 和 Core Data 的產品,從而幫助移動開發者們更好、更快地搭建移動應用。時光荏苒,兩年半之后,我們已經擁有了十萬以上的活躍開發者,并且在全球范圍內,使用 Realm 的應用下載量已經突破了十億次。我們非常感激開發者社區的支持和反饋,正是如此才使得我們能有今日的成就。但我們需要做的還有很多。

今天,我們推出了 Realm 移動端平臺 (Realm Mobile Platform, RMP),這是一款全新的產品,它集成了我們完全開源的(參見下文)iOS 和 Android 客戶端數據庫,并且借助新的服務端技術,它還能夠提供實時同步 (Realtime Synchronization)、沖突處理 (Conflict Resolution) 以及響應式事件處理 (Reactive Event Handling)。 RMP 讓移動開發者們能夠實現此前難以構建的功能,比如說提供實時協作 (Realtime Collaboration)、實時通信、離線緩存體驗 (Offline-first) 等諸如此類的功能。

新平臺現已推出了兩種類型的 beta 版本,現在即可使用!開發者版本 (Developer Edition) 將永久免費,它適用于絕大多數簡單的適用情形,業余愛好者到小型商業應用都可以使用這個版本。企業版 (Enterprise Edition) 提供了一段試用期,能夠完全支持大型產品。具體詳情將在下文進行介紹。雖然目前平臺只支持 Java、Objective-C 和 Swift,但是 React Native 和 Xamarin 版本也即將上線。

我們同時還做了一個重大的決定:我們非常自豪地宣布 Realm Core 模塊現已開源,這讓我們的 Realm 移動平臺將全面擁抱開源當中找到相應的源碼。無論是作為新平臺的一個重要組成部分,還是作為移動開發者的一個獨立數據庫選擇,移動數據庫這個領域對我們來說是非常重要的,因此我們的工程團隊將繼續致力于維護和改善 Realm Java、Realm Objective-C、Realm React Native、Realm Swift 和 Realm Xamarin。

無處不「對象」

即便是長期使用 Realm 的用戶,都很可能沒有意識到,Realm 是一個內核級別的嵌入式對象數據庫,但是這只是其中一個我們與其他數據庫的主要區別。實際上,是因為開發者喜愛 Realm 的易用和高速才成就了這一切。開發者們不用去處理復雜的對象關系映射,他們只需要處理對象即可——也就是說,數據庫 即是 數據模型。

我們在新的對象服務器 (Object Server) 當中擴大了我們這方面的設計理念,也就是我們平臺內部的一個非常重要的神奇概念——我們稱之為「實時對象」(Live Objects)。實時對象意味著設備上的數據對象總是能與服務器上的數據對象完全

保持同步。這個同步操作將會自行完成,并且是無縫的——這意味著開發者不必去撰寫網絡層代碼——并且只有當對象發生變化時才會進行網絡同步,而不是所有的數據對象都去進行網絡同步,這使得這個同步操作非常地高效。Realm 平臺同樣也會進行沖突處理,因此對某個共享的實時對象進行同時修改也能確切地得到解決。平臺將會自動執行默認的預設處理規則,而這種模式對于絕大多數情況來說都是適用的;然而,您也可以輕松地創建自定義沖突解決規則。

借助 Realm,您完全不需要考慮網絡層的工作。您只需要大膽地構建與實時對象進行交互的應用即可。這意味著所有那些難以構建的特性,例如實時協作、實時通信將會變得無比容易。試想,如果要允許用戶通過不同的設備在一塊共享的白板上進行協同工作的話,最難的部分在于要確保所有的更改操作都要立即反應在每個用戶的 UI 上面,而且如果發生了沖突——例如用戶同時對某個地方進行了繪制或者擦除操作,那么這個沖突會很優雅地被處理掉。Realm 平臺都為您提供了現成的解決方案。

使用 Realm 移動平臺構建離線緩存體驗

Realm 平臺對于帶有離線緩存的應用來說,同樣也提供了良好的解決方案,因為在網路連接斷開或者時斷時續的情況下,第一要務是要提供一個無縫的用戶體驗。Realm 移動平臺正好為設備提供了一個非常高效的嵌入式數據庫,因此即便網絡連接丟失,您的應用仍然能夠保持良好的用戶體驗。這正是使用 Realm 移動數據庫的一個重要優勢所在。

但是如果您使用了整個 Realm 平臺——Realm 數據庫加上對象服務器的話——那么您能夠實現的功能將會更多。首先,由于雙向的同步操作會在后臺自動進行,因此您可以確保設備上的數據對象在網絡連接丟失之前,是完全與服務器同步了的。當網絡連接恢復之后,同步操作又會自動進行,而這個時候任何可能發生的沖突都將被自動解決——實時對象又再一次地完全同步。您的用戶就可以繼續工作了,甚至他可能都沒有意識到網絡連接出現了異常。

事件處理

Realm 平臺的企業版同樣也包含了另一個關鍵特性:服務器端事件處理框架,這個框架提供了一個需求管道 (plumbing),每當對象發生改變,就可以輕易地觸發服務器端的邏輯操作。您可以對這個框架進行配置,讓其能夠監聽移動端上的對

象變化情況,然后立即在服務器端運行某些代碼作為回應。例如,當用戶填寫訂購單的時候,他/她在輸入框中鍵入了優惠券代碼。這個時候,設備端的優惠券對象所發生的變化將會被框架所捕獲,接下來這個變化就會立刻同步到服務器當中

。這個特定的變化將會致使事件處理框架觸發對優惠券代碼的檢查操作,以確保這是一個合法的代碼,隨后檢查之后的合法性將會更新到服務器端的優惠券對象當中。再然后這個網絡回應便會同步回客戶端的優惠券對象,隨后觸發一個通知,進行 UI 的更新操作。

您可以使用事件處理來與現有的 API 或者基礎功能進行集成,這使得 Realm 對象服務器將作為 API 橋接器 (Bridge) 或者作為移動中間件 (Mobilization Middleware) 來使用。這個功能同樣也允許您基于「無服務器 (serverless)」的計

算原則來設計應用——您可以為每一個單獨的函數編寫特定的觸發操作。

如何入門

Realm 移動平臺現已推出了兩個版本。開發者版本將永久免費,現已推出了 beta 測試版。開始使用這個版本是非常容易的,我們非常期待您的反饋。企業版則包含了事件處理框架、簡單集成等其他重要的功能。它目前正在內測當中,>

但是只需簡單填寫一個表單 ,便能夠加入到我們的內測計劃當中來。

 

來自:https://realm.io/cn/news/introducing-realm-mobile-platform/

 

 本文由用戶 Christina64 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!