如何使用Realm Sync实现同步和备份?

How to achieve synchronization and backup using Realm Sync?

我正计划为 iOS 和 Android 开发跨平台应用程序,并希望通过 Realm Sync 同步数据。领域同步是无服务器的。让我们假设以下情况:用户只有一台设备,使用该应用程序,保存数据,然后设备出现故障。那么该用户将无法恢复他们的数据,因为 Realm Sync 只是同步而不是备份,对吧?但是如何在Realm的框架下实现同步和备份呢? MongoDB Atlas 扮演什么角色?

非常感谢!

注:本人是本科生

Realm Sync 是基于云的 - 这意味着有一个基于云的服务器远程存储应用程序数据

数据首先存储在本地,然后在稍后(通常在几秒内或更快)自动同步到云端。这就是为什么 Realm 被认为是“离线优先”的数据库;数据存储在本地(离线),然后 copied/stored 在线。

Realm 可以是没有云同步的纯本地数据库,也可以是在线同步的“real-time”云数据库。 (或两者!)

当使用同步时,支持 Realm 的数据库称为 MongoDB,并且是一个 NoSQL 数据库。

一般来说,开发Realm客户端应用时,您选择的SDK是您的代码和对象之间的和MongoDBback-end数据库。

SDK 允许您以 object-oriented 方式编码,无需直接使用低级 NoSQL 对象。

您创建模型、关系和 UI,SDK 获取应用程序数据,对其进行处理,并将其作为 NoSQL 存储在 MongoDB 中。

作为后续,以便未来的读者不必通读所有评论:

Q) what does the term "serverless" mean?

A) 我喜欢这个定义

Serverless 将后端云基础设施和操作任务(配置、调度、扩展、修补等)的所有管理责任卸载给云提供商

越直越过点:

Serverless 是一种云开发模型,允许开发人员构建和 运行 应用程序而无需管理服务器。

Q) Doesn't that mean that the data is then only temporarily stored in the cloud

A) 一点也不。如上所述,Realm 数据总是先写入本地,然后 SDK 将其同步到云端。如果您完全擦除您的设备,一旦您重新安装并 运行 应用程序,Realm 将从服务器(同步)提取数据

Q) Because the prices for Realm Sync also do not include storage space costs: Pricing

A) link 包括每个计划的存储和成本:总结

共享计划最高 5GB,无服务器最高 1TB,专用计划每个分片 4TB。然后,共享是 0 美元/月,无服务器是 0.30 美元/百万次读取,专用是固定的 57 美元/月。

Q) Is it then possible to save the user data on this (an Atlas cluster)?

A)是的!这就是整个想法!但。如果您在 Realm 中进行开发,那么您的工作就是使用 SDK 制作出色的应用程序,并让 SDK 在后端与 Atlas (MongoDB) 接口。根据您的用例,您可能很少需要直接对 Atlas 执行任何操作。

总体情况是,在使用 Realm 编码时,您可以更自然地 object-oriented 处理对象、结构和关系 - SDK 负责获取数据,'converting' 它用于存储在 Realm Sync 服务器 (MongoDB Atlas) - 因为它最终成为 NoSQL。