KR20160074489A - 적응적 동기화를 위한 데이터 분류 - Google Patents

적응적 동기화를 위한 데이터 분류 Download PDF

Info

Publication number
KR20160074489A
KR20160074489A KR1020167009975A KR20167009975A KR20160074489A KR 20160074489 A KR20160074489 A KR 20160074489A KR 1020167009975 A KR1020167009975 A KR 1020167009975A KR 20167009975 A KR20167009975 A KR 20167009975A KR 20160074489 A KR20160074489 A KR 20160074489A
Authority
KR
South Korea
Prior art keywords
synchronization
data
item
computing device
priority
Prior art date
Application number
KR1020167009975A
Other languages
English (en)
Other versions
KR102273414B1 (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
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20160074489A publication Critical patent/KR20160074489A/ko
Application granted granted Critical
Publication of KR102273414B1 publication Critical patent/KR102273414B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • G06F17/30174
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • G06F17/30598
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • H04L67/322
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

일 실시예에서, 애플리케이션 모듈(114)의 동기화 엔진(116)이 데이터 아이템의 묵시적 데이터 분류에 기초해서 동기화 스킴(306)을 조절할 수 있다. 동기화 엔진(116)은 데이터 아이템(402)에 대해 사용자가 실행하는 사용자 액션(406)을 검출할 수 있다. 상기 동기화 엔진(116)은 상기 사용자 액션(406)에 대한 액션 유형(408)을 결정할 수 있다. 상기 동기화 엔진(116)은 상기 액션 유형(406)에 기초해서 상기 데이터 아이템(402)으로 아이템 동기화 우선순위를 할당할 수 있다. 동기화는 상기 우선순위 및 동기화 엔진을 실행하는 장치의 동작 상태에 기초해서 수행된다. 동작 상태는 배터리 상태 또는 네트워크 접속 상태일 수 있다.

Description

적응적 동기화를 위한 데이터 분류{DATA CLASSIFICATION FOR ADAPTIVE SYNCHRONIZATION}
계속해서 업데이트되고 있는 데이터를, 클라우드 서비스를 이용해서 저장하기 시작하는 사용자가 점점 증가함에 따라서, 그 저장되는 데이터는 복수의 장치 간에 동기화될 수 있다. 사용자는 스마트 폰, 태블릿 장치, 랩톱 컴퓨터, 데스크톱 컴퓨터, 또는 그 밖의 다른 컴퓨팅 장치를 이용하고 있을 수 있다. 이들 장치 각각은 변하는 상황, 예컨대, 전력 레벨, 활동 레벨, 네트워크 접속, 및 그 밖의 다른 요인들이 변하는 상황에서 동작할 수 있다. 사용자는 이러한 동작 상태의 변화에 무관하게, 데이터의 동기화를 추구할 수 있다.
개요
이 개요는, 이하의 상세한 설명에서 더 기재되는 개념 중 선택한 일부를 개략적으로 소개하는 것이다. 이 개요는 본 발명의 핵심 특징 또는 본질적 특징을 나타내는 것이 아니며 본 발명의 범위를 한정하려 사용되는 것도 아니다.
이하에서 언급된 실시예는, 데이터 아이템의 묵시적 데이터 분류에 기초해서 동기화 스킴(synchronization scheme)을 조절하는 것에 관한 것이다. 동기화 엔진은 데이터 아이템에 대해 사용자가 실행한 사용자 액션을 검출할 수 있다. 상기 동기화 엔진은 상기 사용자 액션에 대한 액션 유형을 결정할 수 있다. 상기 동기화 엔진은 상기 액션 유형에 기초해서 데이터 아이템으로 아이템 동기화 우선순위를 할당할 수 있다.
앞서 언급된 그리고 그 밖의 다른 이점 및 특징이 획득될 수 있는 방식을 설명하기 위해서, 더 구체적인 설명이 첨부된 도면에 도시된 특정한 실시예를 참조하면서 제공될 것이다. 이들 도면은 단지 일반적인 실시예만 도시하는 것일 뿐, 발명의 범위를 제한하는 것으로 간주되지 않는다는 이해에 기초해서, 첨부된 도면을 이용해서 추가 구체적 사항 및 상세사항을 들어서 실시예를 기재하고 설명한다.
도 1은 데이터 네트워크의 일 실시예의 블록도,
도 2는 컴퓨팅 장치의 일 실시예의 블록도,
도 3은 컴퓨팅 장치를 위한 소프트웨어 아키텍처의 일 실시예의 블록도,
도 4는 데이터 관리 시스템의 일 실시예의 블록도,
도 5(a)-(b)는 동기화 우선 순위 레코드의 실시예의 블록도,
도 6은 운영 체제에 의한 컴퓨팅 장치의 동작 상태를 결정하는 방법의 일 실시예의 흐름도,
도 7은 애플리케이션 모듈에 대한 동기화 배정을 설정하는 방법의 일 실시예의 흐름도,
도 8은 애플리케이션 모듈에 대한 동기화 스킴을 결정하는 방법의 일 실시예의 흐름도,
도 9는 동기화 서버에 의한 동기화 스킴의 확립 방법의 일 실시예의 흐름도,
도 10은 데이터 아이템에 대한 아이템 동기화 우선순위를 확립하는 방법의 일 실시예의 흐름도,
도 11은 데이터 컨테이너에 대한 컨테이너 동기화 우선순위를 확립하는 방법의 일 실시예의 흐름도,
도 12는 데이터 분류에 기초해서 동기화 스킴을 생성하는 방법의 일 실시예의 흐름도를 나타낸다.
이하 실시예를 상세하게 설명한다. 특정한 구현예를 설명하지만, 이는 단지 예시 목적이라는 것을 이해할 것이다. 해당 분야의 통상의 기술자라면 본 개시내용의 사상 및 범위에서 벗어나지 않는 한 그 밖의 다른 구성요소 및 설정이 사용될 수 있음을 알 것이다. 구현예는 머신으로 구현되는 방법, 적어도 하나의 프로세서를 위한 방법을 구현하는 명령어들의 세트를 저장하는 유형의(tangible) 머신 판독 가능 매체, 또는 컴퓨팅 장치의 동기화 관리자일 수 있다.
데이터 동기화에 대해 총체적 접근법을 이용함으로써, 데이터가 효율적인 방식으로 복수의 장치들 간에 공유될 수 있다. 총체적 데이터 동기화 프로그램은 최적의 데이터 양 및 최적의 데이터 세트를 동기화시키기 위해 장치 상태와 사용자의 요구 모두를 고려할 수 있다. 데이터 동기화 프로그램은 장치 상태를 이용해 상기 장치 상태에 기초해서 하는 동기화 배정(synchronization allotment)을 동기화 엔진으로 제공할 수 있다. 그 후 동기화 엔진은 데이터 분류 시스템(data classification system)을 이용해 사용자가 희망하는 바와 가장 유사한 패턴으로 상기 동기화 배정을 효율적으로 적용할 수 있다.
전통적으로 데이터 동기화 프로그램은 서로 다른 장치의 폼 팩터 및 코드 실행 비용(code execution cost)에 기초해서 거동을 적응시키지 않았으며, 이는 사용자 경험에 부정적인 영향을 미칠 가능성이 있었다. 데이터 동기화 구현은 장치 특정적인 경향이 있을 수 있다. 데이터 동기화 구현이 복수의 장치 유형에 걸쳐 이뤄지는 경우, 상기 구현은 최소 자원 강건 플랫폼 상에서 작동하도록 설계될 수 있다. 구현을 최소한의 공통 분모에 집중시킴으로써, 사용자는 더 고품질의 사용자 경험을 박탈당할 수 있다.
데이터 동기화 구현은 컴퓨팅 자원, 가령, 프로세싱, 저장, 및 네트워크 능력을 이용해 작업을 실행할 수 있다. 각각의 자원은 배터리 수명 및 네트워크 대역폭에 영향을 미칠 수 있다. 덧붙여, 컴퓨팅 장치의 자원 가용성(resource availability)이 시간의 흐름에 따라 변할 수 있다. 전체 비용 영향에 따라 동기화 거동을 적응시킴으로써, 단일 동기화 구현이 장치 유형들 및 동작 상태들에 걸쳐 스케일링(scale)될 수 있어, 사용자에게 기능과 자원 사용성 모두에 대해 최상인 가용 경험을 제공할 수 있다.
운영 체제에서는, 다양한 동작 상태(operational state) 인자들을 동기화 자원의 동기화 배정에 맵핑할 수 있으며, 이로써 애플리케이션은 동기화 자원의 한정된 세트를 이용할 수 있다. 운영 체제의 상태 모듈은, 예컨대, 전력, 네트워크 접속, 프로세서 사용성 및 그 밖의 다른 동작 상태와 같은, 동작 상태에 영향을 미치는 다양한 입력에 기초해서, 실행 코드의 동작 상태를 결정하기 위한 다양한 알고리즘을 이용할 수 있다. 각각의 동작 상태 인자는 레벨로 분류될 수 있다. 예를 들어, 전력 상태는 전력망으로 플러그인됐을 때는 저(low) 비용으로, 스크린 온 상태이면서 배터리 전력이 공급될 때는 중(medium) 비용으로, 스크린 오프 상태이면서 배터리 전력이 공급될 때 고(high) 비용으로 기술될 수 있다. 운영 체제는 애플리케이션 모듈들을 구별할 수 있어서, 서로 다른 동기화 배정을 서로 다른 애플리케이션 모듈에게 할당할 수 있다.
운영 체제 레벨에서 동작 상태를 정의함으로써, 애플리케이션이 가용 자원에 기초해서 최적 동기화 접근법을 결정할 수 있다. 자원 결정을 운영 체제로 중앙집중시킴으로써, 애플리케이션은 타 애플리케이션의 동작을 주시해야 할 필요가 없다. 또한, 자원 결정을 중앙집중시킴으로써, 애플리케이션은 동작 상태를 결정하기 위해 자원 및 특성을 추적할 필요가 없다.
애플리케이션이 운영 체제로부터 동기화 배정을 수신하면, 그 후 상기 애플리케이션은 가용 동기화 자원을 최적으로 이용하는 동기화 스킴(synchronization scheme)을 선택할 수 있다. 동기화 스킴은 동기화 동안의 배정, 예컨대, 동기화 타이밍, 동기화 빈도, 동기화 범위, 및 동기화 지속시간에 기초해서 동기화 프로토콜을 스케일링하기 위해 동기화 엔진에 의한 후속 절차를 기술한다. 동기화 엔진은 기저 동기화 프로토콜에 영향을 미치지 않으면서 동기화 스킴을 구현할 수 있다. 동기화 프로토콜은 애플리케이션의 동기화를 위해 사용되는 네트워킹 규칙의 세트이며, 예컨대, IMAP(Internet Message Access Protocol), EAS(Exchange ActiveSync), 또는 POP3(Post Office Protocol, 버전 3)이다. 애플리케이션은 더 자주 동기화될 데이터의 범위, 통지의 범위, 또는 동기화 세션의 빈도와 지속시간을 결정할 수 있다. 예를 들어, 비즈니스 통신 소프트웨어가 일정표 모듈(calendar module)과 메일 모듈(mail module)을 자주 동기화시킬 수 있고, 반면에 연락처 리스트는 덜 자주 동기화시킬 수 있다. 메일 모듈 내의 다양한 메일 폴더가 다른 것들보다 더 자주 동기화될 수 있다.
또한, 애플리케이션의 동기화 엔진이 동기화에 의해 사용되는 데이터 로드에 기초해서 동기화 스킴을 조절할 수 있다. 예를 들어, 컴퓨팅 장치가 데이터 트래픽에 대해 높은 비용을 갖는 유료 네트워크 상에 있는 경우, 동기화 엔진은 더 싼 네트워크와의 접속이 이뤄질 때까지 큰 데이터 동기화를 지연시킬 수 있다. 태블릿은, 이동중이며 셀룰러 데이터 네트워크로 접속된 동안은 제한된 동기화를 이용할 수 있고, 그 후 전력망에 플러그인된 상태로 사용자의 로컬 영역 네트워크로 접속될 때 더 고품질의 동기화(richer synchronization)를 제공할 수 있다.
애플리케이션은 장치 동작 상태의 변화에 조정될 수 있다. 상기 운영 체제는 장치 동작 상태를 모니터하고 상황이 변할 때 애플리케이션의 동기화 배정을 조절할 수 있다. 그 후 애플리케이션은 동기화 스킴을 조절할 수 있다. 또한, 애플리케이션 및 운영 체제는 둘 모두 애플리케이션 상태를 모니터하여, 애플리케이션이 활발히 사용 중인지, 또는 배경(background)에서 실행 중인지, 또는 휴면기인지 여부를 결정한다. 애플리케이션 상태가 변함에 따라, 동기화 배정 및 동기화 스킴이 변경될 수 있다.
동기화 엔진은 동기화되는 데이터에 대해 데이터 분류 스킴을 동기화 스킴에서 더 고려할 수 있다. 상기 애플리케이션 모듈은 동기화될 하나 이상의 데이터 아이템, 예컨대, 데이터 파일, 문서, 디지털 이미지, 디지털 비디오 파일, 오디오 파일, 전자메일, 일정 이벤트, 연락처, 또는 실행파일을 제어할 수 있다. 상기 애플리케이션 모듈은 데이터 아이템을 하나 이상의 데이터 컨테이너(data container)로 그룹화할 수 있으며, 각각의 데이터 컨테이너는 데이터 아이템에 대한 분류 특징(classification feature)를 기술한다. 동기화 엔진은 다양한 기준에 기초해서 각각의 데이터 아이템 또는 각각의 데이터 컨테이너에 동기화 우선순위를 적용시킬 수 있다. 데이터 아이템에 대한 동기화 우선순위는 관련 데이터 컨테이너에 대한 동기화 우선순위에 영향을 미칠 수 있고, 그 반대의 경우도 가능하다.
사용자는 동기화될 데이터 아이템을 선택함으로써 동기화 우선순위를 명시적으로 데이터 아이템에 적용시킬 수 있다. 또는, 사용자는 명시적으로 데이터 아이템을 선호 데이터 아이템으로 지정할 수 있으며, 이는 상기 데이터 아이템에 대한 높은 동기화 우선순위를 묵시적으로 나타낸 것이다.
사용자가 명시적으로 동기화 우선순위를 데이터 아이템에 적용하지 않았거나 데이터 아이템을 선호 데이터 아이템으로서 명시적으로 지정하지 않은 경우, 동기화 엔진이 데이터 아이템에 대해 실행된 사용자 액션에 기초해서 동기화 우선순위를 묵시적으로 결정할 수 있다. 상기 동기화 엔진은 가장 최근 액세스된 데이터 파일 또는 데이터 컨테이너를 동기화할 수 있다. 사용자가 데이터 아이템에 대해 가장 최근 실행한 사용자 액션의 유형에 기초해서 상기 동기화 엔진은 동기화 우선순위를 데이터 아이템에 적용할 수 있다. 각각의 액션 유형은 특정 우선순위 가중치를 가질 수 있어서, 각각의 액션이 집성될 수 있고, 이때, 데이터 아이템을 보유하는 데이터 컨테이너들 간에 추가 가중치가 추가된다. 동기화 우선순위가 높을수록, 데이터 아이템의 동기화가 더 자주 이뤄지거나 동기화의 범위가 더 고품질이다(rich).
시간 경과에 따라서, 동기화 엔진은 데이터 아이템에 대한 동기화 우선순위를 상승 또는 강등시킬 수 있다. 명시적 동기화 우선순위 지정 또는 특정 활성 액션 유형을 통해서, 그 데이터 아이템의 동기화 우선순위를 신속하게 상승시킬 수 있다. 임의의 추가 사용자 액션 없거나, 혹은 가중치가 낮은 액션 유형의 사용자 액션만 있는 채로 쇠퇴 기간(decay period)이 경과되는 경우에는, 동기화 엔진은 그 데이터 아이템에 대한 동기화 우선순위를 강등시킬 수 있다. 각각의 우선순위 레벨의 쇠퇴 기간은 서로 다를 수 있다. 예를 들어, 동기화 우선순위가 낮으면 더 짧은 쇠퇴 기간을 갖고, 이 경우 강등 프로세스는 더 빨라진다. 사용자가 다음 동기화 우선순위 레벨을 위한 최소 문턱에 도달하기에 충분한 액션 유형의 충분한 사용자 액션을 수행하는 경우, 상기 동기화 엔진은 데이터 아이템을 다음 동기화 우선순위 레벨로 상승시킬 수 있다. 또한, 한 동기화 우선순위 레벨의 데이터 아이템의 개수가 아이템 한계에 의해 유지되어 상기 동기화 우선순위 레벨의 과잉 수용을 방지할 수 있다. 데이터 아이템의 상승이 다음 동기화 우선순위 레벨에서의 가용성에 따라 달라질 수 있다.
따라서, 일 실시예에서, 애플리케이션 모듈의 동기화 엔진이 데이터 아이템의 묵시적 데이터 분류에 기초해서 동기화 스킴을 조절할 수 있다. 동기화 엔진은 데이터 아이템에 대해 사용자가 실행한 사용자 액션을 검출할 수 있다. 상기 동기화 엔진은 사용자 액션에 대한 액션 유형을 결정할 수 있다. 상기 동기화 엔진은 액션 유형에 기초해서 데이터 아이템에게 아이템 동기화 우선순위를 할당할 수 있다.
도 1은, 데이터 네트워크(100)의 일 실시예의 블록도를 도시한다. 컴퓨팅 장치(110)는 운영 체제(112)를 실행할 수 있다. 운영 체제(112)는 애플리케이션 모듈(114)에 의한 하드웨어 자원의 사용과 애플리케이션 모듈(114)간 상호대화를 관리하는 소프트웨어 애플리케이션의 세트이다. 애플리케이션 모듈(114)은 소프트웨어 애플리케이션, 또는 소프트웨어 애플리케이션의 한 양태이다.
애플리케이션 모듈(114)은 클라우드 상에 저장된 원격 데이터 세트와 동기화될 수 있는 사용자에 대한 로컬 데이터 세트를 관리할 수 있다. 상기 애플리케이션 모듈(114)은 로컬 데이터 세트를 클라우드 데이터 세트와 동기화하는 동기화 엔진(sync engine)(116)을 가질 수 있다. 동기화 엔진(116)은 데이터 네트워크 접속(130)을 통해 동기화 서버(sync server)(120)로 접속될 수 있다. 상기 동기화 서버(120)는 클라우드 데이터 세트를 액세스할 수 있는 단일 서버 또는 분산 서버 세트를 지칭할 수 있다. 또는 피어-투-피어 네트워크(peer-to-peer network)에서의 피어가 동기화 서버(120)에 의한 컴퓨팅 장치(110)와의 동기화 기능을 수행할 수 있다. 데이터 네트워크 접속(130)은 인터넷 접속, 광역 네트워크 접속, 로컬 영역 네트워크 접속, 또는 그 밖의 다른 유형의 데이터 네트워크 접속일 수 있다. 상기 동기화 엔진(116)은 동기화 서버에게 동기화 스킴의 임의의 조정을 알리거나 데이터 네트워크 접속(130)을 통해 임의의 동기화를 수신할 수 있다.
도 2는 동기화 관리자로서 기능할 수 있는 예시적 컴퓨팅 장치(200)의 블록도이다. 컴퓨팅 장치(200)는 하드웨어, 소프트웨어, 펌웨어, 및 시스템-온-칩 기술 중 하나 이상을 조합하여 동기화 관리자를 구현할 수 있다. 컴퓨팅 장치(200)는 버스(210), 프로세서(220), 메모리(230), 데이터 저장장치(240), 입/출력 장치(250), 및 통신 인터페이스(260)를 포함할 수 있다. 버스(210), 또는 그 밖의 다른 구성요소 상호접속이 컴퓨팅 장치(200)의 구성요소들 간 통신을 허용할 수 있다.
프로세서(220)는 명령의 세트를 해석하고 실행하는 적어도 하나의 종래의 프로세서 또는 마이크로프로세서를 포함할 수 있다. 상기 메모리(230)는 프로세서(220)에 의해 실행되기 위한 정보 및 명령을 저장하는 랜덤 액세스 메모리(RAM) 또는 또 다른 유형의 동적 데이터 저장장치일 수 있다. 상기 메모리(230)는 또한 프로세서(220)에 의한 명령의 실행 동안 사용되는 임시 변수 또는 그 밖의 다른 중간 정보를 저장할 수 있다. 데이터 저장장치(240)는 프로세서(220)를 위한 정적 정보 및 명령을 저장하는 종래의 ROM 장치 또는 또 다른 유형의 정적 데이터 저장장치를 포함할 수 있다. 상기 데이터 저장장치(240)는 임의의 유형의 기계 판독형 매체, 예컨대, 자기 또는 광학 기록 매체, 가령, 디지털 비디오 디스크, 및 이의 대응하는 드라이브를 포함할 수 있다. 유형의(tangible) 기계 판독형 매체는, 신호와 달리, 기계 판독 가능 코드 또는 명령을 저장하는 물리 매체이다. 본 명세서에 기재된 바와 같이, 전파는, 가령, 명령이 저장된 컴퓨터 판독형 매체에서 발생할 수 있는 것처럼 명령을 저장하는 것에 비해, 명령을 전송하기 때문에, 명령이 컴퓨터 판독형 매체 상에 저장되게 하는 것은 명령이 전파 또는 전송되게 하는 것과 구별될 수 있다. 따라서 달리 언급되지 않는 한, 명령이 저장된 컴퓨터 판독형 매체, 또는 이와 유사한 형태로의 언급은 데이터가 저장 또는 보유될 수 있는 유형의 매체(tangible media)를 지칭한다. 데이터 저장장치(240)는 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 방법을 수행하게 하는 명령의 세트를 저장할 수 있다.
입/출력 장치(250)는 사용자가 컴퓨팅 장치(@00)로 정보를 입력할 수 있게 하는 하나 이상의 종래의 기구, 가령, 키보드, 마우스, 음성 인식 장치, 마이크로폰, 헤드셋, 제스처 인식 장치, 터치 스크린 등을 포함할 수 있다. 상기 입/출력 장치(250)는 사용자에게 정보를 출력하는 하나 이상의 종래의 기구, 예컨대, 디스플레이, 프린터, 하나 이상의 스피커, 헤드세트, 또는 매체, 예컨대, 메모리, 또는 자기 또는 광학 디스크 및 이에 대응하는 디스크 드라이브를 포함할 수 있다. 통신 인터페이스(260)는 컴퓨팅 장치(200)가 다른 장치 또는 네트워크와 통신할 수 있게 하는 임의의 트랜시버형 기구를 포함할 수 있다. 상기 통신 인터페이스(260)는 네트워크 인터페이스 또는 트랜시버 인터페이스를 포함할 수 있다. 상기 통신 인터페이스(260)는 무선, 유선, 또는 광학 인터페이스일 수 있다.
컴퓨팅 장치(200)는 프로세서(22)가 컴퓨터 판독형 매체, 예컨대, 메모리(230), 자기 디스크, 또는 광학 디스크에 포함되는 명령의 시퀀스를 실행시키는 것에 응답하여 이러한 기능을 수행할 수 있다. 이러한 명령은 또 다른 컴퓨터 판독형 매체, 가령, 데이터 저장장치(240)로부터, 또는 개별 장치로부터, 통신 인터페이스(160)를 통해 메모리(230)로 판독저장될 수 있다.
도 3은 컴퓨팅 장치(110)에 대한 소프트웨어 아키텍처(300)의 일 실시예의 블록도이다. 운영 체제(112)는 컴퓨팅 장치(110)에 대한 동작 상태를 결정하는 상태 모듈(state module)(302)을 가질 수 있다. 상기 동작 상태는 전력 상태, 스크린 상태, 네트워크 상태, 예산 상태(budget state), 프로세싱 상태, 또는 컴퓨팅 장치(110)의 그 밖의 다른 동작 기술자(operational descriptor)를 고려할 수 있다. 전력 상태는 컴퓨팅 장치(110)의 전력원, 예컨대, 전력망 또는 배터리를 기술한다. 스크린 상태는 컴퓨팅 장치(110)에 대한 디스플레이 스크린의 밝기 레벨, 높음, 낮음, 또는 꺼짐(off)을 기술한다. 네트워크 상태는 데이터 네트워크로의 컴퓨팅 장치(110)의 접속뿐 아니라 네트워크의 유형까지 기술한다. 예산 상태는 컴퓨팅 장치(110)의 자원들 중 임의의 자원에 예산 편성되었는지 여부, 예컨대, 배터리 예산 또는 네트워크 예산이 있는지 여부를 기술한다. 프로세싱 상태는 컴퓨팅 장치(110)의 프로세싱 파워의 사용성을 기술한다.
상태 모듈(302)은 동기화 배정(304)을 애플리케이션 모듈(114)로 전송할 수 있다. 상기 동기화 배정(304)은 애플리케이션 모듈(114)에 의해 사용될 수 있는 동기화 자원의 양을 애플리케이션 모듈(114)에게 알린다. 상기 동기화 배정(304)은 계조도 또는 레벨, 가령, 고 레벨 배정, 중 레벨 배정, 또는 저 레벨 배정의 패킷화된 세트로서 표시될 수 있다. 상기 동기화 엔진(116)은 상태 모듈(302)과 통신하여, 애플리케이션 모듈(114)에 의해 제어되는 데이터 아이템 각각에 대한 데이터 분류에 기초해서 애플리케이션 모듈(114)들 간 동기화 배정(304)을 조절할 수 있다.
그 후 애플리케이션 모듈(114)의 동기화 엔진(116)은 동기화 배정(304) 및 데이터 분류에 기초해서 동기화 스킴(306)을 개발 또는 조절할 수 있다. 상기 동기화 스킴(306)은 로컬 데이터 세트를 클라우드 데이터 세트와 동기화하기 위한 규칙을 기술한다. 상기 동기화 스킴(306)은 동기화 범위, 동기화 스케줄, 동기화 지속시간, 동기화 데이터 한도(data quota), 및 그 밖의 다른 메트릭을 기술할 수 있다. 동기화 범위는 동기화 세션 동안 동기화될 특정 서브-모듈에 대해 기술할 수 있는데, 예컨대, 동기화된 전자메일이 임의의 첨부물을 포함하는지 여부를 기술할 수 있다. 동기화 스케줄은 동기화의 타이밍 및 빈도를 기술할 수 있다. 동기화 지속시간은 동기화 세션에 대한 시간 길이를 기술한다. 동기화 데이터 한도는 동기화 세션 동안 전송되는 데이터의 양을 기술한다. 상기 동기화 서버(120)는 동기화 엔진(116)에 의해 제공되는 동기화 스킴(306)에 기초해서 동기화 업데이트(308)를 동기화 엔진으로 전송할 수 있다.
도 4는 동기화 엔진(116)이 애플리케이션 모듈(114)의 소유 데이터를 분류하기 위해 사용할 수 있는 데이터 관리 시스템(400)의 일 실시예의 블록도를 도시한다. 애플리케이션 모듈(114)은 하나 이상의 데이터 아이템(402)의 세트를 관리, 편집, 또는 제어할 수 있다. 데이터 아이템(402)은 애플리케이션 모듈(114)에 의해 처리되는 데이터 객체, 가령, 파일, 문서, 디지털 이미지, 디지털 비디오 파일, 오디오 파일, 전자메일, 일정표 이벤트, 연락처, 실행파일, 또는 그 밖의 다른 데이터 객체이다. 데이터 아이템(402)은 복수의 애플리케이션 모듈(114)에 의해 제어될 수 있다. 각각의 데이터 아이템(402)은 하나 이상의 데이터 컨테이너(404)로 그룹화될 수 있다. 데이터 컨테이너(404)는 데이터 아이템(402)에 대한 분류 그룹이다. 예를 들어, 데이터 파일이 그 밖의 다른 데이터 파일들과 데이터 컨테이너(404), 예컨대, 데이터 폴더로 그룹화될 수 있는 데이터 아이템(402)이다. 대안적으로, 전자메일은 전자메일의 발신인을 나타내는 데이터 컨테이너(404)로 그룹화될 수 있는 데이터 아이템(402)이지만, 전자메일의 소재를 나타내는 다른 데이터 컨테이너(404)로 그룹화될 수 있다.
사용자가 애플리케이션 모듈(114)을 이용하여 데이터 아이템(402) 또는 데이터 컨테이너(404)에 대한 사용자 액션(406)을 실행할 수 있다. 각각의 사용자 액션(406)은 사용자 액션(406)을 기술하는, 특히, 사용자 액션(406)에서의 사용자 참여의 레벨을 기술하는 액션 유형(408)을 가질 수 있다. 예를 들어, 전자메일을 읽는 것이 수동 액션 유형(408)으로 간주될 수 있고, 전자메일에 답장하는 것이 능동 액션 유형(408)으로 간주될 수 있으며, 전자메일을 삭제하는 것이 부정적 액션 유형(408)으로 간주될 수 있다. 상기 동기화 엔진(116)은 각각의 액션 유형(408)에게 우선순위 가중치(410)를 할당할 수 있다. 사용자 액션(406)의 우선순위 가중치(410)는 사용자 액션(406)의 타깃인 데이터 아이템(402) 또는 데이터 컨테이너(404)의 동기화 우선순위를 변경할 수 있다.
상기 동기화 엔진은 데이터 아이템(402) 또는 데이터 컨테이너(404)의 동기화 우선순위를 추적하기 위해 동기화 레코드(synchronization record)를 유지할 수 있다. 도 5(a)는 아이템 동기화 우선순위 레코드(500)의 일 실시예의 블록도를 도시한다. 아이템 동기화 우선순위 레코드(500)는 아이템 동기화 우선순위 레코드가(500)가 나타내는 데이터 아이템(402)을 식별하는 데이터 아이템 필드(502)를 가질 수 있다. 아이템 동기화 우선순위 레코드(500)는 데이터 아이템(402)과 연관된 데이터 컨테이너(404)를 식별하는 데이터 컨테이너 필드(504)를 가질 수 있다. 아이템 동기화 우선순위 레코드(500)는 데이터 아이템(402)의 아이템 동기화 우선순위를 기술하는 아이템 동기화 우선순위 필드(506)를 가질 수 있다. 상기 아이템 동기화 우선순위는 데이터 아이템(402)에 대한 동기화의 범위와 빈도 모두를 결정하는데 사용될 수 있다. 동기화 우선순위가 높은 데이터 아이템(402)일수록 동기화 우선순위가 낮은 데이터 아이템(402)보다 더 자주 동기화되거나 더 고품질로 동기화될 수 있다. 아이템 동기화 우선순위 레코드(500)는, 데이터 아이템(402)에 대한 아이템 동기화 우선순위가 더 낮은 아이템 동기화 우선순위로 강등되기 전에 사용자 액션(406)에 의해 타깃팅되지 않는 기간을 기술하는 아이템 쇠퇴 기간 필드(508)를 가질 수 있다.
도 5(b)는 컨테이너의 동기화 우선순위 레코드(550)의 일 실시예의 블록도를 도시한다. 컨테이너 동기화 우선순위 레코드(550)는 컨테이너 동기화 우선순위 레코드(550)가 나타내는 데이터 컨테이너(404)를 식별하는 데이터 컨테이너 필드(504)를 가질 수 있다. 컨테이너 동기화 우선순위 레코드(550)는 데이터 컨테이너(404)와 연관된 데이터 아이템(402)을 식별하는 데이터 아이템 필드(502)를 가질 수 있다. 상기 컨테이너 동기화 우선순위 레코드(550)는 데이터 컨테이너(404)의 컨테이너 동기화 우선순위를 기술하는 컨테이너 동기화 우선순위 필드(552)를 가질 수 있다. 상기 컨테이너 동기화 우선순위는 데이터 컨테이너(404)에 대한 동기화의 범위와 빈도 모두를 결정하도록 사용될 수 있다. 높은 동기화 우선순위를 갖는 데이터 컨테이너(404) 내 데이터 아이템(402)일수록 낮은 동기화 우선순위를 갖는 데이터 컨테이너(404) 내 데이터 아이템(402)보다 더 자주 또는 더 고품질로 동기화될 수 있다. 컨테이너 동기화 우선순위 레코드(550)는 데이터 컨테이너(404)에 대한 컨테이너 동기화 우선순위가 더 낮은 컨테이너 동기화 우선순위로 강등되기 전에 사용자 액션(406)에 의해 타깃팅되지 않는 기간을 기술하는 컨테이너 쇠퇴 기간 필드(554)를 가질 수 있다.
도 6은 운영 체제(112)에 의한 컴퓨팅 장치(110)의 동작 상태를 결정하는 방법(600)의 일 실시예의 흐름도를 도시한다. 상기 운영 체제(112)의 상태 모듈(302)은 전력 상태를 동작 상태의 인자로 고려할 수 있다(블록(602)). 상태 모듈(302)은 스크린 상태를 동작 상태의 인자로 고려할 수 있다(블록(604)). 상태 모듈(302)은 네트워크 상태를 스크린 상태의 인자로 고려할 수 있다(블록(606)). 상태 모듈(302)은 예산 상태를 동작 상태의 인자로 고려할 수 있다(블록(608)). 상기 상태 모듈(302)은 프로세싱 상태를 동작 상태의 인자로 고려할 수 있다(블록(610)).
도 7은 애플리케이션 모듈(114)에 대한 동기화 배정(304)을 설정하는 방법(700)의 일 실시예의 흐름도를 도시한다. 상기 운영 체제(112)는 컴퓨팅 장치(110)에 대한 동작 상태를 결정할 수 있다(블록(702)). 상기 운영 체제(112)는 애플리케이션 모듈(114)들 간 동기화 배정(304)을 구별할 수 있는데, 예컨대, 애플리케이션 모듈(114)에 대한 동기화 배정(304)을 보조 애플리케이션 모듈(114)에 대한 보조 동기화 배정(304)으로부터 구별할 수 있다(블록(704)). 구별할 때, 보조 애플리케이션 모듈(114)은 애플리케이션 모듈(114)에 대한 동기화 배정(304)보다 높거나 낮은 동기화 배정(304)을 수신할 수 있다. 운영 체제(112)는 동기화 배정(304)을 고 레벨 배정, 중 레벨 배정, 또는 저 레벨 배정 중 적어도 하나로서 제공할 수 있다(블록(706)). 운영 체제(112)는 애플리케이션 모듈(114)에 대한 우선순위 레벨을 설정하여 어느 애플리케이션 모듈이 일반적으로 동기화를 먼저 수신하는지를 기술할 수 있다(블록(708)). 사용자 또는 개발자가 애플리케이션 모듈(114)에 대한 우선순위 레벨을 설정할 수 있다. 대안적으로, 동기화 엔진(116)에 의해 애플리케이션 모듈(114)에 대한 우선순위 레벨이 애플리케이션 모듈(114)에 대해 실행되는 사용자 액션(406)의 액션 유형(408)에 기초해서 할 수 있다. 상기 운영 체제(112)는 애플리케이션 모듈(114)에 대한 애플리케이션(APP) 상태를 결정할 수 있다(블록(710)). 상기 애플리케이션 상태는 애플리케이션 모듈(114)의 활동 레벨, 예컨대, 활성, 배경, 또는 휴면을 기술한다. 상기 운영 체제(112)는 애플리케이션 상태를 동기화 배정(304)의 인자로 고려할 수 있다(블록(712)). 상기 운영 체제(112)는 동작 상태에 기초해서 동기화 배정(304)을 애플리케이션 모듈(114)로 할당할 수 있다(블록(714)). 상기 운영 체제(112)는 동기화 배정(304)을 애플리케이션 모듈(114)로 통신할 수 있다(블록(716)). 상태 모듈(302)이 동작 상태에 대한 상태 변화를 식별하는 경우(블록(718)), 운영 체제(112)는 동작 상태에 대한 상태 변화에 기초해서 동기화 배정(304)을 조절할 수 있다(블록(720)).
도 8은 애플리케이션 모듈(114)에 대한 동기화 스킴(306)을 구현하는 방법(800)의 일 실시예의 흐름도를 도시한다. 상기 애플리케이션 모듈(114)은 애플리케이션 상태를 식별할 수 있다(블록(802)). 애플리케이션 모듈(114)의 동기화 엔진(116)이 운영 체제(112)로부터 수신된 동기화 배정(304)에 기초해서 동기화 스킴(306)을 규정할 수 있다(블록(804)). 애플리케이션 모듈(114)은 동기화 배정에 기초해서 동기화 엔진(116)에 대한 동기화 범위를 결정할 수 있다(블록(806)). 애플리케이션 모듈(114)은 동기화 배정에 기초해서 동기화 엔진(116)에 대한 동기화 스케줄을 결정할 수 있다(블록(808)). 상기 애플리케이션 모듈(114)은 동기화 배정에 기초해서 동기화 엔진(116)에 대한 동기화 지속시간을 결정할 수 있다(블록(810)). 애플리케이션 모듈(114)은 동기화 배정에 기초해서 동기화 엔진(116)에 대한 동기화 데이터 한도를 결정할 수 있다(블록(812)). 상기 애플리케이션 모듈(114)은 각각의 애플리케이션 서브-모듈(114)에 대해 동기화 서브-스킴(synchronization sub-scheme)을 할당할 수 있는데, 예를 들면, 동기화 배정(304)에 기초해서 주 애플리케이션 서브-모듈에 대해 주 동기화 서브-스킴을 할당하고 보조 서브-모듈에 대해 보조 동기화 서브-스킴을 할당할 수 있다(블록(814)). 애플리케이션 서브-모듈이 애플리케이션 모듈(114)의 하나의 양태, 예컨대, 비즈니스 통신 프로그램에 대한 메일 기능 및 일정표 기능이다. 예를 들어, 메일 기능에 대한 동기화 서브-스킴이 일정표 기능에 대한 동기화 서브-스킴과 상이할 수 있다. 애플리케이션 모듈(114)의 동기화 엔진(116)이 동기화 배정에 기초해서 애플리케이션 모듈(114)에 대한 동기화 스킴(306)을 구현할 수 있다(블록(816)). 애플리케이션 모듈(114)의 애플리케이션 상태에 변화가 발생하는 경우(블록(818)), 애플리케이션 모듈(114)은 애플리케이션 상태의 변화에 기초해서 주 동기화 서브-스킴 및 보조 동기화 서브-스킴을 조절하여 새 애플리케이션 상태를 반영할 수 있다(블록(820)).
도 9는 데이터 아이템(402)에 대한 아이템 동기화 우선순위를 확립하기 위한 방법(900)의 일 실시예의 흐름도를 도시한다. 상기 동기화 엔진(116)은 데이터 아이템(402)을 데이터 컨테이너(404)와 연관시킬 수 있다(블록(902)). 동기화 엔진(116)이 데이터 아이템(402)에 대해 사용자로부터 아이템 동기화 우선순위 지정을 수신한 경우(블록(904)), 상기 동기화 엔진(116)은 지정된 아이템 동기화 우선순위를 상기 데이터 아이템(402)으로 할당할 수 있다(블록(906)). 상기 동기화 엔진(116)은 데이터 아이템(402)에 대해 사용자가 실행한 사용자 액션(406)을 검출할 수 있다(블록(908)). 상기 동기화 엔진(116)은 사용자 액션(406)에 대한 액션 유형(408)을 결정한다(블록(910)). 동기화 엔진(116)은 우선순위 가중치(410)를 액션 유형(408)과 연관시킬 수 있다(블록(912)). 상기 동기화 엔진(116)은 액션 유형(408)에 기초해서 아이템 동기화 우선순위를 데이터 아이템(402)으로 할당할 수 있다(블록(914)). 상기 동기화 엔진(116)은 아이템 동기화 우선순위에 기초해서 컨테이너(CONT) 동기화 우선순위를 데이터 아이템(402)과 연관된 데이터 컨테이너(404)로 할당할 수 있다(블록(916)). 최소 우선순위 문턱에 도달하기에 충분한 차후 사용자 액션(406) 없이 아이템 쇠퇴 기간에 도달한 경우(블록(918)), 상기 동기화 엔진(116)은 아이템 쇠퇴 기간 후에 데이터 아이템(402)에 대해 아이템 동기화 우선순위를 강등시킬 수 있다(블록(920)). 그렇지 않고, 사용자가 데이터 아이템(402)에 대해 충분한 액션 유형(408)의 충분한 차후 사용자 액션(406)을 실행하고(블록(922)) 동기화 엔진(116)이 다음 아이템 동기화 우선순위 레벨이 아이템 한계에 도달하지 않았다고 결정한 경우(블록(924)), 상기 동기화 엔진(116)은 차후 사용자 액션(406) 후에 데이터 아이템(402)에 대해 아이템 동기화 우선순위를 상승시킬 수 있다(블록(926)). 각각의 아이템 동기화 우선순위 레벨은, 상기 아이템 동기화 우선순위가 할당될 수 있는 데이터 아이템의 최대 개수를 기술하는 아이템 한계를 가질 수 있다.
도 10은 데이터 컨테이너(404)에 대한 컨테이너 동기화 우선순위를 확립하기 위한 방법(1000)의 일 실시예의 흐름도를 도시한다. 상기 동기화 엔진(116)은 데이터 컨테이너(404)를 데이터 아이템(402)과 연관시킬 수 있다(블록(1002)). 동기화 엔진(116)이 데이터 컨테이너(404)에 대해 사용자로부터 컨테이너 동기화 우선순위 지정을 수신한 경우(블록(1004)), 상기 동기화 엔진(116)은 지정된 컨테이너 동기화 우선순위를 데이터 컨테이너(404)로 할당할 수 있다(블록(1006)). 상기 동기화 엔진(116)은 컨테이너 동기화 우선순위 도착지에 기초해서 데이터 컨테이너(404)와 연관된 임의의 데이터 아이템(402)에 대해 아이템 동기화 우선순위를 변경할 수 있다. 데이터 컨테이너(404)의 유형이 데이터 컨테이너(404)에 대한 사용자 액션이 연관된 데이터 아이템(402)에 대한 아이템 동기화 우선순위에 얼마나 영향을 미치는지에 영향을 미칠 수 있다. 동기화 엔진(116)은 데이터 컨테이너(404)에 대해 사용자가 실행한 사용자 액션(406)을 검출할 수 있다(블록(1008)). 동기화 엔진(116)은 사용자 액션(406)에 대한 액션 유형(408)을 결정한다(블록(1010)). 상기 동기화 엔진(116)은 우선순위 가중치(410)를 액션 유형(408)과 연관시킬 수 있다(블록(1012)). 상기 동기화 엔진(116)은 액션 유형(408)에 기초해서 컨테이너 동기화 우선순위를 데이터 컨테이너(404)로 할당할 수 있다(블록(1014)). 동기화 엔진(116)은 컨테이너 동기화 우선순위에 기초해서 아이템 동기화 우선순위를 데이터 컨테이너(404)와 연관된 데이터 아이템(402)에 할당할 수 있다(블록(1016)). 최소 우선순위 문턱에 도달하기에 충분한 차후 사용자 액션(406) 없이 아이템 쇠퇴 기간에 도달하는 경우(블록(1018)), 상기 동기화 엔진(116)은 아이템 쇠퇴 기간 후에 데이터 컨테이너(404)에 대한 컨테이너 동기화 우선순위를 강등시킬 수 있다(블록(1020)). 이와 달리, 사용자가 데이터 컨테이너(404)에 대한 충분한 액션 유형(408)의 충분한 차후 사용자 액션(406)을 실행하고(블록(1022)) 동기화 엔진(116)이 다음 컨테이너 동기화 우선순위 레벨이 컨테이너 한계에 도달하지 않았다고 결정한 경우(블록(1024)), 상기 동기화 엔진(116)은 차후 사용자 액션(406) 후에 상기 데이터 컨테이너(404)에 대한 컨테이너 동기화 우선순위를 상승시킬 수 있다(블록(1026)). 각각의 컨테이너 동기화 우선순위 레벨은 상기 컨테이너 동기화 우선순위 레벨이 할당될 수 있는 데이터 컨테이너의 최대 개수를 기술하는 컨테이너 한계를 갖지 않을 수 있다.
도 11은 애플리케이션 모듈(114)에 의해 제어되는 데이터 아이템(402) 및 데이터 컨테이너(404)의 데이터 분류에 기초해서 동기화 스킴(306)을 생성하는 방법(1100)의 일 실시예의 흐름도를 도시한다. 동기화 엔진(116)은 아이템 동기화 우선순위에 기초해서 동기화 스킴(306)을 개발할 수 있다(블록(1102)). 상기 동기화 엔진(116)은 컨테이너 동기화 우선순위에 기초해서 동기화 스킴(306)을 개발할 수 있다(블록(1104)). 동기화 엔진(116)은 아이템 동기화 우선순위에 기초해서 동기화 스케줄을 할당할 수 있다(블록(1106)). 상기 동기화 엔진(116)은 아이템 동기화 우선순위에 기초해서 동기화 범위를 할당할 수 있다(블록(1108)). 동기화 엔진(116)은 컨테이너 동기화 우선순위에 기초해서 동기화 스케줄을 할당할 수 있다(블록(1110)). 상기 동기화 엔진(116)은 컨테이너 동기화 우선순위에 기초해서 동기화 범위를 할당할 수 있다(블록(1112)).
도 12는 동기화 서버(120)를 이용해 동기화 스킴(306)을 확립하기 위한 방법(1200)의 일 실시예의 흐름도를 도시한다. 상기 애플리케이션 모듈(114)은 컴퓨팅 장치(110)의 동작 상태에 기초해서 운영 체제(112)로부터 동기화 배정(304)을 수신할 수 있다(블록(1202)). 상기 애플리케이션 모듈(114)은 애플리케이션 모듈에 대한 애플리케이션 상태를 결정할 수 있다(블록(1204)). 상기 애플리케이션 모듈(114)의 상기 동기화 엔진(116)은 상기 애플리케이션 모듈(114)에 의해 제어되는 데이터 아이템(402)과 데이터 컨테이너(404)에 대한 데이터 분류를 결정할 수 있다(블록(1206)). 상기 애플리케이션 모듈(114)의 상기 동기화 엔진(116)은 동기화 배정(304) 및 데이터 분류에 기초해서 애플리케이션 모듈(114)에 대한 동기화 스킴(306)을 구현할 수 있다(블록(1208)). 애플리케이션 모듈(114)의 동기화 엔진(116)은 동기화 스킴(306)을 동기화 서버(120)로 전송할 수 있다(블록(1210)). 애플리케이션 모듈(14)이 동작 상태의 변화 후 운영 체제(112)로부터 업데이트된 동기화 배정(304)을 수신하는 경우(블록(1212)), 애플리케이션 모듈(114)의 동기화 엔진(116)은 업데이트된 동기화 배정(304)에 기초해서 동기화 스킴(306)을 조절할 수 있다(블록(1214)). 애플리케이션 모듈(114)의 동기화 엔진(116)은 동기화 스킴(306)을 조정한 후 업데이트된 동기화 스킴(306)을 동기화 서버(120)에게 알릴 수 있다(블록(1216)). 또는, 애플리케이션 모듈(114)의 동기화 엔진(116)이 게으른 동기화 스킴 업데이트를 실행할 수 있고, 동기화 서버(120)로부터 동기화 업데이트(308)를 수신하면 동기화 서버(120)에게 동기화 스킴(306)을 알릴 수 있다(블록(1218)).
본 발명이 구조의 특징 및/또는 방법의 동작에 특정적인 언어로 기재되었지만, 청구되는 본 발명은 앞서 기재된 상기 특정적인 특징 또는 동작에 반드시 한정되는 것은 아니다. 오히려, 앞서 기재된 특정 특징 및 동작이 청구범위를 구현하기 위한 예시적 형태로 개시된다.
본 발명의 범위 내 실시예가 컴퓨터 실행 명령 또는 데이터 구조가 저장된 컴퓨터 판독형 저장 매체를 더 포함할 수 있다. 이러한 컴퓨터 판독형 저장 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 비제한적 예를 들면, 이러한 컴퓨터 판독형 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 그 밖의 다른 광학 디스크 저장장치, 자기 디스크 저장장치 또는 그 밖의 다른 자기 데이터 저장장치, 또는 컴퓨터 실행 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 저장하도록 사용될 수 있는 그 밖의 다른 임의의 매체를 포함할 수 있다. 상기 나열된 것들의 조합이 또한 컴퓨터 판독형 저장 매체의 범위 내에 포함되어야 한다.
또한 실시예는 작업이 통신 네트워크를 통해 (유선 링크, 무선 링크, 또는 이들의 조합에 의해) 링크된 로컬 프로세싱 장치와 원격 프로세싱 장치에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다.
컴퓨터 실행형 명령은, 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 프로세싱 장치로 하여금 특정 기능 또는 기능 그룹을 수행하게 하는 명령 및 데이터를 포함한다. 컴퓨터 실행형 명령은 또한 자립형 또는 네트워크 환경에서 컴퓨터에 의해 실행되는 프로그램 모듈을 포함한다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상화 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성요소, 및 데이터 구조 등을 포함한다. 컴퓨터 실행 명령, 연관된 데이터 구조, 및 프로그램 모듈은 본 명세서에 개시된 방법의 단계들을 실행하기 위한 프로그램 코드 수단의 예시를 나타낸다. 이러한 실행 명령 또는 연관된 데이터 구조의 특정 시퀀스가 이러한 단계에서 기재되는 기능을 구현하기 위한 대응하는 동작의 예시를 나타낸다.
상기의 기재가 특정한 세부 사항을 포함할 수 있지만, 결코 청구항을 한정하는 것은 아니다. 기재된 실시예의 다른 구성예도 본 발명의 범주의 일부이다. 예를 들어, 각각의 사용자가 이러한 시스템을 개별적으로 사용하는 경우에는, 본 발명의 원리는 각각의 개별 사용자에게 적용될 수 있다. 이로써, 여러 가능한 적용예 중 임의의 적용예가 본 명세서에 기재된 기능을 이용하지 않는 경우에도, 각각의 사용자가 본 발명의 이점을 이용할 수 있다. 전자 장치의 복수의 인스턴스는 각각, 콘텐츠를 다양한 가능한 방식으로 프로세싱할 수 있다. 복수의 구현예가, 모든 최종 사용자가 사용하는 하나의 시스템으로 행해지는 것은 아니다. 따라서 임의의 주어진 특정 예시가 아니라 청구범위 및 이의 적법한 균등예만 본 발명을 규정해야 한다.

Claims (15)

  1. 동기화 관리자(synchronization manager)로서 구성되는 컴퓨팅 장치로서,
    상기 동기화 관리자는
    데이터 컨테이너와 연관된 데이터 아이템을 저장하는 데이터 저장장치와,
    상기 데이터 아이템과 관련해서, 동기화 서버에 접속되는 통신 인터페이스와,
    액션 유형을 가진 사용자 액션을 수신하는 입력 장치와,
    상기 액션 유형에 기초해서 동기화의 범위 및 빈도를 기술하는 아이템 동기화 우선순위를 상기 데이터 아이템에 할당하고, 또한 상기 아이템 동기화 우선순위에 기초해서 동기화 스킴(synchronization scheme)을 구현하는 동기화 엔진을 실행시키는 프로세서를 포함하는,
    컴퓨팅 장치.
  2. 제1항에 있어서,
    상기 동기화 엔진은, 컴퓨팅 장치의 동작 상태에 기초해서 운영 체제로부터 동기화 배정(synchronization allotment)을 수신하는,
    컴퓨팅 장치.
  3. 제1항에 있어서,
    상기 동기화 엔진은, 상기 아이템 동기화 우선순위에 기초해서 상기 데이터 아이템과 연관된 데이터 컨테이너에 컨테이너 동기화 우선순위를 할당하는,
    컴퓨팅 장치.
  4. 제1항에 있어서,
    상기 입력 장치는, 상기 데이터 아이템과 관련해서, 사용자로부터 아이템 동기화 우선순위 지정을 수신하는,
    컴퓨팅 장치.
  5. 제1항에 있어서,
    상기 동기화 엔진은 상기 액션 유형에 우선순위 가중치를 연관시키는,
    컴퓨팅 장치.
  6. 제1항에 있어서,
    상기 동기화 엔진은, 쇠퇴 기간(decay period)이 경과한 후에, 상기 데이터 아이템에 대한 상기 아이템 동기화 우선순위를 강등시키는,
    컴퓨팅 장치.
  7. 제1항에 있어서,
    상기 동기화 엔진은 다음 아이템 동기화 우선순위 레벨이 아이템 한계에 도달하지 않았는지 결정하는,
    컴퓨팅 장치.
  8. 제1항에 있어서,
    상기 동기화 엔진은 차후 사용자 액션 후에 상기 데이터 아이템에 대한 상기 아이템 동기화 우선순위를 상승시키는,
    컴퓨팅 장치.
  9. 데이터 컨테이너와 연관된 데이터 아이템을 저장하는 데이터 저장장치를 갖는 컴퓨팅 장치로서,
    상기 컴퓨팅 장치는, 상기 데이터 컨테이너에 대해 사용자가 실행한 사용자 액션을 검출하고, 상기 사용자 액션에 대한 액션 유형을 결정하며, 상기 액션 유형에 기초해서, 동기화의 범위 및 빈도를 기술하는 컨테이너 동기화 우선순위를 상기 데이터 컨테이너에 할당하고, 상기 컨테이너 동기화 우선순위에 기초해서 동기화 스킴을 구현하도록 구성되는,
    컴퓨팅 장치.
  10. 제9항에 있어서,
    상기 컴퓨팅 장치는, 동작 상태에 기초해서 상기 데이터 컨테이너(404)를 제어하는 애플리케이션 모듈에 동기화 배정을 할당하도록 구성되는,
    컴퓨팅 장치.
  11. 제9항에 있어서,
    상기 컴퓨팅 장치는 상기 데이터 컨테이너를 상기 데이터 아이템과 연관시키고, 상기 컨테이너 동기화 우선순위에 기초해서 아이템 동기화 우선순위를 상기 데이터 아이템에 할당하도록 구성되는,
    컴퓨팅 장치.
  12. 제9항에 있어서,
    상기 컴퓨팅 장치는 상기 데이터 컨테이너에 대해 상기 사용자로부터 컨테이너 동기화 우선순위 지정을 수신하도록 구성되는,
    컴퓨팅 장치.
  13. 제9항에 있어서,
    상기 컴퓨팅 장치는 상기 액션 유형과 우선순위 가중치를 연관시키도록 구성되는,
    컴퓨팅 장치.
  14. 머신-구현식 방법으로서,
    애플리케이션 모듈에서 데이터 아이템에 대해 사용자가 실행한 사용자 액션을 검출하는 단계와,
    동기화 엔진에 의해, 상기 사용자 액션에 대한 액션 유형을 결정하는 단계와,
    동기화 엔진에 의해, 상기 액션 유형에 기초해서 동기화의 범위 및 빈도를 기술하는 아이템 동기화 우선순위를 상기 데이터 아이템에 할당하는 단계와,
    컴퓨팅 장치의 동작 상태에 기초해서 운영 체제로부터 동기화 배정을 수신하는 단계와,
    상기 동기화 배정 및 상기 아이템 동기화 우선순위에 기초해서 애플리케이션 모듈에 대한 동기화 스킴을 구현하는 단계
    를 포함하는 머신-구현식 방법.
  15. 제14항에 있어서,
    상기 동기화 엔진에 의해, 아이템 쇠퇴 기간이 경과한 후에 상기 데이터 아이템에 대한 상기 아이템 동기화 우선순위를 강등시키는 단계를 더 포함하는,
    머신-구현식 방법.
KR1020167009975A 2013-10-17 2014-10-13 적응적 동기화를 위한 데이터 분류 KR102273414B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/056,883 US9588983B2 (en) 2013-10-17 2013-10-17 Data classification for adaptive synchronization
US14/056,883 2013-10-17
PCT/US2014/060211 WO2015057536A1 (en) 2013-10-17 2014-10-13 Data classification for adaptive synchronization

Publications (2)

Publication Number Publication Date
KR20160074489A true KR20160074489A (ko) 2016-06-28
KR102273414B1 KR102273414B1 (ko) 2021-07-05

Family

ID=51866315

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167009975A KR102273414B1 (ko) 2013-10-17 2014-10-13 적응적 동기화를 위한 데이터 분류

Country Status (5)

Country Link
US (1) US9588983B2 (ko)
EP (1) EP3058705B1 (ko)
KR (1) KR102273414B1 (ko)
CN (1) CN105637841B (ko)
WO (1) WO2015057536A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180073003A (ko) * 2016-12-22 2018-07-02 주식회사 케이티 오브젝트에 대한 동기화 관리 장치 및 방법

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519490B2 (en) 2013-03-07 2016-12-13 Microsoft Technology Licensing, Llc Adaptive data synchronization
JP5783301B1 (ja) 2014-06-11 2015-09-24 富士ゼロックス株式会社 通信端末、通信システム及びプログラム
US10225810B2 (en) 2014-08-06 2019-03-05 Samsung Electronics Co., Ltd. Method and apparatus for transmitting/receiving synchronization signal in device-to-device communication system
US10805891B2 (en) * 2014-09-25 2020-10-13 Samsung Electronics Co., Ltd. Synchronization procedure and resource control method and apparatus for communication in D2D system
CN106569917B (zh) * 2016-11-07 2020-06-16 Oppo广东移动通信有限公司 一种数据备份方法及移动移动终端
US11032367B2 (en) 2018-07-16 2021-06-08 Microsoft Technology Licensing, Llc Long upload time detection and management

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070084302A (ko) * 2004-10-25 2007-08-24 임파워 테크놀로지스 인코포레이티드 범용 데이터 동기화를 위한 시스템 및 방법
US20080049714A1 (en) * 2006-08-25 2008-02-28 International Business Machines Corporation A technique for synchronizing data with a mobile device based on a synchronization context
CN101167069A (zh) * 2005-04-22 2008-04-23 微软公司 文件对等同步的系统和方法
US20090282169A1 (en) * 2008-05-09 2009-11-12 Avi Kumar Synchronization programs and methods for networked and mobile devices
US20090300169A1 (en) * 2008-06-03 2009-12-03 Microsoft Corporation Synchronization throttling based on user activity
EP2207328A1 (en) * 2002-04-30 2010-07-14 Visto Corporation Adaptive synchronization of service data
US20120149352A1 (en) * 2010-07-26 2012-06-14 Ari Backholm Context aware traffic management for resource conservation in a wireless network

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100201806B1 (ko) 1994-10-19 1999-06-15 윤종용 무선호출수신기의전원 절약장치 및 방법
JP3573546B2 (ja) 1995-10-27 2004-10-06 富士通株式会社 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置
US5768585A (en) 1995-11-21 1998-06-16 Intel Corporation System and method for synchronizing multiple processors during power-on self testing
US7594017B1 (en) 2000-05-25 2009-09-22 Palmsource Inc. Method and system for adaptive data synchronization and transport across multiple data transport infrastructures
US6601076B1 (en) * 2001-01-17 2003-07-29 Palm Source, Inc. Method and apparatus for coordinated N-way synchronization between multiple database copies
US7461163B2 (en) 2002-08-16 2008-12-02 Infrastructure Innovations Llc Real time mesh measurement system stream latency and jitter measurements
US7203853B2 (en) 2002-11-22 2007-04-10 Intel Corporation Apparatus and method for low latency power management on a serial data link
US7664788B2 (en) 2005-01-10 2010-02-16 Microsoft Corporation Method and system for synchronizing cached files
US7725093B2 (en) 2006-03-29 2010-05-25 Intel Corporation Method and apparatus for a power-efficient framework to maintain data synchronization of a mobile personal computer to simulate a connected scenario
US7710975B2 (en) * 2006-05-12 2010-05-04 International Business Machines Corporation Synchronization technique for exchanging data with a mobile device that conserves the resources of the mobile device
US20080005249A1 (en) 2006-07-03 2008-01-03 Hart Matt E Method and apparatus for determining the importance of email messages
US8045977B2 (en) 2007-11-01 2011-10-25 Honeywell International Inc. Method for maintaining datalink network throughput by delaying lower priority messages
US7793002B2 (en) 2008-06-06 2010-09-07 Fisher-Rosemount Systems, Inc. Methods and apparatus for implementing a sequential synchronization hierarchy among networked devices
US9027027B2 (en) 2008-06-09 2015-05-05 Microsoft Technology Licensing, Llc Thread management based on device power state
US8112475B2 (en) 2008-06-27 2012-02-07 Microsoft Corporation Managing data delivery based on device state
WO2010033784A2 (en) 2008-09-19 2010-03-25 Mailrank, Inc. Ranking messages in an electronic messaging environment
US9367599B2 (en) * 2008-10-21 2016-06-14 Google Inc. Search based specification for data synchronization
JP5515331B2 (ja) * 2009-03-09 2014-06-11 ソニー株式会社 情報提供サーバ、情報提供システム、情報提供方法及びプログラム
US8291036B2 (en) * 2009-03-16 2012-10-16 Microsoft Corporation Datacenter synchronization
CN101635728B (zh) 2009-09-02 2012-09-26 中兴通讯股份有限公司 内容分发网络中数据同步的方法及系统
US8688826B2 (en) 2009-11-30 2014-04-01 Motorola Mobility Llc Mobile computing device and method with intelligent pushing management
GB0921559D0 (en) * 2009-12-09 2010-01-27 Omnifone Ltd Behaviour-adaptive intelligent synchronisation of media content files
US8645574B2 (en) * 2010-08-02 2014-02-04 Blackberry Limited Method and system for management of synchronization of a mobile electronic device
US8312096B2 (en) * 2010-12-08 2012-11-13 Google Inc. Priority inbox notifications and synchronization for mobile messaging application
US20120173993A1 (en) 2010-12-30 2012-07-05 International Business Machines Corporation Point of interest preview for electronic mail
US20120179896A1 (en) 2011-01-10 2012-07-12 International Business Machines Corporation Method and apparatus for a hierarchical synchronization barrier in a multi-node system
US8676906B2 (en) 2011-02-25 2014-03-18 Qualcomm Incorporated Email access manager for a wireless communication device
US8538926B2 (en) * 2011-03-08 2013-09-17 Rackspace Us, Inc. Massively scalable object storage system for storing object replicas
EP2624577B1 (en) * 2012-02-01 2016-11-02 EchoStar UK Holdings Limited Remote viewing of media content using layered video encoding
US20130205001A1 (en) 2012-02-02 2013-08-08 Motorola Mobility, Inc. Modifying application data synchronization based on application usage frequency
US20130212198A1 (en) 2012-02-14 2013-08-15 Htc Corporation Methods and systems of dynamic mail synchronization for mobile devices
US8407306B1 (en) 2012-06-25 2013-03-26 Google Inc. Systems and methods for managing message delivery based on message priority
US20140092757A1 (en) 2012-10-01 2014-04-03 Futurewei Technologies, Co. Controlling Data Synchronization and Backup Services
US9106721B2 (en) 2012-10-02 2015-08-11 Nextbit Systems Application state synchronization across multiple devices
US9858052B2 (en) * 2013-03-21 2018-01-02 Razer (Asia-Pacific) Pte. Ltd. Decentralized operating system

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2207328A1 (en) * 2002-04-30 2010-07-14 Visto Corporation Adaptive synchronization of service data
KR20070084302A (ko) * 2004-10-25 2007-08-24 임파워 테크놀로지스 인코포레이티드 범용 데이터 동기화를 위한 시스템 및 방법
CN101167069A (zh) * 2005-04-22 2008-04-23 微软公司 文件对等同步的系统和方法
US20080049714A1 (en) * 2006-08-25 2008-02-28 International Business Machines Corporation A technique for synchronizing data with a mobile device based on a synchronization context
WO2008022973A1 (en) * 2006-08-25 2008-02-28 International Business Machines Corporation A technique for synchronizing data with a mobile device based on a synchronization context
US20090282169A1 (en) * 2008-05-09 2009-11-12 Avi Kumar Synchronization programs and methods for networked and mobile devices
US20090300169A1 (en) * 2008-06-03 2009-12-03 Microsoft Corporation Synchronization throttling based on user activity
US20120149352A1 (en) * 2010-07-26 2012-06-14 Ari Backholm Context aware traffic management for resource conservation in a wireless network

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180073003A (ko) * 2016-12-22 2018-07-02 주식회사 케이티 오브젝트에 대한 동기화 관리 장치 및 방법

Also Published As

Publication number Publication date
CN105637841A (zh) 2016-06-01
EP3058705B1 (en) 2018-01-17
CN105637841B (zh) 2018-11-30
WO2015057536A1 (en) 2015-04-23
KR102273414B1 (ko) 2021-07-05
EP3058705A1 (en) 2016-08-24
US20150112924A1 (en) 2015-04-23
US9588983B2 (en) 2017-03-07

Similar Documents

Publication Publication Date Title
KR102273414B1 (ko) 적응적 동기화를 위한 데이터 분류
US10491535B2 (en) Adaptive data synchronization
US20200045115A1 (en) Collaboration techniques between parties using one or more communication modalities
KR101670642B1 (ko) 클라이언트 디바이스 상에서의 패킷 송신을 스케줄링하기 위한 시스템 및 방법
CN102035732B (zh) 业务调度方法及装置
US9264534B2 (en) Methods, systems, and computer-readable media for self-maintaining interactive communications privileges governing interactive communications with entities outside a domain
US20150019740A1 (en) Network Bandwidth Allocation Method and Terminal
WO2016011903A1 (zh) 流量控制方法及装置
US20150358810A1 (en) Software Configurations for Mobile Devices in a Collaborative Environment
CN109327403B (zh) 一种流控方法、装置、网络设备及存储介质
US20190306225A1 (en) Adaptive communication control device
US20130035107A1 (en) System and method for adaptive traffic prioritization and bandwidth allocation on mobile data networks
US11272325B2 (en) System and method for communicating through multiple endpoints
US10735554B1 (en) System for controlling use of a network
CN112968845B (zh) 一种带宽管理方法、装置、设备及机器可读存储介质
CN114598665A (zh) 资源调度方法、装置和计算机可读存储介质及电子设备
CN105634931B (zh) 消息业务处理方法及即时通讯服务器
CN112506672B (zh) 面向虚拟gpu的云手机在线调度与迁移的方法及装置
Guo et al. Matching while learning: Wireless scheduling for age of information optimization at the edge
CN111459653A (zh) 集群调度方法、装置和系统以及电子设备
JP2015185060A (ja) メッセージ交換装置、メッセージ交換方法、および、コンピュータ・プログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant