数据同步方法、客户端以及服务器.pdf

上传人:a3 文档编号:1029961 上传时间:2018-03-26 格式:PDF 页数:31 大小:1.24MB
返回 下载 相关 举报
摘要
申请专利号:

CN200810027322.X

申请日:

2008.04.10

公开号:

CN101557380A

公开日:

2009.10.14

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):H04L 29/06申请公布日:20091014|||实质审查的生效IPC(主分类):H04L 29/06申请日:20080410|||公开

IPC分类号:

H04L29/06; G06F17/30

主分类号:

H04L29/06

申请人:

华为技术有限公司

发明人:

宋 悦; 王 睿; 刘海涛

地址:

518129广东省深圳市龙岗区坂田华为总部办公楼

优先权:

专利代理机构:

广州三环专利代理有限公司

代理人:

郝传鑫;熊贤卿

PDF下载: PDF下载
内容摘要

本发明公开了一种数据同步方法,包括:获得容量限制信息;根据所述容量限制信息,执行数据过滤操作,生成过滤数据;将生成的过滤数据发送给过滤请求的发送方。同时,本发明还公开了相应的客户端和服务器,本发明实现了服务器通过获得来自客户端的容量限制信息,根据该容量限制信息,执行数据过滤操作,生成过滤数据,从而优化了服务器的数据过滤功能,提升了用户体验感。

权利要求书

1、  一种数据同步方法,其特征在于,包括:
获得容量限制信息;
根据所述容量限制信息,执行数据过滤操作,生成过滤数据;
向客户端发送所述过滤数据。

2、
  如权利要求1所述的方法,其特征在于,所述获取容量限制信息包括:
接收携带有容量限制信息的数据过滤请求,从该数据过滤请求中获得所述容量限制信息。

3、
  如权利要求1所述的方法,其特征在于,所述获取容量限制信息包括:
接收携带有弹性过滤标志信息的数据过滤请求,从该数据过滤请求中获取所述弹性过滤标志信息以及获取数据过滤条件,根据所述弹性过滤标志信息以及满足所述数据过滤条件的数据项数获取所述容量限制信息。

4、
  如权利要求1所述的方法,其特征在于,所述获取容量限制信息包括:
从客户端中获取弹性过滤标志信息,接收来自所述客户端的数据过滤请求,并从该数据过滤请求中获取数据过滤条件,根据所述弹性过滤标志信息以及满足所述数据过滤条件的数据项数获取所述容量限制信息。

5、
  如权利要求2所述的方法,其特征在于,所述容量限制信息为数据项容量限制信息。

6、
  如权利要求3或4所述的方法,其特征在于,所述容量限制信息为字段容量限制信息。

7、
  如权利要求2至5任意一项所述的方法,其特征在于,所述数据过滤请求中包括字段最小长度限制信息。

8、
  如权利要求1至5任意一项所述的方法,其特征在于,所述根据所述容量限制信息,执行数据过滤操作包括:
根据所述容量限制信息以及预设的数据项过滤策略信息,执行数据过滤操作。

9、
  如权利要求8所述的方法,其特征在于,所述数据项过滤策略信息包括字段优先级信息和/或数据项截断策略信息和/或数据项中各字段的截断策略信息。

10、
  一种数据同步方法,其特征在于,包括:
接收携带有字段最小长度限制信息的数据过滤请求,并从该数据过滤请求中获取所述字段最小长度限制信息;
根据所述字段最小长度限制信息,执行数据过滤操作,生成过滤数据;
向客户端发送所述过滤数据。

11、
  一种客户端,其特征在于,包括:
请求生成单元,用于生成携带有容量限制信息的数据过滤请求;
请求发送单元,用于向服务器发送所述携带有容量限制信息的数据过滤请求。

12、
  如权利要求11所述的客户端,其特征在于,还包括:
过滤数据接收单元,用于接收来自服务器的根据所述数据过滤请求生成的过滤数据;
同步更新单元,用于根据所述过滤数据同步更新本地数据库。

13、
  一种服务器,其特征在于,包括:
获得单元,用于获得容量限制信息;
过滤数据生成单元,用于根据所述容量限制信息,执行数据过滤操作,生成过滤数据;
发送单元,用于向客户端发送所述过滤数据。

14、
  如权利要求13所述的服务器,其特征在于,所述获得单元包括:
第一接收单元,用于接收携带有容量限制信息的数据过滤请求;
第一容量限制信息获取单元,用于解析所述数据过滤请求,获取所述容量限制信息。

15、
  如权利要求13所述的服务器,其特征在于,所述获得单元包括:
第二接收单元,用于接收携带有弹性过滤标志信息的数据过滤请求;
第一获取单元,用于从所述数据过滤请求中获取所述弹性过滤标志信息以及数据过滤条件;
第二容量限制信息获取单元,用于根据所述弹性过滤标志信息以及满足所述数据过滤条件的数据项数获取所述容量限制信息。

16、
  如权利要求13所述的服务器,其特征在于,所述获得单元包括:
弹性过滤标志信息获取单元,用于从容户端中获取弹性过滤标志信息;
第三接收单元,用于接收来自所述客户端的数据过滤请求;
第二获取单元,用于从所述数据过滤请求获取数据过滤条件;
第三容量限制信息获取单元,用于根据所述弹性过滤标志信息以及满足所述数据过滤条件的数据项数获取所述容量限制信息。

说明书

数据同步方法、客户端以及服务器
技术领域
本发明涉及通信领域,具体涉及一种数据同步方法、客户端以及服务器。
背景技术
数据同步(Data Synchronization,DS)是指在多个设备中的信息保持一致,当其中一个设备上的数据变化时,可以操作其他设备中的数据做相应的改变。同步两端可以是任何一种类型的网络设备,在任一种网络上面,同步操作的数据可以是任何一种网络数据。所述网络设备可以为移动终端,如掌上电脑、个人数字助理(Personal Digital Assistant,PDA)移动电话、自动计算机和桌面计算机,同时一个用户可以通过不同的设备访问、操作同样的数据集合。同步标记语言(Synchronization Makeup Language,SyncML)同步协议是为了实现数据同步这个目标而应运而生的一个新的通用标准。SyncML同步协议是一套协议集。
通常由于服务器端比客户端包含更多的数据,而客户端也可能只希望服务器上的一部分数据,另外,客户端还可以选择数据的一部分字段进行同步。例如用户需要同步“联系人”数据库,但服务器上的这个数据库包含很多数据,因此用户根据客户端能力和自己的需求可以选择其中的一部分来进行同步,例如只同步“联系人”下面的“同学”或“同事”这些分组,用户还可以限制数据的各个字段,例如同步时不包括每个联系人的照片。
过滤技术只用于接收方,例如客户端发起一个过滤请求给服务器,服务器根据过滤请求中的设置给客户端发送需要的数据,而客户端发送给服务器的数据是不受这个过滤请求的限制的。
发明人在实现本发明的过程中,发现现有的过滤技术限制了数据项中字段的最大长度,超过长度的部分会被截断或者被丢弃,不能较好的优化过滤功能,用户体验感较差。
发明内容
本发明实施例,提供了一种数据同步方法、客户端、服务器以实现优化服务器过滤功能,提高用户体验。
本发明实施例提供了一种数据同步方法,包括:获得容量限制信息;根据所述容量限制信息,执行数据过滤操作,生成过滤数据;向客户端发送所述过滤数据。
本发明实施例还提供了另一种数据同步方法,包括:接收携带有字段最小长度限制信息的数据过滤请求,并从该数据过滤请求中获取所述字段最小长度限制信息;根据所述字段最小长度限制信息,执行数据过滤操作,生成过滤数据;向客户端发送所述过滤数据。
本发明实施例进一步提供了一种客户端,包括:请求生成单元,用于生成携带有容量限制信息的数据过滤请求;请求发送单元,用于向服务器发送所述携带有容量限制信息的数据过滤请求。
以及一种服务器,包括:获得单元,用于获得容量限制信息;过滤数据生成单元,用于根据所述容量限制信息,执行数据过滤操作,生成过滤数据;发送单元,用于向客户端发送所述过滤数据。
实施本发明实施例,服务器获得来自客户端的容量限制信息,根据该容量限制信息,执行数据过滤操作,生成过滤数据,从而优化了服务器的数据过滤功能,提升了用户体验感。
附图说明
图1是本发明数据同步方法第一实施例的流程示意图;
图2是本发明数据同步方法第二实施例的流程示意图;
图3是本发明数据同步方法第三实施例的流程示意图;
图4是本发明数据同步方法第四实施例的流程示意图;
图5是本发明数据同步方法第五实施例的流程示意图;
图6是本发明客户端实施例的组成示意图;
图7是本发明服务器实施例的组成示意图;
图8是本发明服务器实施例中获得单元21的第一实施例组成示意图;
图9是本发明服务器实施例中获得单元21的第二实施例组成示意图;
图10是本发明服务器实施例中获得单元21的第三实施例组成示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
本发明实施例提供了一种数据同步方法,包括:获得容量限制信息;根据所述容量限制信息,执行数据过滤操作,生成过滤数据;向客户端发送所述过滤数据。本发明实施例还提供了数据同步方法、客户端以及服务器。下面分别进行详细描述。
参考图1,是本发明数据同步方法第一实施例的流程示意图,包括步骤:
A1、获得容量限制信息;
A2、根据所述容量限制信息,执行数据过滤操作,生成过滤数据;
此处,所述步骤A1、步骤A2中所述容量限制信息的含义以及如何根据容量限制信息,执行数据过滤操作将在本文后续实施例中进行详细描述。
A3、向客户端发送所述过滤数据。
参考图2,是本发明数据同步方法第二实施例的流程示意图,包括步骤:
B1、接收携带有容量限制信息的数据过滤请求,从该过滤请求中获得所述容量限制信息。
此处,具体实现时,可在来自客户端(数据过滤请求的发送方)的数据过滤请求中增加一个容量限制元素来实现在数据过滤请求中携带所述容量限制信息,例如在一具体实施例中,客户端发起的一个数据过滤请求如下:
<Alert>
  <Data>200</Data>
  <Item>
      <Target>
         <LocURI>./contacts</LocURI>
         <Filter>
            <Meta>
              <Type>text/x-vcard</Type>
            </Meta>
                 <Capacity>10000</Capacity>
                 <Record>
                    <Item>
                       <Meta>
                          <Type>syncml:filtertype-cgi</Type>
                       </Meta>
                          <Data>
                              GROUP&iCON;business&OR;GROUP&iCON;
                              personal
                          </Data>
                    </Item>
                 </Record>
              </Filter>
           </Target>
           <Source>
              <LocURI>dev-contacts</LocURI>
           </Source>
       </Item>
</Alert>
相对于现有技术,在该过滤请求中设置了一个<Capacity>容量限制元素,上述数据过滤请求的代码中所述<Capacity>10000</Capacity>的含义为客户端请求服务器根据10000字节的长度对生成的过滤数据进行限制,也即表示,服务器为该次数据过滤请求生成的总的数据项数据长度需小于10000字节。
在本实施例中,<Capacity>作为过滤请求中的一个元素,可以置于<Filter>元素中,作为<Filter>的子元素,以表示对整个<Filter>元素需要过滤的数据使用该限制,也可以置于<Record>/<Item>中,作为<Item>的子元素,以表示仅对<Item>中需要过滤的数据使用该限制,当然<Capacity>也可以位于同步数据包中,设置于过滤请求之外的其它部分,<Capacity>容量限制的值可根据客户端剩余存储空间或客户端针对某数据库的剩余存储空间的大小进行设置。
B2、根据所述容量限制信息,执行数据过滤操作,生成过滤数据。
此处,通过解析来自客户端的所述数据过滤请求,可获得该过滤请求所请求过滤的数据项,在本例中,请求过滤的数据项为联系人数据库中的business分组和personal分组。这时服务器将根据上述10000字节的容量限制以及预设的数据项过滤策略,从这两个分组中选择足够的数据项来发送给客户端,所述预设的数据项过滤策略包括数据项优先级信息和/或数据项截断策略信息,所述数据项优先级可以是按顺序从后往前、从前往后、按数据项长度从大到小、从小到大、或是按用户预先对数据项指定的优先级进行。每选择一个数据项后服务器计算出剩余的容量,若剩余的容量不足以分配给后续的数据项,则服务器可以根据预设数据项截断策略截断或丢弃该数据项。进一步的,若客户端请求过滤的数据项包含的是多个字段元素,则服务还可根据预设的字段截断策略截断或丢弃数据项中某个字段。下面为服务器根据预设的数据项优先级信息按顺序选择的例子。
表一:

  数据项  business(单位:字节)  personal(单位:字节)  1  1000  2000  2  1500  800  3  900  1100  4  1200  1200  5  200  500  总共  4800  5600

服务器从两个分组中按顺序选择数据项,例如该顺序为business1-personal1-business2-personal2...以此类推,当选择了9个数据项,即business5时,服务器发现还剩余100字节的容量,而第10个数据项personal5的长度为500字节,则服务器可以丢弃该数据项,发送9个数据项给客户端,也可以把personal5截断为100字节,发送10个数据项给客户端。截断的内容,可以是服务器根据数据中字段的属性来决定,也可以根据用户的预设来决定。
B3、向客户端发送所述步骤B2生成的所述过滤数据。
此处,客户端接收到所述过滤数据后,将根据该过滤数据同步更新相应的本地数据库,此处与现有技术类似,在此不予赘述。通过上述描述可知,本例中所述的在数据过滤请求中携带的容量限制为对联系人数据库中的数据项过滤时的数据项容量限制。当然,若本例中数据过滤请求为对字段进行过滤的字段过滤请求时,则在数据过滤请求中携带的容量限制信息为数据项中的字段进行容量限制的字段容量限制信息,本例中的后续具体实施例所述的容量限制即为字段容量限制。
在本例中,若客户端在发送过滤请求时,除了包括对字段的限制外,还加入了一个字段容量限制,服务器仍然对每个数据项的相应字段进行截断,只是需按照容量限制的值来限制发送的数据项的多少。本例中数据过滤请求如下:
<Alert>
  <Data>200</Data>
  <Item>
     <Target>
        <LocURI>./calendar/tasks</LocURI>
        <Meta>
          <Type>text/x-vcalendar</Type>
        </Meta>
        <Filter>
           <Meta>
             <Type>text/x-vcalendar</Type>
           </Meta>
           <Capacity>2200</Capacity>
           <Field>
              <Item>
                 <Meta>
                   <Type>application/vnd.syncml-devinf+xml</Type>
                 </Meta>
                 <Data>
                   <![CDATA[
                       <Property>
                          <PropName>DESCRIPTION</PropName>
                          <PropInfo>
                               <MaxSize>100</MaxSize>
                            </PropInfo>
                         </Property>
                         <Property>
                            <PropName>ATTACH</PropName>
                            <PropInfo>
                              <MaxSize>1000</MaxSize>
                            <NoTruncate/>
                          </PropInfo>
                         </Property>
                      ]]>
                   </Data>
               </Item>
            </Field>
         </Filter>
      </Target>
      <Source>
         <LocURI>dev-tasks</LocURI>
      </Source>
  </Item>
</Alert>
<Capacity>作为过滤请求中的一个元素,可以置于<Filter>元素中,作为<Filter>的子元素,以表示对整个<Filter>元素需要过滤的数据使用该限制,也可以置于<Record>/<Item>中,作为<Item>的子元素,以表示仅对<Item>中需要过滤的数据使用该限制,当然<Capacity>也可以位于同步数据包中,设置于过滤请求之外的其它部分,<Capacity>容量限制的值可根据客户端剩余存储空间或客户端针对某数据库的剩余存储空间的大小进行设置。
服务器接收到过滤请求后从日程管理数据库中按优先级选择足够的数据项发送给客户端,只是在选择数据项时按要求对指定的字段进行截断或丢弃,以下是服务器按顺序选择数据项并进行处理的具体实施例:
表二:
  实际数据项  DESCRIPTION字段  长度(单位:字节)  ATTACH字段长  度(单位:字节)  1  100  1500  2  0  1000  3  150  1000  总共  250  3500  发送数据项  DESCRIPTION字段  长度(单位:字节)  ATTACH字段长  度(单位:字节)  1  100  0  2  0  1000  3  100  1000  总共  200  2000

表二中上半部分为数据项在服务器中的实际情况,下半部分为最后服务器发送给客户端的数据情况。服务器逐个选择数据项并进行相应处理,并计算此时剩余的容量限制,具体操作步骤为:
数据项1:DESCRIPTION字段为100字节,保留;ATTACH字段为1500字节,丢弃;剩余容量2200-100=2100字节;
数据项2:DESCRIPTION字段为0字节,保留;ATTACH字段为1000字节,保留;剩余容量2100-1000=1100字节;
数据项3:DESCRIPTION字段为150字节,截断;ATTACH字段为1000字节,保留;剩余容量1100-1100=0字节;
经过以上步骤后服务器发现剩余容量为0,已经达到了过滤请求的最大容量限制,则不再处理后续的数据项,而只把这3个数据项发送给客户端。
若处理完前3个数据项后服务器发现仍有剩余容量,则服务器会继续处理,如表三所示。
表三:


可见在对前3个数据项的字段进行截断或丢弃操作后,仍然剩余100字节的容量,此时服务器把第4个数据项的ATTACH字段丢弃,并把DESCRIPTION字段截断为100字节,则4个数据项的这两个字段长度正好等于容量限制2200字节,因此服务器发送了四个数据项给客户端。
若服务器发现剩余容量不足以分配给第4个数据项的某字段,也即剩余容量小于该字段MaxSize值,则可以截断更多的字节,如表四所示:
表四:


由表四可见在对前3个数据项的字段进行截断或丢弃操作后,只剩余50字节的容量,此时服务器把第4个数据项的ATTACH字段丢弃,并把DESCRIPTION字段进行截断,4个数据项的这两个字段长度正好等于容量限制2200字节,服务器发送了4个数据项给客户端,此时第4个数据项的DESCRIPTION字段只有50字节,并不满足过滤请求中对该字段100字节的限制,但这样处理能使用户在总的容量限制下获得更多的数据信息,当然服务器也可以根据用户预先的设置选择不发送数据项4。
在以表三和表四中,对最后一个数据项的字段进行截断或丢弃的策略可以有不同的策略,例如可以先丢弃DESCRIPTION字段,然后根据剩余容量选择发送ATTACH字段。
在本例中,在数据过滤请求中,还可进一步设置一个字段最小长度限制信息,服务器可根据该字段最小长度限制以及字段容量限制进行字段数据过滤,以使用户可以获得符合自己需求的数据。例如,客户端发送给服务器的一数据过滤请求如下:
<Alert>
 <Data>200</Data>
 <Item>
    <Target>
       <LocURI>./calendar/tasks</LocURI>
       <Meta>
         <Type>text/x-vcalendar</Type>
       </Meta>
       <Filter>
          <Meta>
            <Type>text/x-vcalendar</Type>
          </Meta>
          <Capacity>3500</Capacity>
          <Field>
             <Item>
                 <Meta>
                    <Type>application/vnd.syncml-devinf+xml</Type>
                 </Meta>
                 <Data>
                   <![CDATA[
                       <Property>
                          <PropName>DESCRIPTION</PropName>
                          <PropInfo>
                            <MinSize>100</MinSize>
                           </PropInfo>
                       </Property>
                       <Property>
                          <PropName>ATTACH</PropName>
                          <PropInfo>
                            <MinSize>1000</MinSize>
                          <NoTruncate/>
                         </PropInfo>
                       </Property>
                    ]]>
                 </Data>
             </Item>
          </Field>
       </Filter>
    </Target>
    <Source>
       <LocURI>dev-tasks</LocURI>
    </Source>
</Item>
</Alert>
本例在过滤请求的DESCRIPTION字段部分增加了<MinSize>100</MinSize>描述,在过滤请求的ATTACH字段部分增加了<MinSize>1000</MinSize>描述,分别表示只同步DESCRIPTION字段长度大于100字节的那些数据项,ATTACH字段长度大于1000字节的那些数据项。同时本例中<Capacity>3500</Capacity>表示生成的过滤数据DESCRIPTION字段和ATTACH字段总大小不超过3500比特的容量限制,如表五所示:
表五:
  实际数据  项  DESCRIPTION字段  长度(单位:字节)  ATTACH字段长  度(单位:字节)  1  150  500  2  50  1100  3  250  1900  总共  450  3500  发送数据  项  DESCRIPTION字段  长度(单位:字节)  ATTACH字段长  度(单位:字节)  1  150  0  2  0  1100  3  250  1900  总共  400  3000

表五中上半部分为数据项字段在服务器中的实际情况,下半部分为最后服务器发送给客户端的数据情况。服务器逐个选择数据项并进行相应处理,并计算此时剩余的容量限制,具体操作步骤为:
数据项1:DESCRIPTION字段为150字节,选择发送;ATTACH字段为500字节,不选择;剩余容量3500-150=3350字节;
数据项2:DESCRIPTION字段为50字节,不选择;ATTACH字段为1100字节,选择发送;剩余容量3350-1100=2250字节;
数据项3:DESCRIPTION字段为250字节,选择发送;ATTACH字段为1900字节,选择发送;剩余容量2250-250-1900=100字节;
经过以上步骤后服务器发现剩余容量为100,已不能再选择更多的字段,则不再处理后续的数据项,而只把这3个数据项发送给客户端。
若处理完前3个数据项后服务器发现仍有剩余容量,则服务器会继续处理,如下表六所示:
表六:
  实际数据项  DESCRIPTION字段  长度(单位:字节)  ATTACH字段长  度(单位:字节)  1  150  500  2  50  1500  3  250  500  4  150  1600  总共  600  4100  发送数据项  DESCRIPTION字段  长度(单位:字节)  ATTACH字段长  度(单位:字节)  1  150  0  2  0  1500  3  250  0  4  0  1600  总共  400  3100

表9.
可见在对前3个数据项的字段进行截断或丢弃操作后,仍然剩余1600字节的容量,此时服务器把第4个数据项的DESCRIPTION字段丢弃,选择发送ATTACH字段,则4个数据项的这两个字段长度正好等于容量限制3500字节。服务器发送这四个数据项给客户端。
可见服务器根据一些策略设置,丢弃了DESCRIPTION字段,而把剩余容量分配给了ATTACH字段。
参考图3,是本发明数据同步方法第三实施例的流程示意图,包括步骤:
C1、接收携带有弹性过滤标志信息的数据过滤请求,从该数据过滤请求中获取所述弹性标志位信息,解析该数据过滤请求,获取数据过滤条件,根据所述弹性过滤标志信息以及满足所述数据过滤条件的数据项数获取所述容量限制信息。
C2、根据所述容量限制信息,执行数据过滤操作,生成过滤数据。
此处,在步骤C1、步骤C2中,具体实现时,可在来自客户端(数据过滤请求的发送方)的数据过滤请求中增加一个弹性过滤标志位来实现在数据过滤请求中携带所述容量限制信息,例如在一具体实施例中,客户端发起的一个数据过滤请求如下:
<Alert>
  <Data>200</Data>
  <Item>
     <Target>
        <LocURI>./calendar/tasks</LocURI>
        <Meta>
          <Type>text/x-vcalendar</Type>
        </Meta>
        <Filter>
           <Meta>
             <Type>text/x-vcalendar</Type>
           </Meta>
           <Flexible>1</Flexible>
           <Record>
             <Item>
                <Meta>
                  <Type>syncml:filtertype-cgi</Type>
                </Meta>
                <Data>DUE&LE;20030728T000000Z&AND;STATUS&N
                E;COMPLETED
              </Data>
         </Item>
      </Record>
      <Field>
            <Item>
                <Meta>
                   <Type>application/vnd.syncml-devinf+xml</Type>
                </Meta>
                <Data>
                  <![CDATA[
                      <Property>
                         <PropName>DESCRIPTION</PropName>
                         <PropInfo>
                             <MaxSize>100</MaxSize>
                         </PropInfo>
                      </Property>
                      <Property>
                         <PropName>ATTACH</PropName>
                         <PropInfo>
                             <MaxSize>1000</MaxSize>
                            <NoTruncate/>
                           </PropInfo>
                          </Property>
                       ]]>
                    </Data>
                </Item>
            </Field>
         </Filter>
      </Target>
      <Source>
         <LocURI>dev-tasks</LocURI>
      </Source>
  </Item>
</Alert>
说明:
在所述数据过滤请求中加入了一个<Flexible>标志,并设置其值为1,这表示,服务器在对DESCRIPTION字段和ATTACH字段进行过滤时将计算这两个字段的容量限制,并将容量限制与这两个字段的实际总长度进行比较,若容量限制大于或等于实际总长度,则服务器将发送所有字段数据,若容量限制小于实际总长度,再对字段进行截断或丢弃。<Flexible>标志作为数据过滤请求中的一个元素,可以直接置于<Filter>元素中,作为<Filter>的子元素,或置于<Field>元素中,作为<Field>的子元素,以表示对整个<Field>元素包括的内容使用该方法,也可以置于<Field>/<Item>中,作为<Item>的子元素,以表示仅对<Item>中包括的内容使用该方法。若<Flexible>标志的值设为0或没有该标志则使用现有技术的方法。例如,假设该次同步中所限定的2003年7月28日前未完成的日程安排的数目为5条,而每个数据项对于DESCRIPTION字段和ATTACH字段的限制分别是100字节和1000字节,即总共1100字节,这样服务器可以计算出对所有5个数据项的这两个字段的总限制是1100×5=5500字节。现假设这5个数据项的这两个字段的实际长度如表七所示:
表七:
  数据项  DESCRIPTION字段  长度(单位:字节)  ATTACH字段长度  (单位:字节)  1  100  1000  2  10  2000  3  200  500  4  140  0  5  30  1510  总共  480  5010

服务器计算出这5个数据项的DESCRIPTION字段总长度为480字节,ATTACH字段总长度为5010字节,它们的总和为5490字节,这小于从同步请求中计算出的两个字段的总限制为5500字节,则此时服务器将把5个数据项这两个字段的所有5490字节的内容发送给客户端,完成该次同步。
而若采用现有技术中的方法,服务器将会对超长的数据进行截断或丢弃,这时发送给客户端的5个数据项的情况将如表八所示:
表八:
  数据项  DESCRIPTION字段  长度(单位:字节)  ATTACH字段长  度(单位:字节)  1  100  1000  2  10  0  3  100  500  4  100  0  5  30  0  总共  340  1500

从表八中可以看出,现有技术中服务器发送的这两个字段的的总字节数只有1840字节。相对与现有技术,因此本实施例提供的方法可让用户获得更多的数据信息,避免了用户希望获得的数据信息被截断,从而优化了服务器的数据过滤功能,增强了用户体验感。
在本发明实施例方法中,若字段的实际总长度超过了长度限制,则服务器再可以根据预设数据项优先级信息和/或字段截断策略选择截断或丢弃一些字段,如表九所示:
表九:
  数据项  DESCRIPTION字段  长度(单位:字节)  ATTACH字段长度  (单位:字节)  1  100  1000  2  150  1500  3  200  500  4  50  0  5  100  1940  总共  600  4940

服务器计算出两字段的实际总长度为5540字节,超出了容量限制40字节,此时服务器可以所述预设的数据项优先级信息和/或字段截断策略对字段进行截断或丢弃。
在本例的数据过滤请求中,对于ATTACH字段,设置<NoTruncate/>标识,该<NoTruncate/>标识表示不允许服务器截断该字段,若未设置该<NoTruncate/>标识,则表示允许服务器对该ATTACH字段进行截断。如在服务器中所述字段截断策略设置为对允许截断的字段进行截断,则此时服务器可以选择一个数据项,对它的DESCRIPTION字段进行截断,选择数据项的方法可以是按照数据项的优先级进行,优先级可以是按顺序从后往前、从前往后、按字段长度从大到小、从小到大、或是按用户预先对数据项指定的优先级进行。假设按从后往前的顺序选择,此时对数据项5的该字段进行截断,截断后该字段长度为60字节。再如按用户预先指定的优先级选择,假设数据项4的优先级最低,则对它的该字段进行截断,截断后为10字节。若选择一个数据项进行截断后,实际总长度仍然超过容量限制,则按照优先级选择另一个数据项进行截断。
再如,策略还可以设置为对不能截断的数据字段进行丢弃,选择数据项的方法仍然是按照上述的优先级进行,例如按字段长度从小到大的顺序,此时服务器选择对数据项3的ATTACH字段进行丢弃。
以上两个过滤策略还可以组合或交叉使用,例如先选择某个数据项的某字段进行丢弃,仍未满足容量限制时,再选择对某个数据项的某字段进行截断。或者其它可能的组合方式。通过上述描述可知,本例中所描述的容量限制为对过滤请求中所指定字段的字段容量限制。
C3、向客户端发送所述步骤C2生成的所述过滤数据。
此处,步骤C3与所述步骤B3类似,在此不予赘述。
参考图4,是本发明数据同步方法第四实施例的流程示意图,包括步骤:
D1、从客户端中获取弹性过滤标志信息或容量限制标志信息;
此处,客户端的DS管理对象中存储两个标志位节点,Flexible节点和Capacity节点,在数据同步之前由服务器主动获取这两个标志位的值。

其中:
<X>:DS管理对象的根节点;
<X>/Filter:是内部节点,用于存放过滤参数;
<X>/Filter/Flexible:是本发明实施例同步方法的弹性过滤标志位,有两个可用取值0或1,值为0时表示不采用弹性过滤,值为1时采用弹性过滤;
<X>/Filter/Capacity:是本发明实施例同步方法容量限制标志位,取值类型整数类型,范围是大于等于0,小于客户端存储器剩余容量,若为0表示不对过滤请求进行容量限制。
此处,<Capacity>容量限制的值可根据客户端剩余存储空间或客户端针对某数据库的剩余存储空间的大小进行设置。
在同步操作前服务器使用Get命令从该管理对象中获得相应标志位值,用以决定在后续的同步操作中,对数据项过滤的处理方法,这两个标志位的值可以是由用户在本地或通过服务器远程指定的,也可以是客户端根据当前的存储器情况自动指定。
D2、获取容量限制信息。
此处,若在所述步骤D1中获取的是来自客户端的弹性过滤标志信息,则接收来自所述客户端的数据过滤请求后,解析该数据过滤请求,获取数据过滤条件,根据所述弹性标志位信息以及满足所述数据过滤条件的数据项数获取所述容量限制信息;若在所述步骤D1中获取的是来自客户端的容量限制标志信息,则直接根据该标志位的值确定容量限制,获取容量限制信息。
D3、根据所述容量限制信息,执行数据过滤操作,生成过滤数据。
D4、向客户端发送所述步骤D3生成的所述过滤数据。
参考图五,是本发明数据同步方法第五实施例的流程示意图,包括步骤:
E1、接收携带有字段最小长度限制信息的数据过滤请求,并从该数据过滤请求中获取所述字段最小长度限制信息;
E2、根据所述字段最小长度限制信息,执行数据过滤操作,生成过滤数据;
此处,在步骤E1、步骤E2中,具体实现时,可在来自客户端(数据过滤请求的发送方)的数据过滤请求中增加一个字段最小长度限制MinSize元素以限制服务器下发的数据项的某些字段不能小于一个阈值,这样用户可以灵活的获得一些上次同步时被丢弃的字段,提升了用户体验。该元素还需被加入到服务器的设备信息中,以使服务器支持此功能。例如在一具体实施例中,客户端发起的一个数据过滤请求如下:
<Alert>
<Data>200</Data>
<Item>
     <Target>
              <Filter>
            <Meta>
               <Type>text/x-vcalendar</Type>
            </Meta>
            <Field>
               <Item>
                  <Data>
                    <![CDATA[
                        <Property>
                           <PropName>ATTACH</PropName>
                           <PropInfo>
                              <MinSize>1000</MinSize>
                           </PropInfo>
                        </Property>
                     ]]>
                  </Data>
              </Item>
           </Field>
        </Filter>
     </Target>
     <Source>
        <LocURI>dev-tasks</LocURI>
     </Source>
 </Item>
</Alert>
本例在过滤请求的ATTACH字段部分增加了<MinSize>1000</MinSize>描述,表示只同步ATTACH字段长度大于1000字节的那些数据项。若在本次数据同步的上一次同步过程中是指定了同步ATTACH字段长度小于1000字节的那些数据项,也即上次同步会将ATTACH字段长度大于1000字节的那些数据项丢弃,这样通过本例的同步过程,客户端就可获得了上次同步时一些被丢弃的字段,提升了用户体验。<MinSize>与<Maxsize>一样,属于<PropInfo>元素的子元素,该元素还需被加入到服务器的设备信息中,以使服务器支持此功能。
E3、向客户端发送所述过滤数据。
下面对与上述方法实施例相应客户端、服务器进行详细说明。
参考图6,是本发明客户端实施例的组成示意图,如图所示:本例所述客户端主要包括:
请求生成单元11,用于生成携带有容量限制信息的数据过滤请求;
请求发送单元12,用于向服务器发送所述携带有容量限制信息的数据过滤请求;
过滤数据接收单元13,用于接收来自服务器的根据所述数据过滤请求生成的过滤数据;
同步更新单元14,用于根据所述过滤数据同步更新本地数据库。
此处,在本例中,客户端根据用户输入的指示或自动触发方式,由所述请求生成单元11生成携带有容量限制信息的数据过滤请求,并通过请求发送单元12向服务器发送该携带有容量限制信息的数据过滤请求,服务器接收到该数据过滤请求后,根据该请求中携带的容量限制信息,生成过滤数据,并向客户端发送该生成的过滤数据,客户端通过所述过滤数据接收单元13接收该过滤数据,然后由同步更新单元14根据所述过滤数据同步更新本地数据库。
参考图7,是本发明服务器的实施例组成示意图,如图所示:本例所述服务器主要包括:
获得单元21,用于获得容量限制信息;
此处,若用于执行本发明数据同步方法第一实施例所述方法时,参考图8,该获得单元21主要包括:
第一接收单元2111,用于接收携带有容量限制信息的数据过滤请求;
第一容量限制信息获取单元2112,用于从所述数据过滤请求中获取所述容量限制信息。
此处,若用于执行本发明数据同步方法第二实施例所述方法时,参考图9,所述获得单元21主要包括:
第二接收单元2121,用于接收携带有弹性过滤标志信息的数据过滤请求;
第一获取单元2122,用于从所述数据过滤请求中获取所述弹性过滤标志信息以及数据过滤条件;
第二容量限制信息获取单元2123,用于根据所述弹性过滤标志信息以及满足所述数据过滤条件的数据项数获取所述容量限制信息。
此处,若用于执行本发明数据同步方法第三实施例所述方法时,参考图10,所述获得单元21主要包括:
弹性过滤标志获取单元2131,用于从客户端获取弹性过滤标志信息;
第三接收单元2132,用于接收来自所述客户端的数据过滤请求;
第二获取单元2133,用于从所述数据过滤请求中获取数据过滤条件;
第三容量限制信息获取单元2134,用于根据所述弹性过滤标志信息以及满足所述数据过滤条件的数据项数获取所述容量限制信息。
过滤数据生成单元22,用于根据所述容量限制信息,执行数据过滤操作,生成过滤数据;
发送单元23,用于向客户端发送所述过滤数据。
在本例中,服务器通过所述获得单元21获得容量限制信息,过滤数据生成单元22根据所述获得单元21获得的所述容量限制信息,执行数据过滤操作,生成过滤数据,并通过发送单元23向客户端发送所述过滤数据。
当本例所述的服务器用于执行本发明数据同步方法第二实施例所述方法时,本例中所述获得单元21主要包括第一接收单元2111和第一容量限制信息获取单元2112,此时,服务器通过所述第一接收单元2111接收来自客户端的携带有容量限制信息的数据过滤请求,并通过所述第一容量限制信息获取单元2112从所述数据过滤请求中获取所述容量限制信息。
当本例所述的服务器用于执行本发明数据同步方法第三实施例所述方法时,本例中所述获得单元21主要包括第二接收单元2121、第一获取单元2122和第二容量限制信息获取单元2123,此时,服务器通过所述第二接收单元2121接收来自客户端的携带有弹性过滤标志信息的数据过滤请求,并通过所述第一获取单元2122从所述数据过滤请求中获取所述弹性过滤标志信息以及数据过滤条件,然后通过所述第二容量限制信息获取单元2123根据所述弹性过滤标志信息以及满足所述数据过滤条件的数据项数获取所述容量限制信息。
当本例所述的服务器用于执行本发明数据同步方法第四实施例所述方法时,本例中所述获得单元21主要包括弹性过滤标志获取单元2131、第三接收单元2132、第二获取单元2133以及第三容量限制信息获取单元2134,此时,服务器通过所述弹性过滤标志获取单元2131从客户端获取弹性过滤标志信息,并通过第三接收单元2132接收来自所述客户端的数据过滤请求,由第二获取单元2133从所述数据过滤请求中获取数据过滤条件,然后通过第三容量限制信息获取单元2134根据所述弹性过滤标志信息以及满足所述数据过滤条件的数据项数获取所述容量限制信息。
实施本发明实施例,服务器获得来自客户端的容量限制信息,根据该容量限制信息,执行数据过滤操作,生成过滤数据,从而优化了服务器的数据过滤功能,提升了用户体验感。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

数据同步方法、客户端以及服务器.pdf_第1页
第1页 / 共31页
数据同步方法、客户端以及服务器.pdf_第2页
第2页 / 共31页
数据同步方法、客户端以及服务器.pdf_第3页
第3页 / 共31页
点击查看更多>>
资源描述

《数据同步方法、客户端以及服务器.pdf》由会员分享,可在线阅读,更多相关《数据同步方法、客户端以及服务器.pdf(31页珍藏版)》请在专利查询网上搜索。

本发明公开了一种数据同步方法,包括:获得容量限制信息;根据所述容量限制信息,执行数据过滤操作,生成过滤数据;将生成的过滤数据发送给过滤请求的发送方。同时,本发明还公开了相应的客户端和服务器,本发明实现了服务器通过获得来自客户端的容量限制信息,根据该容量限制信息,执行数据过滤操作,生成过滤数据,从而优化了服务器的数据过滤功能,提升了用户体验感。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1