客户端之间的实时同步Realm数据库

3
我在许多帖子和问题中进行了搜索,但没有找到答案。当我使用 Realm Objects Server 并且客户端连接到服务器时,整个数据库是否会在所有客户端之间同步?
换句话说,如果我有一个拥有数百万对象、关系等的公共数据库,所有客户端是否都在其设备上拥有整个数据库的副本?
我需要使用 Realm 同步功能,但我不知道同步是如何发生的。同步是增量的吗?每个用户都有该设备需要进行查询的对象?
我的应用程序每小时都会增加大小,而 Realm 的同步功能对我来说非常完美,但我对数据库随时间增长的大小和客户端如何同步大量数据有疑问。
提前感谢!
1个回答

4
目前是这样,公共领域会完全同步到每个客户端设备上。当客户端设备第一次连接时,整个列表将首先被下载,从那时起,任何额外的更改都将在其在服务器上进行时同步。
话虽如此,所有领域文件都会被压缩(即,所有空分配空间都被删除并且所有字符串都被压缩),然后再使用gzip进行压缩,然后下载到客户端,因此只要公共领域不包含大型二进制块,即使非常大的文件也应该很快下载。
在Realm移动平台上添加部分复制是在路线图上的计划。这将允许仅将单个领域文件的部分同步到特定客户端。但是,目前还没有发布此功能的具体计划。
目前最简单的方法是在服务器上维护数据的主列表,并将所需的数据仅复制到每个用户的私有领域。但是,由于这需要在服务器上执行自定义逻辑,因此需要Realm移动平台的Professional或Enterprise版本。

谢谢!我觉得主要问题将在1-2年的数据检索后出现,数据库的大小也会增长得太快。我将尝试使用大量数据的测试实例来解决这个问题。 - mhergon
有没有办法计算数据库的预期大小? - mhergon
没问题!很遗憾目前还不行。它的大小可以根据其内容的数据类型而大幅变化。祝你好运!如果测试结果不如预期,请随时在 Realm GitHub 上提交问题,以便我们能够详细地检查。 - TiM
我尝试了210000个随机字符串对象,磁盘大小为90Mb。当用户第一次下载时,数据库会被压缩,对吗? - mhergon
没错!如果你想模拟实际传输大小,可以在 Realm 浏览器中打开 Realm 文件,将其导出为压缩的 Realm 文件,然后再将其压缩为 zip 文件。 - TiM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接