如何使用SyncStore服务?

SyncStore是一个实时同步数据库产品,使用者通过SDK,为应用和客户端建立长连接,并且实现多端的同账号下的数据同步。SyncStore如上,4个设备都安装了接入了SyncStore SDK 的应用程序,当手机的上的数据改变时,会自动的将数据同步到云端,然后云端会自动的把数据实时的下发到其他3个客户端,实现数据自动的多端同步。这样一个跨设备,跨平台,多端实时同步的应用场景,只需要接入SyncStore提供的SDK,就可以实现。

流程详述

整体同步流程如下:场景:服务端(Server)、客户端一(client 1)、客户端二(client 2)其中client 1和client 2使用同一个账号的应用

交互流程:

  1. client1数据进行了更改(客户端本地有三种更改数据的方式set、update、push)。

  2. 更改结束后,SDK会马上把这个数据通过长连接发送给Server,调用Server的/sync/push接口,向上传递数据。

  3. Server端,接受到数据后:(1)对数据进行update的操作:如果云端没有这个数据,那么进行一个add的操作;如果有这个数据,那么以上传的数据为准,进行一个覆盖的操作。(2)更新所有相关父节点的数据版本,例如 a/b/c/d:{e:1} 。其中e=1 被更新成a/b/c/d:{e:2},那么/a 以及/a/b 以及 /a/b/c 以及/a/b/c/d 的数据版本都会被更新为最新的,这样才能保证无论其它的客户端关注哪个层级,都会进行准确的同步。

  4. Server端更新后,会给其它的相关端发送一个push消息,本次就会给client2发送消息。

  5. client2接收到这个消息后,会调用Server的/sync/pull 接口,上传自己本地的数据版本号,以及path(就是/a或者/a/b,或者/a/b/c),接下来Server会根据这个数据版本号,以及path,返回相应的增量、变化数据。

  6. client2进行数据合并,以Server返回的数据为准,对本地的数据进行覆盖。

其中有两种特殊情况:

  • 在第2和第3点处,client1上传数据时,需要上传本地的数据版本,Server端必须检查这个数据版本是最新的数据版本才可以允许client1上传数据,否则会要求client调用sync/pull 接口下载数据;数据下载后,有几种不同的处理方式,云端为主、本地为主或用户merge。目前我们选用的是云端为主。

  • 在第5点和第6点处,client2下载数据后,有可能本地的数据已经发生了变化,那也要进行一个数据的合并,然后合并后,client2会将变化的其他数据提交到Server端。

操作简介

说明: Namespace用于标识数据的隔离空间,一个Namespace类似关系数据库的一个DB。根据访问数据控制的不同级别,可分为:租户级Namespace和项目级Namespace。

  • 租户级Namespace即相同租户的不同项目之间可共用(当前系统自动创建,暂不提供自行创建)。当创建一个项目之后,系统会自动创建一个默认租户级的Namespace。

  • 项目级Namespace即不同项目之间相互独立。由租户自行创建。

创建Namespace

创建namespace创建完成后,在列表中会显示已创建的namespace记录,自动生成namespace值。注:

  • 一个项目,可以创建多个项目级Namespace。

  • 关于数据空间划分和鉴权方式的说明,可参考(链接待补充)

数据管理

设置查询条件:数据查询查询结果:查询条件

数据统计

日维度的数据统计:数据统计1分钟维度的数据统计:数据统计-2