KR20080039387A - 부분적인 아이템 변경 추적 및 동기화 - Google Patents

부분적인 아이템 변경 추적 및 동기화 Download PDF

Info

Publication number
KR20080039387A
KR20080039387A KR1020087002131A KR20087002131A KR20080039387A KR 20080039387 A KR20080039387 A KR 20080039387A KR 1020087002131 A KR1020087002131 A KR 1020087002131A KR 20087002131 A KR20087002131 A KR 20087002131A KR 20080039387 A KR20080039387 A KR 20080039387A
Authority
KR
South Korea
Prior art keywords
attribute
item
attribute groups
data
groups
Prior art date
Application number
KR1020087002131A
Other languages
English (en)
Other versions
KR101312810B1 (ko
Inventor
알렉 씨. 던
요셉 알. 워렌
로버트 알. 노비츠키
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=37758031&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20080039387(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080039387A publication Critical patent/KR20080039387A/ko
Application granted granted Critical
Publication of KR101312810B1 publication Critical patent/KR101312810B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/216Handling conversation history, e.g. grouping of messages in sessions or threads
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/234Monitoring or handling of messages for tracking messages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Software Systems (AREA)
  • Mathematical Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)

Abstract

본 발명의 실시예들은 두 장치들 간에서 아이템 동기화가 다루어지고 추적되는 방식을 변경한다. 아이템들에 대한 변경은 정의된 속성 그룹들에 따라 추적되고 각 그룹은 서로 독립적으로 추적된다. 예를 들어, 하나의 그룹은 예컨대 첨부물과 같은 대용량 데이터 아이템을 포함할 수 있는 반면, 다른 그룹은 추종 플래그와 같은 높은 휘발성 속성을 포함할 수 있다. 본 발명은 아이템 내의 각 개별적인 속성의 변경을 모니터링하지 않고, 변경된 하나의 아이템의 선택 부분들만은 동기화함으로써 클라이언트 및 서버 간의 동기화 속도를 증가시킨다. 따라서, 만약 상대적으로 큰 이메일 메시지 상의 작은 데이터 속성(예컨대, 추종 플래그)에 대해 변경이 이루어진다면, 이러한 변경은 캐싱된 모드(cached mode) 하에서 실행하는 클라이언트에 대용량 다운로드를 유발하지 않을 뿐만 아니라, 각 개별적인 속성을 추적하기 위한 프로세싱 및 대용량 저장소도 필요로 하지 않을 것이다.
Figure P1020087002131
동기화, 서버, 클라이언트, 속성 그룹(property group), 데이터 아이템, 변경

Description

부분적인 아이템 변경 추적 및 동기화{PARTIAL ITEM CHANGE TRACKING AND SYNCHRONIZATION}
랩탑, 핸드헬드(handheld) 및 다른 휴대용 컴퓨터 또는 컴퓨팅 장치들은 이러한 장치들의 크기가 작아지고 가격이 저렴해짐에 따라 인기를 얻고 있다. 또한, 휴대용 컴퓨터의 향상된 오퍼레이팅 속도 및 프로세싱 능력으로 더 큰 인기를 얻고 있다. 많은 휴대용 컴퓨터들은 주소록, 게임, 계산기 등과 같은 복수의 애플리케이션 프로그램을 저장할 수 있다. 이 애플리케이션 프로그램들은 제조과정에서 휴대용 컴퓨터 내에 (예컨대, ROM에) 영구적으로 설치될 수 있다. 이와 달리, 휴대용 컴퓨터를 구입한 후에 하나 이상의 프로그램들이 사용자에 의해 설치될 수 있다.
이러한 장치들의 인기와 컴퓨팅 능력이 증가함에 따라, 사람들은 하나 보다 많은 컴퓨팅 장치를 이용하여 데이터 및 애플리케이션들을 저장하기 시작하고 있다. 예를 들어, 많은 사람들은 종종 자신의 일반 데스크탑 컴퓨터에 더하여 랩탑 컴퓨터를 사용한다. 셀룰라 텔레폰, PDA(Personal Digital Assistance), 인터넷 서비스 등이 데이터 및 애플리케이션을 저장하는데 또한 사용된다.
이러한 각각의 컴퓨팅 장치들은 분산 컴퓨팅 시스템의 일부가 될 수 있고, 여기서 관련 정보가 상관되고(correlated) 이러한 복수의 장치들에 저장될 수 있 다. 예를 들어, 캐싱된 모드(cashed mode)로 실행되는 이메일 클라이언트는 이 클라이언트에서 지역적으로 메일박스의 복사를 유지하도록 설계된다. 만약 사용자가 PDA 및 데스크탑을 갖는다면, 각 장치는 이들에 지역적으로 저장되는 이메일 아이템을 가질 것이다. 이상적으로, PDA의 이메일 정보는 데스크탑 워크 컴퓨터의 이메일 정보와 일치하여야 한다.
동일 또는 연관된 정보가 두 곳에 저장되는 경우, 한 곳에서만 데이터를 변경하고 다른 곳에서는 변경하지 않을 수 있다. 이 문제는 동기화를 통해 해결될 수 있는데, 여기서 동기화란 분배 시스템 내의 각 장치가 가장 최근의 정보 또는 데이터를 갖도록 하는 자동 프로세스를 말한다. 그러나, 동기화는 자체 문제를 지닌다. 예를 들어, 두 장치가 서로 동기화하는 경우, 일반적으로 이러한 시스템들은 매 아이템마다, 예컨대 이메일 메시지, 연락처(contact), 예약마다 변경을 추적한다. 따라서, 두 장치 또는 컴퓨팅 장치가 동기화를 시도하는 경우, 전체 아이템은 변경된 속성(property)(예컨대, 플래그, 첨부물, 바디(body), 수신인(recipient) 등)의 크기에 상관없이 다운로드된다. 일부 고 대역 전송 시스템의 경우 이러한 전체 아이템 추적 및 동기화 프로세스는 크게 문제가 되지 않을 수 있지만, 무선 접속과 같은 느린 링크를 사용하는 경우 전체 아이템을 다운로드하고 스트리밍하는 것은 데이터 전송 속도에 심하게 제한을 가할 수 있다.
예를 들어 추종(follow-up) 플래그 속성, 수신인 속성, 바디 속성 및 하나 이상의 첨부물 속성을 포함하는 이메일 메시지를 생각해 볼 수 있다. 만약 추종 플래그의 색이 변하면, 다른 장치와 동기화하는 경우 전체 아이템이 다운로드되어 야 한다. 만약 이메일 내의 첨부물 및 다른 데이터가 상대적으로 크다면, 추종 플래그 내의 이러한 상대적으로 작은 바이트 크기의 변경으로 전체 아이템이 다운로드 되어 느린 데이터 링크를 통한 용량이 큰 데이터 전송은 많은 시간이 걸리게 된다.
고 대역 데이터 링크가 사용된다 하더라도, 전체 아이템을 다운로드하는 것은 바람직하지 않다. 예를 들어, 다운로드된 바이트 수에 기초하여 사용자가 다운로드한 아이템에 대해 비용을 지불하는 경우, 예컨대, 상기 언급된 추종 플래그와 같은 아이템 상에 적은 양의 데이터가 변경되더라도, 사용자는 다운로드된 전체 아이템에 대하여 지불해야만 한다. 이러한 비용의 낭비는 사용자에게 큰 불만을 가져다 줄 수 있다.
일부 복제 시스템들이 매 아이템마다 장치들을 추적하고 동기화하는 시스템의 결점들을 해결하는 한 방안이 될 수 있다. 일부 복제 시스템들이 속성 기반 변경의 추적을 제공하지만, 이러한 시스템들은 자체 문제를 여전히 않고 있다. 예를 들어, 많은 수의 아이템에 대한 각 개별적인 속성의 추적은 큰 저장소 및 고성능 프로세싱 요건을 필요로 한다. 이로써, 이러한 추적 및 동기화 시스템은 대부분의 사용에 있어 비현실적이다.
현재 동기화 시스템들의 상기 언급된 결점 및 단점은 본 발명의 실시예를 통해 극복된다. 이하의 상세한 설명은 아래의 실시예에서 더욱 설명되는 내용을 간단한 개념으로 소개하기 위해 제공된다. 그러나, 본 설명은 청구된 대상물의 요점 또는 필수 특징을 식별하는 것이 아닐 뿐만 아니라, 청구된 대상물의 범위를 결정하는데 보조 역할을 하는 것으로 사용되는 것도 아니다.
일 실시예에서, 아이템 내의 각각의 개별 속성의 변경을 모니터링하지 않고 변경된 아이템의 선택 부분들만을 동기화함으로써 클라이언트 및 서버 간의 동기화 속도를 증가시키기 위한 방법, 시스템 및 컴퓨터 프로그램 제품이 제공된다. 이 실시예에서, 서버 및 클라이언트 간의 최종 동기화 이후 변경된 데이터 아이템들의 동기화 요구가 수신되는데, 데이터 아이템은 수정되거나 변경될 수 있는 복수의 속성들을 갖는 완전 메시지를 나타낸다. 이 데이터 동기화 요구에 응답하여, 우선 최종 동기화 이후 데이터 아이템이 변경되었다고 결정된다. 이러한 데이터 아이템은 복수의 속성 그룹들 각각 내의 속성들이 어떻게 연관되는지의 의미의 이해 및 산업 지식에 기초하여 사전결정되는 복수의 속성 그룹들을 포함한다. 다음으로, 최종 동기화 이후 복수의 속성 그룹들 중 적어도 하나의 속성 그룹이 변경되었다고 결정된다. 따라서, 이 적어도 하나의 속성 그룹은 동기화시 클라이언트 및 서버 간의 데이터 전송 시간을 줄이기 위해 적어도 하나의 데이터 아이템 전체를 스트리밍하지 않고 동기화될 수 있다.
또 다른 실시예에서, 아이템 내의 각각의 개별 속성의 변경을 모니터링하지 않고, 클라이언트 및 서버 간의 동기화 속도를 증가시키기 위해 아이템의 선택 부분들에 대한 변경을 추적하는 방법, 시스템 및 컴퓨터 프로그램 제품이 제공된다. 이 실시예에서, 수정되거나 변경될 수 있는 복수의 속성들을 갖는 완전 메시지인 복수의 데이터 아이템들이 동기화하기 위해 모니터링된다. 이러한 모니터링 동안, 클라이언트 및 서버 간의 최종 동기화 이후 데이터 아이템이 변경되었다고 결정되는데, 이 데이터 아이템은 복수의 속성 그룹들 각각 내의 속성들이 어떻게 관련되는지의 의미의 이해 및 산업 지식에 기초하여 사전정의되는 복수의 속성 그룹들을 포함한다.
데이터 아이템이 변경되었다는 판단에 기초하여, 데이터 아이템과 연관된 아이템 변경 식별자가 업데이트되는데, 이 식별자는 클라이언트와 동기화를 위해 데이터 아이템이 변경되었다는 것을 식별하는데 사용된다. 따라서, 최종 동기화 이후 복수의 속성 그룹들 중 적어도 하나의 속성 그룹이 변경되었다고 역시 결정된다. 적어도 하나의 속성 그룹이 변경되었다는 결정에 기초하여, 적어도 하나의 속성 그룹과 연관된 속성 그룹 변경 식별자가 업데이트되는데, 이 식별자는 클라이언트 및 서버 간의 데이터 전송 시간을 줄이기 위해 이 적어도 하나의 속성 그룹만이 클라이언트와 동기화되도록 이 적어도 하나의 속성 그룹이 변경되었다고 식별하는데 사용된다.
다른 실시예에서, 본 발명은 아이템 데이터 구조를 저장하고 있는 하나 이상의 컴퓨터 판독가능 매체를 제공한다. 아이템 데이터 구조는 수정되거나 변경될 수 있는 복수의 속성들; 클라이언트와의 최종 동기화 이후 복수의 속성들 중 하나 이상이 수정되거나 변경되었는지를 나타내는 아이템 변경 식별자; 복수의 속성들 중 하나 이상의 속성을 각각 포함하는 복수의 속성 그룹들로서, 복수의 속성 그룹들은 복수의 속성 그룹들 각각 내의 하나 이상의 속성이 어떻게 관련되는지의 의미의 이해 및 산업 지식에 기초하여 사전정의되는 복수의 속성 그룹들; 및 아이템 전체를 동기화하지 않고 변경된 속성 그룹들만을 동기화하기 위해 복수의 속성 그룹들 중 어느 것이 변경되었는지를 나타내는 복수의 속성 그룹 변경 식별자들을 포함한다.
본 발명의 추가적인 특징 및 장점들이 다음의 실시예에서 설명될 것이고, 이들은 부분적으로 실시예를 통해 봤을 때 자명한 것이거나, 본 발명의 실시를 통해 얻어질 수 있다. 본 발명의 특징 및 장점들은 첨부된 청구항들에서 특히 언급된 도구 및 조합에 의해 현실화되거나 얻어질 수 있다. 본 발명의 이러한 특징들은 다음의 실시예 및 첨부된 청구항을 통해 자명해지거나, 이하 설명되는 본 발명의 실시를 통해 습득될 수 있다.
상기 언급된 본 발명의 여러 이점 및 특징들을 얻을 수 있는 방법을 설명하기 위하여, 위에서 간략히 설명한 본 발명의 보다 자세한 설명이 첨부된 도면에 의해 설명되는 특정 실시예들에 따라 설명될 것이다. 도면은 본 발명의 일반적인 실시예를 도시한 것에 불과하고 따라서 권리범위를 제한하는 것으로 간주되어서는 안되며, 본 발명은 첨부된 도면을 사용하여 보다 구체적 및 자세하게 도시 및 설명될 것이다.
도 1a는 일 실시예에 따라 속성 그룹들만을 동기화하는 분배 시스템을 도시한 도면.
도 1b는 일 실시예에 따라 아이템에 대한 속성 그룹들의 매핑을 도시한 도면.
도 1c는 일 실시예에 따라 동기화 아이템 스트림 예를 도시한 도면.
도 2a는 일 실시예에 따라 클라이언트 및 서버 간의 동기화 속도를 증가시키는 방법의 흐름도.
도 2b는 일 실시예에 따라 아이템의 선택 부분들에 대한 변경들을 추적하는 방법의 흐름도.
도 3은 본 발명의 다양한 특징을 구현하기 위한 적합한 오퍼레이팅 환경을 제공하는 컴퓨팅 시스템 예를 도시한 도면.
본 발명은 변경된 아이템의 선택 부분들만을 동기화하여 동기화 속도를 증가시키는 방법, 시스템 및 컴퓨터 프로그램에 관한 것이다. 본 발명의 실시예들은 아래에서 보다 자세하게 설명될 다양한 컴퓨터 하드웨어 또는 모듈을 비롯한 특수용 또는 범용 컴퓨터를 포함할 수 있다.
본 명세서의 상세한 실시예들을 논의하기 전에, 본 명세서에서 사용되는 일부 용어들을 정의하겠다. 먼저, "데이터 아이템(data item)" 또는 "아이템(item)"은 수정되거나 변경될 수 있는 속성을 갖는 완전 메시지(complete message)를 나타내는데 사용된다. 예를 들어, 데이터 아이템은 완전 이메일 메시지, 완전 연락처, 완전 약속, 완전 작업, 완전 스티키 노트(sticky not) 또는 두 컴퓨팅 장치들 사이에서 동기화될 수 있는 임의의 다른 유형의 메시지가 될 수 있다. 아이템에 대한 "속성(property)"이란 다른 속성들과 독립적으로 수정되거나 변경될 수 있는 메시지의 부분을 나타낸다. 이러한 속성들의 예는 추종 플래그, 우선순위 플래그, 아 이템의 바디, 개별 첨부물들, 개별 수신인, 메시지 상태, 메시지 우선순위, 또는 임의의 다른 공지의 메시지 속성을 포함한다. 실시예들은 아래에서 자세하게 설명될 "속성 그룹들(property groups)"로 나누어질 수 있는데, 이들은 각각의 속성 그룹들 내의 속성들이 어떻게 연관되는지에 대한 의미의 이해 및 산업 지식에 기초한다.
본 명세서의 실시예들은 두 장치들 예컨대 서버 클라이언트 사이에서 아이템 동기화가 다루어지고 추적되는 방식을 변경한다. 아이템들에 대한 변경은 위에서 언급한 정의된 속성 그룹들에 놓여지고 각 그룹은 각자 독립적으로 추적된다. 예를 들어, 하나의 그룹은 아이템 바디를 포함할 수 있고, 다른 그룹은 첨부물들을 포함할 수 있으며, 또 다른 그룹은 추종 플래그, 읽기 상태(read status), 우선순위 플래그 등과 같은 높은 휘발성 속성을 포함할 수 있다. 이 속성 그룹들은 산업 지식에 기초하여 정의되기 때문에, 본 명세서의 실시예들은 데이터 전송 속도와 일반적인 복제 시스템에 필요한 저장소 및/또는 프로세싱 요건들 간의 균형을 맞춘다. 즉, 본 발명은 아이템 내의 각 개별적인 속성의 변경을 모니터링하지 않고, 변경된 하나의 아이템의 선택 부분들만을 동기화함으로써 클라이언트 및 서버 간의 동기화 속도를 증가시킨다. 따라서, 만약 상대적으로 큰 이메일 메시지 상의 작은 데이터 속성(예컨대, 추종 플래그)에 대해 변경이 이루어지는 경우, 이러한 변경은 캐싱된 모드(cached mode) 하에서 실행하는 클라이언트에 대용량 다운로드를 유발하지 않을 뿐만 아니라, 각 개별적인 속성을 추적하기 위한 프로세싱 및 대용량 저장소도 필요로 하지 않을 것이다.
본 발명의 다양한 실시예들을 더 자세하게 설명하기에 앞서, 본 발명의 원리를 구현하는데 사용될 수 있는 적합한 컴퓨팅 아키텍처가 도 3과 관련하여 설명될 것이다. 아래의 설명에서, 본 발명의 실시예들은 다르게 기술되지 않는한 하나 이상의 컴퓨터에 의해 수행되는 동작들(operations)의 단계들(acts) 및 기호 표현과 관련하여 설명된다. 때로는 컴퓨터 실행됨(computer-executed)으로 불리우는 이러한 단계 및 동작들은 구조화된 형태의 데이터를 표현하는 전자신호들의 컴퓨터의 프로세싱 유닛에 의한 조작을 포함한다. 이 조작은 컴퓨터의 메모리 시스템의 위치에 있는 데이터를 변환하거나 유지하는데, 이는 당업자가 아는 방식으로 컴퓨터의 동작을 변경하거나 재구성한다. 데이터가 유지되는 데이터 구조는 데이터의 포맷에 의해 정의되는 특정 속성들을 갖는 메모리의 물리적 위치들이다. 그러나, 본 발명의 원리들이 위에서 설명되었지만, 이는 제한적인 것으로 해석되어서는 안되며 당업자라면 이하에서 설명되는 단계 및 동작들이 하드웨어로 구현될 수 있다는 것을 알 것이다.
도면으로 돌아와서, 동일한 참조 부호는 동일한 요소를 의미하고, 본 발명의 원리는 적합한 컴퓨팅 환경에서 구현되는 것으로 설명된다. 다음의 설명은 본 발명의 예시된 실시예들에 기초하고 본 명세서에서는 명확히 기재되지 않은 다른 실시예와 관련하여서 본 발명을 제한해석하여서는 안된다.
도 3은 이러한 장치들에 대하여 사용가능한 컴퓨터 아키텍처 예의 개략도를 보여준다. 설명을 목적으로, 도시된 아키텍처는 적합한 환경의 일 예일 뿐이고, 본 발명의 사용 또는 기능성의 범위 제한을 의미하는 것은 아니다. 컴퓨팅 시스템 들은 도 3에 도시된 임의의 하나의 구성요소 또는 이의 조합에 관한 요건(requirement) 또는 종속성을 가지는 것으로 해석되어서는 안된다.
본 발명의 원리들은 다양한 기타 범용이나 특수용 컴퓨팅, 통신 환경 또는 구성들과 동작할 수 있다. 본 발명과 사용하기에 적합한 공지의 컴퓨팅 시스템, 환경 및 구성 예는 모바일 텔레폰, 포켓 컴퓨터, 퍼스널 컴퓨터, 서버, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 미니컴퓨터, 메인프레임 컴퓨터 및 위의 임의의 시스템 또는 장치들을 포함하는 분배 컴퓨팅 환경을 포함한다.
대부분의 기초 구성에서, 컴퓨팅 시스템(300)은 일반적으로 적어도 하나의 프로세싱 유닛(302) 및 메모리(304)를 포함한다. 메모리(304)는 휘발성(예컨대 RAM), 비휘발성(예컨대, ROM, 플래시 메모리 등) 또는 이 둘의 조합이 될 수 있다. 이 가장 기본적인 구성은 도 3에서 점선(306) 내에 도시된다. 명세서 및 청구항에서, "컴퓨팅 시스템(computing system)"은 임의의 하드웨어 구성요소 또는 기능(function)을 수행하기 위한 마이크로코드, 펌웨어, 또는 소프트웨어를 실행할 수 있는 하드웨어 구성요소들의 조합으로 정의된다. 컴퓨팅 시스템은 분배 기능을 달성하도록 분배될 수 있다.
저장 매체 장치들은 추가적인 특징 및 기능성을 가질 수 있다. 예를 들어, 이들은 PCMCIA 카드, 자기 및 광 디스크, 자기 테이프를 비롯한 추가적인 저장소(착탈식 및 비착탈식)를 포함할 수 있지만 이에 제한되는 것은 아니다. 이러한 추가적인 저장소는 도 3에서 착탈식 저장소(308) 및 비착탈식 저장소(310)로 도시되어 있다. 컴퓨터 저장소 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로 그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 착탈식 및 비착탈식 매체를 포함한다. 메모리(304), 착탈식 저장소(308), 및 비착탈식(310)은 모두 컴퓨터 저장 매체의 예들이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 및 컴퓨팅 시스템에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다.
본 명세서에서 사용된, "모듈(module)" 또는 "구성요소(component)" 용어는 컴퓨팅 시스템에서 실행하는 소프트웨어 객체들 또는 루틴들을 의미할 수 있다. 본 명세서에 설명된 여러 구성요소, 엔진 및 서비스는 컴퓨팅 시스템에서 실행하는객체 또는 프로세스(예컨대, 개별적인 스레드)로 구현될 수 있다. 본 명세서에 설명된 시스템 및 방법들이 바람직하게 소프트웨어로 구현되지만, 하드웨어로 구현 될 수 있으며, 또는 소프트웨어 및 하드웨어의 조합으로 구현될 수도 있다. 본 명세서에서, "컴퓨팅 개체(computing entity)"는 본 명세서에서 이미 정의된 임의의 컴퓨팅 시스템 또는 컴퓨팅 시스템에서 실행되는 모듈들의 조합이 될 수 있다.
컴퓨팅 시스템(300)은 호스트로 하여금 예컨대, 네트워크(320)를 통해 다른 시스템 및 장치들과 통신할 수 있도록 하는 통신 채널(312)을 포함할 수 있다. 통신 채널(312)은 통신 매체의 예이다. 통신 매체는 일반적으로 반송파 또는 기타 전송 메커니즘과 같은 변조된 데이터 신호의 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈, 또는 기타 데이터를 포함하고 임의의 정보 전달 매체를 포함한다. 예를 들건대, 통신 매체는 유선 네트워크 및 직접 유선 접속과 같은 유선 매체, 음향, 라디오, 적외선, 또는 기타 무선 매체와 같은 무선 매체를 포함하지만, 이에 제한되지 않는다. 본 명세서에서 사용되는 컴퓨터 판독가능 매체라는 용어는 저장 매체 및 통신 매체 모두를 포함한다.
컴퓨팅 시스템(300)은 키보드, 마우스, 펜, 음성 입력 구성요소, 터치 입력 구성요소 등과 같은 입력 구성요소(314)를 포함할 수 있다. 출력 구성요소(316)는 스크린 디스플레이, 스피커, 프린터 등 및 이들을 구동시키기 위한 렌더링 모듈(rendering module)(종종 "어댑터(adapters)")을 포함한다. 컴퓨팅 시스템(300)은 파워 서플라이(318)를 갖는다. 이 모든 구성요소는 공지되어 있고 본 명세서에서 자세히 설명하지 않는다.
도 1a는 일 실시예에 따른 클라이언트(105) 및 서버(125) 간의 속성 그룹들(104)을 동기화하기 위한 분배 시스템(100)을 도시한다. 분배 시스템(100)은 도 3과 관련하여 위에서 설명된 컴퓨팅 시스템(300)과 유사할 수 있지만, 꼭 그럴 필요는 없다. 도 1a에 도시된 바와 같이, 분배 시스템(100)은 많은 컴퓨팅 장치들(110, 115 등) 중 하나가 될 수 있는 클라이언트(105)를 포함한다. 예를 들어, 클라이언트(105)는 전화(110), PDA(110), 랩탑 컴퓨터(115), 또는 임의의 기타 컴퓨팅 장치와 같은 무선 장치가 될 수 있다.
본 발명은 데이터 링크의 속도가 느린 시스템, 예컨대, 무선 통신에서 매우 유리하다. 그러나, 본 발명은 이러한 링크에 한정되는 것은 아니고 임의의 환경에 활용될 수 있다. 예를 들어, 위에서 언급한 바와 같이, 본 발명은 서버(125)에서 클라이언트(105)로 전송되는 데이터량에 기초하여 사용자로 하여금 서비스에 대해 지불하도록 하는 시스템에서 활용될 수 있다. 따라서, 서버(125) 및 클라이언트(105) 간의 특정 데이터 링크에 대한 특정 언급은 예시적인 목적으로 본 명세서에서 사용되며 명시적으로 청구하지 않는 이상 본 발명의 범위를 제한하거나 좁히는 것을 의미하지 않는다.
본 발명이 서버(125) 및 클라이언트(105)에 관하여 설명될 것이지만, 본 명세서의 실시예들을 설명하는데 있어 이러한 장치들의 역할은 상호변경될 수 있다. 예를 들어, 다음의 설명은 서버(125) 상에서 발생하는 아이템들(170)의 변경들에 따라 설명될 것인데, 여기서 이러한 변경들은 클라이언트(105)에 대한 변경들을 스트리밍함으로써 동기화된다. 그러나, 클라이언트(105) 상의 변경들도 또한 추적되고 서버(125)로 업로드될 수 있다. 서버(125) 및 클라이언트(105) 간에 발생하는 이벤트들에 대한 다음의 설명 및 클라이언트(105) 또는 서버(125) 둘 중의 하나를 위해 사용되는 임의의 특정 장치는 본 명세서에서 예시적인 목적으로 사용되고 명시적으로 청구하지 않는 한 본 발명의 범위를 제한하거나 좁히는 것을 의미하지 않는다.
도 1a에 도시된 바와 같이, 서버(125)는 복수의 폴더(165)(예컨대, 폴더 "A")를 포함하는데, 각 폴더(165)는 특정 타입의 아이템들(170)을 나타내거나 포함할 수 있다. 예를 들어, 폴더(165)는 이메일 아이템 메시지들을 포함할 수 있는데, 다른 폴더(165)가 연락처 아이템 정보를 포함할 수 있다. 물론, 이전 언급된 바와 같이, 본 명세서에서 제공된 실시예에 따라 동기화될 수 있는 많은 아이템 타입들이 있을 수 있다. 또한, 폴더들(165) 외에 다른 토폴로지 및 데이터 구성이 본 발명을 실시하는데 사용될 수 있다. 예를 들어, 여러 타입의 아이템들(170)을 다양하게 분리하고 저장하는 표 또는 기타 방법들이 본 발명에 사용될 수 있다. 따라서, 임의의 특정 토폴로지, 데이터 포맷, 및/또는 저장 계층은 본 명세서에서 예시적인 목적으로만 사용되는 것이고 본 발명의 범위를 제한하거나 좁히는 것을 의미하지 않는다.
각 폴더(165)는 위에서 언급한 바와 같이, 복수의 아이템들(170)(예컨대, 아이템 "A")을 포함할 것이다. 아래에서 자세히 설명되는 바와 같이, 서버(125) 및 클라이언트(105) 간의 최종 동기화 이후 아이템(170) 및 이의 속성이 언제 변경되었는지를 식별하는데 사용될 수 있는 아이템 변경 식별자(ID; 175)가 각 아이템(170)과 연관된다. (또한 속성 그룹들(180)(예컨대, 속성 그룹 "A")이 각 아이템(170) 내에 포함된다). 상기 언급한 바와 같이, 속성 그룹들(180)은 복수의 속성 그룹들(180) 각각 내의 속성들이 어떻게 연관되는지에 대한 의미의 이해 및 산업 지식에 기초하여 사전정의된다. 예를 들어, 속성 그룹들은 속성들의 휘발성, 일반 메모리 크기 요건, 및/또는 기타 고려사항들에 기초하여 결정될 수 있다. 또한, 속성 그룹(180)은 메시지 상태, 추종 플래그, 우선순위 플래그, 또는 자주 수정 및/또는 변경되는 기타 속성들과 같은 휘발성이 높은 속성들을 포함할 수 있다.
이와 달리, 또는 더하여 속성 그룹(180)은 다른 속성들과 비교했을 때 속성들의 상대적 크기에 기초하여 정의될 수 있다. 예를 들어, 첨부물들은 다른 속성 들보다 일반적으로 크기가 커서 한 속성 그룹에 속할 수 있는 반면, 수신인 및/또는 메시지의 바디와 같은 작은 크기의 데이터는 다른 속성 그룹(180)에 속할 수 있다. 다른 속성들과 잘 관련되지 않는 속성들에 대한 기타 속성 그룹(180)이 있을 수 있다.
속성 그룹들(180)이 현재 산업 지식에 기초하여 사전정의되지만, 이러한 지식은 변경되기 마련이다. 따라서, 실시예들에 있어서 속성 그룹들(180)은 확장가능하고, 플러깅가능(pluggable)하고, 스케일가능(scalable)하다. 즉, 속성 그룹들(180)은 각 속성 그룹(180) 내의 속성들이 이동, 삭제, 추가 및/또는 수정될 수 있는 방식으로 구성된다. 마찬가지로, 속성 그룹들(180) 자체가 재정의, 생성 및/또는 삭제될 수 있다. 또한, 속성 그룹들(180)의 정의는 아이템(170) 타입에 따라 변할 수 있다. 예를 들어, 이메일 아이템(170)에 대해 정의된 속성 그룹들(180)은 연락처 아이템들(170)에 대해 정의된 속성 그룹들(180)과 다를 수 있다. 아래에서 자세히 설명되겠지만, 클라이언트(105)는 다양한 폴더들(165) 내에서 각 아이템(170)에 대해 사용되고 있는 적절한 매핑(190)을 알 필요가 있을 것이다.
속성 그룹들(180)이 어떻게 정의되었는지 관계없이, 각 속성 그룹(180)은, 언제 특정 속성 그룹(180)에 대한 변경들이 발생했는지를 식별하는데 사용될 수 있는 속성 그룹 변경 ID(185)를 할당한다. 예를 들어, 아이템/속성 그룹 모듈(150)이 아이템(170) 및 이러한 아이템(170) 내의 각 속성 그룹(180)에 대하여 발생하는 변경을 모니터링할 수 있다. 변경이 이루어짐에 따라, 변경 ID 생성자(160)는 아이템 변경 ID(175) 및 적절한 속성 그룹 변경 ID(185)를 변경할 수 있다.
일부 실시예들에서, 아이템 변경 ID(175) 및 속성 변경 ID(185)는 예컨대, 아이템 및 속성 그룹이 동시에 업데이트되었다고 나타내는 동일한 식별자가 될 수 있다. 그러나, 이는 예컨대 GUIDs(Global Unique Identifiers)가 사용되는 경우에는 해당되지 않는다. 또한, 변경 ID(175, 185)는 공지된 임의의 문자숫자(alphanumeric) 또는 데이터 객체를 식별하는 다른 것이 될 수 있다. 예를 들어, 변경 ID(175, 185)는 각각 아이템(170) 및/또는 속성 그룹(180)의 해시가 될 수 있다. 물론, 이미 언급한 바와 같이, 변경 ID(175, 185)는 GUID의 단순한 카운터에 기초하여 생성될 수 있다. 아이템들(170) 및 속성 그룹들(180)에 대한 변경들을 식별하기 위한 다른 메커니즘이 또한 본 발명에 사용될 수 있다. 따라서, 변경들을 식별하기 위한 임의의 특정 타입의 변경 식별자(175, 185) 및/또는 이의 사용은 예시적인 목적인 것이고, 명시적으로 청구하지 않는 한 본 발명의 범위를 제한하거나 좁히는 것을 의미하지 않는다.
ID(175, 185) 타입 또는 어떻게 속성 그룹들에 대한 변경이 식별되는지에 관계없이, 서버(125) 내의 아이템/속성 모듈(150)이 하나 이상의 아이템(170)의 변경을 식별하는 경우 이러한 아이템 변경의 통지(120)가 클라이언트(105)와 서버(125)의 동기화를 촉구하도록 클라이언트(105)로 보내질 수 있다. 물론, 클라이언트(150)와 서버(125)의 동기화를 촉진시키는 다른 메커니즘이 본 발명에 사용될 수 있다. 예를 들어, 클라이언트(105)는 서버(125)와 동기화하기 위해 주기적으로, 즉, 소정의 간격으로, 서버(125)에 문의할 수 있다. 따라서, 클라이언트(105) 및 서버(125) 간의 동기화 프로세스의 임의의 특정 개시는 예시적인 목적으로 사용되 는 것이고, 본 발명의 범위를 제한하거나 좁히는 것을 의미하지 않는다.
그럼에도 불구하고, 동기화 프로세스의 개시와 동시에, 서버(125)는 클라이언트(105)로부터 동기화 요구(130)를 수신해야 한다. 실시예들에 있어서 동기화 요구(135)는 클라이언트(105) 및 서버(125) 간의 최종 동기화 이후 변경들이 발생했는지를 결정하는데 사용될 수 있는 하나 이상의 아이템 토큰들(135)(예컨대, 아이템 토큰 "A")을 포함할 수 있다. 아이템 토큰(135)을 자세히 논의하기에 앞서, 아이템 토큰들(135)은 동기화 요구(130) 내에 반드시 포함될 필요는 없음에 유의해야 한다. 예를 들어, 다른 교환(handshake) 메커니즘이 클라이언트(105)로 하여금 아이템 토큰들(135)을 서버(125)로 송신하도록 할 수 있다. 이와 달리, 아이템 토큰들(135)은 서버(125) 상에 미리 저장될 수 있다. 따라서, 동기화 요구(130)내의 아이템 토큰들(135)의 포함은 본 명세서에서 예시적인 목적으로만 사용되는 것이고, 본 발명의 범위를 제한하거나 좁히는 것을 의미하지 않는다.
아이템 변경 ID(140)가 각 아이템 토큰(135)과 연관된다. 각 아이템 변경 ID(140) 또는 아이템 토큰(135)에 대하여, 복수의 속성 그룹 변경 ID들(145)(예컨대, 속성 그룹 "A" 변경 ID)이 있다. 아이템 변경 ID(140) 및 속성 그룹 변경 ID들(145)은 클라이언트(105) 및 서버(125) 간의 최종 동기화에 대한 아이템들(170) 및 대응 속성 그룹들(180)과 연관된 식별자들을 나타낸다. 즉, 아이템 토큰들(135)은 서버(125)와 최종 동기화 동안 저장된 데이터 덩어리로서 클라이언트(105)에 전달될 수 있다. 이 데이터 덩어리(135)는 변경 식별자 비교기(155)에 의해 최종 동기화 이후 변경된 이러한 아이템들(170)을 보다 구체적으로는 각 아이 템(170) 내의 속성 그룹들(180)을 결정하는데 사용될 수 있다.
예를 들어, 각 아이템 토큰(135)은 각 아이템(170)과 비교될 수 있다. 보다 구체적으로 아이템 토큰들(135) 및 실제 아이템들(170) 내의 변경 ID들(175, 140) 및 속성 그룹 ID들(185, 145)은 변경 식별자 비교기(155)를 이용하여 비교될 수 있다. 만약 값이 다르다면, 즉 아이템 토큰(135)에 대한 아이템 변경 ID(140) 및 속성 그룹 ID(145)가 아이템 변경 ID(175) 및 속성 그룹 ID(185)와 매칭하지 않으면, 아이템(170) 및 속성 그룹들(180)에서 변경이 발생한 것이다. 상기 언급한 바와 같이, 최종 동기화 이후 아이템들(170) 및 속성 그룹들(180)이 언제 변경되는지를 결정하는데 있어 아이템 토큰들(135)에 대한 변경 ID들이 서버(125) 상의 아이템들(170) 및 속성 그룹들(180)과 비교되지만, 아이템들(170) 및 속성 그룹들(180)에 대한 변경이 이루어졌는지 또는 언제 이루어졌는지를 결정하는 기타 방법들이 본 발명에 이용될 수 있다. 예를 들어, 서버(125)는 변경 ID들(140, 145, 175, 185) 필요없이, 클라이언트 측(105)에 어떤 변경들이 필요한지를 결정하는데 필요한 모든 정보를 저장할 수 있다. 따라서, 본 명세서에서 설명되는 구체적인 변경 ID들(140, 145, 175, 185)의 사용은 예시적인 목적을 위한 것일 뿐이고 명시적으로 청구하지 않는 한 본 발명의 범위를 제한하거나 좁히는 것을 의미하지 않는다.
변경된 속성 그룹들(104)이 어떻게 식별되는지 관계없이, 이러한 변경된 속성 그룹들(104)은 동기화 아이템 스트림(102) 내에 포함될 수 있고, 이는 본 명세서에 설명된 실시예들에 따라 클라이언트(105)로 보내질 수 있다. 또한, 상기 언급한 바와 같이, 특정 버전 ID(195)에 의해 식별된 매핑(190)이 동기화, 아이템 스 트림(102) 이전, 동안, 또는 이후에 송신될 수 있다. 아래에서 자세히 설명될 것이지만, 동기화 아이템 스트림(102) 내의 속성 그룹들(104)은 이러한 속성 그룹(104)을 위해 사용되는 특정 매핑(190) 버전(195)을 식별해야 한다.
도 1b는 특정 버전 식별자(195)를 위한 매핑(190)의 블록도 예를 도시한다. 도시된 바와 같이, 매핑(190)은 각 아이템(106)에 대하여 복수의 아이템들(106) 및 속성 그룹들(108, 114)을 포함한다. 물론, 임의의 특정 아이템(106) 내에서 식별될 수 있는 임의 개수의 속성 그룹들(108, 114)이 있을 수 있다. 또한, 속성들(112, 116)은 각 특정 속성 그룹(108, 114)에 대해 매핑된다. 예를 들어, 속성 그룹 "A"(108)는 속성들 "C" 및 "E"(112)를 포함할 수 있는 반면, 속성 그룹 "B"(114)는 속성 "A"(106)를 포함할 수 있다.
매핑(190)이 이메일 아이템(106) 중 상대적으로 작은, 휘발성 데이터 속성들에 대해 속성 그룹 "A"(108)로 식별하는 반면, 속성 그룹 "B"에 대한 매핑은 더 큰 속성들을 포함한다. 속성 그룹 "A"(108) 내의 속성 "C"(112) 및 속성 "E"(112)는 각각 추종 플래그 및 우선순위 플래그가 될 수 있다. 반면, 속성 "A"(116)는 속성 그룹 "B"(114)에 대해 첨부 파일들이 될 수 있다. 물론, 매핑들(190)을 제공하는 다른 공지의 방법들이 또한 본 발명에 적용될 수 있다. 따라서, 도 1b 내에서 제공된 매핑 구성은 본 명세서에서 예시적인 목적을 위한 것일 뿐이고 명시적으로 청구하지 않는 한 본 발명의 범위를 제한하거나 좁히는 것을 의미하지 않는다.
현재 및 이전 속성 그룹 매핑들(190)은 서버 데이터베이스에 존속할 수 있고 버전 ID(195)에 의해 액세스될 수 있다. 아이템(170)이 만약 알려지지 않은 버전 식별자(195)를 갖는 것을 만나거나, 그룹 식별자를 갖지 않는다면, 이는 속성 그룹들(180)을 갖지 않는 것처럼 취급되어야 하고 전체로서 취급되어야 한다. 따라서, 만약 이와 같은 아이템(170)이 클라이언트(105)에 다운로드될 필요가 있다면, 전체 아이템(170)이 스트리밍된다(102).
일 실시예는 본 명세서에서 고속 전송이라고 일컬어지는 스트리밍 메커니즘을 통한 동기화를 제공한다. 이러한 프로세스는 변경된 속성 그룹들(104)을 분해하고 이들을 로우 바이너리 스트림(raw binary stream)으로 나열함으로써 서버(125)로 하여금 동기화 요구(130)에 응답하도록 한다. 서버(125)는 가능한 만은 메시지(102)를 고정 크기 응답 버퍼에 넣고 이 데이터(102)를 클라이언트(105)로 반환한다. 그 다음 클라이언트(105)는 데이터를 분석하고 바이트 스트림(102)을 언시리얼라이징(unserializing)함으로서 속성 그룹들(104)을 다시 만들 수 있다. 바이트 스트림(102)의 포맷 예는 도 1c와 관련하여 아래에 나타나는데, 도 1c는 동기화 아이템 스트림(102)의 예, 즉 동기화 아이템 스트림(102)의 유선 전송(또는 무선 전송) 데이터 표현을 도시한다.
동기화 아이템 스트림(102)의 제1 부분은 스트림(120)의 처음 부분에 부가된 IncrSyncProgressItem(118)으로 응답 스트림(102)을 뒤따르는 모든 아이템들의 전체 크기에 관한 정보를 제공한다. 다음으로, IncrSyncProgressPerItem(122)은 동기화 아이템 스트림(102) 내의 다음 아이템의 전체 크기를 나타낸다. 동기화 스트림(102) 내의 다음 그룹핑(124)은 마커(marker) IncrSyncPropGroupMap에 의해 표시되는 매핑으로, 클라이언트(105)에게 스트림(102) 내의 다음 아이템 또는 아이템들 을 매핑하는 속성 그룹이 무엇을 사용하는지 알려준다. 따라서, 다양한 속성 그룹들(180)은 IncrSyncPropGroup 마커 및 각 속성 그룹(180) 내의 속성 ID의 배열 또는 리스트를 이용하여 식별될 수 있다. 즉, 동기화 아이템 스트림(102)은 본 명세서에서 설명된 다양한 버전 ID(195)에 대하여 매핑(190) 또는 매핑 그룹(190)을 포함할 수 있다. 그러나, 이미 설명한 바와 같이, 매핑들(190)은 반드시 동기화 아이템 스트림(102) 내에 포함될 필요는 없고, 동기화 스트림(102)을 뒤따르거나 앞설 수 있다.
태그들(126)의 다음 세트, 즉 IncrSynPropGroup ID는 스트림 내의 다음 아이템 또는 아이템들을 매핑하는 속성 그룹이 무엇을 사용하는지 알린다. 즉, 이 그룹(126) 내의 버전 ID는 다음의 아이템에 대한 매핑(190) 버전 ID(195)를 식별한다. 다음으로, IncrSyncChgItem(128)는 변경된 아이템의 시작을 알리는 마커로, 아이템 내에서 변경될 속성 그룹들의 어레이를 뒤따를 것이다. 예를 들어, IncrSyncChgPropGroup(132)의 마커들에 의해 나타난 바와 같이 변경된 다양한 속성 그룹들이 식별될 수 있다. 예를 들어, 스트림(134)에 나타난 바와 같이, IncrSyncChgPropGroup은 우선 DelProp 요소를 이용하여 현재의 ItemRecipients을 삭제하고 StartRecip 및 EndRecip 마커를 이용하여 수신인 속성들을 교체함으로써 수신인 속성들을 변경한다. 다른 예로서, 스트림(136)의 요소들은 아이템 첨부물들에 대하여 IncrSyncChgPropGroup을 포함하여 현재 ItemAttachments가 DelPorp을 이용하여 삭제되고 NewAttach 및 EndAttach 마커들을 이용하여 교체될 것이다. 물론, 다른 속성 그룹들이 이하 제공되는 점들로 표시된 것처럼 스트림 내에 포함될 수 있다.
다른 예시적인 실시예들이 아이템들을 동기화하는 기존 방법과 본 명세서에서 제공되는 실시예들을 조합하여 제공된다. 예를 들어, 매핑이 제공되지 않는 레거시(legacy) 시스템에서는, 전체 아이템이 동기화 아이템 스트림(102) 내에서 다운로드될 수 있다. 예를 들어, 요소(138)에 도시된 바와 같이, IncrSyncProgressPerItem은 다음 아이템의 전체 크기를 나타내고 IncrSyncChgItem은 아이템 변경 시작을 마킹한다. 다음 마커들, 즉 IncrSyncDel, IncrSyncRead 및 IncrSyncEnd에 대한 마커들(142)은 (1)클라이언트(105)로부터 삭제될 아이템들 목록; (2) 다음의 읽기 상태 변화; 및 (3)동기화 세션의 끝을 의미하는 마커를 각각 의미한다. 마지막으로, IncrSyncStateBegin은 최종 동기화 상태가 바이트 스트림에 뒤따르는 것을 의미하고 IncrySyncStateEnd는 동기화 상태가 완료되었다고 나타내는 마커이다.
본 발명은 또한 기능 단계 및/또는 비기능 단계를 포함하는 방법에 따라 설명될 수 있다. 다음은 본 발명을 실행하는데 수행될 수 있는 단계의 설명이다. 통상적으로, 기능 단계는 달성되는 결과에 따라 발명을 설명하는 반면, 비기능 단계들은 특정 결과를 달성하기 위한 보다 구체적인 단계들을 설명한다. 기능적 단계 및/또는 비기능적 단계는 특정 순서로 설명 또는 청구될 수 있지만, 본 발명은 단계의 특정 순서 또는 조합에 제한되는 것은 아니다. 또한, 청구항들에 (및 도 2a 및 2b에 대한 흐름도의 다음 설명에) 기재된 단계는 이러한 용어들의 원하는 특정 사용을 나타내는데 사용된다.
도 2a 및 2b는 본 발명의 다양한 실시예에 대한 흐름도를 도시한다. 다음의 도 2a 및 2b에 대한 설명은 경우에 따라 도 1a-c의 대응 요소들을 참조할 것이다. 참조가 이러한 도면의 특정 요소에 대하여 이루어지지만, 이러한 요소들은 예시적인 목적으로 위해 사용되는 것일 뿐이고, 명시적으로 청구하지 않는 한 본 발명의 범위를 제한하거나 좁히는 것을 의미하지 않는다.
도 2a는 아이템 내의 각 개별적인 속성의 변경을 모니터링하지 않고, 변경된 아이템의 선택 부분들만을 동기화함으로써 클라이언트 및 서버 간의 동기화 속도를 증가시키는 방법(200)의 흐름도를 도시한다. 방법(200)은 데이터 아이템들의 동기화 요구를 수신하는 단계(205)를 포함한다. 예를 들어, 서버(125)는 서버(125) 및 클라이언트(105) 간의 최종 동기화 이후 변경된 데이터 아이템들(170)을 동기화하는 동기화 요구(130)를 수신할 수 있는데, 여기서 데이터 아이템들(170)은 수정되거나 변경될 수 있는 다양한 속성들을 갖는 완전 메시지들이다. 예를 들어, 데이터 아이템(170)은 이메일 메시지, 연락처, 약속, 캘린더 정보, 작업, 스티키 노트 등이 될 수 있다. 속성들은 수신인, 주소, 바디, 첨부물, 플래그, 상태 식별자, 또는 기타 메시지에 대한 많은 속성들을 포함할 수 있다. 또한 데이터 아이템들(170)을 동기화하기 위한 서버(125) 및 클라이언트(105) 간의 데이터 링크는 무선 접속, 또는 유선 접속이 될 수 있는데, 여기서 클라이언트(105) 상의 고객은 서버(125)로부터 다운로드된 바이트 수에 기초하여 데이터 아이템들(170)의 동기화에 대해 지불한다.
방법(200)은 또한 클라이언트 및 서버 간의 데이터 전송 시간을 줄이는 단 계(225)를 포함한다. 보다 구체적으로, 단계(225)는 최종 동기화 이후 데이터 아이템이 변경되었다고 결정하는 단계를 포함한다. 예를 들어, 서버(125)는 (변경 ID 비교기(155) 또는 본 명세서에 설명된 다른 방법들을 이용하여) 클라이언트(105) 및 서버(125) 간의 최종 동기화 이후 데이터 아이템(170)이 변경되었다고 결정할 수 있다. 이미 언급한 바와 같이, 데이터 아이템들(170)은 각각의 속성 그룹들 내의 하나 이상의 속성들이 어떻게 연관되는지에 대한 의미의 이해 및 산업 지식에 기초하여 사전정의되는 속성 그룹들(180)을 포함한다. 예를 들어, 이메일 메시지에서 다양한 속성 그룹들은 바디 속성, 수령인 속성 그룹, 대상 속성 그룹, 첨부물 속성 그룹, 우선순위 플래그 속성 그룹, 읽기 상태 속성 그룹, 기타 속성 그룹 및/또는 이들의 임의의 조합을 포함할 수 있다. 물론, 속성 그룹들 내의 속성들이 추가, 삭제 또는 재정의될 수 있고, 속성 그룹들 각각이 산업 지식의 변경에 기초하여 추가, 삭제, 재정의될 수 있도록, 확장가능하고, 플러그가능하고, 스케일링 가능한 다른 속성 그룹들이 정의될 수 있다.
단계(225)는 또한 최종 동기화 이후 데이터 아이템 내의 어느 속성 그룹이 변경되었는지를 결정하는 단계(215)를 포함한다. 예를 들어, 아이템/속성 그룹 모듈(150) 및 변경 ID 비교기(155)가 최종 동기화 이후 어느 속성 그룹들(180)이 변경되었는지를 결정하는데 사용될 수 있다. 따라서, 단계(225)는 변경된 그룹 또는 전체 데이터 아이템을 스트리밍하지 않는 그룹들을 동기화하는 단계(220)를 포함한다. 특히, 동기화하는 경우 클라이언트 및 서버 간의 데이터 전송 시간을 줄이기 위해 전체 데이터 아이템(170)을 스트리밍하지 않고, 최종 동기화 이후 변경된 동 기화 아이템 스트림(102)이 다양한 속성 그룹들(104)과 함께 클라이언트(105)에 스트리밍될 수 있다.
데이터 아이템(170) 뿐만 아니라 속성 그룹(180) 내의 변경의 결정은 데이터 아이템 및 속성 그룹에 대한 변경 식별자들(140, 145, 175, 185)에 기초할 수 있다. 또한, 데이터 아이템(170) 및 속성 그룹들(180)에 대한 변경 식별자들(140, 145, 175, 185)은 동일할 수 있다. 또한, 데이터 아이템(170) 및 속성 그룹들(180)에 대한 변경 식별자들(140, 145, 175, 185)은 문자숫자 번호, 전역 고유 식별자 또는 해시 값이 될 수 있다.
다른 실시예는 데이터 아이템(170) 및 속성 그룹들(180)의 매핑(190)을 제공한다. 매핑은 변경된 속성 그룹들(104)의 아이템 스트림 동기화 송신 전, 동안, 또는 이후에 송신될 수 있다. 어떤 경우에도, 클라이언트(105)는 매핑(190)을 이용하여 어떤 속성들이 각각의 속성 그룹들(180)에 포함되는지를 알 수 있다. 또한, 제2 데이터 아이템(170)은 변경된 것으로 결정될 수 있지만, 속성 그룹(180)을 가질 수 없다. 이 경우, 전체 제2 데이터 아이템(170)이 클라이언트(105)로 스트리밍될 수 있다.
도 2b는 아이템 내의 각 개별 속성의 변경을 모니터링하지 않고, 클라이언트 및 서버 간의 동기화 속도를 증가시키기 위해 아이템의 선택 부분들에 대한 변경들을 추적하는 방법(250)의 흐름도를 도시한 도면이다. 방법(250)은 동기화를 위해 복수의 데이터 아이템들을 모니터링하는 단계(255)를 포함한다. 예를 들어, 아이템/속성 그룹 모듈(150) 또는 다른 구성요소들은 데이터 아이템들(170)을 모니터링 할 수 있는데, 이 데이터 아이템들(170)은 수정되거나 변경될 수 있는 복수의 속성들을 갖는 완전 메시지를 나타낸다. 이러한 속성들은 본 명세서에서 이미 설명한 것들, 예컨대, 첨부물, 플래그, 바디, 부분 등을 포함할 수 있지만, 여기에 제한되는 것은 아니다.
방법(250)은 또한 클라이언트 및 서버 간에 최종 동기화 이후 데이터 아이템이 변경되었다고 결정하는 단계(260)를 포함한다. 예를 들어, 변경 식별자 비교기(155)가 서버(125) 및 클라이언트(105) 간의 최종 동기화 이후 데이터 아이템(170)이 변경되었다고 결정하는데 사용될 수 있다. 이미 언급한 바와 같이, 데이터 아이템들은 각각의 속성 그룹들 내의 속성들이 어떻게 연관되는지에 대한 의미의 이해 및 산업 지식에 기초하여 사전정의되는 복수의 속성 그룹들(180)을 포함한다. 데이터 아이템이 변경되었다는 결정에 기초하여, 방법(250)은 아이템 변경 식별자를 업데이트하는 단계(265)를 더 포함한다. 예를 들어, 변경 식별자 생성기(160)가 데이터 아이템(170)과 연관된 아이템 변경 ID(175)를 업데이트하는데 사용될 수 있는데, 이는 데이터 아이템(170)이 클라이언트(105)와의 동기화를 위해 변경되었는지 식별하는데 사용될 것이다.
마찬가지로, 방법(250)은 데이터 아이템 내의 어느 속성 그룹이 변경되었는지를 결정하는 단계(270)를 포함한다. 즉, 아이템/속성 그룹 모듈(150) 내의 변경 식별자 비교기(155)가 클라이언트(105) 및 서버(125) 간의 최종 동기화 이후 어느 속성 그룹들(180)이 변경되었는지를 결정하는데 사용될 수 있다. 속성 그룹이 변경되었다는 결정에 기초하여, 방법(250)은 속성 그룹 변경 식별자를 업데이트하는 단계(275)를 포함한다. 예를 들어, 변경 식별자 생성기(160)가 속성 그룹(180)에 대한 변경 ID(185)를 업데이트하는데 사용될 수 있는데, 이는 클라이언트(105) 및 서버(125) 간의 데이터 전송 시간을 줄이기 위해 이 속성 그룹(180)만이 클라이언트(105)와 동기화될 수 있도록 이 속성 그룹(180)이 변경되었다고 식별하는데 사용될 것이다. 위에서 설명한 다른 대체 실시예들이 방법(250)에 또한 사용될 수 있다.
본 발명은 핵심 특성으로부터 벗어나지 않는 범위 내에서 다른 특정 형태로 구체화될 수 있다. 바람직한 실시예들은 어떤 면에서건 예시적인 것이지 제한적인 것이 아니다. 따라서, 본 발명의 범위는 위의 상세한 설명보다는 첨부된 청구항에 의해 나타난다. 청구항의 동일 범위 내에서 오는 모든 변경들은 본 발명의 범위에 포함된다.

Claims (20)

  1. 서버로부터 다운로드된 아이템들을 지역적으로 캐싱하고 상기 아이템들의 변경들을 주기적으로 동기화하도록 구성된 클라이언트를 포함하는 분배 컴퓨팅 시스템(distributed computing system)에서, 아이템 내의 각각의 개별 속성의 변경을 모니터링하지 않고 변경된 상기 아이템의 선택 부분들만을 동기화하여 상기 클라이언트 및 상기 서버 간의 동기화 속도를 증가시키기 위한 방법으로서,
    서버 및 클라이언트 간의 최종 동기화 이후 변경된 데이터 아이템들의 동기화 요구를 수신하는 단계 - 상기 데이터 아이템은 수정되거나 변경될 수 있는 복수의 속성들을 갖는 완전 메시지(complete message)를 나타냄 -;
    상기 데이터 동기화 요구에 응답하여,
    상기 최종 동기화 이후 적어도 하나의 데이터 아이템이 변경되었음을 결정하는 단계 - 상기 적어도 하나의 데이터 아이템은 복수의 속성 그룹들 각각 내의 하나 이상의 속성이 어떻게 관련되는지에 대한 의미의 이해 및 산업 지식에 기초하여 사전정의되는 상기 복수의 속성 그룹들을 포함함 -;
    상기 최종 동기화 이후 상기 복수의 속성 그룹들 중 적어도 하나의 속성 그룹이 변경되었음을 결정하는 단계; 및
    동기화하는 경우 상기 클라이언트 및 서버 간의 데이터 전송 시간을 줄이기 위해서 상기 적어도 하나의 데이터 아이템 전체를 스트리밍하지 않고 상기 적어도 하나의 속성 그룹을 동기화하는 단계
    를 포함하는 동기화 속도 증가 방법.
  2. 제1항에 있어서,
    상기 데이터 아이템은 이메일 메시지, 연락처 메시지, 약속 메시지, 달력 정보, 작업 메시지, 또는 스티키 노트(sticky notes) 메시지로부터 선택되는 동기화 속도 증가 방법.
  3. 제1항에 있어서,
    상기 복수의 속성 그룹들은 하나 이상의 바디 속성 그룹, 수신인 속성 그룹, 데이터 응답 속성 그룹, 제목 속성 그룹, 첨부물 속성 그룹, 우선순위 플래그 속성 그룹, 추종 속성 그룹, 읽기 상태 속성 그룹, 또는 기타 속성 그룹인 동기화 속도 증가 방법.
  4. 제1항에 있어서,
    상기 복수의 속성 그룹들은 상기 복수의 속성 그룹들 각각 내의 하나 이상의 속성에 대하여 휘발성, 일반 메모리 크기, 또는 이 둘 모두에 기초하여 사전정의되는 동기화 속도 증가 방법.
  5. 제1항에 있어서,
    상기 사전정의된 복수의 속성 그룹들은, 산업 지식의 변화에 기초하여 상기 복수의 속성 그룹들 각각 내의 하나 이상의 속성이 추가, 삭제 또는 재정의될 수 있고 상기 복수의 속성 그룹들 각각이 추가, 삭제 또는 재정의될 수 있도록, 확장가능하고(extensible), 플러깅가능하고(pluggable), 스케일가능한(scalable) 동기화 속도 증가 방법.
  6. 제1항에 있어서,
    상기 데이터 아이템들을 동기화하기 위한 상기 클라이언트 및 상기 서버 간의 데이터 링크는 유선 접속이고, 상기 클라이언트 상의 사용자는 상기 서버로부터 다운로드된 바이트 수에 기초하여 상기 데이터 아이템들의 동기화에 대해 지불하는 동기화 속도 증가 방법.
  7. 제1항에 있어서,
    상기 적어도 하나의 데이터 아이템의 변경 및 상기 적어도 하나의 속성 그룹의 변경의 결정은 각각 상기 적어도 하나의 데이터 아이템 및 상기 적어도 하나의 속성 그룹에 대한 변경 식별자들(change identifiers)에 기초하는 동기화 속도 증가 방법.
  8. 제1항에 있어서,
    상기 적어도 하나의 속성 그룹 각각 내에 어떤 속성들이 포함되어 있는지를 상기 클라이언트가 알 수 있도록, 상기 적어도 하나의 속성 그룹의 동기화 이전, 동기화 동안 또는 동기화 이후에, 상기 적어도 하나의 데이터 아이템 및 상기 적어도 하나의 데이터 아이템 내의 상기 적어도 하나의 속성 그룹의 매핑(mapping)이 상기 클라이언트로 송신되는 동기화 속도 증가 방법.
  9. 제8항에 있어서,
    적어도 하나의 속성 그룹을 갖지 않는 제2 데이터 아이템이 변경되었다고 결정되고, 상기 제2 데이터 아이템 전체가 상기 클라이언트로 스트리밍되는 동기화 속도 증가 방법.
  10. 서버로부터 다운로드된 아이템들을 지역적으로 캐싱하고 상기 아이템들의 변경들을 주기적으로 동기화하도록 구성된 클라이언트를 포함하는 분배 컴퓨팅 시스템에서, 아이템 내의 각각의 개별 속성의 변경을 모니터링하지 않고 상기 클라이어트 및 상기 서버 간의 동기화 속도를 증가시키기 위해 아이템의 선택 부분들에 대한 변경들을 추적하는 방법으로서,
    수정되거나 변경될 수 있는 복수의 속성들을 갖는 완전 메시지인 복수의 데이터 아이템들을 동기화를 위해 모니터링하는 단계;
    서버 및 클라이언트 간의 최종 동기화 이후 적어도 하나의 데이터 아이템이 변경되었음을 결정하는 단계 - 상기 적어도 하나의 데이터 아이템은 복수의 속성 그룹들 각각 내의 하나 이상의 속성이 어떻게 관련되는지에 대한 의미의 이해 및 산업 지식에 기초하여 사전정의되는 상기 복수의 속성 그룹들을 포함함 -;
    상기 데이터 아이템이 변경되었다는 결정에 기초하여, 상기 클라이언트와 동기화하기 위해 상기 데이터 아이템이 변경되었다고 식별하는데 사용되는 상기 데이터 아이템과 연관된 아이템 변경 식별자를 업데이트하는 단계;
    상기 최종 동기화 이후 상기 복수의 속성 그룹들 중 적어도 하나의 속성 그룹이 변경되었음을 결정하는 단계; 및
    상기 적어도 하나의 속성 그룹이 변경되었다는 결정에 기초하여, 상기 적어도 하나의 속성 그룹과 연관된 속성 그룹 변경 식별자를 업데이트 하는 단계 - 상기 속성 그룹 변경 식별자는 상기 적어도 하나의 속성 그룹이 변경되었음을 식별함으로써, 상기 클라이언트 및 서버 간의 데이터 전송 시간을 줄이기 위해 상기 적어도 하나의 속성 그룹만이 상기 클라이언트와 동기화되도록 하는데 사용됨 -
    를 포함하는, 변경 추적 방법.
  11. 제10항에 있어서,
    상기 아이템 변경 식별자는 상기 속성 그룹 변경 식별자와 동일한 변경 추적 방법.
  12. 제10항에 있어서,
    상기 적어도 하나의 데이터 아이템 및 상기 적어도 하나의 속성 그룹에 대한 상기 변경 식별자들은 문자숫자 번호(alphanumeric number), 전역 고유 식별자(global unique identifier), 또는 해시 값(hash value) 중 하나인 변경 추적 방 법.
  13. 제10항에 있어서,
    상기 아이템 변경 식별자, 상기 속성 그룹 변경 식별자 또는 이 둘 모두는 상기 적어도 하나의 데이터 아이템, 상기 적어도 하나의 속성 그룹 또는 이 둘 모두의 해시 값인 변경 추적 방법.
  14. 제10항에 있어서,
    상기 복수의 속성 그룹들은 상기 복수의 속성 그룹들 각각 내의 하나 이상의 속성에 대하여 휘발성, 일반 메모리 크기, 또는 이 둘 모두에 기초하여 사전정의되는 변경 추적 방법.
  15. 제10항에 있어서,
    상기 사전정의된 복수의 속성 그룹들은, 산업 지식의 변화에 기초하여 상기 복수의 속성 그룹들 각각 내의 상기 복수의 속성들이 추가, 삭제 또는 재정의될 수 있고 상기 복수의 속성 그룹들 각각이 추가, 삭제 또는 재정의될 수 있도록, 확장가능하고, 플러깅가능하고, 스케일가능한 변경 추적 방법.
  16. 제10항에 있어서,
    상기 데이터 아이템들을 동기화하기 위한 상기 클라이언트 및 상기 서버 간 의 데이터 링크는 무선 접속인 변경 추적 방법.
  17. 아이템 데이터 구조를 저장하고 있는 하나 이상의 컴퓨터 판독가능 매체로서, 상기 아이템 데이터 구조는,
    수정되거나 변경될 수 있는 복수의 속성들;
    클라이언트와의 최종 동기화 이후 상기 복수의 속성들 중 하나 이상이 수정되거나 변경되었는지를 나타내는 아이템 변경 식별자;
    상기 복수의 속성들 중 하나 이상의 속성을 각각 포함하는 복수의 속성 그룹들로서, 상기 복수의 속성 그룹들은 상기 복수의 속성 그룹들 각각 내의 상기 하나 이상의 속성이 어떻게 관련되는지의 의미의 이해 및 산업 지식에 기초하여 사전정의되는 복수의 속성 그룹들; 및
    아이템 전체를 동기화하지 않고 변경된 속성 그룹들만을 동기화하도록 상기 복수의 속성 그룹들 중 어느 것이 변경되었는지를 나타내는 복수의 속성 그룹 변경 식별자들
    을 포함하는 컴퓨터 판독가능 매체.
  18. 제17항에 있어서,
    상기 아이템 변경 식별자, 상기 복수의 속성 그룹 변경 식별자들 또는 이 둘 모두는 상기 아이템 데이터 구조, 상기 복수의 속성 그룹들 중 적어도 하나 또는 이 둘 모두의 해시 값인 컴퓨터 판독가능 매체.
  19. 제17항에 있어서,
    상기 아이템 데이터 구조는 이메일 메시지, 연락처 메시지, 약속 메시지, 달력 정보, 작업 메시지, 또는 스티키 노트 메시지로부터 선택되는 컴퓨터 판독가능 매체.
  20. 제17항에 있어서,
    상기 복수의 속성 그룹들은 하나 이상의 바디 속성 그룹, 수신인 속성 그룹, 데이터 응답 속성 그룹, 제목 속성 그룹, 첨부물 속성 그룹, 우선순위 플래그 속성 그룹, 추종 속성 그룹, 읽기 상태 속성 그룹, 또는 기타 속성 그룹인 컴퓨터 판독가능 매체.
KR1020087002131A 2005-08-15 2006-07-20 부분적인 아이템 변경 추적 및 동기화 KR101312810B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/204,067 US7962585B2 (en) 2005-08-15 2005-08-15 Partial item change tracking and synchronization
US11/204,067 2005-08-15
PCT/US2006/028480 WO2007021454A2 (en) 2005-08-15 2006-07-20 Partial item change tracking and synchronization

Publications (2)

Publication Number Publication Date
KR20080039387A true KR20080039387A (ko) 2008-05-07
KR101312810B1 KR101312810B1 (ko) 2013-09-27

Family

ID=37758031

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087002131A KR101312810B1 (ko) 2005-08-15 2006-07-20 부분적인 아이템 변경 추적 및 동기화

Country Status (17)

Country Link
US (2) US7962585B2 (ko)
EP (2) EP1915670B1 (ko)
JP (2) JP4959703B2 (ko)
KR (1) KR101312810B1 (ko)
CN (2) CN102207957B (ko)
AU (1) AU2006280352B2 (ko)
BR (1) BRPI0614287A8 (ko)
CA (1) CA2616103C (ko)
EG (1) EG25523A (ko)
HK (1) HK1162711A1 (ko)
IL (1) IL188781A (ko)
MX (1) MX2008002169A (ko)
MY (2) MY188203A (ko)
NZ (1) NZ565592A (ko)
RU (1) RU2421780C2 (ko)
TW (1) TWI454934B (ko)
WO (1) WO2007021454A2 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7962585B2 (en) 2005-08-15 2011-06-14 Microsoft Corporation Partial item change tracking and synchronization
CN101159757B (zh) * 2007-10-25 2011-11-30 中兴通讯股份有限公司 双归属同步数据传输方法
CN101447886B (zh) * 2007-11-26 2011-07-27 华为技术有限公司 一种比较海量数据的方法及装置
US20090203389A1 (en) * 2008-02-07 2009-08-13 Syncplanet Llc Systems and methods for synchronizing information using short message services and email services
US8280963B2 (en) * 2008-04-10 2012-10-02 Microsoft Corporation Caching and exposing pre-send data relating to the sender or recipient of an electronic mail message
TWI400623B (zh) * 2008-11-06 2013-07-01 Acer Inc 遠端電腦同步傳輸檔案技術
US8463246B2 (en) * 2009-05-26 2013-06-11 Sony Corporation Contact management
US8346976B2 (en) * 2009-11-25 2013-01-01 T-Mobile Usa, Inc. Secured registration of a home network device
CN101719904B (zh) * 2009-11-26 2012-07-04 华平信息技术股份有限公司 互联网应用中减少服务器和客户端业务通讯量的方法
US8745037B2 (en) * 2009-12-17 2014-06-03 Microsoft Corporation Exploiting partitioning, grouping, and sorting in query optimization
US9141919B2 (en) 2010-02-26 2015-09-22 International Business Machines Corporation System and method for object migration using waves
CN102184375A (zh) * 2010-04-30 2011-09-14 华为终端有限公司 Sim卡中数据的管理方法及终端
US8392369B2 (en) 2010-09-10 2013-03-05 Microsoft Corporation File-backed in-memory structured storage for service synchronization
CN101989989A (zh) * 2010-11-17 2011-03-23 中兴通讯股份有限公司 一种企业通信录和个人通信录的数据同步方法和系统
US8566336B2 (en) * 2011-03-30 2013-10-22 Splunk Inc. File identification management and tracking
GB2497793A (en) * 2011-12-21 2013-06-26 Ninian Solutions Ltd Pre-emptive caching of potentially relevant content from a collaborative workspace at a client device
US9110892B2 (en) * 2012-03-13 2015-08-18 Microsoft Technology Licensing, Llc Synchronizing local and remote data
US10095672B2 (en) 2012-06-18 2018-10-09 Novaworks, LLC Method and apparatus for synchronizing financial reporting data
US20140331148A1 (en) * 2012-10-12 2014-11-06 Unify Gmbh & Co. Kg Method and apparatus for displaying e-mail messages
CN104951238A (zh) * 2014-03-24 2015-09-30 国际商业机器公司 用于在分布式虚拟环境中管理数据存储的方法和装置
US10242024B1 (en) 2015-06-18 2019-03-26 EMC IP Holding Company LLC Dynamic reprioritization of content download during synchronization
US10992748B1 (en) 2015-06-18 2021-04-27 EMC IP Holding Company LLC Verification of event-based synchronization
US10235331B1 (en) * 2015-06-18 2019-03-19 EMC IP Holding Company LLC Event-based synchronization in a file sharing environment
US10721298B1 (en) 2015-06-18 2020-07-21 EMC IP Holding Company LLC Learning client preferences to optimize event-based synchronization
US10129357B2 (en) 2015-08-21 2018-11-13 International Business Machines Corporation Managing data storage in distributed virtual environment
US10091148B2 (en) 2016-08-29 2018-10-02 International Business Machines Corporation Message delivery management based on device accessibility
US10237218B2 (en) 2016-08-29 2019-03-19 International Business Machines Corporation Message delivery management based on device accessibility
US11055274B2 (en) * 2019-04-24 2021-07-06 Microsoft Technology Licensing, Llc Granular change detection in distributed storage systems
US11080265B2 (en) 2019-04-24 2021-08-03 Microsoft Technology Licensing, Llc Dynamic hash function composition for change detection in distributed storage systems
US11061936B2 (en) 2019-04-24 2021-07-13 Microsoft Technology Licensing, Llc Property grouping for change detection in distributed storage systems
CN114691782B (zh) * 2022-04-12 2024-07-05 平安国际智慧城市科技股份有限公司 数据库表增量同步方法、装置及存储介质

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966714A (en) * 1995-04-28 1999-10-12 Intel Corporation Method and apparatus for scaling large electronic mail databases for devices with limited storage
US5923848A (en) * 1996-05-31 1999-07-13 Microsoft Corporation System and method for resolving names in an electronic messaging environment
US5794254A (en) * 1996-12-03 1998-08-11 Fairbanks Systems Group Incremental computer file backup using a two-step comparison of first two characters in the block and a signature with pre-stored character and signature sets
US6036945A (en) 1997-04-11 2000-03-14 Shamrock Technologies, Inc. Delivery systems for active ingredients including sunscreen actives and methods of making same
US6052735A (en) * 1997-10-24 2000-04-18 Microsoft Corporation Electronic mail object synchronization between a desktop computer and mobile device
US6295541B1 (en) * 1997-12-16 2001-09-25 Starfish Software, Inc. System and methods for synchronizing two or more datasets
US6018762A (en) * 1998-03-31 2000-01-25 Lucent Technologies Inc. Rules-based synchronization of mailboxes in a data network
US6226650B1 (en) * 1998-09-17 2001-05-01 Synchrologic, Inc. Database synchronization and organization system and method
US6862617B1 (en) * 1998-10-12 2005-03-01 Microsoft Corp. System and method for synchronizing objects between two devices
US6463427B1 (en) * 1999-03-16 2002-10-08 Microsoft Corporation Use of object signature property as a search parameter during synchronization of objects on a computer
US6751634B1 (en) 1999-08-26 2004-06-15 Microsoft Corporation Method and system for detecting object inconsistency in a loosely consistent replicated directory service
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6941326B2 (en) * 2001-01-24 2005-09-06 Microsoft Corporation Accounting for update notifications in synchronizing data that may be represented by different data structures
US6993522B2 (en) * 2001-06-27 2006-01-31 Microsoft Corporation System and method for resolving conflicts detected during a synchronization session
TW579463B (en) * 2001-06-30 2004-03-11 Ibm System and method for a caching mechanism for a central synchronization server
US7149813B2 (en) 2001-08-14 2006-12-12 Microsoft Corporation Method and system for synchronizing mobile devices
CN1195359C (zh) * 2001-12-13 2005-03-30 互慧科技股份有限公司 数据同步系统及方法
US20030177171A1 (en) * 2002-01-22 2003-09-18 Brown Bruce Loring Electronic mail retrieval
US7024429B2 (en) * 2002-01-31 2006-04-04 Nextpage,Inc. Data replication based upon a non-destructive data model
US7814055B2 (en) * 2002-08-28 2010-10-12 Apple Inc. Method of managing a calendar and a computer system for implementing that method
US7650364B2 (en) * 2002-10-09 2010-01-19 Hewlett-Packard Development Company, L.P. Portable database system
US7386590B2 (en) 2003-01-03 2008-06-10 Microsoft Corporation System and method for improved synchronization between a server and a client
US7768234B2 (en) * 2004-02-28 2010-08-03 Janik Craig M System and method for automatically synchronizing and acquiring content for battery powered devices
WO2005015882A1 (en) * 2003-07-25 2005-02-17 International Business Machines Corporation Method and system for sharing device - session data with multiple devices
KR100491541B1 (ko) * 2003-08-01 2005-05-25 니트젠테크놀러지스 주식회사 네트웍 환경에서의 컨텐츠 동기화 시스템 및 동기화 방법
US20050033777A1 (en) * 2003-08-04 2005-02-10 Moraes Mark A. Tracking, recording and organizing changes to data in computer systems
US7512638B2 (en) * 2003-08-21 2009-03-31 Microsoft Corporation Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system
US20050144044A1 (en) * 2003-09-29 2005-06-30 Samsung Electronics Co., Ltd. System and apparatus for efficiently utilizing network capacity in a healthcare setting
GB2406660A (en) 2003-09-30 2005-04-06 Ibm A system for retrieving data from a partially indexed data store
US7080104B2 (en) * 2003-11-07 2006-07-18 Plaxo, Inc. Synchronization and merge engines
JP4211982B2 (ja) * 2003-12-19 2009-01-21 矢崎総業株式会社 ワイヤハーネス分岐部の製造方法
US7594022B2 (en) * 2004-04-21 2009-09-22 Microsoft Corporation Regulating client requests in an electronic messaging environment
US7383291B2 (en) * 2004-05-24 2008-06-03 Apple Inc. Method for sharing groups of objects
US20060123087A1 (en) * 2004-12-04 2006-06-08 Gibson David W Email storage format including partially ordered logs of updates to email message attributes
US7962585B2 (en) 2005-08-15 2011-06-14 Microsoft Corporation Partial item change tracking and synchronization

Also Published As

Publication number Publication date
RU2421780C2 (ru) 2011-06-20
JP2009507276A (ja) 2009-02-19
EP2400405A1 (en) 2011-12-28
NZ565592A (en) 2010-02-26
MY188203A (en) 2021-11-24
EG25523A (en) 2012-02-01
US7962585B2 (en) 2011-06-14
CA2616103A1 (en) 2007-02-22
IL188781A (en) 2014-07-31
KR101312810B1 (ko) 2013-09-27
JP2012133795A (ja) 2012-07-12
CN101385017A (zh) 2009-03-11
MX2008002169A (es) 2008-04-22
BRPI0614287A2 (pt) 2011-03-22
JP4959703B2 (ja) 2012-06-27
MY147049A (en) 2012-10-15
IL188781A0 (en) 2008-08-07
CN102207957B (zh) 2014-06-04
WO2007021454A3 (en) 2008-10-02
US9524329B2 (en) 2016-12-20
US20070078941A1 (en) 2007-04-05
AU2006280352B2 (en) 2011-03-17
CN102207957A (zh) 2011-10-05
HK1162711A1 (en) 2012-08-31
WO2007021454A2 (en) 2007-02-22
BRPI0614287A8 (pt) 2017-01-10
EP1915670A4 (en) 2011-10-05
RU2008105763A (ru) 2009-08-20
US20110218963A1 (en) 2011-09-08
CN101385017B (zh) 2011-06-08
JP5356561B2 (ja) 2013-12-04
TW200712912A (en) 2007-04-01
AU2006280352A1 (en) 2007-02-22
CA2616103C (en) 2017-06-20
EP1915670B1 (en) 2018-12-05
TWI454934B (zh) 2014-10-01
EP1915670A2 (en) 2008-04-30

Similar Documents

Publication Publication Date Title
KR101312810B1 (ko) 부분적인 아이템 변경 추적 및 동기화
US9432439B1 (en) System for and method of backing up content for use on a mobile device
US7680910B2 (en) System and method for efficient transfer of applications and data during device swap
US20130191739A1 (en) Intelligent automatic expansion/contraction of abbreviations in text-based electronic communications
US20080222212A1 (en) Peer-to-peer data synchronization architecture
US8412687B1 (en) System and method for delivering content to a communication device in a content delivery system
KR101224821B1 (ko) 저 충실도 장치들을 동기화하기 위한 시간-날짜 정보 유지 방법
KR20040099392A (ko) 데이터가 여러 데이터 저장부들에 저장되는 방식을동기화하기 위한 방법 및 장치
US20060179066A1 (en) Flexible file format for updating an address book
CN112835904A (zh) 一种数据处理方法和数据处理装置
JP2010530588A (ja) 連合レポジトリを用いたファイル記憶スケールの拡大
AU2011202919B2 (en) Partial item change tracking and synchronization
Song et al. Web based application program management framework in multi-device environments for personal cloud computing
TW201403362A (zh) 在多主控環境中通過以頁面爲基礎之信息追蹤管理大型資料集
US7788288B1 (en) Method for distributed configuration and file distribution based on centralized data
JP2006113663A (ja) データ保管システム、その方法、ファイルサーバ、端末およびプログラム
CN114553949A (zh) 一种页面消息的推送方法和装置
CN117370270A (zh) 数据管理方法及装置
Grossniklaus Context-Aware Data Management-An Object-Oriented Version Model
CN114240564A (zh) 一种订单同步方法、装置、电子设备及存储介质
Gupta System Services for Implementing Ad-Hoc Routing Protocols

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180903

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190829

Year of fee payment: 7