KR20080021061A - 쿼리 기반 동기화 - Google Patents

쿼리 기반 동기화 Download PDF

Info

Publication number
KR20080021061A
KR20080021061A KR1020077030349A KR20077030349A KR20080021061A KR 20080021061 A KR20080021061 A KR 20080021061A KR 1020077030349 A KR1020077030349 A KR 1020077030349A KR 20077030349 A KR20077030349 A KR 20077030349A KR 20080021061 A KR20080021061 A KR 20080021061A
Authority
KR
South Korea
Prior art keywords
data
file
offline
offline device
query
Prior art date
Application number
KR1020077030349A
Other languages
English (en)
Other versions
KR101319718B1 (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 KR20080021061A publication Critical patent/KR20080021061A/ko
Application granted granted Critical
Publication of KR101319718B1 publication Critical patent/KR101319718B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • 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/273Asynchronous replication or reconciliation

Abstract

오프라인 애플리케이션을 온라인 애플리케이션과 동기화하기 위한 쿼리 기반 시스템에 관한 방법, 시스템 및 유저 인터페이스가 개시된다. 쿼리는 유저가 정의가능해서 오프라인 유저가 업데이트되기를 원하는 제한된 데이터만을 식별할 수 있고, 이들 쿼리를 만족하는 데이터는 온라인 애플리케이션 상에 동기화 파일에 저장될 수 있다. 동기화 파일이 오프라인 장치에 성공적으로 통신되면, 온라인 시스템상의 오프라인 애플리케이션의 상태 파일 및 동기화 파일이 업데이트되어서 성공적인 반영될 수 있다.
쿼리, 동기화

Description

쿼리 기반 동기화{QUERY BASED SYNCHRONIZATION}
세상이 더 모바일화될 수록, 영구적으로 네트워크에 접속하는 컴퓨터 시스템 및 애플리케이션의 유저가 적어진다. 유저는 더 자주 임시로 원하는 네트워크에 로그인해서 오프라인 시스템과 온라인 시스템을 동기화한다. 다른 환경으로, 유저는 네트워크에 무선 액세스할 수 있다. 무선 접속은 무선 네트워크의 완전 드롭 오프를 포함해서 품질과 속도가 달라질 수 있다. 유선 및 무선 환경 모두에서, 오프라인 시스템에는 없고 온라인 시스템에 있는 데이터의 양은 막대할 수 있고, 이 데이터의 동기화는 고속 연결에도 불구하고 상당한 시간이 소요될 수 있다. 또한, 오프라인 유저는 소정 애플리케이션에 관해서 업데이트된 데이터만을 수신하기를 원할 수 있고, 온라인 시스템상의 새로운 모든 데이터를 필요로 하지 않을 수 있다.
오프라인 애플리케이션을 온라인 애플리케이션과 동기화하기 위한 쿼리 기반 시스템에 관한 방법, 시스템 및 유저 인터페이스가 개시된다. 쿼리는 유저가 정의가능해서 오프라인 유저가 업데이트하기를 원하는 제한된 데이터만을 식별할 수 있다, 이 쿼리는, 예컨대 CRM 데이터 베이스에 대해서 실행될 수 있는 SQL 쿼리로 변역될 수 있다. 온라인 시스템은 오프라인 유저가 업데이트하기를 원하는 데이터의 유저 정의 쿼리를 만족하는, 데이터베이스 테이블일 수 있는, 데이터의 파일을 보관할 수 있다. 업데이트 파일은 소정의 시간 간격 동안이나 온라인 애플리케이션 상에 새 데이터의 현재 양만큼 생성될 때마다, 오프라인 애플리케이션이 온라인 애플리케이션과 통신을 설정할 때와 같이 다양한 조건하에서 오프라인 장치에 통신될 수 있다. 동기화 파일은 통신 방법에 따라서 적절한 크기의 패킷으로 분해될 수 있다. 또한, 오프라인 시스템의 현재 업데이트된 상태를 추적하는 파일이 온라인상에서 저장될 수 있다. 동기화 파일이 성공적으로 오프라인 장치와 통신하면, 온라인 시스템상의 오프라인 애플리케이션의 상태 파일 및 동기화 파일이 갱신되어서 이 업데이트를 반영할 수 있다.
도 1은 방법, 시스템 및 유저 인터페이스가 동작될 수 있는 컴퓨터 시스템의 예시.
도 2는 청구항에 따라서, 쿼리 기반 동기화 방법의 도시
도 3은 쿼리 생성 디스플레이의 도시.
도 4는 쿼리를 선택해서 획득할 수 있는 추가 상세 사항의 도시.
도 5는 동기화되는 데이터를 선택시 생성될 수 있는 추가적인 조건들의 도시.
다음은 다수의 다양한 실시예를 상세하게 기술함에도, 이들 기술의 법적 범위는 본 명세서의 말미에 있는 청구항의 단어들에 의해 정의되는 것으로 이해되어 야 한다. 본 상세한 설명은 예시적인 것으로만 해석되어야 하고, 모든 가능한 실시예들을 기술하지는 않는데, 불가능한 것은 아니어도 모든 실시예들을 기술하는 것은 실용적인 것은 아니기 때문이다. 현재 기술이나 본원의 출원일 이후에 개발된 기술을 사용해서, 다양한 다른 실시예들이 구현될 수 있는데, 이들 역시 본 청구항의 범위에 속한다.
본 특허에서 명시적으로 용어들이 "본 명세서에서는, 용어 ' '은 본 명세서에서 ...를 의미하는 것으로 정의된다" 또는 이와 유사한 문장으로 정의되지 않으면, 평이하고 보통의 의미 이상으로, 명시적이거나 함축적으로, 그 용어의 의미를 한정할 의도는 없고, 본 특허의 임의 부분(청구항의 언어들 제외)에서 만들어진 소정 문장에 기초한 범위로 한정해서 해석되어서는 안 된다. 본원 후단의 이들 청구항에 기재된 어떠한 용어는 어느 정도 단일 의미로 일관되게 본 특허에서 언급되고 있는데, 이는 독자를 혼란스럽지 않게 하기 위한 목적만으로 명확하게 하기 위한 것이지, 그런 청구항 용어가 이 단일 의미로 한정되는 것을 암시적 또는 다른 식으로 의도한 것이 아니다. 마지막으로, 임의의 구조에 대한 언급 없이 "수단" 및 기능을 언급해서 청구항 요소가 정의되지 않으면, 35 U.S.C.§112, 6번째 문단의 적용에 기초해서, 임의의 청구항 요소를 해석하는 것을 의도한 것이 아니다.
도 1은 청구된 방법의 단계들을 위한 시스템 및 장치가 구현되는데 적당한 컴퓨팅 시스템 환경(100)의 예를 도시한다. 컴퓨팅 시스템 환경(100)은 적절한 컴퓨팅 환경의 하나의 예일 뿐이고, 청구항들의 장치나 방법의 사용이나 기능의 범위 에 제한을 가하지 않는다. 또한, 컴퓨팅 시스템 환경(100)은 예시적인 운영 환경(100)에 도시된 임의 요소나 이들의 결합과 연관된 어떠한 의존관계나 요청사항을 갖는 것으로 해석되어서는 안 된다.
청구된 방법의 단계들 및 장치는 다양한 다른 범용이나 전용 컴퓨팅 시스템 환경이나 구성에 의해서 동작된다. 청구항의 방법이나 장치에 사용되기에 적합할 수 있는 공지의 컴퓨팅 시스템, 환경 및/또는 구성의 예들은 상술한 시스템이나 장치 등 중 임의를 포함하는 개인용 컴퓨터, 서버 컴퓨터, 핸드-핼드나 랩톱 장치, 멀티프로세서 시스템, 멀티프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 소비자 전자기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상술한 시스템이나 장치를 포함하는 분산형 컴퓨팅 환경을 포함할 수 있는데, 이에 한정되는 것은 아니다.
청구된 방법의 단계들 및 장치는 프로그램 모듈과 같이, 컴퓨터로 실행되는 컴퓨터 실행가능 명령어들의 일반 콘택스트로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 방법 및 장치는 통신 네트워크를 통해 연결된 원격 프로세싱 장치에 의해서 태스크가 수행될 수 있는 분산 컴퓨팅 환경에서 실행될 수도 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장장치에 위치될 수 있다.
도 1을 참조하면, 청구된 방법의 단계 및 장치를 구현하기 위한 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터(110)의 컴 포넌트들은, 처리 장치(120), 시스템 메모리(130), 및 이 시스템 메모리를 포함하는 각종 시스템 컴포넌트들을 처리 장치(120)에 연결하는 시스템 버스(121)를 포함할 수 있지만, 이들에 한정되지는 않는다. 시스템 버스(121)는, 각종 버스 아키텍처 중 어느 하나를 이용한, 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 및 로컬 버스를 포함하는, 몇몇 타입의 버스 구조들 중 어느 하나일 수 있다. 한정이 아니라 예로서, 그러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 Mazzanine 버스로도 알려져 있는 PCI(Peripheral Component Interconnect) 버스를 포함한다.
컴퓨터(110)는 전형적으로 갖가지 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터(110)에 의해 액세스될 수 있고 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체 모두를 포함하는 임의의 이용 가능한 매체일 수 있다. 한정이 아니라 예로서, 컴퓨터 판독 가능 매체는 컴퓨터 기억 매체 및 통신 매체를 포함한다. 컴퓨터 기억 매체는 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터와 같은 정보의 저장을 위해 임의의 방법 및 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 기억 매체는 RAM, ROM, EPROM, EEPROM, 플래시 메모리, 또는 다른 메모리 기술; CD-ROM, 디지털 다용도 디스크(DVD: digital versatile disks), 또는 다른 광 디스크 기억 장치; 자기 카세트, 자기 테이프, 자기 디스크 기억 장치, 또는 다른 자기 기억 장치들; 또는 소망의 정보를 저장하기 위해 이용될 수 있 고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체들을 포함하지만, 이들에 한정되지는 않는다. 통신 매체는 전형적으로 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터를 반송파(carrier wave)와 같은 변조된 데이터 신호 또는 다른 전달 메커니즘(transport mechanism)으로 구현하고 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"(modulated data signal)라는 용어는 그 신호의 특성들 중 하나 이상이 그 신호 내에 정보를 인코딩하도록 설정되거나 변경된 신호를 의미한다. 한정이 아니라 예로서, 통신 매체는 유선 네트워크(wired network) 또는 직접 유선 접속(direct-wired connection)과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기한 것들 중 임의의 것들의 조합들도 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)과 같은 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 기억 매체를 포함한다. 시동(start-up) 중과 같이, 컴퓨터(110) 내의 엘리먼트들 간에 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(133)(BIOS)은 전형적으로 ROM(131)에 저장된다. RAM(132)은 전형적으로 처리 장치(120)에 의해 즉시 액세스 가능하고/가능하거나 그 처리 장치에 의해 현재 실행되고 있는 데이터 및/또는 프로그램 모듈들을 포함한다. 한정이 아니라 예로서, 도 1은 운영 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 예시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 기억 매 체를 포함할 수 있다. 단지 예로서, 도 1은 비분리형, 비휘발성 자기 매체로부터 판독하거나 거기에 기록하는 하드 디스크 드라이브(141), 분리형, 비휘발성 자기 디스크(152)로부터 판독하거나 거기에 기록하는 자기 디스크 드라이브(151), 및 CD ROM 또는 다른 광학 매체와 같은 분리형, 비휘발성 광 디스크(156)로부터 판독하거나 거기에 기록하는 광 디스크 드라이브(155)를 예시한다. 예시적인 운영 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 기억 매체로는, 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만, 이들에 한정되지는 않는다. 하드 디스크 드라이브(141)는 전형적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통하여 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 전형적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 논의되고 도 1에 예시된 드라이브들 및 그들의 관련 컴퓨터 기억 매체는, 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들 및 컴퓨터(110)용의 다른 데이터의 저장을 제공한다. 도 1에서, 예를 들면, 하드 디스크 드라이브(141)는 운영 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈들(146), 및 프로그램 데이터(147)를 저장하는 것으로 예시되어 있다. 이들 컴포넌트들은 운영 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈들(136), 및 프로그램 데이터(137)와 동일하거나 또는 다를 수 있다는 점을 주목해야 할 것이다. 운영 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모 듈들(146), 및 프로그램 데이터(147)에 대해서는 최소한 그것들이 상이한 카피들임을 예시하기 위해 여기에서 상이한 번호가 부여되었다. 유저는 키보드(162) 및 통상적으로 마우스, 트랙볼 또는 터치 패드로 불리는 포인팅 디바이스(161)와 같은 입력 장치들을 통하여 컴퓨터(110) 내에 커맨드 및 정보를 입력할 수 있다. (도시되지 않은) 다른 입력 장치들은 마이크로폰, 조이스틱, 게임 패드, 위성 안테나(satellite dish), 스캐너, 라디오 수신기, 및 텔레비전 또는 방송 비디오 수신기 또는 그와 유사한 것을 포함할 수 있다. 이들 및 다른 입력 장치들은 흔히 시스템 버스(121)에 연결되어 있는 유선 또는 무선 유저 입력 인터페이스(160)를 통하여 처리 장치(120)에 접속되지만, 예컨대, 병렬 포트, 게임 포트, USB(universal serial bus)와 같은 다른 인터페이스 및 버스 구조들에 의해 접속될 수도 있다. 모니터(191) 또는 다른 타입의 디스플레이 장치가 또한 비디오 인터페이스(190)와 같은 인터페이스를 통하여 시스템 버스(121)에 접속된다. 모니터 외에, 컴퓨터는 또한 다른 출력 주변 인터페이스(190)를 통하여 접속될 수 있는 스피커(197) 및 프린터(196)와 같은 다른 주변 출력 장치들을 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터들에의 논리적 접속들을 이용한 네트워킹 된 환경에서 동작할 수도 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스(peer device), 또는 다른 통상의 네트워크 노드일 수 있고, 전형적으로 컴퓨터(110)와 관련하여 위에서 설명한 엘리먼트들의 다수 또는 전부를 포함하지만, 도 1에서는 메모리 기억 장치(181)만이 예시되어 있다. 도 1에 도시된 논리적 접속들은 근거리 네트워 크(LAN)(171) 및 광역 네트워크(WAN)(173)를 포함하지만, 다른 네트워크들을 포함할 수도 있다. 그러한 네트워킹 환경들은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer networks), 인트라넷, 및 인터넷에서 흔한 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통하여 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 경우, 컴퓨터(110)는 전형적으로 인터넷과 같은 WAN(173)을 통하여 통신을 확립하기 위한 모뎀(172) 또는 다른 수단들을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160), 또는 다른 적당한 메커니즘을 통하여 시스템 버스(121)에 접속될 수 있다. 네트워킹 된 환경에서, 컴퓨터(110)와 관련하여 도시된 프로그램 모듈들 또는 그 일부는 원격 메모리 기억 장치에 저장될 수 있다. 한정이 아니라 예로서, 도 1은 원격 애플리케이션 프로그램들(185)이 메모리 디바이스(181)에 상주하는 것으로 예시하고 있다. 도시된 네트워크 접속들은 예시적인 것이고 컴퓨터들 간에 통신 링크를 확립하기 위한 다른 수단들이 이용될 수도 있다는 것을 알 것이다.
도 2는 청구항에 따른 방법의 도시이다. 블록(200)에서 데이터 동기화 요청이 수신될 수 있다. 데이터 동기화 요청은 다양한 방법으로 수신될 수 있다. 동기화는 시간 주기에 기초할 수 있다. 예컨대, 오프라인 장치가 무선 연결로 도달하면, 데이터 동기화 요청이 주기적으로 생성되어서 데이터가 주기적으로 전송될 수 있다. 동기화 요청은 유저에 의해서도 생성될 수도 있다. 예컨대, 고객 관계 관리 시스템의 유저는 원격 컴퓨터로부터 로그인할 수 있고, 이 로그인은 데이터 동기화 요청을 트리거할 수 있다. 다른 예에서, 데이터의 변형이 데이터 동기화 요청의 트리거일 수 있다. 또 다른 예는, 새 데이터의 소정 양이 모이면, 이것이 동기화 요청의 트리거할 수 있다. 당연히, 다른 트리거도 가능하다.
블록(205)에서, 방법은 필터나 쿼리를 로드할 수 있다. 이 쿼리는 유저에 의해 정의될 수 있다. 오프라인 유저가 온라인이었던 이후에 온라인 애플리케이션에 추가된 모든 데이터를 오프라인 유저가 수신할 필요는 없을 수 있다. 따라서, 유저는 오프라인 유저가 업데이트하기를 원하는 데이터를 획득할 수 있는 쿼리를 정의할 수 있다. 예컨대, 유저의 고객이 새로운 주문을 내면, 유저가 CRM(customer relationship management) 애플리케이션으로부터 알기를 원할 수 있다. 유저는 회사가 받은 모든 주문을 알 필요가 없고 자신의 고객이 낸 주문만을 알고 싶을 수 있다. 오프라인 유저가 마지막으로 업데이트를 받은 이후로, 유저는 자신의 고객이 된 모든 주문을 반환할 쿼리를 정의할 수 있다. 더 넓은 쿼리는, 오프라인 장치의 최후 업데이트 이후의 온라인 장치에 더해진 온라인 장치상의 모든 정보로 오프라인 장치상의 전 정보를 업데이트할 수 있다. 유저가 정의할 수 있는 쿼리의 종류와 양은 가상적으로 무제한이다. 또 다른 예로서, CRM 오프라인 유저는 쿼리를 생성해서, 예컨대 50만불과 같은 임계치 이상에 위치한 모든 신규 주문에 대한 데이터를 획득할 수 있다. 이 정보는 통상 동기화되기엔 너무 큰 CRM 시스템 정보를 포함하는 임의의 원하는 정보일 수 있다.
다른 실시예로서, 쿼리는 복수의 미리 정의된 복수의 쿼리로부터 선택될 수 있다. 쿼리는 소프트웨어 벤더가 제공하거나 다른 유저가 생성한 탬플레이트일 수 있다. 이들 미지 정의된 쿼리는 유저 자신의 요구를 더 충족시키기 위해서 변형될 수도 있다.
쿼리는 종래의 탑-다운 형식이나 바텁-업 형식으로 생성될 수 있다. 바텁- 업 쿼리는 하이어라키(hierarchy)에 기초해서 오프라인 데이터가 더 단순하게 세밀화될 수 있게 한다. 예컨대, "내 소유의 모든 계정 및 해당 계정과 연관된 모든 기록을 달라. 그러나, 1년 이상된 모든 판매 주문, 폐쇄된 서비스 건들은 원하지 않는다.... " 등과 같은 탑-레벨 쿼리를 생성하는 대신에, 유저는 자신이 원하는 계정을 정의할 수 있고, 모 기록(parent record)의 존재에 기초해서 자 기록(child record)에서 조항을 사용할 수 있다. 예컨대, 계정 쿼리가 "내 소유의 계정을 달라"일 수 있다. 이후, 판매 쿼리는 "내가 모 계정을 다운로드하고 있는 곳으로, 1년 미만의 판매 주문을 달라(Give me sales orders that are less than a year where I'm also downloading the parent account)"일 수 있다.
도 3에 도시된 바와 같이, 쿼리는 프로그램 언어나 SQL 코드를 유저가 알기를 요구하지 않는 단순한 유저 인터페이스를 이용해서 생성될 수 있다. 예컨대, 쿼리 목록이 디스플레이되고(310), 장래 동기화의 부분으로서 선택될 수 있다. 도 4는 팝업될 수 있고, 도 3으로부터 선택된 쿼리(310)가 더 변형될 수 있도록 하는 더 상세한 화면을 도시한다. 도 5는 도 4에 디스플레이된 팝업 원도우의 디스플레이다. 도 5는 유저(505)가 가지길 원하는 유저(505)에 속한 약속(502)과, 유저가 다운로드하는 유저 콘택트(515) 또는(520) 계정(510)과 연관된 임의 약속들을 가지기를 원하는 것을 도시하는데, 여기서 유저는 동기화된 지난(540) 30일(550)에 변 형된(530) 약속(525)의 참석자이다. 분명하게, 유저가 생성할 수 있는 무제한적인 개수의 쿼리가 항상 있다. 또 다른 예에서, 유저가 쿼리를 디자인하는 것을 보조하기 위한 위자드(wizard)나 새로운 윈도우가 표시될 수 있다.
쿼리는 애플리케이션의 각 사용자별로 정의될 수 있다. 예컨대, 회사 A의 각 판매원은 자신의 쿼리를 가질 수 있다. 또한, 쿼리는 더 분할될 수 있다. 예컨대, 판매원은 5천만달러가 넘는 고객 A에 대한 모든 판매에 대해서 업데이트되고, 50달러가 넘은 고객 B에 대한 모든 판매에 대해서 업데이트되기를 원할 수도 있다.
도 2를 참조하면, 블록(210)에서, 필터가 SQL 쿼리로 변환될 수 있다. 다수 애플리케이션 유저는 SQL 쿼리를 생성하는 기술이 없으므로, 이 변환을 자동으로 하는 방법이 실행될 수 있다. 쿼리는 고정된 옵션 집합(공지의 명칭, 이상, 미만 등과 같은 공지의 조건 등)을 사용해서 생성될 수 있다. SQL 쿼리는 CRM 데이터 베이스와 같은 데이터베이스에 대해서 만들어진 패치 명령들일 수도 있다.
블록(215)에서, SQL 스테이트먼트는 원하는 데이터베이스에 대해서 실행될 수 있다. 상술한 바와 같이, 블록(205)에서 임의 데이터베이스는 CRM 데이트베이스일 수 있고, SQL 스테이트먼트는 유저에 의해 생성된 쿼리의 SQL 번역일 수 있다. 원하는 데이터 및 데이터의 다른 소스를 획득하는 다른 방식이 가능하다.
블록(220)에서, SQL 스테이트먼트의 결과는 동기 가능한 파일일 수 있는 파일 내에 저장될 수 있다. 예컨대, 블록(205)의 쿼리가 오프라인 판매원의 고객이 한 모든 신규 주문을 요청하면, 마지막 동기화 이후 연관된 오프라인 판매의 모든 고객에 의한 새 주문들 전부가 파일에 저장될 수 있다. 일 예로서, 파일은 표일 수 있으나, 동기화 파일은 온라인 및 오프라인 애플리케이션이 파일 내 데이터를 이해할 수만 있다면 어떠한 가상적인 형식을 가질 수 있다. 동기화 파일이 표이면, 통상의 SQL 스테이트먼트가 표를 생성하는데 사용될 수 있다. 예컨대, 머지 명령(merge command)은 삭제된 레코드 및 업데이트된 레코드를 동기화 파일에 추가하는데 사용될 수 있다. 추가해서, 인서트 명령(insert command)은 새 레코드를 동기화 파일에 추가하는데 사용될 수 있다.
블록(225)에서, 동기화 파일은 오프라인 애플리케이션과 통신될 수 있다. 오프라인 애플리케이션은 다양한 폼을 가지는데, 예컨대 네트워크에 로깅하는 웹 기반 애플리케이션, 단방향 및/또는 양방향으로 데이터를 수신하는 무선 장치, 셀폰 형 장치 및 온라인 장치와 통신하는 임의의 다른 전자 장치가 그러하다. 오프라인 장치가 온라인에 이르면, 온라인 장치 및 오프라인 장치가 통신하는 데는 많은 방법이 있다. 온라인 장치 및 온라인으로 온 오프라인 장치 사이의 통신을 제어하기 위한 프로토콜 및 표준이 이미 있다. 예컨대, 오프라인 장치가 인터넷을 사용하면, 통상 방법들은 http, TCP/IP. ftp 등을 포함한다.
상술한 바와 같이, 동기화 파일은 오프라인 장치와 통신하기 위한 방법에 적절한 크기의 패키지로 분리될 수 있다. 예컨대, 오프라인 장치가 온라인 장치에도 연결된 10 메가비트 이더넷 네트워크에 연결되면, 동기화 파일 패키지의 크기는 거의 문제가 되지 않을 수 있다. 그러나, 오프라인 장치가, 예컨대 초당 10Kb이고 패키지가 쉽게 분실되어서 저품질의 낮은 밴드폭의 무선 링크를 통해서 연결되면, 더 작은 크기의 패키지를 사용하는 것이 적절할 수 있다. 패키지의 크기는 애플리케이션에 의해 동적으로 변형되거나 미리 설정되거나, 유저에 의해 변형되거나 또는 탬플릿에 의해 변형될 수 있다.
블록(230)에서, 동기화 파일이 오프라인 장치와 통신하면, 온라인 장치는 일부 일상적 업무를 수행할 수 있다. 동기화 파일은 오프라인 장치와 통신한 모든 엔트리가 없을 수 있다. 추가해, 오프라인 장치의 상태 파일은 업데이트될 수 있다. 상태 파일은 동기화 파일이 통신한 마지막 시간과 같은 오프라인 장치의 상태를 저장할 수 있다. 추가해, 오프라인 장치에 의해 동기화 파일이 성공적으로 수신되었는지에 대한 확인일 있을 수도 있다.
상술한 바와 같이 상세한 설명이 다양하고 상이한 실시예들을 설명하고 있음에도 불구하고, 본 특허의 범위는 말미에 있는 청구항의 단어들에 의해 정의되는 것으로 이해되어야 한다. 본 상세한 설명은 예시적인 것으로만 해석되어야 하고, 모든 가능한 실시예들을 기술하지는 않는데, 불가능한 것은 아니어도 모든 실시예들을 기술하는 것이 실용적인 것은 아니기 때문이다. 현재 기술이나 본원의 출원일 이후에 개발된 기술을 사용해서, 다양한 다른 실시예들이 구현될 수 있는데, 이들 역시 본 청구항의 범위에 속한다.
그래서, 본 청구항의 사상 및 범위를 벗어나지 않고 본 명세서에 기술 및 예시된 기술 및 구조에 있어서 다수의 변형 및 변경이 만들어질 수 있다. 따라서, 본 명세서에 기술된 방법 및 장치는 단지 예시적인 것이지, 본 청구항의 범위를 한 정하지 않는 것으로 이해되어야 한다.

Claims (20)

  1. 온라인 장치 및 오프라인 장치 간에 동기화된 데이터를 정의하는 방법에 있어서,
    데이터 소스로부터 데이터의 서브셋을 선택하기 위한 쿼리를 생성하는 단계;
    상기 데이터의 서브셋을 메모리에 저장하는 단계;
    상기 데이터의 서브셋을 상기 오프라인 장치로 통신하는 단계; 및
    상기 온라인 장치상에서, 상기 오프라인 장치의 업데이트 상태를 저장하는 오프라인 장치 상태 파일을 업데이트하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 복수의 미리 정의된 쿼리들로부터 쿼리를 선택하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 쿼리를 사용하여, 상기 온라인 장치상에 존재하고 상기 오프라인 장치상에는 존재하지 않는 데이터를 수집하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서, 상기 쿼리를 사용하여, 상기 온라인 장치상의 데이터와 상기 오프라인 장치 상태 파일 내의 데이터를 비교하는 단계; 및 상기 온라인 장치상에서 새것이고, 상기 오프라인 장치 상태 파일에 의해 상기 오프라인 장치상에 존 재하는 것으로 지시되지 않는 데이터로 상기 오프라인 장치를 업데이트하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서, 상기 데이터는 CRM(customer relationship management) 데이터인 방법.
  6. 제1항에 있어서, 상기 쿼리를 CRM 데이터베이스에 대해서 실행되는 패치 스테이트먼트(fetch statement)로 번역하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서, 동기화 파일에 상기 선택된 데이터의 서브셋을 저장하는 단계를 더 포함하는 방법.
  8. 제7항에 있어서, 업데이트된 데이터가 상기 동기화 파일에 추가되면, 상기 동기화 파일을 상기 오프라인 장치에 바로 통신하는 단계를 더 포함하는 방법.
  9. 제7항에 있어서, 상기 동기화 파일을 유저 변경가능한 크기의 패키지로 분할하는 단계를 더 포함하는 방법.
  10. 제7항에 있어서, 사용되는 통신 채널의 관점에서 적절한 크기의 패키지로 상기 동기화 파일을 분할하는 단계를 더 포함하는 방법.
  11. 제7항에 있어서, 상기 동기화 파일이 상기 오프라인 장치와 성공적으로 통신하면, 상기 오프라인 장치에 전달된 데이터가 상기 오프라인 장치에 대해서 더 이상 새 데이터가 아님을 지시하도록 상기 동기화 파일을 업데이트하는 단계를 더 포함하는 방법.
  12. 제1항에 있어서, 상이한 엔트리에 대해서 상이한 쿼리를 생성하도록 하는 단계를 더 포함하는 방법.
  13. 제1항에 있어서, 상기 오프라인 상태 파일이 데이터베이스 표인 방법.
  14. 제13항에 있어서, 상기 오프라인 상태 파일을 생성하는 단계는, 상기 데이터베이스 표에, 삭제된 레코드를 머지하는 단계, 업데이트된 레코드를 머지하는 단계, 및 인서트된 레코드를 머지하는 단계를 포함하는 방법.
  15. 제1항에 있어서, 특정 유저에 대해서 개별적인 쿼리를 생성하도록 하는 단계를 더 포함하는 방법.
  16. 온라인 장치와 오프라인 장치 사이를 동기화된 데이터를 식별하는 쿼리를 생성하는 컴퓨터 실행가능한 코드를 저장하는 컴퓨터 판독 가능 매체에 있어서, 상기 컴퓨터 실행가능한 코드는
    데이터 소스로부터 데이터의 서브셋을 선택하기 위해서, 상기 온라인 장치상의 데이터와 상기 오프라인 장치의 업데이트 상태를 저장하는 오프라인 장치 상태 파일 내의 데이터를 비교하는 쿼리를 생성하고,
    동기화 파일에 상기 데이터의 서브셋을 저장하고;
    상기 동기화 파일을 상기 오프라인 장치에 통신해서, 상기 오프라인 장치 상태 파일에 의해 상기 오프라인 장치상에는 존재하지 않는 것으로 지시되는 데이터로 상기 오프라인 장치를 업데이트하며;
    상기 온라인 장치상에서 상기 오프라인 장치 상태 파일을 업데이트하는
    컴퓨터 코드를 포함하는 컴퓨터 판독 가능 매체.
  17. 제16항에 있어서, 상기 동기화 파일이 상기 오프라인 장치에 성공적으로 통신되면, 상기 동기화 파일 내 데이터가 상기 오프라인 장치에 전달되었음을 지시하도록 상기 동기화 파일을 업데이트하는 컴퓨터 코드를 더 포함하는 컴퓨터 판독 가능 매체.
  18. 제16항에 있어서, 사용되는 통신 채널의 관점에서 적절한 크기의 패키지로 상기 동기화 파일을 분할하는 컴퓨터 코드를 더 포함하는 컴퓨터 판독 가능 매체.
  19. 비디오 이미지를 생성할 수 있는 디스플레이 유닛;
    입력 장치;
    상기 디스플레이 유닛 및 상기 입력 장치와 동작하도록 연결되며, 프로세서 및 상기 프로세서와 동작하도록 연결되는 메모리를 포함하는 처리 장치; 및
    네트워크 및 상기 처리 장치에 연결되는 네트워크 인터페이스를 포함하는 컴퓨팅 장치로서,
    상기 처리 장치는
    데이터 소스로부터 데이터의 서브셋을 선택하기 위해서, 상기 온라인 장치상의 상기 데이터와 상기 오프라인 장치의 업데이트 상태를 저장하는 오프라인 장치 상태 파일 내의 데이터를 비교하는 쿼리를 생성하고;
    동기화 파일에 상기 데이터의 서브셋을 저장하고;
    상기 동기화 파일을 상기 오프라인 장치에 통신해서, 상기 오프라인 장치 상태 파일에 의해 상기 오프라인 장치상에는 존재하지 않는 것으로 지시되는 데이터로 상기 오프라인 장치를 업데이트하며;
    상기 오프라인 장치 상태 파일을 상기 온라인 장치상에서 업데이트하고;
    상기 동기화 파일이 상기 오프라인 장치에 성공적으로 통신되면, 상기 동기화 파일을 업데이트해서 상기 선택된 데이터가 상기 오프라인 장치에 전달되었음을 지시하도록 프로그램된 컴퓨터 장치.
  20. 제19항에 있어서, 사용되는 통신 채널의 관점에서 적절한 크기의 패키지로 상기 동기화 파일을 분할하도록 상기 동기화 파일을 업데이트하는 것을 더 포함하 는 컴퓨터 장치.
KR1020077030349A 2005-07-01 2006-06-30 쿼리 기반 동기화 KR101319718B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US69648705P 2005-07-01 2005-07-01
US60/696,487 2005-07-01
US11/289,867 US20070005579A1 (en) 2005-07-01 2005-11-30 Query based synchronization
US11/289,867 2005-11-30
PCT/US2006/025910 WO2007005788A2 (en) 2005-07-01 2006-06-30 Query based synchronization

Publications (2)

Publication Number Publication Date
KR20080021061A true KR20080021061A (ko) 2008-03-06
KR101319718B1 KR101319718B1 (ko) 2013-10-17

Family

ID=37590946

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077030349A KR101319718B1 (ko) 2005-07-01 2006-06-30 쿼리 기반 동기화

Country Status (6)

Country Link
US (1) US20070005579A1 (ko)
EP (1) EP1899868A4 (ko)
JP (1) JP5193034B2 (ko)
KR (1) KR101319718B1 (ko)
CN (1) CN101213544B (ko)
WO (1) WO2007005788A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090024645A1 (en) * 2007-07-16 2009-01-22 Sudhir Krishna S Method and system for generating offline applications
US8774374B2 (en) * 2007-12-13 2014-07-08 Verizon Patent And Licensing Inc. Managing visual voicemail from multiple devices
WO2010106832A1 (ja) 2009-03-18 2010-09-23 日本電気株式会社 データ同期システム
US8620945B2 (en) * 2010-09-23 2013-12-31 Hewlett-Packard Development Company, L.P. Query rewind mechanism for processing a continuous stream of data
US8661014B2 (en) * 2010-09-23 2014-02-25 Hewlett-Packard Development Company, L.P. Stream processing by a query engine
US8880493B2 (en) 2011-09-28 2014-11-04 Hewlett-Packard Development Company, L.P. Multi-streams analytics
US20130097116A1 (en) * 2011-10-17 2013-04-18 Research In Motion Limited Synchronization method and associated apparatus
CN104767779A (zh) * 2014-01-07 2015-07-08 联想(北京)有限公司 一种信息处理的方法及一种电子设备
CN104980492A (zh) * 2015-05-08 2015-10-14 天脉聚源(北京)教育科技有限公司 一种远程控制的方法及装置
US9836527B2 (en) * 2016-02-24 2017-12-05 Google Llc Customized query-action mappings for an offline grammar model
US20190005084A1 (en) 2017-06-28 2019-01-03 Dharma Platform, Inc. Off-line log system
CN113377874A (zh) * 2021-06-28 2021-09-10 上海浦东发展银行股份有限公司 数据同步处理方法、装置、电子设备及存储介质
CN113961546B (zh) * 2021-10-27 2024-03-22 国网江苏省电力有限公司营销服务中心 一种支持在线分析统计的实时查询库设计方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778176A (ja) * 1993-06-30 1995-03-20 Mitsubishi Electric Corp データベースシステム
US6212529B1 (en) * 1996-11-13 2001-04-03 Puma Technology, Inc. Synchronization of databases using filters
US5924096A (en) * 1997-10-15 1999-07-13 Novell, Inc. Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand
JP2000076113A (ja) * 1998-08-31 2000-03-14 Kano Densan Hongkong Yugenkoshi ファイル制御システム、ファイル更新方法、携帯情報端末装置、パーソナルコンピュータ装置および記憶媒体
US6366898B2 (en) * 1998-09-21 2002-04-02 Sun, Microsystems, Inc. Method and apparatus for managing classfiles on devices without a file system
US7016977B1 (en) * 1999-11-05 2006-03-21 International Business Machines Corporation Method and system for multilingual web server
US8793374B2 (en) * 1999-12-02 2014-07-29 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US6625621B2 (en) * 2000-01-04 2003-09-23 Starfish Software, Inc. System and methods for a fast and scalable synchronization server
JP2001331362A (ja) * 2000-03-17 2001-11-30 Sony Corp ファイル変換方法、データ変換装置及びファイル表示システム
US6505200B1 (en) * 2000-07-06 2003-01-07 International Business Machines Corporation Application-independent data synchronization technique
US6591266B1 (en) * 2000-07-14 2003-07-08 Nec Corporation System and method for intelligent caching and refresh of dynamically generated and static web content
US6829622B2 (en) * 2001-07-27 2004-12-07 Siemens Information And Communication Networks, Inc. Apparatus and method for mobile device synchronization
JP2003167761A (ja) * 2001-11-30 2003-06-13 Casio Comput Co Ltd 情報処理装置
WO2003054694A2 (en) * 2001-12-18 2003-07-03 Becomm Corporation Method and system for attribute management in a namespace
US7275105B2 (en) * 2002-01-16 2007-09-25 Laszlo Systems, Inc. Enabling online and offline operation
FR2840086B3 (fr) 2002-05-27 2004-11-12 Jean Paul Smets Procede de synchronisation selective d'un systeme de bases de donnees d'objets
US20040093317A1 (en) * 2002-11-07 2004-05-13 Swan Joseph G. Automated contact information sharing
US7440746B1 (en) * 2003-02-21 2008-10-21 Swan Joseph G Apparatuses for requesting, retrieving and storing contact records
US7366460B2 (en) * 2003-01-23 2008-04-29 Dexterra, Inc. System and method for mobile data update
US7406499B2 (en) * 2003-05-09 2008-07-29 Microsoft Corporation Architecture for partition computation and propagation of changes in data replication
JP2005038030A (ja) * 2003-07-15 2005-02-10 Toshiba Solutions Corp 携帯端末、同期制御プログラム
GB0323780D0 (en) * 2003-10-10 2003-11-12 Ibm A data brokering method and system

Also Published As

Publication number Publication date
JP5193034B2 (ja) 2013-05-08
WO2007005788A3 (en) 2007-05-24
EP1899868A4 (en) 2009-07-15
EP1899868A2 (en) 2008-03-19
WO2007005788A2 (en) 2007-01-11
US20070005579A1 (en) 2007-01-04
JP2009500749A (ja) 2009-01-08
CN101213544B (zh) 2010-05-19
CN101213544A (zh) 2008-07-02
KR101319718B1 (ko) 2013-10-17

Similar Documents

Publication Publication Date Title
KR101319718B1 (ko) 쿼리 기반 동기화
AU2016222323B2 (en) Predictive storage service
US7877682B2 (en) Modular distributed mobile data applications
US20160299960A1 (en) Methods and system for orchestrating services and data sharing on mobile devices
US20130226876A1 (en) Synchronizing local clients with a cloud-based data storage system
KR101685215B1 (ko) 대체 메일박스들의 자동 검색
US8122346B2 (en) Methods and systems for merging software-level objects with document-level objects in a document publishing environment
US7925980B2 (en) N-way multimedia collaboration systems
CN103780700A (zh) 一种实现多源异构系统之间兼容与共享的应用系统和方法
CN110321544B (zh) 用于生成信息的方法和装置
US20060074996A1 (en) System and method for synchronizing data
US10601749B1 (en) Trends in a messaging platform
US7454764B2 (en) Method and system for on-demand programming model transformation
US20230096930A1 (en) Platform-agnostic data storage and retrieval in a multiplatform computing environment
US11500908B1 (en) Trends in a messaging platform
US11983181B1 (en) Data stream processing instruction set previews using batch conversion
TWI612432B (zh) Html網頁自動生成方法及其電腦程式產品、系統
CN114416878A (zh) 一种数据同步方法、装置、设备及存储介质
CN113448830A (zh) 一种管理软件信息的方法和装置
CN114461270A (zh) 项目处理方法及装置
Tummarello A sitemap extension to enable efficient interaction with large quantity of linked data
JP2000347923A (ja) データ管理システム及びデータ管理・検索システム、並びにコンピュータ読み取り可能な記録媒体

Legal Events

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

Payment date: 20160921

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee