注意:以下文档只适用于TOP接口,请谨慎使用!

实时数据库如何使用?

更新时间:2017/07/18 访问次数:20365

背景

当前在千牛上客户端与服务端数据交互的方式只有客户端主动拉取的方式。主动拉取的方式绝大多数情况下能满足业务的需求。但是他也有天然的缺陷。比如:

  1. 在某些需要多端(千牛移动端与千牛pc端,ISV服务端与千牛的移动端和pc端),多用户之间的数据实时同步的时候主动拉取的方式就满足不了这样的需求。
  2. 客户端需要展现最新的数据:比如:订单的状态,因为订单状态不正确就会带来业务上得错误。主动拉取的方式需要每次进去操作订单数据的时候需要调用交易接口获取最新的数据。这种做法,对于某些订单变化不频繁的用户来说是浪费的,浪费了服务端的资源,也增加了ISV调用TOP api的费用(因为调用api需要收费)。

使用场景

场景1:同步最新的订单状态

基于主动拉取方式的做法在客户端上的表现

为了保证客户端展示的状态是最新的状态,在不同的tab切换需要重新从服务端加载数据。类似于这种场景,可以使用数据同步,有最新的数据变化之后服务端把数据实时的同步到端,客户端只需要读取本地的数据即可。

场景2:客服接待端和仓库打印端数据同步。

如下图所示

当前的做法是


当前是千牛的客服接待端和千牛的仓库端主动的轮训ISV服务端获取最新的数据,但是为了降低对ISV服务端的压力,主动轮训的间隔都会设置的比较大。这种情况下有如下问题:

  1. 客服修改了发货地址,但是发货地址没有及时同步到仓库端,导致发货人员还是发到旧的地址
  2. 客服修改了备注(比如:快递公司),但是备注信息没有同步到仓库端,导致客服的承诺和实际不一致
  3. 商品发生了变化(更改了同类型商品),但是发货人员还是发的原来的商品。
  4. 买家发起了退货退款,但是发货人员不知道,导致货物发出去,造成损失。

使用数据同步的做法是

使用了数据同步后,数据的任何变化都会在秒级别同步到其他端,基本上可以实时保证多端,多用户的数据是同步的。

原理

原理如下图

主要包含两块:

  1. ISV根据自己的业务需求设计表结构,然后通过控制台录入表结构
  2. ISV通过TOP api把变化的数据同步到千牛数据同步服务,千牛数据同步服务会把此数据实时同步到千牛客户端。

如何使用

整个使用分如下几个步骤:

  1. 在控制台后台创建表,创建表需要注意以下事项
  • 表名:表名尽量见名知意,表名只允许英文字母和“_”,其他字符不允许出现,不能采用驼峰。比如:jdy_remote_config。而不能是jdyRemoteConfig,或者是jdy_remote-config。
  • 字段名:字段名只允许英文字母和"_",其他字符不允许使用,不能采用驼峰。
  • 字段类型:当前只支持数字类型(long),和字符串类型(string)。
  • 唯一索引:每个表必须有一个唯一索引,用于唯一定位一条数据,确保数据不会发生错误。
  1. 初始化数据
  2. 用户的数据发生变更之后同步到客户端

初始化

业务初次使用,需要初始化数据。初始化流程如下图

数据同步

流程如下图

插件查询数据

客户端通过协议来查询数据,协议使用见查询数据协议,使用协议过程中的参数说明如下。协议的调用见协议调用文档。

  1. nameSpace:创建的表名
  2. where : 查询数据的条件
  3. args: 第2个查询条件参数中需要指定的值,用英文逗号切割。

举例如下:

var application = TOP.mobile.application; application.request({ event:'queryData', biz:{ nameSpace : 'jdy_remote_config', where : 'appkey= ? and config_key=?', args : '123456,jiaoyi.open.new.plan.ratio' }, success:function(){ }, error:function(){ } });

常见问题

当前这个服务还处于灰度阶段,如果使用过程中有任何问题,或者有一些新的需求,可以在旺旺群:239300039 进行咨询,群密码:qianniu

FAQ

关于此文档暂时还没有FAQ
返回
顶部