我有一个由亚马逊上托管的 Realm 对象服务器提供支持的 iOS 应用程序,我很好奇同步何时真正发生。同步是查询延迟,对所有开放领域进行实时同步,还是其他什么?
例如,假设我有一个名为/common 的领域,并且所有 SyncUsers 都具有此领域的读/写权限。每个活动的 SyncUser 还有一个通知块,侦听与其 SyncUser 身份对应的/common 领域中的 GlobalProfile 对象。如果一个用户对另一个用户的 GlobalProfile 对象进行更改,所有用户会立即下载此更改,还是只有在此对象上具有通知块的用户立即下载更改?
具体来说,我想为用户(我们将其命名为 Tom(创建一种搜索其他用户并将读/写权限发送到 Tom 领域的方法。我目前的解决方案是一个公共领域,每个用户在其中添加一个 GlobalProfile 对象。要搜索名为 Jerry 的用户,Tom 只需查询公共领域即可。要授予 Jerry 对 Tom 领域的读/写权限,Tom 可以将 SyncPermissionOffer.token 写入 Jerry 的 GlobalProfile 中。因为Jerry有一个通知块在监听他的GlobalProfile,所以他会立即收到这个令牌的通知,并且可以接受SyncPermissionOffer到Tom的领域。但是,我担心的是所有用户,而不仅仅是Jerry,都会在/common领域中同步此更改,这是不必要的。如果应用程序有 100,000 个用户,我不希望每个用户不断同步其他用户之间发送的所有 SyncPermissionOffer 令牌。
如果这个问题不清楚,请告诉我。非常感谢您的帮助!
同步对所有更改都是实时的。同步不等待或取决于通知块。通知块在本地执行,不用于以任何方式更改客户端-服务器通信。
如果你有一个/common Realm,它将包含你提供的所有权限和 所有用户都将下载所有其他用户的权限优惠。随着时间的推移,它会变大。
你可以做的是拥有一个/common Realm,它只包含用户 ID、它们的"名称"和指向它们的"收件箱"Realm 的路径。当用户 A 想要 邀请用户 B,A 在/common 中查找 B,获取 B 收件箱的 Realm 路径,并向其发送权限提议。
使用这种方法,通用 Realm 不会增长那么大,因为数据 par 用户可以保持在 100 字节以下。