KR20120049375A - 데이터 동기 시스템 및 데이터 동기 방법 - Google Patents
데이터 동기 시스템 및 데이터 동기 방법 Download PDFInfo
- Publication number
- KR20120049375A KR20120049375A KR1020127007751A KR20127007751A KR20120049375A KR 20120049375 A KR20120049375 A KR 20120049375A KR 1020127007751 A KR1020127007751 A KR 1020127007751A KR 20127007751 A KR20127007751 A KR 20127007751A KR 20120049375 A KR20120049375 A KR 20120049375A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- server
- information
- client
- database
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2082—Data synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
클라이언트와 서버 사이에서 데이터를 동기하는 경우에, 서버의 부하를 저감할 수 있도록 한다.
클라이언트(10)는 앵커 시점을 포함하는 동기 요구(41)를 서버(20)에 송신한다. 서버(20)는, 앵커 시점부터 바운더리 시점까지의 사이에 갱신된 데이터에 대한 변경 특징 정보와, 앵커 시점보다 뒤인 변경 이력에 대한 변경 특징 정보를 포함하는 동기 정보(42)를 클라이언트(10)에 송신한다. 클라이언트(10)는, 동기 정보(42)에 기초하여 다운로드 요구(43)를 서버(20)에 송신하고, 서버(20)는 다운로드 요구(43)에 따라 다운로드 정보(44)를 클라이언트(10)에 송신한다. 클라이언트(10)는, 다운로드 정보(44)에 포함되는 데이터를 클라이언트 데이터베이스(11)에 등록한다.
클라이언트(10)는 앵커 시점을 포함하는 동기 요구(41)를 서버(20)에 송신한다. 서버(20)는, 앵커 시점부터 바운더리 시점까지의 사이에 갱신된 데이터에 대한 변경 특징 정보와, 앵커 시점보다 뒤인 변경 이력에 대한 변경 특징 정보를 포함하는 동기 정보(42)를 클라이언트(10)에 송신한다. 클라이언트(10)는, 동기 정보(42)에 기초하여 다운로드 요구(43)를 서버(20)에 송신하고, 서버(20)는 다운로드 요구(43)에 따라 다운로드 정보(44)를 클라이언트(10)에 송신한다. 클라이언트(10)는, 다운로드 정보(44)에 포함되는 데이터를 클라이언트 데이터베이스(11)에 등록한다.
Description
본 발명은, 데이터 동기 시스템 및 데이터 동기 방법에 관한 것이다.
휴대전화 등의 클라이언트가 서버와의 사이에서 데이터를 동기하는 것이 행해지고 있다. 클라이언트는 정기적으로 변경된 데이터의 유무를 조회하여, 갱신된 데이터가 있는 경우에는 그 데이터를 다운로드한다. 종래, 서버는 변경 이력을 남기는 것에 의해, 데이터의 변경의 유무를 관리하고 있었다. 예컨대 특허문헌 1에서는 제2 데이터베이스의 갱신 이력을 보존하여, 갱신 이력의 건 수가 임계값보다 클 때에 동기를 시작함으로써, 한번의 데이터 동기로 대량의 정보가 송수신되지 않도록 하고 있다.
그러나, 휴대전화 등의 클라이언트가 항상 서버와 통신 가능하게 되어 있다고는 한정하지 않아, 서버와 클라이언트 사이의 통신이 불능인 시간이 긴 경우에는, 가능하게 될 때까지의 사이의 모든 변경 이력을 기억해 두어야 하고, 또한 서버가 복수의 클라이언트와 통신을 행하는 경우에는, 클라이언트마다 어디까지를 동기한 것인지 관리해 두어야 했다.
본 발명은, 이러한 배경을 감안하여 이루어진 것으로, 클라이언트와 서버 사이에서 데이터를 동기하는 경우에, 서버의 부하를 저감할 수 있는 데이터 동기 시스템 및 데이터 동기 방법을 제공하는 것을 목적으로 한다.
상기 과제를 해결하기 위한 본 발명의 주된 발명은, 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 시스템으로서, 상기 서버는, 갱신 시점을 포함하는 데이터를 기억하는 제1 데이터베이스에 액세스 가능하고, 상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하며, 상기 클라이언트는, 상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하는 앵커 시점 기억부와, 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하는 동기 요구 송신부를 구비하고, 상기 서버는, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 상기 데이터인 갱신 데이터를 상기 제1 데이터베이스로부터 검색하며, 상기 각 갱신 데이터에 대해서 상기 갱신 데이터를 나타내는 데이터 ID 및 상기 갱신 데이터의 상기 갱신 시점을 포함하는 변경 정보를 생성하는 변경 정보 취득부와, 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하는 동기 정보 송신부를 구비하고, 상기 클라이언트는, 상기 변경 정보에 대응하는 상기 데이터 중, 다운로드해야 하는 것인 취득 데이터를 결정하는 다운로드 결정부와, 상기 취득 데이터를 나타내는 데이터 ID를 포함하는 다운로드 요구를 상기 서버에 송신하는 다운로드 요구 송신부를 구비하며, 상기 서버는, 상기 다운로드 요구에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하는 데이터 취득부와, 상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하는 다운로드 정보 송신부를 구비하고, 상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 갱신 처리부를 구비하는 것으로 한다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 다운로드 결정부는, 상기 각 변경 정보에 대해서, 상기 변경 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터에 포함되는 상기 갱신 시점을 상기 제2 데이터베이스로부터 취득하고, 상기 제2 데이터베이스로부터 취득한 상기 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 오래된 경우에는, 그 데이터를 다운로드하는 것을 결정하며, 상기 제2 데이터베이스로부터 취득된 상기 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 새로운 경우에는, 사용자로부터의 설정에 따라, 그 데이터를 다운로드할지의 여부를 결정하도록 하여도 좋다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 서버는, 상기 제1 데이터베이스로부터 삭제된 상기 데이터를 나타내는 상기 데이터 ID 및 삭제 시점을 포함하는 변경 이력을 기억하는 서버 변경 이력 기억부와, 상기 동기 요구에 포함되는 상기 앵커 시점보다 뒤인 상기 삭제 시점을 포함하는 상기 변경 이력을 상기 서버 변경 이력 기억부로부터 취득하는 변경 이력 취득부를 구비하고, 상기 동기 정보 송신부는, 상기 변경 이력 취득부가 취득한 상기 변경 이력을 상기 동기 정보에 더 포함하며, 상기 클라이언트는, 상기 동기 정보에 포함되는 상기 변경 이력에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부를 구비하도록 하여도 좋다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 서버는, 상기 제1 데이터베이스로부터 삭제된 데이터에 대해서, 상기 삭제된 데이터를 나타내는 데이터 ID 및 삭제 시점을 포함하는 변경 이력을, 상기 삭제 시점이 새로운 순으로 정해진 수를 기억하는 서버 변경 이력 기억부를 구비하고, 상기 변경 정보 취득부는, 상기 앵커 시점보다 뒤인 상기 삭제 시점을 포함하는 상기 변경 이력을 상기 서버 변경 이력 기억부로부터 취득하며, 상기 동기 정보 송신부는, 상기 변경 정보에 추가로, 상기 서버 변경 이력 기억부가 기억하고 있는 상기 변경 이력에 포함되는 가장 오래된 상기 삭제 시점인 바운더리 시점, 및 상기 취득된 변경 이력을 상기 동기 정보에 포함하여 상기 클라이언트에 송신하고, 상기 클라이언트는, 상기 동기 정보에 포함되는 상기 변경 이력에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부와, 상기 앵커 시점이 상기 바운더리 시점보다 앞인 경우에, 상기 제2 데이터베이스에 기억되어 있는 상기 데이터 중, 상기 데이터의 상기 갱신 시점이 상기 바운더리 시점보다 앞이며, 상기 데이터를 나타내는 데이터 ID를 포함하는 상기 변경 정보가 상기 동기 정보에 포함되어 있지 않는 것을 검색하고, 상기 검색된 각 데이터에 대해서 상기 데이터를 나타내는 데이터 ID 및 상기 데이터의 상기 갱신 시점을 포함하는 진부화(陳腐化) 정보를 생성하는 진부화 정보 취득부를 구비하며, 상기 다운로드 요구 송신부는, 상기 취득 데이터 ID에 추가로, 상기 진부화 정보를 상기 다운로드 요구에 포함하여 상기 서버에 송신하고, 상기 데이터 취득부는 또한, 상기 다운로드 요구에 포함되는 상기 각 진부화 정보에 대해서, 상기 진부화 정보에 대응하는 상기 데이터가 상기 제1 데이터베이스에 기억되어 있는지의 여부를 판정하며, 상기 제1 데이터베이스에 기억되어 있지 않는 것으로 판정한 상기 데이터를 나타내는 상기 데이터 ID를, 삭제된 데이터를 나타내는 삭제 ID로서 상기 다운로드 정보에 포함하고, 상기 삭제 처리부는, 상기 다운로드 정보에 포함되는 상기 삭제 ID에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하도록 하여도 좋다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 클라이언트는, 상기 동기 정보에 포함되어 있는 상기 각 변경 정보에 대해서, 상기 변경 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터의 상기 갱신 시점을 상기 제2 데이터베이스로부터 판독하고, 상기 판독된 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 새로운 경우에, 상기 데이터 ID에 대응하는 상기 데이터를 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하는 충돌 해소부를 구비하며, 상기 다운로드 요구 송신부는, 상기 충돌 해소부가 다운로드하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하고, 상기 클라이언트는, 상기 충돌 해소부가 업로드하는 것으로 결정한 상기 데이터를 상기 제2 데이터베이스로부터 판독하며, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하는 해소 요구 송신부를 구비하고, 상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하는 해소 처리부를 구비하도록 하여도 좋다.
또한, 본 발명의 다른 양태는, 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 시스템으로서, 상기 서버는, 데이터에 갱신 시점을 부대시켜 기억하는 제1 데이터베이스에 액세스 가능하고, 상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하며, 상기 서버는, 상기 제1 데이터베이스에 대한 데이터의 변경 이력을 새로운 순으로 정해진 수만 기억하는 서버 변경 이력 기억부를 구비하고, 상기 서버 변경 이력 기억부가 기억하는 상기 변경 이력인 서버 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 데이터 ID와, 그 데이터에 부대되어 있는 상기 갱신 시점을 포함하고, 상기 클라이언트는, 상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하는 앵커 기억부와, 상기 데이터를 취득하기 위한 조건 및 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하는 동기 요구 송신부를 구비하고, 상기 서버는, 상기 서버 변경 이력 기억부로부터, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터에 대응하는 상기 서버 변경 이력 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 것을 취득하는 변경 이력 취득부와, 상기 제1 데이터베이스로부터, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤이며, 상기 서버 변경 이력 기억부에 기억되어 있는 가장 오래된 상기 갱신 시점인 바운더리 시점보다 앞인 것을 검색하고, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 변경 정보를 생성하는 변경 정보 취득부와, 상기 바운더리 시점, 상기 취득된 서버 변경 이력, 및 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하는 동기 정보 송신부를 구비하고, 상기 클라이언트는, 상기 동기 정보에 포함되는 상기 서버 변경 이력 또는 상기 변경 정보에 대응하는 상기 데이터로부터 다운로드해야 하는 것을 결정하는 다운로드 결정부와, 상기 제2 데이터베이스로부터, 상기 조건에 매치하는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점부터 상기 바운더리 시점까지의 사이인 것을 검색하며, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 진부화 정보를 생성하는 진부화 정보 취득부와, 상기 결정된 데이터를 나타내는 취득 데이터 ID 및 상기 진부화 정보를 포함하는 다운로드 요구를 상기 서버에 송신하는 다운로드 요구 송신부를 구비하고, 상기 서버는, 상기 다운로드 요구에 포함되는 상기 진부화 정보에 대응하는 상기 데이터 중, 상기 갱신 시점이 상기 진부화 정보에 포함되는 상기 갱신 시점보다 새로운 것과, 상기 취득 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하는 데이터 취득부와, 상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하는 다운로드 정보 송신부를 구비하며, 상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 갱신 처리부를 구비하는 것으로 한다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 서버 변경 이력에는 또한, 데이터의 변경이 데이터의 추가, 갱신 또는 삭제 중 어느 것이었는지를 나타내는 변경 종별 정보가 포함되고, 상기 클라이언트가, 상기 동기 정보의 수신에 따라, 상기 동기 정보에 포함되는 상기 서버 변경 이력 중, 상기 변경 종별 정보가 삭제를 나타내는 것에 대해서, 상기 서버 변경 이력에 포함되는 상기 데이터 ID가 나타내는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부를 구비하도록 하여도 좋다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 데이터 취득부는, 상기 다운로드 요구에 포함되는 상기 진부화 정보 중, 상기 진부화 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터가 상기 제1 데이터베이스에 등록되어 있지 않는 것에 대해서, 상기 진부화 정보에 포함되는 상기 데이터 ID를 포함하는 삭제 정보를 상기 다운로드 정보에 설정하고, 상기 클라이언트는, 상기 다운로드 정보에 상기 삭제 정보가 포함되어 있는 경우에, 상기 삭제 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부를 구비하도록 하여도 좋다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 데이터에는, 상기 데이터의 내용에 기초하여 생성되는, 상기 조건에 상기 데이터가 매치하는지의 여부를 판정하기 위한 정보인 칼럼이 더 부대되고, 상기 서버 변경 이력에는, 데이터의 변경이 데이터의 추가, 갱신 또는 삭제 중 어느 것이었는지를 나타내는 변경 종별 정보와, 상기 데이터에 부대되는 상기 칼럼이 더 포함되며, 상기 변경 이력 취득부는, 상기 서버 변경 이력 중, 상기 칼럼이 상기 동기 요구에 포함되는 상기 조건에 매치하고, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 것을 취득하며, 상기 변경 정보 취득부는, 상기 제1 데이터베이스에 기억되어 있는 상기 데이터 중, 상기 데이터에 부대되는 상기 칼럼이 상기 동기 요구에 포함되는 상기 조건에 매치하고, 상기 갱신 시점이 상기 앵커 시점보다 뒤이며, 상기 바운더리 시점보다 앞인 것을 검색하며, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID, 상기 데이터에 부대되는 상기 갱신 시점, 및 상기 데이터에 포함되는 상기 칼럼을 상기 변경 정보에 설정하고, 상기 진부화 정보 취득부는, 상기 제2 데이터베이스에 기억되는 데이터 중, 상기 칼럼이 상기 조건에 매치하며, 상기 갱신 시점이 상기 앵커 시점부터 상기 바운더리 시점까지의 사이인 것을 검색하도록 하여도 좋다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 데이터에는, 상기 데이터의 내용에 기초하여 생성되는, 상기 클라이언트에서 상기 데이터를 다운로드해야 하는지의 여부를 결정하기 위한 정보인 힌트가 더 부대되고, 상기 서버 변경 이력에는, 데이터의 변경이 데이터의 추가, 갱신 또는 삭제 중 어느 것이었는지를 나타내는 변경 종별 정보와, 상기 데이터의 부대되는 상기 힌트가 더 포함되며, 상기 변경 정보 취득부는, 상기 검색된 각 데이터에 대해서, 상기 데이터에 부대되는 상기 힌트를 상기 변경 정보에 더 포함하고, 상기 다운로드 결정부는, 상기 서버 변경 이력 또는 상기 변경 정보에 포함되는 상기 힌트에 기초하여 상기 다운로드해야 하는 데이터를 결정하도록 하여도 좋다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 다운로드 결정부는, 상기 서버 변경 이력 또는 상기 변경 정보에 포함되는 상기 힌트를 출력하고, 사용자가 선택한 상기 출력된 힌트에 대응하는 상기 데이터를, 상기 다운로드해야 하는 데이터로서 결정하도록 하여도 좋다.
또한, 본 발명의 데이터 동기 시스템은, 상기 데이터에는 상기 갱신 시점이 부대되고, 상기 서버는, 상기 제1 데이터베이스에 대한 데이터의 변경이 행해질 때마다 커지는 수치를 상기 갱신 시점으로서 생성하는 시점 생성부를 구비하며, 상기 제1 데이터베이스에 기록될 때에, 상기 데이터에는 상기 시점 생성부가 생성된 상기 갱신 시점이 부대되도록 하여도 좋다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 데이터에는 상기 갱신 시점이 부대되고, 상기 서버는, 상기 제1 데이터베이스에 대한 데이터의 변경이 행해질 때에, 상기 서버에서의 타임스탬프를 취득하며, 상기 취득된 타임스탬프에, 상기 데이터의 식별 정보를 연결한 값을 상기 갱신 시점으로서 생성하는 시점 생성부를 구비하고, 상기 제1 데이터베이스에 기록될 때에, 상기 데이터에는 상기 시점 생성부가 생성한 상기 갱신 시점이 부대되도록 하여도 좋다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 클라이언트는, 상기 제2 데이터베이스에서의 데이터의 변경 이력을 기억하는 클라이언트 변경 이력 기억부를 구비하고, 상기 클라이언트 변경 이력 기억부가 기억하는 상기 변경 이력인 클라이언트 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 상기 데이터 ID와, 상기 데이터에 부대되어 있는 상기 갱신 시점을 포함하며, 상기 동기 요구 송신부는, 상기 조건에 매치하는 상기 데이터에 대응하는 상기 클라이언트 변경 이력을 상기 클라이언트 변경 이력 기억부로부터 취득하고, 상기 취득된 클라이언트 변경 이력을 상기 동기 요구에 설정하여 상기 서버에 송신하며, 상기 서버는, 상기 동기 요구에 포함되는 상기 클라이언트 변경 이력의 각각에 대해서, 상기 클라이언트 변경 이력에 포함되는 상기 데이터 ID에 대응하는, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되어 있는 상기 갱신 시점이, 상기 클라이언트 변경 이력에 포함되어 있는 상기 갱신 시점보다 뒤인 경우, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되는 상기 갱신 시점 및 상기 데이터 ID를 포함하는 충돌 정보를 생성하는 충돌 검지부를 구비하고, 상기 동기 정보 송신부는, 상기 충돌 정보를 더 포함하는 상기 동기 정보를 상기 클라이언트에 송신하며, 상기 클라이언트는, 상기 충돌 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를, 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하는 충돌 해소부를 구비하고, 상기 다운로드 요구 송신부는, 상기 충돌 해소부가 다운로드하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하며, 상기 클라이언트는, 상기 충돌 해소부가 업로드하는 것으로 결정한 상기 데이터를 상기 제2 데이터베이스로부터 판독하고, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하는 해소 요구 송신부를 구비하며, 상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하는 해소 처리부를 구비하여도 좋다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 데이터에는 또한, 상기 데이터에 정해진 알고리즘을 적용하여 구할 수 있는 데이터인 키가 부대되고, 상기 서버 변경 이력 및 상기 클라이언트 변경 이력에는 각각 상기 키가 포함되며, 상기 서버는, 상기 제1 데이터베이스에 기억되어 있는 상기 데이터 중, 상기 키가 상기 동기 요구에 포함되는 상기 클라이언트 변경 이력 중 어느 하나에 포함되는 상기 키와 일치하는 것을 검색하고, 상기 검색된 데이터를 나타내는 상기 데이터 ID를 포함하는 중복 정보를 생성하는 중복 검지부를 구비하며, 상기 동기 정보 송신부는, 상기 중복 정보를 더 포함하는 상기 동기 정보를 상기 클라이언트에 송신하고, 상기 클라이언트는, 상기 중복 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터 중, 삭제해야 하는 것을 결정하는 중복 해소부를 구비하고, 상기 해소 요구 송신부는, 상기 중복 해소부가 삭제해야 하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 포함하는 해소 정보를 상기 해소 요구에 더 포함하여 상기 서버에 송신하며, 상기 해소 처리부는 또한, 상기 해소 요구에 포함되는 상기 해소 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 삭제하도록 하여도 좋다.
또한, 본 발명의 데이터 동기 시스템에서는, 상기 데이터에는 상기 데이터 ID가 부대되어 있고, 상기 데이터 ID에는, 상기 클라이언트에서 일의의 식별 정보인 로컬 ID와, 상기 서버 및 상기 클라이언트의 양쪽에서 일의의 식별 정보인 글로벌 ID가 포함되며, 상기 클라이언트는, 상기 클라이언트에서 상기 데이터가 작성된 경우에, 상기 작성된 데이터에 상기 로컬 ID를 할당하는 로컬 ID 할당부와, 상기 작성된 데이터에 할당된 상기 로컬 ID 중, 상기 글로벌 ID가 할당되어 있지 않은 것인 미취득 ID를 기억하는 미취득 ID 기억부를 구비하고, 상기 동기 요구 송신부는 또한, 상기 미취득 ID 기억부에 기억되어 있는 상기 미취득 ID를 포함하여 상기 동기 요구를 상기 서버에 송신하며, 상기 서버는, 상기 동기 요구에 포함되어 있는 상기 미취득 ID에 대응하는 상기 글로벌 ID를 상기 제1 데이터베이스로부터 검색하고, 상기 미취득 ID에 대응하는 상기 글로벌 ID가 있는 경우에는, 그 대응하는 글로벌 ID를 상기 제1 데이터베이스로부터 취득하며, 상기 취득된 글로벌 ID 및 상기 미취득 ID를 포함하는 ID 정보를 생성하고, 상기 로컬 ID에 대응하는 상기 글로벌 ID가 없는 경우에는, 새롭게 상기 글로벌 ID를 할당하며, 상기 할당된 글로벌 ID 및 상기 로컬 ID를 포함하는 ID 정보를 생성하는 글로벌 ID 취득부를 구비하고, 상기 동기 정보 송신부는 또한, 상기 ID 정보를 포함하여 상기 동기 정보를 상기 클라이언트에 송신하며, 상기 클라이언트는, 상기 동기 정보에 포함되어 있는 상기 ID 정보의 각각에 대해서, 상기 ID 정보에 포함되는 상기 미취득 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 검색하고, 상기 검색된 데이터에 부대되는 상기 데이터 ID에, 상기 ID 정보에 포함되는 상기 글로벌 ID를 설정하는 글로벌 ID 등록부를 구비하도록 하여도 좋다.
또한, 본 발명의 다른 양태는, 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 방법으로서, 상기 서버는, 갱신 시점을 포함하는 데이터를 기억하는 제1 데이터베이스에 액세스 가능하고, 상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하며, 상기 클라이언트는, 상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하고, 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하며, 상기 서버는, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 상기 데이터인 갱신 데이터를 상기 제1 데이터베이스로부터 검색하고, 상기 각 갱신 데이터에 대해서 상기 갱신 데이터를 나타내는 데이터 ID 및 상기 갱신 데이터의 상기 갱신 시점을 포함하는 변경 정보를 생성하며, 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하고, 상기 클라이언트는, 상기 변경 정보에 대응하는 상기 데이터 중, 다운로드해야 하는 것인 취득 데이터를 결정하며, 상기 취득 데이터를 나타내는 데이터 ID를 포함하는 다운로드 요구를 상기 서버에 송신하고, 상기 서버는, 상기 다운로드 요구에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하며, 상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하고, 상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 것으로 한다.
또한, 본 발명의 데이터 동기 방법에서는, 상기 클라이언트는, 상기 동기 정보에 포함되어 있는 상기 각 변경 정보에 대해서, 상기 변경 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터의 상기 갱신 시점을 상기 제2 데이터베이스로부터 판독하고, 상기 판독된 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 새로운 경우에, 상기 데이터 ID에 대응하는 상기 데이터를 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하며, 상기 클라이언트는, 다운로드하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하고, 상기 클라이언트는, 업로드하는 것으로 결정한 상기 데이터를 상기 제2 데이터베이스로부터 판독하며, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하고, 상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하도록 하여도 좋다.
또한, 본 발명의 다른 양태는, 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 방법으로서, 상기 서버는, 데이터에 갱신 시점을 부대시켜 기억하는 제1 데이터베이스에 액세스 가능하고, 상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하며, 상기 서버는, 상기 제1 데이터베이스에 대한 데이터의 변경 이력을 새로운 순으로 정해진 수만 기억하고 있고, 상기 서버가 기억하는 상기 변경 이력인 서버 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 데이터 ID와, 그 데이터에 부대되어 있는 상기 갱신 시점을 포함하며, 상기 클라이언트는, 상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하고, 상기 클라이언트는, 상기 데이터를 취득하기 위한 조건 및 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하며, 상기 서버는, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터에 대응하는 상기 서버 변경 이력 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 것을 취득하고, 상기 서버는, 상기 제1 데이터베이스로부터, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤이며, 상기 서버가 기억하고 있는 상기 서버 변경 이력의 상기 갱신 시점 중 가장 오래된 것인 바운더리 시점보다 앞인 상기 데이터를 검색하고, 상기 검색한 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 변경 정보를 생성하며, 상기 서버는, 상기 바운더리 시점, 상기 취득한 서버 변경 이력, 및 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하고, 상기 클라이언트는, 상기 동기 정보에 포함되는 상기 서버 변경 이력 또는 상기 변경 정보에 대응하는 상기 데이터로부터 다운로드해야 하는 것을 결정하며, 상기 클라이언트는, 상기 제2 데이터베이스로부터, 상기 조건에 매치하는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점으로부터 상기 바운더리 시점까지의 사이인 것을 검색하고, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 진부화 정보를 생성하며, 상기 클라이언트는, 상기 결정된 데이터를 나타내는 취득 데이터 ID 및 상기 진부화 정보를 포함하는 다운로드 요구를 상기 서버에 송신하고, 상기 서버는, 상기 다운로드 요구에 포함되는 상기 진부화 정보에 대응하는 상기 데이터 중, 상기 갱신 시점이 상기 진부화 정보에 포함되는 상기 갱신 시점보다 새로운 것과, 상기 취득 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하며, 상기 서버는, 상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하고, 상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 것으로 한다.
또한, 본 발명의 데이터 동기 방법에서는, 상기 클라이언트는, 상기 제2 데이터베이스에서의 데이터의 변경 이력을 기억하고 있고, 상기 클라이언트가 기억하는 상기 변경 이력인 클라이언트 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 상기 데이터 ID와, 상기 데이터에 부대되어 있는 상기 갱신 시점을 포함하며, 상기 클라이언트는, 상기 조건에 매치하는 상기 데이터에 대응하는 상기 클라이언트 변경 이력을 취득하고, 상기 취득된 클라이언트 변경 이력을 상기 동기 요구에 설정하여 상기 서버에 송신하며, 상기 서버는, 상기 동기 요구에 포함되는 상기 클라이언트 변경 이력의 각각에 대해서, 상기 클라이언트 변경 이력에 포함되는 상기 데이터 ID에 대응하는, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되어 있는 상기 갱신 시점이, 상기 클라이언트 변경 이력에 포함되어 있는 상기 갱신 시점보다 뒤인 경우, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되는 상기 갱신 시점 및 상기 데이터 ID를 포함하는 충돌 정보를 생성하고, 상기 서버는, 상기 충돌 정보를 더 포함하는 상기 동기 정보를 상기 클라이언트에 송신하며, 상기 클라이언트는, 상기 충돌 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를, 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하고, 상기 클라이언트는, 상기 다운로드하는 것으로 결정된 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하며, 상기 클라이언트는, 상기 업로드하는 것으로 결정된 데이터를 상기 제2 데이터베이스로부터 판독하고, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하며, 상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하도록 하여도 좋다.
그 외 본원이 개시하는 과제나 그 해결 방법에 대해서는, 발명의 실시형태의 란 및 도면에 의해 명백해진다.
본 발명에 의하면, 클라이언트와 서버 사이에서 데이터를 동기하는 경우에 서버의 부하를 저감할 수 있다.
도 1은 통신 시스템의 전체 구성을 도시하는 도면이다.
도 2는 클라이언트(10)의 하드웨어 구성을 도시하는 도면이다.
도 3은 서버(20)의 하드웨어 구성을 도시하는 도면이다.
도 4는 클라이언트(10)의 소프트웨어 구성을 도시하는 도면이다.
도 5는 클라이언트 레코드의 구성예를 도시하는 도면이다.
도 6은 앵커 기억부(132)의 구성예를 도시하는 도면이다.
도 7은 제1 실시형태에 따른 동기 요구(41)의 구성예를 도시하는 도면이다.
도 8은 제1 실시형태에 따른 동기 정보(42)의 구성예를 도시하는 도면이다.
도 9는 다운로드 요구(43)의 구성예를 도시하는 도면이다.
도 10은 다운로드 정보의 구성예를 도시하는 도면이다.
도 11은 서버(20)의 소프트웨어 구성을 도시하는 도면이다.
도 12는 서버 레코드의 구성예를 도시하는 도면이다.
도 13은 서버 변경 이력의 구성예를 도시하는 도면이다.
도 14는 제1 실시형태에 따른 데이터의 동기 처리의 흐름을 설명하는 도면이다.
도 15는 제1 실시형태에 따른 동기 요구(41)의 작성 처리의 흐름을 도시하는 도면이다.
도 16은 제1 실시형태에 따른 동기 요구(41)에의 대응 처리의 흐름을 도시하는 도면이다.
도 17은 앵커 시점이 시점 t1이었던 경우의 변경 이력 및 변경 특징 정보의 관계를 설명하는 도면이다.
도 18은 앵커 시점이 시점 t5였던 경우의 변경 이력 및 변경 특징 정보의 관계를 설명하는 도면이다.
도 19는 제1 실시형태에 따른 동기 정보(42)에의 대응 처리의 흐름을 도시하는 도면이다.
도 20은 제1 실시형태에 따른 다운로드 요구(43)의 대응 처리의 흐름을 설명하는 도면이다.
도 21은 제1 실시형태에 따른 다운로드 정보(44)의 대응 처리의 흐름을 도시하는 도면이다.
도 22는 클라이언트(10)에서 실행되는 적용 처리의 흐름을 도시하는 도면이다.
도 23은 제2 실시형태에 따른 클라이언트(10)의 소프트웨어 구성을 도시하는 도면이다.
도 24는 제2 실시형태에 따른 클라이언트 레코드의 구성예를 도시하는 도면이다.
도 25는 클라이언트 변경 이력의 구성예를 도시하는 도면이다.
도 26은 중복 기억부(136)의 구성예를 도시하는 도면이다.
도 27은 클라이언트 변경 검지부(110)에 의한 처리의 흐름을 도시하는 도면이다.
도 28은 단계 S407에 도시하는 중복 판정 처리의 흐름을 도시하는 도면이다.
도 29는 단계 S408에 도시하는 변경 이력 등록 처리의 흐름을 도시하는 도면이다.
도 30은 제2 실시형태에 따른 동기 요구(41)의 구성예를 도시하는 도면이다.
도 31은 제2 실시형태에 따른 동기 정보(42)의 구성예를 도시하는 도면이다.
도 32는 해소 요구(45)의 구성예를 도시하는 도면이다.
도 33은 해소 결과 정보(46)의 구성예를 도시하는 도면이다.
도 34는 제2 실시형태에 따른 서버(20)의 소프트웨어 구성을 도시하는 도면이다.
도 35는 제2 실시형태에 따른 서버 레코드의 구성예를 도시하는 도면이다.
도 36은 제2 실시형태에 따른 데이터의 동기 처리의 흐름을 설명하는 도면이다.
도 37은 제2 실시형태에 따른 동기 요구의 작성 처리의 흐름을 도시하는 도면이다.
도 38은 제2 실시형태에 따른 동기 요구에의 대응 처리의 흐름을 도시하는 도면이다.
도 39는 서버(20)에서 실행되는 GUID의 할당 처리의 흐름을 도시하는 도면이다.
도 40은 서버(20)에서 실행되는 충돌 및 중복의 검지 처리의 흐름을 도시하는 도면이다.
도 41은 제2 실시형태에 따른 동기 정보(42)에의 대응 처리의 흐름을 도시하는 도면이다.
도 42는 클라이언트(10)에서 실행되는 GUID의 할당 처리이다.
도 43은 제2 실시형태에 따른 다운로드 정보(44)에의 대응 처리의 흐름을 도시하는 도면이다.
도 44는 클라이언트(10)에서 실행되는 충돌 해소 처리의 흐름을 도시하는 도면이다.
도 45는 클라이언트(10)에서 실행되는 중복 해소 처리의 흐름을 도시하는 도면이다.
도 46은 해소 요구(45)에 대응하는 처리의 흐름을 도시하는 도면이다.
도 47은 해소 결과 정보(46)에 대응하는 처리의 흐름을 도시하는 도면이다.
도 2는 클라이언트(10)의 하드웨어 구성을 도시하는 도면이다.
도 3은 서버(20)의 하드웨어 구성을 도시하는 도면이다.
도 4는 클라이언트(10)의 소프트웨어 구성을 도시하는 도면이다.
도 5는 클라이언트 레코드의 구성예를 도시하는 도면이다.
도 6은 앵커 기억부(132)의 구성예를 도시하는 도면이다.
도 7은 제1 실시형태에 따른 동기 요구(41)의 구성예를 도시하는 도면이다.
도 8은 제1 실시형태에 따른 동기 정보(42)의 구성예를 도시하는 도면이다.
도 9는 다운로드 요구(43)의 구성예를 도시하는 도면이다.
도 10은 다운로드 정보의 구성예를 도시하는 도면이다.
도 11은 서버(20)의 소프트웨어 구성을 도시하는 도면이다.
도 12는 서버 레코드의 구성예를 도시하는 도면이다.
도 13은 서버 변경 이력의 구성예를 도시하는 도면이다.
도 14는 제1 실시형태에 따른 데이터의 동기 처리의 흐름을 설명하는 도면이다.
도 15는 제1 실시형태에 따른 동기 요구(41)의 작성 처리의 흐름을 도시하는 도면이다.
도 16은 제1 실시형태에 따른 동기 요구(41)에의 대응 처리의 흐름을 도시하는 도면이다.
도 17은 앵커 시점이 시점 t1이었던 경우의 변경 이력 및 변경 특징 정보의 관계를 설명하는 도면이다.
도 18은 앵커 시점이 시점 t5였던 경우의 변경 이력 및 변경 특징 정보의 관계를 설명하는 도면이다.
도 19는 제1 실시형태에 따른 동기 정보(42)에의 대응 처리의 흐름을 도시하는 도면이다.
도 20은 제1 실시형태에 따른 다운로드 요구(43)의 대응 처리의 흐름을 설명하는 도면이다.
도 21은 제1 실시형태에 따른 다운로드 정보(44)의 대응 처리의 흐름을 도시하는 도면이다.
도 22는 클라이언트(10)에서 실행되는 적용 처리의 흐름을 도시하는 도면이다.
도 23은 제2 실시형태에 따른 클라이언트(10)의 소프트웨어 구성을 도시하는 도면이다.
도 24는 제2 실시형태에 따른 클라이언트 레코드의 구성예를 도시하는 도면이다.
도 25는 클라이언트 변경 이력의 구성예를 도시하는 도면이다.
도 26은 중복 기억부(136)의 구성예를 도시하는 도면이다.
도 27은 클라이언트 변경 검지부(110)에 의한 처리의 흐름을 도시하는 도면이다.
도 28은 단계 S407에 도시하는 중복 판정 처리의 흐름을 도시하는 도면이다.
도 29는 단계 S408에 도시하는 변경 이력 등록 처리의 흐름을 도시하는 도면이다.
도 30은 제2 실시형태에 따른 동기 요구(41)의 구성예를 도시하는 도면이다.
도 31은 제2 실시형태에 따른 동기 정보(42)의 구성예를 도시하는 도면이다.
도 32는 해소 요구(45)의 구성예를 도시하는 도면이다.
도 33은 해소 결과 정보(46)의 구성예를 도시하는 도면이다.
도 34는 제2 실시형태에 따른 서버(20)의 소프트웨어 구성을 도시하는 도면이다.
도 35는 제2 실시형태에 따른 서버 레코드의 구성예를 도시하는 도면이다.
도 36은 제2 실시형태에 따른 데이터의 동기 처리의 흐름을 설명하는 도면이다.
도 37은 제2 실시형태에 따른 동기 요구의 작성 처리의 흐름을 도시하는 도면이다.
도 38은 제2 실시형태에 따른 동기 요구에의 대응 처리의 흐름을 도시하는 도면이다.
도 39는 서버(20)에서 실행되는 GUID의 할당 처리의 흐름을 도시하는 도면이다.
도 40은 서버(20)에서 실행되는 충돌 및 중복의 검지 처리의 흐름을 도시하는 도면이다.
도 41은 제2 실시형태에 따른 동기 정보(42)에의 대응 처리의 흐름을 도시하는 도면이다.
도 42는 클라이언트(10)에서 실행되는 GUID의 할당 처리이다.
도 43은 제2 실시형태에 따른 다운로드 정보(44)에의 대응 처리의 흐름을 도시하는 도면이다.
도 44는 클라이언트(10)에서 실행되는 충돌 해소 처리의 흐름을 도시하는 도면이다.
도 45는 클라이언트(10)에서 실행되는 중복 해소 처리의 흐름을 도시하는 도면이다.
도 46은 해소 요구(45)에 대응하는 처리의 흐름을 도시하는 도면이다.
도 47은 해소 결과 정보(46)에 대응하는 처리의 흐름을 도시하는 도면이다.
==전체 구성==
도 1은, 본 발명의 일 실시형태에 따른 통신 시스템의 전체 구성을 도시하는 도면이다. 본 실시형태의 통신 시스템은, 클라이언트(10) 및 서버(20)를 포함하여 구성된다. 클라이언트(10) 및 서버(20)는 각각 통신 네트워크(30)에 접속되어 있고, 클라이언트(10) 및 서버(20)는 통신 네트워크(30)를 통해 통신 가능하게 되어 있다. 본 실시형태의 통신 시스템은, 서버(20)와 클라이언트(10) 사이의 데이터의 동기를 행하는 것이다.
서버(20)는, 예컨대 퍼스널 컴퓨터나 워크스테이션 등의 컴퓨터이다. 서버(20)는, 데이터를 기억하는 데이터베이스를 구비한다[이하, 서버(20)가 구비하는 데이터베이스를 「서버 데이터베이스(21)」라고 함. 본 발명의 「제1 데이터베이스」에 해당함]. 서버(20)가 관리하는 데이터는, 예컨대 사진 등의 화상 데이터나, 전화번호부 등의 데이터 등이다. 서버(20)에서는, 서버 데이터베이스(21)에 대한 변경 이력이 최신의 정해진 수개만 기록된다. 정해진 수를 초과한 변경 이력은 오래된 것부터 순서대로 삭제되어 가는 것으로 한다.
클라이언트(10)는, 예컨대 휴대전화 단말이나 PDA(Personal Data Assistant), 퍼스널 컴퓨터 등의 컴퓨터이다. 클라이언트(10)도, 데이터를 기억하는 데이터베이스를 구비하고 있다[이하, 클라이언트가 구비하는 데이터베이스를 「클라이언트 데이터베이스(11)」라고 함. 본 발명의 「제2 데이터베이스」에 해당함]. 클라이언트 데이터베이스(11)와 서버 데이터베이스(21)가 동기된다.
본 실시형태에서는, 각 데이터에는, 최후에 갱신된 시점(이하, 「갱신 시점」이라고 함. 데이터가 새롭게 작성되었을 때에도, 작성된 시점이 갱신 시점에도 설정되는 것으로 함)이 부대되고, 데이터의 신고(新古)는 갱신 시점의 비교에 의해 행하는 것으로 한다. 본 실시형태에서, 데이터의 작성이나 갱신, 삭제(이하, 데이터의 작성, 갱신 및 삭제를 통합하여 데이터의 「변경」이라고 함)가 이루어진 시점이란, 서버(20)에서의 서버 데이터베이스(21)에 대하여 행해진 변경이 몇 번째로 행해진 것인지를 나타내는 값인 것으로 한다. 즉, 서버(20)에서는 1시점에 대해 하나의 데이터만이 변경의 대상이 되는 것으로 하고, 서버(20)에서, 서버 데이터베이스(21)에 대한 데이터의 변경이 행해질 때마다, 시점을 나타내는 값이 인크리먼트해 가는 것으로 한다.
==하드웨어 구성==
도 2는, 클라이언트(10)의 하드웨어 구성을 도시하는 도면이다. 클라이언트(10)는, CPU(101), 메모리(102), 기억 장치(103), 통신 인터페이스(104), 입력 장치(105), 및 출력 장치(106)를 구비하고 있다.
기억 장치(103)는, 각종 데이터나 프로그램을 기억하는, 예컨대 하드디스크 드라이브나 플래시 메모리, CD-ROM 드라이브 등이다. CPU(101)는, 기억 장치(103)에 기억되어 있는 프로그램을 메모리(102)에 판독하여 실행하는 것에 의해 각종 기능을 실현한다. 통신 인터페이스(104)는 통신 네트워크(30)에 접속하기 위한 인터페이스이다. 통신 인터페이스(104)는, 예컨대 이더넷(등록상표)에 접속하기 위한 어댑터, 전화 회선망에 접속하기 위한 모뎀, 무선 통신망에 접속하기 위한 무선 통신기 등이다. 입력 장치(105)는, 클라이언트(10)를 조작하는 사용자로부터 데이터의 입력을 접수하는, 예컨대 키패드나 터치 패널, 키보드, 마우스 등이다. 출력 장치(106)는 데이터를 출력하는, 예컨대 디스플레이나 프린터 등이다.
도 3은 서버(20)의 하드웨어 구성을 도시하는 도면이다. 서버(20)는, CPU(201), 메모리(202), 기억 장치(203), 통신 인터페이스(204), 입력 장치(205), 및 출력 장치(206)를 구비하고 있다.
기억 장치(203)는, 각종 데이터나 프로그램을 기억하는, 예컨대 하드디스크 드라이브나 플래시 메모리, CD-ROM 드라이브 등이다. CPU(201)는, 기억 장치(203)에 기억되어 있는 프로그램을 메모리(202)에 판독하여 실행하는 것에 의해 각종 기능을 실현한다. 통신 인터페이스(204)는, 통신 네트워크(30)에 접속하기 위한 인터페이스이다. 통신 인터페이스(204)는, 예컨대 이더넷(등록상표)에 접속하기 위한 어댑터, 전화 회선망에 접속하기 위한 모뎀, 무선 통신망에 접속하기 위한 무선 통신기 등이다. 입력 장치(205)는, 서버(20)를 조작하는 사용자로부터 데이터의 입력을 접수한다, 예컨대 키보드나 마우스 등이다. 출력 장치(206)는, 데이터를 출력하는, 예컨대 디스플레이나 프린터 등이다.
==본 실시형태의 개요==
본 실시형태의 통신 시스템에서는, 클라이언트(10)와 서버(20) 사이에서 데이터가 동기된다. 하기 제1 실시형태에서는, 클라이언트(10)에서는 데이터의 갱신이 행해지지 않고, 서버(20)에서만 데이터의 갱신이 행해진 경우를 상정하며, 하기 제2 실시형태에서는, 클라이언트(10) 및 서버(20)의 양쪽에서 데이터가 갱신되는 경우를 상정한다.
본 실시형태의 통신 시스템에서는, 클라이언트(10)가 주동적으로 데이터의 동기를 행한다. 데이터의 동기 수순은 이하와 같은 것이 된다.
(1) 클라이언트(10)와 서버(20) 사이에서, 각각에서 변경된 데이터에 대한 정보가 교환된다.
(1.1) 클라이언트(10)로부터 서버(20)에, 클라이언트(10)에서 갱신된 데이터에 대한 정보가 송신된다. 또한 클라이언트(10)에서 데이터가 갱신되지 않는 경우에는, 이 수순은 생략된다.
(1.2) 서버(20)로부터 클라이언트(10)에, 서버(20)에서 갱신된 데이터에 대한 정보가 송신된다.
(1.3) 클라이언트(10)는, 데이터의 경합을 검출하여, 경합을 해소한다. 데이터의 경합이란, 데이터의 충돌 및 중복이다. 데이터의 충돌이란, 클라이언트(10) 및 서버(20)의 양쪽에서 동일한 레코드에 대하여 변경이 행해지는 것을 말한다. 데이터의 중복이란, 클라이언트(10)와 서버(20)의 양쪽에서 상이한 데이터를 갱신한 것에 의해, 상이한 데이터가 동일 또는 유사한 내용이 되는 것을 말한다. 본 실시형태에서는, 경합의 해소는, 경합 관계에 있는 2개의 데이터[예컨대 충돌하는 클라이언트(10)의 데이터 및 서버(20)의 데이터, 또는 중복하는 2개의 데이터] 중 어느 하나를 선택하는 것에 의해 행하는 것으로 한다.
(2) 클라이언트(10)는, 서버(20)로부터 다운로드해야 하는 데이터를 다운로드한다.
(3) 클라이언트(10)는, 서버(20)에 반영해야 하는 데이터를 서버(20)에 업로드한다.
이상과 같은 수순 (1)?(3)을 반복하는 것에 의해 클라이언트(10)와 서버(20) 사이에서 데이터가 동기되게 된다. 또한 상기한 수순은 순번을 바꿔 실행할 수도 있다.
이하, 세부 사항에 대해서 설명한다.
==제1 실시형태==
제1 실시형태에서는, 클라이언트(10)에서 데이터의 갱신이 행해지는 않는 것으로 한다. 또한 제1 실시형태에서는, 서버(20)에서 관리되는 데이터는 대량이며, 그 모두를 클라이언트(10)에 다운로드할 수 없는 것으로 한다.
제1 실시형태에서는, 클라이언트(10)가, 서버(20)로부터 서버(20)에서 추가, 변경, 또는 삭제된 데이터에 관한 정보를 취득하고, 그 중에서 필요한 데이터를 선택적으로 다운로드하도록 하고 있다. 즉, 서버(20)는, 클라이언트(10)에서의 동기의 상황에 관한 관리를 행하지 않고, 클라이언트(10)가 사용자에게 필요한 데이터를, 선택적으로 다운로드를 하도록 하고 있다.
==클라이언트(10)의 소프트웨어 구성==
도 4는, 제1 실시형태에 따른 클라이언트(10)의 소프트웨어 구성을 도시하는 도면이다. 도 4에 도시하는 바와 같이, 클라이언트(10)는, 클라이언트 데이터베이스(11), 필터 선택부(111), 동기 요구 송신부(112), 동기 정보 수신부(113), 삭제 처리부(114), 다운로드 결정부(115), 앵커 갱신부(116), 진부화 정보 취득부(117), 다운로드 요구 송신부(118), 다운로드 정보 수신부(119), 갱신 처리부(120), 클라이언트 ID 기억부(131), 앵커 기억부(132)를 구비하고 있다. 또한 필터 선택부(111), 동기 요구 송신부(112), 동기 정보 수신부(113), 삭제 처리부(114), 다운로드 결정부(115), 앵커 갱신부(116), 진부화 정보 취득부(117), 다운로드 요구 송신부(118), 다운로드 정보 수신부(119), 갱신 처리부(120)는, 클라이언트(10)가 구비하는 CPU(101)가 기억 장치(103)에 기억되어 있는 프로그램을 메모리(102)에 판독하여 실행하는 것에 의해 실현된다. 또한 클라이언트 데이터베이스(11), 클라이언트 ID 기억부(131), 앵커 기억부(132)는, 클라이언트(10)가 구비하는 메모리(102)나 기억 장치(103)가 제공하는 기억 영역으로서 실현된다. 클라이언트 데이터베이스(11)는, 클라이언트(10)와는 상이한 컴퓨터(데이터베이스 서버)에 의해 제공되도록 하여도 좋다. 이 경우, 클라이언트(10)는, 예컨대 통신 네트워크(30)를 통해 데이터베이스 서버에 액세스 가능하게 접속되도록 한다.
클라이언트 데이터베이스(11)는, 서버(20)로부터 취득한 데이터를 기억한다. 도 5는 클라이언트 데이터베이스(11)에 기억되는 데이터(이하, 「클라이언트 레코드」라고도 함)의 구성예를 도시하는 도면이다. 클라이언트 레코드에는, GUID(Globally Unique IDentifier), 갱신 시점, 갱신 가능성 플래그, 삭제 가능성 플래그, 키, 칼럼, 힌트, 및 데이터의 본체가 포함되어 있다.
GUID(본 발명의 「데이터 ID」 및 「글로벌 ID」에 해당함)는, 서버(20)에 의해 데이터에 할당되는 식별 정보이고, 본 실시형태의 통신 시스템에서 일의의 번호이다. 갱신 시점은, 서버(20)에서 데이터가 최후에 갱신된 시점을 나타낸다. 갱신 가능성 플래그는, 데이터가 서버(20)에서 갱신되어 있을 가능성이 있는 것을 나타내고, 삭제 가능성 플래그는, 데이터가 서버(20)에서 삭제되어 있을 가능성이 있는 것을 나타낸다. 키는, 클라이언트 레코드의 중복을 판정하기 위한 데이터이며, 데이터 본체에 기초하여 작성된다.
키는, 예컨대 데이터 본체가 주소록의 데이터인 경우에는, 전화번호나 성명 등의 문자열을 연결하여 작성할 수 있고, 데이터 본체가 전자메일의 데이터인 경우에는, 전자메일의 수신인(To), 발신인(From), 날짜(Date), 및 건명(Subject)에 설정되어 있는 문자열을 연결하여 작성할 수 있다.
칼럼은, 데이터가 필터 조건을 만족시키는지의 여부를 판정하기 위해 이용하는 것이고, 데이터 본체의 일부이다. 힌트는, 서버(20)로부터 데이터를 다운로드할지의 여부를 결정하기 위한 정보이다. 본 실시형태에서는, 힌트에는, 데이터의 중요도가 포함되어 있는 것으로 하지만, 예컨대 데이터 본체가 주소록의 데이터인 경우에는 성명으로 하고, 데이터 본체가 전자메일의 데이터인 경우에는, 전자메일의 건명과 발신인의 문자열을 결합한 것으로 하여, 사용자가 데이터의 내용을 파악할 수 있도록 한다. 또한, 힌트에는, 예컨대 데이터의 중요도나 카테고리, 데이터 사이즈, 데이터 내용의 요약 등 각종 메타 데이터를 포함할 수도 있다.
클라이언트 ID 기억부(131)는, 클라이언트(10)의 식별 정보(이하, 「클라이언트 ID」라고 함)를 기억한다. 본 실시형태에서는, 클라이언트 ID 기억부(131)에는, 미리 클라이언트 ID가 기억되어 있는 것으로 한다.
앵커 기억부(132)는, 최후에 동기한 시점(이하, 「앵커 시점」이라고 함)을 기억한다. 또한 앵커 시점 이후에 변경된 데이터만이 동기의 대상이 된다. 도 6은, 앵커 기억부(132)의 구성예를 도시하는 도면이다. 앵커 기억부(132)는, 서버(20)에서 관리되고 있는 데이터를 추출하기 위한 조건(이하, 「필터 조건」라고 함)에 대응시켜 앵커 시점을 기억한다.
필터 선택부(111)는, 서버(20)로부터 데이터를 취득할 때에 이용하는 필터 조건을 앵커 기억부(132)로부터 선택한다. 필터 선택부(111)는, 예컨대 앵커 기억부(132)에 기억되어 있는 필터 조건을 일람 출력하여, 사용자로부터 필터 조건의 지정을 접수하도록 하여도 좋고, 입력 장치(105)를 통해 사용자로부터 필터 조건의 입력을 접수하도록 하여도 좋다.
동기 요구 송신부(112)는, 동기를 행하기 위한 커맨드(이하, 「동기 요구(41)」라고 함)를 서버(20)에 송신한다. 도 7은, 동기 요구(41)의 구성예를 도시하는 도면이다. 동기 요구(41)에는, 클라이언트 ID, 필터 조건 및 앵커 시점이 설정된다. 동기 요구 송신부(112)는, 클라이언트 ID 기억부(131)에 기억되어 있는 클라이언트 ID를 동기 요구(41)에 설정하고, 필터 선택부(111)가 선택한 필터 조건(이하, 「선택 필터 조건」라고 함)을 동기 요구(41)에 설정한다. 또한 동기 요구 송신부(112)는, 선택 필터 조건에 대응하는 앵커 시점을 앵커 기억부(132)로부터 판독하고, 판독된 앵커 시점을 동기 요구(41)에 설정한다. 동기 요구 송신부(112)는, 상기 동기 요구(41)를 서버(20)에 송신한다.
동기 정보 수신부(113)는, 동기 요구(41)에 따라 서버(20)로부터 송신되는, 서버(20)와의 사이에서 데이터를 동기하기 위해 필요한 정보(이하, 「동기 정보」라고 함)를 서버(20)로부터 수신한다. 도 8은, 동기 정보(42)의 구성예를 도시하는 도면이다. 동기 정보(42)에는, 바운더리 시점, 최신 이력 시점, 변경 특징 정보가 포함된다. 바운더리 시점은, 서버(20)에서 관리되고 있는 변경 이력의 가장 오래된 시점이다. 최신 이력 시점은, 서버(20)에서 관리되고 있는 변경 이력의 가장 새로운 시점이다. 변경 특징 정보는, 앵커 시점부터 바운더리 시점까지의 사이에 작성 또는 갱신된 데이터에 대한 정보와, 서버(20)에서 관리되고 있는 변경 이력에 따른 데이터에 대한 정보를 포함한다.
변경 특징 정보에 포함되어 있는 갱신 시점은, 최후에 데이터의 갱신이 행해진 시점이고, 삭제 플래그는, 서버(20)에서 데이터가 삭제된 것을 나타낸다.
삭제 처리부(114)는, 클라이언트 데이터베이스(11)로부터 데이터를 삭제한다. 삭제 처리부(114)는, 동기 정보(42)에 포함되는 변경 특징 정보 중, 삭제 플래그가 참인 것의 각각에 대해서, GUID에 대응하는 데이터를 클라이언트 데이터베이스(11)로부터 삭제한다. 또한, 삭제 처리부(114)에 의한 삭제 처리의 세부 사항에 대해서는 후술한다.
다운로드 결정부(115)는, 서버(20)로부터 취득(다운로드)해야 하는 데이터를 결정한다. 제1 실시형태에서는, 다운로드해야 하는 데이터란, 클라이언트 데이터베이스(11)에 등록되어 있고, 서버(20)에서 갱신되어 있는 데이터(이하, 「갱신 데이터」라고도 함)나, 서버(20)에서 새롭게 추가된 데이터(이하, 「추가 데이터」라고도 함), 이전회의 다운로드시에는 필터 조건에 매치하지 않았지만, 서버(20)에서 갱신되었기 때문에 필터 조건에 매치하도록 된 데이터(갱신된 것에 의해 필터 조건에 매치하도록 된 것을 「필터인」이라고 함)의 모두 또는 일부이다. 예컨대 다운로드 결정부(115)는, 변경 특징 정보의 GUID에 대응하는 클라이언트 데이터베이스(11)의 데이터의 갱신 시점과, 변경 특징 정보의 갱신 시점을 비교하여, 변경 특징 정보의 갱신 시점이 새로운 데이터를 갱신 데이터로 판정할 수 있다. 또한, 다운로드 결정부(115)는, 변경 특징 정보의 GUID에 대응하는 데이터가 클라이언트 데이터베이스(11)에 등록되어 있지 않는 경우에는, 그 데이터는 추가 데이터 또는 필터인된 데이터라고 판정할 수 있다. 다운로드 결정부(115)는, 예컨대 추가 데이터나 갱신 데이터, 필터인된 데이터 모두를 다운로드해야 하는 데이터로서 결정하여도 좋고, 이들 데이터에 대응하는 변경 특징 정보의 힌트를 표시하여, 사용자로부터 다운로드해야 하는 데이터의 지정을 접수하도록 하여도 좋다. 또한, 다운로드 결정부(115)는, 힌트에 데이터 사이즈가 포함되어 있는 경우에는, 클라이언트 데이터베이스(11)의 기억 용량을 초과하지 않는 양의 데이터를 다운로드해야 하는 데이터로서 결정할 수도 있다. 다운로드 결정부(115)는, 추가 데이터나 갱신 데이터, 필터인된 데이터 중, 힌트나 키, 칼럼 등이 정해진 조건을 만족시키는 것을 다운로드해야 하는 데이터로서 결정하여도 좋다. 또한, 클라이언트 데이터베이스(11)가 갱신 가능한 경우에는, 다운로드 결정부(115)는, 변경 특징 정보의 GUID에 대응하는 클라이언트 레코드의 갱신 시점이, 변경 특징 정보의 갱신 시점보다 새로울 때에는, 서버 레코드를 우선하여 다운로드하도록 하여도 좋고, 클라이언트 레코드를 우선하여 다운로드를 하지 않는 것으로 결정하도록 하여도 좋으며, 사용자에게 다운로드할지의 여부를 조회하여도 좋다. 다운로드 가능한 데이터 수나 데이터 사이즈를 설정해 두고, 다운로드 결정부(115)는, 그 데이터 수나 데이터 사이즈를 초과하지 않는 범위에서 다운로드해야 하는 데이터를 결정하도록 하여도 좋다. 다운로드 결정부는, 예컨대 클라이언트 데이터의 갱신 시점이나 데이터 사이즈 등에 따라 클라이언트 레코드에 우선 순위를 설정하고, 우선 순위가 높은 것으로부터 순서대로, 상기 데이터 수나 데이터 사이즈를 초과하지 않도록 다운로드해야 하는 데이터를 결정하도록 하여도 좋다. 또한 다운로드 결정부(115)가 어떻게 다운로드해야 하는 데이터를 결정하는지를 지정하는 폴리시(policy)를, 메모리(102)나 기억 장치(103)에 기억시켜 두고, 다운로드 결정부(115)는, 폴리시에 따라 다운로드해야 하는 데이터를 결정하도록 할 수도 있다.
또한, 다운로드 결정부(115)는, 클라이언트 데이터베이스(11)에 등록되어 있지만, 서버(20)에서는 필터 조건에 매치하지 않는 데이터(갱신된 것에 의해 필터 조건에 매치하지 않게 된 것을 「필터아웃」이라고 함)의 일부 또는 모두를 다운로드해야 하는 데이터에 포함하여도 좋다. 이 경우, 다운로드 결정부(115)는, 클라이언트 데이터베이스(11)로부터 필터 조건에 매치하는 데이터를 검색하고, 검색 데이터 중, GUID가 동기 정보(42)의 변경 특징 정보에 포함되어 있지 않는 것을 필터 아웃된 데이터라고 판정할 수 있다.
앵커 갱신부(116)는, 앵커 기억부(132)에 기억되는 앵커 시점을 갱신한다. 동기 정보(42)의 최신 이력 시점을 선택 필터 조건에 대응하는 앵커 시점으로서 앵커 기억부(132)에 등록한다. 또한, 앵커 갱신부(116)는, 필터 선택부(111)가 새롭게 필터 조건을 작성한 경우에는, 취할 수 있는 가장 작은 값으로부터 1을 뺀 값을 앵커 시점으로 하여 새롭게 작성된 필터 조건에 대응시켜 앵커 기억부(132)에 등록한다.
진부화 정보 취득부(117)는, 앵커 시점이 동기 정보(42)에 포함되는 바운더리 시점보다 앞인 경우에, 클라이언트 데이터베이스(11)에 기억되어 있는 클라이언트 레코드 중, 선택 필터 조건에 매치하고, 갱신 시점이 바운더리 시점보다 오래된 것(이하, 진부화 데이터라고 함)을 검색하여, 검색된 진부화 데이터에 대한 정보(이하, 「진부화 정보」라고 함)를 작성한다. 진부화 정보에는, 진부화 데이터의 GUID 및 갱신 시점이 설정된다.
다운로드 요구 송신부(118)는, 서버(20)로부터 데이터를 취득하기 위한 커맨드(이하, 「다운로드 요구」라고 함)를 서버(20)에 송신한다. 도 9는, 다운로드 요구(43)의 구성예를 도시하는 도면이다. 다운로드 요구(43)에는, 다운로드 결정부(115)가 결정한 데이터의 GUID를 포함하는 정보(이하, 「취득 정보」라고 함)가 설정된다. 또한, 진부화 정보 취득부(117)가 진부화 정보를 작성한 경우에는, 진부화 정보도 다운로드 요구(43)에 설정된다.
다운로드 정보 수신부(119)는, 다운로드 요구(43)에 따라 서버(20)로부터 송신되는, 취득 정보 및 진부화 정보에 대응하는 데이터를 포함하는 정보(이하, 「다운로드 정보」라고 함)를 수신한다. 도 10은, 다운로드 정보의 구성예를 도시하는 도면이다. 다운로드 정보에는, 취득 다운로드 정보 및 진부화 다운로드 정보가 포함된다. 취득 다운로드 정보는, 취득 정보에 대응하는 데이터를 포함하는 정보이며, 진부화 다운로드 정보는, 진부화 정보에 대응하는 데이터 중, 서버(20)에서 갱신된 것을 포함하는 정보이다. 취득 다운로드 정보 및 진부화 다운로드 정보에는 각각, GUID, 갱신 시점, 삭제 플래그, 키, 칼럼, 힌트 및 본체가 포함된다. 취득 정보나 진부화 정보에 포함되는 GUID에 대응하는 데이터가 서버(20)에서 삭제되어 있던 경우, 삭제 플래그에는 참이 설정되고, 키, 칼럼, 힌트 및 본체는 생략된다.
갱신 처리부(120)는, 다운로드 정보에 따라 클라이언트 데이터베이스(11)를 갱신한다. 갱신 처리부(120)는, 다운로드 정보에 포함되어 있는 취득 다운로드 정보 및 진부화 다운로드 정보의 각각에 대해, 삭제 플래그가 참이면, GUID에 대응하는 데이터를 클라이언트 데이터베이스(11)로부터 삭제하고, 삭제 플래그가 거짓이면, 취득 다운로드 정보 또는 진부화 다운로드 정보에 포함되어 있는 GUID에 대응시켜, 갱신 시점, 키, 칼럼, 힌트, 본체, 및 「거짓」의 갱신 가능성 플래그 및 삭제 가능성 플래그를 클라이언트 데이터베이스(11)에 등록한다. 또한 갱신 처리부(120)에 의한 갱신 처리의 세부 사항에 대해서는 후술한다.
==서버(20)의 소프트웨어 구성==
도 11은, 서버(20)의 소프트웨어 구성을 도시하는 도면이다. 서버(20)는, GUID 생성부(210), 시점 생성부(211), 데이터베이스 변경부(212), 동기 요구 수신부(213), 변경 이력 취득부(214), 변경 취득부(215), 동기 정보 송신부(216), 다운로드 요구 수신부(217), 데이터 취득부(218), 다운로드 정보 송신부(219), 서버 데이터베이스(21) 및 서버 변경 이력 기억부(231)를 구비하고 있다.
또한, GUID 생성부(210), 시점 생성부(211), 및 데이터베이스 변경부(212)는, 동기 요구 수신부(213), 변경 이력 취득부(214), 변경 취득부(215), 동기 정보 송신부(216), 다운로드 요구 수신부(217), 데이터 취득부(218), 다운로드 정보 송신부(219)는, 서버(20)가 구비하는 CPU(201)가 기억 장치(203)에 기억되어 있는 프로그램을 메모리(202)에 판독하여 실행하는 것에 의해 실현된다. 또한, 서버 데이터베이스(21) 및 서버 변경 이력 기억부(231)는, 서버(20)가 구비하는 메모리(202)나 기억 장치(203)가 제공하는 기억 영역으로서 실현된다. 서버 데이터베이스(21)는, 서버(20)와는 상이한 컴퓨터(데이터베이스 서버)에 의해 제공되도록 하여도 좋다. 이 경우, 서버(20)는 통신 네트워크(30)를 통해 데이터베이스 서버에 액세스 가능하게 접속되도록 한다.
서버 데이터베이스(21)는, 동기의 대상이 되는 데이터(이하, 「서버 레코드」라고 함)를 기억한다. 도 12는, 서버 데이터베이스(21)에 기억되는 서버 레코드의 구성예를 도시하는 도면이다. 서버 레코드에는, 데이터를 식별하는 GUID, 데이터의 작성 시점, 데이터의 갱신 시점, 키, 칼럼, 힌트, 및 데이터의 본체가 포함된다.
서버 변경 이력 기억부(231)는, 서버 데이터베이스(21)에 대한 변경 이력(이하, 「서버 변경 이력」이라고 함)을 새로운 순으로 정해진 수만 기억한다. 도 13은, 서버 변경 이력 기억부(231)에 기억되는 서버 변경 이력의 구성예를 도시하는 도면이다. 서버 변경 이력에는, 데이터를 식별하는 GUID, 데이터의 작성 시점, 데이터의 갱신 시점, 삭제 플래그, 데이터의 힌트, 구 칼럼 및 현 칼럼이 포함된다. 삭제 플래그는, 데이터를 서버 데이터베이스(21)로부터 삭제한 것을 나타낸다. 구 칼럼은, 그 서버 변경 이력에 따른 데이터의 변경이 행해지기 전의 데이터의 칼럼이며, 현 칼럼은, 그 변경이 행해진 후의 데이터의 칼럼이다. 데이터가 신규로 추가된 경우에는, 구 칼럼 및 현 칼럼의 양쪽에, 추가된 데이터의 정해진 일부가 설정된다.
GUID 생성부(210)는, GUID를 할당한다. GUID 생성부(210)는, 예컨대 서버 데이터베이스(21)에 신규로 서버 레코드가 등록되는 경우에, 그 서버 레코드를 식별하는 GUID를 할당한다.
시점 생성부(211)는, 서버(20)에서의 현재 시점을 생성한다. 본 실시형태는, 시점 생성부(211)는, 서버 데이터베이스(21)에 대한 데이터의 변경이 행해질 때마다 인크리먼트되는 시리얼값을 시점으로서 생성하는 것으로 한다.
데이터베이스 변경부(212)는, 서버 데이터베이스(21)에 대하여 데이터를 변경한다.
데이터베이스 변경부(212)는, 서버 데이터베이스(21)에 서버 레코드를 추가하는 경우, 시점 생성부(211)가 생성하는 시점을 작성 시점 및 갱신 시점의 각각에 설정하여 서버 레코드를 서버 데이터베이스(21)에 추가한다. 또한, 데이터베이스 변경부(212)는, 추가된 서버 레코드의 GUID, 작성 시점, 갱신 시점, 힌트를 포함하는 서버 변경 이력을 작성하고, 작성된 서버 변경 이력의 삭제 플래그에 「거짓」을 설정하며, 구 칼럼 및 현 칼럼의 각각에, 추가된 서버 레코드의 칼럼을 설정하여 서버 변경 이력 기억부(231)에 등록한다.
데이터베이스 변경부(212)는, 서버 데이터베이스(21)에 기억되어 있는 서버 레코드를 갱신한 경우에는, 시점 생성부(211)가 생성하는 시점을 서버 레코드의 갱신 시점에 설정한다. 또한, 데이터베이스 변경부(212)는, 갱신된 서버 레코드의 GUID, 작성 시점, 갱신 시점, 힌트를 포함하는 서버 변경 이력을 작성하고, 작성된 서버 변경 이력의 삭제 플래그에 「거짓」을 설정하며, 구 칼럼에 갱신 전의 칼럼을 설정하고, 현 칼럼에 갱신 후의 칼럼을 설정하여 서버 변경 이력 기억부(231)에 등록한다.
또한, 데이터베이스 변경부(212)는, 서버 데이터베이스(21)에 기억되어 있는 서버 레코드를 삭제한 경우에는, 시점 생성부(211)가 생성하는 시점, 삭제한 서버 레코드의 GUID, 작성 시점, 힌트를 포함하는 서버 변경 이력을 작성하고, 작성된 서버 변경 이력의 삭제 플래그에 「참」을 설정하며, 구 칼럼에 삭제한 서버 레코드의 칼럼을 설정하여 서버 변경 이력 기억부(231)에 등록한다.
또한, 데이터베이스 변경부(212)는, 서버 변경 이력 기억부(231)에 기억되어 있는 서버 변경 이력의 수가 정해진 수인 경우에는, 가장 갱신 시점이 오래된 서버 변경 이력을 삭제한 후, 새로운 서버 변경 이력을 등록한다.
동기 요구 수신부(213)는, 클라이언트(10)로부터 송신되는 동기 요구(41)를 수신한다. 또한, 동기 요구 수신부(213)는, 동기 요구(41)에 앵커 시점이 설정되어 있지 않는 경우에는, 앵커 시점을 시점으로서 취할 수 있는 가장 오래된 값으로 한다.
변경 이력 취득부(214)는, 변경된 데이터에 관한 정보를 취득한다. 변경 이력 취득부(214)는, 동기 요구(41)에 포함되어 있는 선택 필터 조건에 매치하는 서버 변경 이력을 서버 변경 이력 기억부(231)로부터 검색한다. 변경 이력 취득부(214)는, 검색한 서버 변경 이력에 포함되어 있는 GUID, 작성 시점, 갱신 시점, 삭제 플래그 및 힌트를 포함하는 변경 특징 정보를 작성한다. 변경 이력 취득부(214)는, 서버 변경 이력 기억부(231)에 기억되어 있는 서버 변경 이력의 갱신 시점 중, 가장 오래된 것을 바운더리 시점으로 하고, 가장 새로운 것을 최신 이력 시점으로 한다. 한편, 선택 필터 조건에 매치하는 서버 변경 이력이 서버 변경 이력 기억부(231)에 기억되어 있지 않았던 경우에는, 변경 이력 취득부(214)는, 서버 데이터 베이스(21)에 기억되어 있는 서버 레코드의 갱신 시점 중 가장 새로운 시점을 바운더리 시점 및 최신 이력 시점으로 한다.
변경 취득부(215)는, 동기 요구(41)에 포함되어 있는 앵커 시점이 바운더리 시점보다 오래된 경우, 서버 데이터베이스(21)로부터, 작성 시점이 앵커 시점보다 새롭고, 갱신 시점이 바운더리 시점보다 오래된 서버 레코드를 검색하며, 검색한 서버 레코드의 GUID, 작성 시점, 갱신 시점 및 힌트를 포함하는 변경 특징 정보를 작성한다.
동기 정보 송신부(216)는, 바운더리 시점, 최신 이력 시점, 변경 특징 정보를 포함하는 동기 정보(42)를 작성하고, 작성한 동기 정보(42)를 클라이언트(10)에 송신한다.
다운로드 요구 수신부(217)는, 클라이언트(10)로부터 송신되는 다운로드 요구(43)를 수신한다.
데이터 취득부(218)는, 다운로드 요구(43)에 포함되어 있는 취득 정보를 추출하고, 추출한 취득 정보에 포함되어 있는 GUID의 각각에 대해서, GUID가 나타내는 서버 레코드를 서버 데이터베이스(21)로부터 판독하며, 판독한 서버 레코드의 GUID, 갱신 시점, 「거짓」의 삭제 플래그, 칼럼 및 본체를 포함하는 취득 다운로드 정보를 작성한다. 데이터 취득부(218)는, 취득 정보의 GUID가 나타내는 서버 레코드가 서버 데이터베이스(21)에 기억되어 있지 않는 경우[서버 데이터베이스(21)로부터 삭제되어 있는 경우]에는, GUID와 「참」의 삭제 플래그만을 포함하는 취득 다운로드 정보를 작성한다.
또한, 데이터 취득부(218)는, 다운로드 요구(43)에 포함되어 있는 진부화 정보를 추출하고, 추출한 진부화 정보의 각각에 대해서, 진부화 정보에 포함되는 GUID가 나타내는 서버 레코드를 서버 데이터베이스(21)로부터 판독하고, 판독한 서버 레코드의 갱신 시점이 진부화 정보의 갱신 시점보다 새로운 경우에는, 서버 레코드의 GUID, 갱신 시점, 「거짓」의 삭제 플래그, 칼럼 및 본체를 포함하는 진부화 다운로드 정보를 작성한다. 데이터 취득부(218)는, 진부화 정보의 GUID가 나타내는 서버 레코드가 서버 데이터베이스(21)에 기억되어 있지 않은 경우[서버 데이터베이스(21)로부터 삭제되어 있는 경우]에는, GUID와 「참」의 삭제 플래그만을 포함하는 진부화 다운로드 정보를 작성한다.
다운로드 정보 송신부(219)는, 취득 다운로드 정보 및 진부화 다운로드 정보를 포함하는 다운로드 정보를 작성하고, 작성한 다운로드 정보를 클라이언트(10)에 송신한다.
==동기 처리의 전체 형태==
도 14는, 제1 실시형태에 따른 통신 시스템에서 실행되는, 데이터의 동기 처리의 흐름을 설명하는 도면이다.
클라이언트(10)는 동기 요구(41)를 작성하고(S31), 작성한 동기 요구(41)를 서버(20)에 송신한다(S32). 서버(20)는, 동기 요구(41)를 수신하면, 바운더리 시점, 최신 이력 시점, 변경 특징 정보를 포함하는 동기 정보(42)를 작성하고(S33), 작성한 동기 정보(42)를 클라이언트(10)에 송신한다(S34).
클라이언트(10)는 동기 정보(42)를 수신하면, 삭제 플래그가 참인 데이터를 클라이언트 데이터베이스(11)로부터 삭제하고, 다운로드해야 하는 데이터를 나타내는 취득 정보와 진부화 정보를 포함하는 다운로드 요구(43)를 작성하며(S35), 작성한 다운로드 요구(43)를 서버(20)에 송신한다(S36). 서버(20)는, 다운로드 요구(43)를 수신하면, 취득 다운로드 정보와 진부화 다운로드 정보를 포함하는 다운로드 정보를 작성하고(S37), 작성한 다운로드 정보를 클라이언트(10)에 송신한다(S38).
클라이언트(10)는, 다운로드 정보에 포함되어 있는 취득 다운로드 정보 및 진부화 다운로드 정보에 따라, 클라이언트 데이터베이스(11)에의 데이터를 등록 또는 삭제한다(S39).
이하, 세부 사항에 대해서 설명한다.
==동기 요구(41)의 작성 처리(S31)==
도 15는, 클라이언트(10)에서 실행되는 동기 요구(41)의 작성 처리의 흐름을 도시하는 도면이다.
우선, 필터 선택부(111)는, 필터 조건을 선택한다(S3101). 전술한 바와 같이, 필터 선택부(111)는, 예컨대 사용자로부터 필터 조건의 지정을 접수하는 것에 의해 필터 조건을 선택한다.
필터 선택부(111)는, 선택 필터 조건이 앵커 기억부(132)에 기억되어 있으면(S3102: YES), 선택 필터 조건에 대응하는 앵커 시점을 앵커 기억부(132)로부터 판독한다(S3103).
한편, 선택 필터 조건이 앵커 기억부(132)에 기억되어 있지 않는 경우에는(S3102: NO), 필터 선택부(111)는, 앵커 시점에 정해진 최소값으로부터 1을 감한 값(본 실시형태에서는 「0」으로 함)을 설정하다(S3104).
동기 요구 송신부(112)는, 클라이언트 ID 기억부(131)로부터 클라이언트 ID를 판독하고(S3105), 클라이언트 ID, 선택 필터 조건, 및 앵커 시점을 포함하는 동기 요구(41)를 작성한다(S3106).
이상과 같이 하여 동기 요구(41)가 작성된다. 작성된 동기 요구는 동기 요구 송신부(112)에 의해 서버(20)에 송신된다.
==동기 요구(41)의 대응 처리(S33)==
도 16은, 서버(20)에서 실행되는 동기 요구(41)에 대응하는 처리의 흐름을 도시하는 도면이다.
동기 정보 송신부(216)는, 서버 변경 이력 기억부(231)에 등록되어 있는 서버 변경 이력의 가장 오래된 갱신 시점을 바운더리 시점으로 하고(S3301), 가장 새로운 갱신 시점을 최신 이력 시점으로 하며(S3302), 바운더리 시점과 최신 이력 시점을 포함하는 동기 정보(42)를 생성한다(S3303). 또한 서버 변경 이력 기억부(231)에 변경 이력이 등록되어 있지 않을 때에는, 동기 정보 송신부(216)는, 시점 생성부(211)가 생성하는 시점을 취득하고, 취득한 시점을 바운더리 시점 및 최신 이력 시점으로 한다.
변경 이력 취득부(214)는, 서버 변경 이력 기억부(231)로부터, 필터 조건에 매치하는 서버 변경 이력을 판독하고, 판독한 각 서버 변경 이력에 대해서, 서버 변경 이력의 GUID, 갱신 시점, 삭제 플래그, 힌트 및 키를 포함하는 변경 특징 정보를 작성한다(S3304). 변경 이력 취득부(214)는, 작성한 변경 특징 정보를 동기 정보(42)에 설정한다(S3305).
동기 정보 송신부(216)는, 동기 정보(42)에 설정된 변경 특징 정보 중, 갱신 시점이 앵커 시점보다 뒤이며, 삭제 플래그가 「참」인 것의 각각에 대해서, 그 변경 특징 정보와, 그 변경 특징 정보와 동일한 GUID인 다른 변경 특징 정보를 동기 정보(42)로부터 삭제한다(S3306).
변경 취득부(215)는, 서버 데이터베이스(21)로부터, 갱신 시점이 앵커 시점보다 뒤이며, 갱신 시점이 바운더리 시점보다 앞인 데이터를 판독하고, 판독한 데이터의 GUID, 갱신 시점, 힌트 및 키와, 「거짓」의 삭제 플래그를 포함하는 변경 특징 정보를 작성한다(S3307). 변경 취득부(215)는, 작성한 변경 특징 정보를 동기 정보(42)에 설정한다(S3308).
이상과 같이 하여 동기 정보(42)가 작성된다. 작성된 동기 정보(42)는, 동기 정보 송신부(216)에 의해 클라이언트(10)에 송신된다.
==시점과 변경 이력의 관계==
도 17 및 도 18은, 서버 변경 이력 기억부(231)가 기억하는 변경 이력과, 변경 특징 정보의 관계를 설명하는 도면이다. 도 17 및 도 18에서는, 서버 변경 이력 기억부(231)에는, 시점 t4?시점 t8의 기간에 대해서만 서버 변경 이력(231)이 기억되어 있고, 데이터 a, b, c 및 d는, 각각 시점 t2, t4, t6 및 t8에서 변경된 것으로 하고 있다. 여기서, 바운더리 시점은 시점 t4가 된다.
도 17은, 앵커 시점이 시점 t1이었던 경우를 도시하는 도면이다. 이 경우, 시점 t2?t3 사이의 기간에 갱신된 데이터 a의 갱신 시점 t2를 포함하는 변경 특징 정보와, 서버 변경 이력(231)에 관한 데이터 b?d의 갱신 시점 t4, t6 및 t8을 포함하는 변경 특징 정보가 작성되게 된다. 바운더리 시점 t4보다 앞의, 시점 t2?t3 사이의 기간에 대해서는, 추가 및 갱신된 데이터에 대해서만 변경 특징 정보가 작성되고, 삭제된 데이터에 대해서는 작성되지 않는다. 한편, 바운더리 시점 t4 이후의 시점 t4?t8에 대해서는, 추가, 갱신 및 삭제된 데이터의 모두에 대해서 변경 특징 정보가 작성되게 된다.
도 18은, 앵커 시점이 시점 t5였던 경우를 도시하는 도면이다. 이 경우, 앵커 시점 t5가 바운더리 시점 t4보다 뒤이기 때문에, 앵커 시점 t5보다 뒤에 변경된 모든 데이터에 대해서 변경 특징 정보가 작성된다. 즉, 도 18의 예에서는, 앵커 시점 t5보다 뒤에 갱신된 데이터 c 및 d에 대한 갱신 시점 t6 및 t8을 포함하는 변경 특징 정보가 작성되게 된다.
==동기 정보(42)의 대응 처리(S35)==
도 19는, 클라이언트(10)에서 실행되는 동기 정보(42)에 대응하는 처리의 흐름을 도시한 도면이다.
우선, 삭제 처리부(114)는, 동기 정보(42)에 포함되어 있는 변경 특징 정보 중, 삭제 플래그가 참인 것의 각각에 대해서, GUID에 대응하는 데이터를 클라이언트 데이터베이스(11)로부터 삭제한다(S3501). 앵커 갱신부(116)는, 동기 정보(42)에 포함되어 있는 최신 이력 시점을 선택 필터 조건에 대응시켜 앵커 기억부(132)에 등록한다(S3502).
다음에, 다운로드 결정부(115)는, 비어 있는 다운로드 요구(43)를 작성하고(S3503), 동기 정보(42)에 포함되어 있는 변경 특징 정보에 대응하는 데이터 중, 다운로드해야 하는 것을 결정한다(S3504). 전술한 바와 같이, 다운로드 결정부(115)는, 예컨대 변경 특징 정보에 포함되어 있는 키나 힌트 등을 출력하고, 다운로드해야 하는 데이터를 사용자에게 선택시키도록 할 수 있다. 또한 다운로드 결정부(115)는 여기서, 클라이언트 데이터베이스(11)에서 선택 필터 조건에 매치하는 데이터 중, 그 GUID가 동기 정보(42)에 포함되어 있지 않은 것(필터아웃된 데이터)에 대해서도, 다운로드해야 하는 데이터로서 결정하도록 하여도 좋다. 다운로드 결정부(115)는, 결정한 데이터의 각각에 대해서, 데이터를 나타내는 GUID를 포함하는 취득 정보를 생성하고, 생성한 취득 정보를 다운로드 요구(43)에 추가한다(S3505).
진부화 정보 취득부(117)는, 앵커 시점이 동기 정보(42)에 포함되어 있는 바운더리 시점보다 앞인 경우(S3506: YES), 클라이언트 데이터베이스(11)로부터, 선택 필터 조건에 매치하고, 갱신 시점이 바운더리 시점보다 앞인 데이터를 검색하며(S3507), 검색한 데이터의 삭제 가능성 플래그 및 갱신 가능성 플래그를 「참」으로 설정한다(S3508).
진부화 정보 취득부(117)는, 클라이언트 데이터베이스(11)로부터, 삭제 가능성 플래그 또는 갱신 가능성 플래그가 「참」인 데이터의 리스트를 취득한다(S3509). 진부화 정보 취득부(117)는, 리스트에 포함되는 데이터 중, GUID가 취득 정보에 포함되어 있는 것을 리스트로부터 삭제한다(S3510). 진부화 정보 취득부(117)는, 리스트에 포함되어 있는 데이터의 각각에 대해서, GUID 및 갱신 시점을 설정한 진부화 정보를 작성하여 다운로드 요구(43)에 추가한다(S3511).
이상과 같이 하여 다운로드 요구(43)가 작성된다. 작성된 다운로드 요구(43)는, 다운로드 요구 송신부(118)에 의해 서버(20)에 송신된다.
==다운로드 요구(43)의 대응 처리(S37)==
도 20은, 서버(20)에서 실행되는 다운로드 요구(43)의 대응 처리의 흐름을 설명하는 도면이다.
데이터 취득부(218)는, 비어 있는 다운로드 정보(44)를 작성하고(S3701), 다운로드 요구(43)에 포함되어 있는 각 취득 정보에 대해서 이하의 처리를 행한다.
데이터 취득부(218)는, 취득 정보에 포함되는 GUID에 대응하는 데이터를 서버 데이터베이스(21)로부터 검색하고(S3702), 대응하는 데이터가 존재하는 경우에는(S3703: YES), 검색한 데이터의 GUID, 갱신 시점, 키, 칼럼, 힌트 및 본체와, 「거짓」의 삭제 플래그를 포함하는 취득 다운로드 정보를 작성하여 다운로드 정보(44)에 추가한다(S3704). 한편, 취득 정보의 GUID에 대응하는 데이터가 존재하지 않는 경우는(S3703: NO), 데이터 취득부(218)는, 취득 정보의 GUID와 「참」의 삭제 플래그를 포함하는 취득 다운로드 정보를 작성하여 다운로드 정보(44)에 추가한다(S3705).
이상의 처리를 각 취득 정보에 대해서 행한 후, 데이터 취득부(218)는, 다운로드 요구(43)에 포함되어 있는 각 진부화 정보에 대해서 이하의 처리를 행한다.
데이터 취득부(218)는, 진부화 정보에 포함되는 GUID에 대응하는 데이터를 서버 데이터베이스(21)로부터 검색하고(S3706), 대응하는 데이터가 존재하는 경우(S3707: YES), 그 데이터의 갱신 시점이 진부화 정보의 갱신 시점보다 새로우면(S3708: YES), 그 데이터의 GUID, 갱신 시점, 키, 칼럼, 힌트 및 본체와 「거짓」의 삭제 플래그를 포함하는 진부화 다운로드 정보를 작성하여 다운로드 정보(44)에 추가한다(S3709). 한편, 진부화 정보에 포함되는 GUID에 대응하는 데이터가 존재하지 않는 경우에는(S3707: NO), 데이터 취득부(218)는, 진부화 정보의 GUID 및 「참」의 삭제 플래그를 포함하는 진부화 다운로드 정보를 작성하여 다운로드 정보(44)에 추가한다(S3710).
이상의 처리를 각 진부화 정보에 대해서 반복함으로써, 다운로드 정보(44)가 작성된다. 작성된 다운로드 정보(44)는, 다운로드 정보 송신부(219)에 의해 클라이언트(10)에 송신된다.
==다운로드 정보(44)의 대응 처리(S39)==
도 21은, 클라이언트(10)에서 실행되는 다운로드 정보(44)의 대응 처리의 흐름을 도시하는 도면이다.
갱신 처리부(120)는, 다운로드 정보(44)에 포함되어 있는 진부화 다운로드 정보의 각각에 대해서, 도 22에 도시하는 적용 처리를 행한다(S3901). 즉, 진부화 다운로드 정보의 삭제 플래그가 「참」이면(S3921: YES), 삭제 처리부(114)는, 진부화 다운로드 정보에 포함되어 있는 GUID에 대응하는 데이터를 클라이언트 데이터베이스(11)로부터 삭제하고(S3922), 삭제 플래그가 「거짓」이면(S3921: NO), 갱신 처리부(120)는, 진부화 다운로드 정보에 포함되어 있는 GUID, 키, 칼럼, 힌트 및 본체와, 「거짓」의 갱신 가능성 플래그 및 「거짓」의 삭제 가능성 플래그를 포함하는 데이터를 작성하여 클라이언트 데이터베이스(11)에 등록한다(S3923). 또한 GUID가 일치하는 데이터가 클라이언트 데이터베이스(11)에 이미 등록되어 있는 경우에는, 그 데이터는 덮어쓰기된다.
또한, 갱신 처리부(120)는, 다운로드 정보(44)에 포함되어 있는 취득 다운로드 정보의 각각에 대해서, 도 22에 도시하는 적용 처리를 행한다(S3902). 즉, 취득 다운로드 정보에 포함되는 삭제 플래그가 「참」이면(S3921: YES), 삭제 처리부(114)는, 취득 다운로드 정보에 포함되는 GUID에 대응하는 데이터를 클라이언트 데이터베이스(11)로부터 삭제하고(S3922), 삭제 플래그가 「거짓」이면(S3921: NO), 갱신 처리부(120)는, 취득 다운로드 정보에 포함되어 있는 GUID, 키, 칼럼, 힌트 및 본체와, 「거짓」의 갱신 가능성 플래그 및 「거짓」의 삭제 가능성 플래그를 포함하는 데이터를 작성하여 클라이언트 데이터베이스(11)에 등록한다(S3923).
이와 같이 하여, 다운로드 정보에 따라 클라이언트 데이터베이스(11)가 갱신된다.
이상과 같이 하여, 선택 필터에 매치하는 클라이언트 레코드와 서버 레코드의 동기가 행해진다.
==제2 실시형태==
다음에, 제2 실시형태에 대해서 설명한다. 제2 실시형태에 대해서는, 제1 실시형태와의 차이에 대해서 주로 설명하고, 제1 실시형태와 동일한 부분에 대해서는 설명을 생략한다.
제2 실시형태에서는, 클라이언트(10)에서도 데이터의 갱신이 행해지는 것으로 한다. 따라서, 클라이언트(10)와 서버(20)의 양쪽에서 동일한 데이터에 대해서 상이한 내용의 갱신이 행해지는 충돌이 발생할 수 있다. 데이터의 충돌은, 일반적으로 서버(20)에 의해 검지되지만, 제2 실시형태에서는, 클라이언트(10)와 서버(20)의 양쪽에서 충돌을 검지하도록 하고 있다. 또한, 클라이언트(10)와 서버(20)의 양쪽에서 상이한 데이터를 갱신한 것에 의해, 상이한 데이터가 동일 또는 유사한 내용이 되는 중복도 발생할 수 있다. 제2 실시형태에서는, 중복에 대해서도, 클라이언트(10)와 서버(20)의 양쪽에서 검출하도록 하고 있다. 제2 실시형태에서는, 키가 일치한 경우에, 중복이 발생한 것으로 판정하는 것으로 한다.
==클라이언트(10)의 소프트웨어 구성==
도 23은, 제2 실시형태에 따른 클라이언트(10)의 소프트웨어 구성을 도시하는 도면이다. 제2 실시형태에 따른 클라이언트(10)는, 전술한 제1 실시형태에 따른 클라이언트(10)에 추가로, 클라이언트 변경 검지부(110), 충돌 중복 해소 결정부(121), 해소 요구 송신부(122), 해소 결과 정보 수신부(123), 해소 처리부(124), 클라이언트 변경 이력 기억부(133), 미취득 ID 기억부(134), 미검증 기억부(135), 중복 기억부(136), 충돌 기억부(137)를 구비하고 있다. 또한 클라이언트 변경 검지부(110), 충돌 중복 해소 결정부(121), 해소 요구 송신부(122), 해소 결과 정보 수신부(123), 및 해소 처리부(124)는, 클라이언트(10)가 구비하는 CPU(101)가 기억 장치(103)에 기억되어 있는 프로그램을 메모리(102)에 판독하여 실행하는 것에 의해 실현된다. 또한, 클라이언트 변경 이력 기억부(133), 미취득 ID 기억부(134), 미검증 기억부(135), 중복 기억부(136), 충돌 기억부(137)는, 클라이언트(10)가 구비하는 메모리(102)나 기억 장치(103)가 제공하는 기억 영역으로서 실현된다.
도 24는, 제2 실시형태에 따른 클라이언트 데이터베이스(11)가 기억하는 클라이언트 레코드의 구성예를 도시하는 도면이다. 도 24에 도시하는 바와 같이, 제2 실시형태에 따른 클라이언트 레코드에는, 제1 실시형태에 따른 클라이언트 레코드에 추가로, LUID(Local Unique IDentifier)가 포함되어 있다. LUID는, 클라이언트(10)에서 데이터에 할당되는 식별 정보이고, 클라이언트(10)에서 일의의 값이다. 후술하는 바와 같이, 제2 실시형태에서는, 데이터의 GUID는 서버(20)가 할당히기 때문에, 클라이언트(10)에서 데이터가 작성되었을 때에는, GUID는 아직 할당되어 있지 않고, 이 시점에서 데이터를 식별하기 위해 할당되는 것이 LUID이다. LUID와 GUID와의 대응(맵핑)은, 동기 요구(41) 및 동기 정보(42)의 교환에 의해 행해진다.
클라이언트 변경 이력 기억부(133)는, 클라이언트 데이터베이스(11)에 대한 변경 이력을 기억한다. 전술한 서버 변경 이력 기억부(231)에는, 서버 변경 이력은 새로운 순으로 정해진 수만 기억되지만, 클라이언트 변경 이력 기억부(133)에는, 앵커 시점보다 뒤에 행해진 클라이언트 데이터베이스(11)에 대한 모든 변경에 대한 클라이언트 변경 이력이 기억되는 것으로 한다.
도 25는, 클라이언트 변경 이력 기억부(133)에 기억되는 클라이언트 변경 이력의 구성예를 도시하는 도면이다. 클라이언트 변경 이력에는, 검지한 변경이 추가, 변경 및 삭제 중 어느 것이었는지를 나타내는 종별(이하, 「변경 종별」이라고 함), 변경의 대상이 된 데이터를 나타내는 LUID 및 GUID, 갱신 시점, 변경이 행해지기 전의 칼럼(이하, 「구 칼럼」이라고도 함), 변경이 행해진 후의 칼럼(이하, 「현 칼럼」이라고도 함), 키, 및 힌트가 포함된다. 변경 종별은 「추가」, 「갱신」 또는 「삭제」 중 어느 하나인 것으로 한다.
미취득 ID 기억부(134)는, GUID가 할당되어 있지 않은 LUID(이하, 「미취득 ID」라고 함)를 기억한다. 미취득 ID 기억부(134)에는, 클라이언트 데이터베이스(11)에 새로운 데이터가 추가되었을 때에, 그 데이터에 할당된 LUID가 등록된다.
미검증 기억부(135)는, 그 데이터와 중복하는 데이터가 존재하는지의 여부를 판정하고 있지 않는 데이터를 나타내는 GUID를 기억한다. 본 실시형태에서는, 클라이언트(10)에서 데이터가 변경된 경우에, 서버(20)에서 중복이 발생하는지의 여부를 조회하는 것은 하지 않고, 후술하는 바와 같이, 중복은 서버(20)와의 사이의 데이터의 동기시에 판정된다. 그래서, 데이터가 변경된 경우에는, 그 데이터의 GUID가 데이터의 변경시부터 동기시까지 미검증 기억부(135)에 등록된다.
중복 기억부(136)는, 2개의 중복하는 데이터를 관리한다. 도 26은 중복 기억부(136)의 구성예를 도시하는 도면이다. 중복 기억부(136)에는, 제1 데이터를 나타내는 LUID 및 GUID와, 제1 데이터와 중복하는 제2 데이터를 나타내는 LUID 및 GUID가 대응하여 등록된다.
충돌 기억부(137)는, 충돌하는 데이터를 나타내는 GUID를 기억한다.
클라이언트 변경 검지부(110)는, 클라이언트 데이터베이스(11)에 대한 데이터의 변경을 검지하고, 검지에 따라 클라이언트 변경 이력을 작성하여 클라이언트 변경 이력 기억부(133)에 등록한다. 도 27은, 클라이언트 변경 검지부(110)에 의한 처리의 흐름을 도시하는 도면이다. 클라이언트 변경 검지부(110)는, 클라이언트 데이터베이스(11)에 대한 변경을 검지한 경우, 변경이 추가 또는 변경인 경우에는, 추가 또는 변경이 이루어진 데이터(이하, 「신 데이터」라고 함)를 취득하고, 변경이 삭제 또는 변경인 경우에는, 삭제 또는 변경이 이루어진 데이터(이하, 「구 데이터」라고 함)를 취득하여, 도 27에 도시하는 처리를 행한다. 또한, 변경이 추가인 경우에는, 신 데이터를 구 데이터로서 취급하는 것으로 한다.
클라이언트 변경 검지부(110)는, 변경이 추가인 경우(S401: YES), 신 데이터에 LUID를 할당하여(S402), 미취득 ID 기억부(134)에 할당한 LUID를 등록한다(S403). 한편, 변경이 갱신 또는 삭제인 경우에는(S401: NO), 클라이언트 변경 검지부(110)는, 신 데이터로부터 LUID 및 GUID를 취득한다(S404).
클라이언트 변경 검지부(110)는, 변경이 추가 또는 갱신인 경우(S405: YES), 신 데이터의 본체에 기초하여 키를 작성하여 신 키로 하고(S406), 중복의 판정 처리를 행한다(S407).
최후에, 클라이언트 변경 검지부(110)는, 클라이언트 변경 이력을 등록하는 변경 이력 등록 처리를 행한다(S408).
도 28은, 상기 도 27의 단계 S407에 도시하는 중복 판정 처리의 흐름을 도시하는 도면이다. 중복 판정 처리에서는, 클라이언트 변경 검지부(110)는, 클라이언트 데이터베이스(11)에 기억되어 있는 모든 데이터에 대해서 이하의 처리를 행한다.
클라이언트 변경 검지부(110)는, 클라이언트 레코드의 키가 신 키와 일치하지 않으면(S421: NO), 미검증 기억부(135)에 GUID를 등록한다(S422).
한편, 클라이언트 레코드의 키가 신 키와 일치하는 경우(S421: YES), 클라이언트 변경 검지부(110)는, 신 레코드의 GUID 및 LUID와, 클라이언트 레코드의 GUID 및 LUID를 대응시켜 중복 기억부(136)에 등록한다(S423). 클라이언트 변경 검지부(110)는, 신 레코드의 GUID가 미검증 기억부(135)에 등록되어 있는 경우에는(S424: YES), 미검증 기억부(135)로부터 신 레코드의 GUID를 삭제한다(S425).
도 29는, 상기 도 27의 단계 S408에 도시하는 변경 이력 등록 처리의 흐름을 도시하는 도면이다.
클라이언트 변경 검지부(110)는, 클라이언트 변경 이력 기억부(133)로부터, 신 데이터의 LUID 또는 GUID와 일치하는 변경 이력을 검색한다(S441). 일치하는 클라이언트 변경 이력이 존재하지 않으면(S442: NO), 클라이언트 변경 검지부(110)는 변경 종별, 신 데이터의 LUID, GUID, 갱신 시점 및 칼럼, 구 데이터의 칼럼, 및 신 키를 포함하는 클라이언트 변경 이력을 작성하여 클라이언트 변경 이력 기억부(133)에 등록한다(S443).
한편, 상기 변경 이력이 존재하는 경우에는(S442: YES), 클라이언트 변경 검지부(110)는, 그 변경이 추가 또는 변경이면(S444: NO), 검색한 클라이언트 변경 이력의 변경 종별을, 그 변경을 나타내는 변경 종별(추가 또는 갱신)로 변경하고(S445), 검색한 클라이언트 변경 이력의 현 칼럼에 신 데이터의 칼럼을 설정하며(S446), 검색한 클라이언트 변경 이력의 키에 신 키를 설정한다(S347). 후술하는 바와 같이, 서버(20)와 클라이언트(10) 사이의 데이터의 동기는, 클라이언트 변경 이력에 따라 행해지기 때문에, 이와 같이 아직 서버(20)와의 사이에서 동기가 이루어져 있지 않는 단계에서 재차 갱신 등이 있었던 경우에는, 기존 클라이언트 변경 이력을 갱신하는 것에 의해, 동기 처리의 효율을 올릴 수 있다.
변경이 삭제인 경우(S444: YES), 클라이언트 변경 검지부(110)는, 신 데이터의 GUID가 설정되어 있지 않으면, 즉 신 데이터의 GUID가 null이면(S448: YES), 검색한 클라이언트 변경 이력을 클라이언트 변경 이력 기억부(133)로부터 삭제한다(S449). 즉, 클라이언트(10)에서 데이터가 작성된 후, 서버(20)에 업로드되기 전에 삭제된 경우에는, 클라이언트 변경 이력을 삭제하는 것에 의해, 쓸데없는 동기가 이루어지지 않도록 하고 있다.
신 데이터에 GUID가 설정되어 있는 경우, 즉 신 레코드의 GUID가 null이 아닌 경우에는(S448: NO), 검색한 클라이언트 변경 이력의 변경 종별에 삭제를 설정한다(S450).
이상과 같이 하여, 클라이언트 변경 검지부(110)는, 클라이언트 데이터베이스(11)에 대한 변경을 검지하면, 클라이언트 변경 이력을 등록한다.
다음에, 제2 실시형태에서 동기 요구 송신부(112)가 송신하는 동기 요구(41)의 구성예를 도 30에 도시한다. 제2 실시형태에 따른 동기 요구에는, 전술한 도 7에 도시하는 제1 실시형태에 따른 동기 요구에 추가로, 미취득 ID 및 변경 특징 정보가 포함된다. 동기 요구 송신부(112)는, 미취득 ID 기억부(134)에 기억되어 있는 미취득 ID를 동기 요구에 설정한다. 또한, 변경 특징 정보는 클라이언트 변경 이력에 기초하여 작성되는 정보이며, 클라이언트 변경 이력의 변경 종별, LUID, GUID, 갱신 시점 및 키가 포함된다. 동기 요구 송신부(112)는, 클라이언트 변경 이력 기억부(133)로부터, 중복 기억부(136) 및 충돌 기억부(137)에 GUID가 등록되어 있지 않는 클라이언트 변경 이력을 판독하고, 판독한 클라이언트 변경 이력의 각각에 대해서, 클라이언트 변경 이력의 변경 종별, LUID, GUID, 갱신 시점 및 키를 포함하는 변경 특징 정보를 동기 요구에 설정한다.
도 31은 제2 실시형태에서 동기 정보 수신부(113)가 수신하는 동기 정보(42)의 구성예를 도시하는 도면이다. 제2 실시형태에 따른 동기 정보(42)에는, 전술한 도 8에 도시하는 제1 실시형태에 따른 동기 정보(42)에 추가로, 할당 정보가 포함된다. 할당 정보는, 미취득 ID에 대하여 서버(20)가 할당한 GUID를 포함하는 정보이다. 할당 정보에는 LUID, GUID, 갱신 시점, 스테이터스가 포함된다. 갱신 시점은, LUID에 대응하는 GUID가 이미 서버(20)에서 할당되어 있던 경우의, 데이터의 갱신 시점이다. 서버(20)에 미취득 ID에 대응하는 데이터가 기억되어 있지 않는 경우에는 갱신 시점은 설정되지 않는다. 스테이터스는, 미취득 ID에 대응하는 GUID가 이미 서버(20)에 존재하는지의 여부를 나타내는 정보이다.
또한, 제2 실시형태에서는, 동기 정보(42)에 포함되는 변경 특징 정보는, 후술하는 바와 같이, 서버(20)에서 새롭게 추가된 데이터에 추가로, 클라이언트(10)와 서버(20) 사이에서 충돌 또는 중복되어 있는 데이터에 관해서도 추가된다.
충돌 중복 해소 결정부(121)는, 다운로드 정보(44)에 포함되는 GUID가 나타내는 데이터가 충돌 또는 중복하는 경우에, 그 데이터를 서버(20)에 송신할지의 여부를 결정한다. 본 실시형태에서는, 충돌 중복 해소 결정부(121)는, 다운로드 정보(44)에 포함되는 GUID가, 클라이언트 변경 이력 기억부(133), 중복 기억부(136) 또는 충돌 기억부(137)에 기억되어 있는지의 여부에 의해, 충돌 또는 중복이 발생하고 있는지의 여부를 판정하고, 충돌 또는 중복이 발생하고 있는 것으로 판정한 경우에, 사용자에게, 클라이언트 레코드나 서버 레코드 중 어느 하나를 선택시키도록 한다. 또한, 충돌 중복 해소 결정부(121)는, 예컨대 클라이언트 레코드를 항상 우선하도록 하여, 무조건 클라이언트 레코드를 선택하도록 하여도 좋고, 임의의 알고리즘을 적용하여 자동적으로 선택하도록 하여도 좋다.
해소 요구 송신부(122)는, 충돌 또는 중복이 발생한 데이터를 해소하도록 지시하는 커맨드(이하, 「해소 요구」라고 함)를 서버(20)에 송신한다. 도 32는, 해소 요구(45)의 구성예를 도시하는 도면이다. 해소 요구(45)에는, 클라이언트 ID와, 충돌 중복 해소 결정부(121)가 선택한 클라이언트 레코드 또는 서버 레코드의 LUID, GUID, 갱신 시점, 삭제 플래그, 키, 칼럼, 힌트 및 본체가 설정된 해소 정보가 포함된다.
해소 결과 정보 수신부(123)는, 해소 요구에 따라 서버(20)로부터 송신되는, 충돌 또는 중복의 해소 처리의 결과를 나타내는 정보(이하, 「해소 결과 정보」라고 함)를 수신한다. 도 33은 해소 결과 정보(46)의 구성예를 도시하는 도면이다. 해소 결과 정보(46)에는, 중복 정보와 결과 정보가 포함된다. 중복 정보는, 해소 요구(45)에 포함되는 해소 정보가 나타내는 데이터에 대해서, 서버(20)에서 중복이 발생한 경우에 설정된다. 중복 정보에는, 서버(20)에서 중복된 데이터의 GUID, 갱신 시점, 키가 설정된다. 결과 정보는, 해소 요구(45)에 따라 서버 데이터베이스(21)를 갱신한 처리의 결과를 나타내는 정보이고, LUID, GUID, 갱신 시점, 삭제 플래그 및 스테이터스를 포함한다.
해소 처리부(124)는, 해소 결과 정보(46)에 따라 클라이언트 데이터베이스(11)를 갱신한다. 또한 해소 처리부(124)의 처리의 세부 사항에 대해서는 후술한다.
==서버(20)의 소프트웨어 구성==
도 34는, 제2 실시형태에 따른 서버(20)의 소프트웨어 구성을 도시한 도면이다. 제2 실시형태에 따른 서버(20)는, 제1 실시형태에 따른 서버(20)에 추가로, 해소 요구 수신부(220), 해소 처리부(221), 해소 결과 정보 송신부(222)를 구비하고 있다. 또한 해소 요구 수신부(220), 해소 처리부(221), 해소 결과 정보 송신부(222)는, 서버(20)가 구비하는 CPU(201)가 기억 장치(203)에 기억되어 있는 프로그램을 메모리(202)에 판독하여 실행하는 것에 의해 실현된다.
도 35는, 제2 실시형태에 따른 서버 데이터베이스(21)가 기억하는 서버 레코드의 구성예를 도시하는 도면이다. 도 35에 도시하는 바와 같이, 제2 실시형태에 따른 서버 레코드에는, 제1 실시형태에 따른 서버 레코드에 추가로, LUID 및 작성자 ID가 포함되어 있다. LUID는, 클라이언트(10)에서 데이터에 할당되는 식별 정보이며, 클라이언트(10)에서 일의의 번호이다. 후술하는 바와 같이, 제2 실시형태에서는, 데이터의 GUID는 서버(20)가 할당하기 때문에, 클라이언트(10)에서 데이터가 작성되었을 때에는, GUID는 아직 할당되어 있지 않고, 이 시점에서 데이터를 식별하기 위해 할당되는 것이 LUID이다. LUID와 GUID의 대응(맵핑)은, 동기 요구(41) 및 동기 정보(42)의 교환에 의해 행해진다. 작성자 ID는, 데이터를 최초로 작성한 클라이언트(10)의 클라이언트 ID이며, 서버 레코드의 추가시에 설정된다.
해소 요구 수신부(220)는, 클라이언트(10)로부터 해소 요구(45)를 수신한다.
해소 처리부(221)는, 해소 요구(45)에 따라 서버 데이터베이스(21)를 갱신한다. 또한, 해소 처리부(221)에 의해 실행되는 해소 처리의 세부 사항에 대해서는 후술한다.
해소 결과 정보 송신부(222)는, 해소 처리부(221)에 의한 해소 처리의 결과를 나타내는 해소 결과 정보를 작성하여 클라이언트(10)에 송신한다. 또한, 해소 결과 정보 송신부(222)에 의한 해소 결과 정보의 생성 처리의 세부 사항에 대해서는 후술한다.
==동기 처리의 전체 형태==
도 36은, 제2 실시형태에 따른 통신 시스템에서 실행되는, 데이터의 동기 처리의 흐름을 설명하는 도면이다. 제2 실시형태에 따른 데이터의 동기 처리에서는, 전술한 도 14에 도시하는 제1 실시형태에 따른 동기 처리에 추가로, 단계 S51?S58이 행해진다. 즉, 클라이언트(10)는, 다운로드 정보(44)에 대응하는 처리(S39)를 행한 후, 해소 요구(45)를 서버(20)에 송신하고(S51), 서버(20)는, 해소 요구(45)에 따라 서버 데이터베이스(21)를 갱신하며(S52), 갱신의 결과를 나타내는 결과 정보와, 갱신시에 발생한 중복에 관한 중복 정보를 포함하는 해소 결과 정보(46)를 클라이언트(10)에 송신한다(S53). 클라이언트(10)는, 해소 결과 정보(46)에 따라 다운로드해야 하는 데이터를 결정하는 처리를 더 행하고(S54), 다운로드해야 하는 데이터의 GUID를 설정한 취득 정보를 포함하는 다운로드 요구(43)를 서버(20)에 송신한다(S55). 서버(20)는, 다운로드 요구(43)에 따라서, 지정되어 있는 데이터를 서버 데이터베이스(21)로부터 판독(S56)하고, 판독한 데이터를 설정한 다운로드 정보(44)를 클라이언트(10)에 송신한다(S57). 클라이언트(10)는, 다운로드 정보(44)에 포함되어 있는 데이터를 클라이언트 데이터베이스(11)에 등록한다(S58).
==동기 요구 송신 처리(S31)==
도 37은, 제2 실시형태에 따른 단계 S31에서의 동기 요구의 작성 처리의 흐름을 도시하는 도면이다. 제2 실시형태에서는, 전술한 도 15의 처리에 추가로, 단계 S3106에 계속해서, 동기 요구 송신부(112)는, 선택 필터 조건에 매치하는 클라이언트 변경 이력을 클라이언트 변경 이력 기억부(133)로부터 판독하여 변경 이력으로서 동기 요구(41)에 설정하며(S3107), 미취득 ID 기억부(134)에 기억되어 있는 미취득 ID를 판독하여 동기 요구(41)에 설정한다(S3108).
갱신 정보와 미취득 ID에 의해, 서버(20)측에서는 클라이언트(10)에서 행해진 데이터의 갱신을 파악하는 것이 가능해진다.
==동기 요구에 대응하는 처리(S33)==
도 38은, 제2 실시형태에 따른 단계 S33에서의 동기 요구에의 대응 처리의 흐름을 도시하는 도면이다. 제2 실시형태에서는, 전술한 도 16의 처리에 추가로, 단계 S3308에 계속해서, 동기 정보 송신부(216)는, 도 39에 도시하는 GUID의 할당 처리를 행하고(S3309), 도 40에 도시하는 충돌 및 중복의 검지 처리를 행한다(S3310).
도 39에 도시하는 GUID의 할당 처리에서는, 동기 정보 송신부(216)는, 동기 요구(41)에 포함되는 각 미취득 ID에 대해서, 이하의 처리를 행한다.
동기 정보 송신부(216)는, LUID가 미취득 ID와 일치하고, 작성자가 클라이언트 ID와 일치하는 서버 레코드를 서버 데이터베이스(21)로부터 검색하며(S3321), 매치하는 서버 레코드가 존재하는 경우(S3322: YES), 서버 레코드의 GUID를 G로 하고(S3323), 서버 레코드의 갱신 시점을 T로 하며(S3324), 스테이터스를 「존재」로 한다(S3325).
한편, 미취득 ID에 매치하는 서버 레코드가 존재하지 않는 경우(S3322: NO), 동기 정보 송신부(216)는, GUID 생성부(210)가 생성하는 새로운 GUID를 G로 하고(S3326), 시점 생성부(211)가 생성하는 새로운 시점을 T로 하며(S3327), 스테이터스를 「비존재」로 한다(S3328).
동기 정보 송신부(216)는, LUID, G, T 및 스테이터스를 포함하는 할당 정보를 동기 정보(42)에 추가한다(S3329).
이상의 처리가 각 미취득 ID에 대해서 반복되고, 미취득 ID에 대응하는 GUID가 할당 정보로서 동기 정보(42)에 설정된다.
도 40에 도시하는 충돌 중복의 검지 처리에서는, 동기 정보(42)에 설정된 변경 이력의 각각에 대해서 이하의 처리가 행해진다.
변경 취득부(215)는, 변경 이력에 GUID가 설정되어 있는 경우(S3341: NO), 변경 이력의 GUID에 대응하는 서버 레코드를 서버 데이터베이스(21)로부터 검색하고(S3342), 대응하는 서버 레코드가 존재하지 않으면(S3343: NO), GUID 및 「참」의 삭제 플래그를 포함하는 변경 특징 정보를 작성하여 동기 정보(42)에 추가한다(S3344).
변경 이력의 GUID에 대응하는 서버 레코드가 존재하는 경우(S3343: YES), 변경 취득부(215)는, 변경 이력의 갱신 시점과 검색한 서버 레코드의 갱신 시점이 일치하는지의 여부를 판정하고(S3345), 갱신 시점이 일치하지 않으면(S3345: NO), 서버 레코드의 GUID, 갱신 시점, 힌트 및 키, 및 「거짓」의 삭제 플래그를 포함하는 변경 특징 정보를 작성하여 동기 정보(42)에 추가한다(S3346).
한편, 갱신 시점이 일치한 경우(S3345: YES), 변경 이력의 변경 종별이 「삭제」이면(S3347: YES), GUID에 대응하는 서버 레코드를 서버 데이터베이스(21)로부터 삭제한다(S3348). 변경 종별이 「삭제」가 아니면(S3347: NO), 변경 취득부(215)는, 변경 이력에 포함되는 키와 일치하는 서버 레코드를 서버 데이터베이스(21)로부터 검색하고(S3349), 키와 일치하는 서버 레코드가 있으면(S3350: YES), 서버 레코드의 GUID, 갱신 시점, 힌트 및 키 및 「거짓」의 삭제 플래그를 포함하는 변경 특징 정보를 작성하여 동기 정보(42)에 추가한다(S3351).
이상의 처리를 동기 요구(42)에 포함되는 각 변경 이력에 대해서 행하는 것에 의해, 충돌 또는 중복된 데이터에 대한 변경 특징 정보가 동기 정보(42)에 추가되게 된다.
==동기 정보에 대응하는 처리(S35)==
도 41은 제2 실시형태에 따른 단계 S35에서의 동기 정보(42)에의 대응 처리의 흐름을 도시하는 도면이다. 제2 실시형태에서는, 전술한 도 19의 처리 전에, 도 42에 도시하는 GUID의 할당 처리(S3500)를 실행한다.
도 42에 도시하는 GUID의 할당 처리에서는, 갱신 처리부(120)는, 동기 정보(42)에 포함되어 있는 각 할당 정보에 대해서 이하의 처리를 행한다.
갱신 처리부(120)는, LUID에 대응하는 클라이언트 레코드의 GUID에, 할당 정보의 GUID를 설정한다(S3521). 갱신 처리부(120)는, 할당 정보에 포함되는 스테이터스가 「존재」였던 경우[LUID에 대응하는 GUID가 서버 데이터베이스(21)에 이미 등록되어 있던 경우]에는(S3522), LUID에 대응하는 클라이언트 레코드의 갱신 시점에, 할당 정보의 갱신 시점을 설정한다(S3523).
갱신 처리부(120)는, 변경 종별이 「추가」이고, 할당 정보의 LUID에 대응하는 클라이언트 변경 이력을 클라이언트 변경 이력 기억부(133)로부터 삭제한다(S3524). 또한, 갱신 처리부(120)는, 할당 정보의 LUID를 미취득 ID 기억부(134)로부터 삭제한다(S3525).
이상의 처리가 각 할당 정보에 대해서 행해짐으로써, 미취득 ID에 대응하는 GUID가 등록된다.
또한, 제2 실시형태에서 작성되는 다운로드 요구(43)는 제1 실시형태와 동일하고, 다운로드 요구(43)에 대응하는 서버(20)에 의한 처리(S37)도, 제1 실시형태와 동일하다.
==다운로드 정보의 대응 처리(S39)==
도 43은, 제2 실시형태에 따른 단계 S39에서의 다운로드 정보(44)에의 대응 처리의 흐름을 도시하는 도면이다. 제2 실시형태에서는, 전술한 도 21의 처리의 단계 S3901를 실행한 후, 단계 S3902로 바꿔, 단계 S3903?S3908을 실행한다.
갱신 처리부(120)는, 다운로드 정보(44)에 포함되어 있는 취득 다운로드 정보 중, 취득 다운로드 정보의 GUID에 대응하는 클라이언트 변경 이력이 클라이언트 변경 이력 기억부(133)에 기억되어 있지 않는 것을 추출하고(S3903), 추출한 취득 다운로드 정보의 각각에 대해서, 전술한 도 22에 도시하는 적용 처리를 행한다(S3904). 즉, 취득 다운로드 정보에 포함되는 삭제 플래그가 「참」이면(S3921: YES), 삭제 처리부(114)는, 취득 다운로드 정보에 포함되는 GUID에 대응하는 클라이언트 레코드를 클라이언트 데이터베이스(11)로부터 삭제하고(S3922), 삭제 플래그가 「거짓」이면(S3921: NO), 갱신 처리부(120)는, 취득 다운로드 정보에 포함되어 있는 GUID, 키, 칼럼, 힌트 및 본체와, 「거짓」의 갱신 가능성 플래그 및 「거짓」의 삭제 가능성 플래그를 포함하는 클라이언트 레코드를 클라이언트 데이터 베이스(11)에 등록한다(S3923).
다음에, 해소 요구 송신부(122)는, 클라이언트 ID 기억부(131)에 기억되어 있는 클라이언트 ID를 설정한 해소 요구(45)를 작성한다(S3905). 갱신 처리부(120)는, 다운로드 정보(44)에 포함되는 취득 다운로드 정보 중, 취득 다운로드 정보의 GUID에 대응하는 클라이언트 변경 이력이 클라이언트 변경 이력 기억부(133)에 기억되어 있는 것을 추출한다(S3906). 해소 처리부(124)는, 도 44에 도시하는 충돌 해소 처리를 행하고(S3907), 도 45에 도시하는 중복 해소 처리를 행한다(S3908).
도 44에 도시하는 충돌 해소 처리에서는, 상기 도 43의 단계 S3906에서 추출된 취득 다운로드 정보의 각각에 대해서 이하의 처리를 행한다.
해소 처리부(124)는, 취득 다운로드 정보에 포함되는 GUID가 충돌 기억부(137)에 기억되어 있으면(S3941), 그 GUID에 대응하는 클라이언트 레코드를 클라이언트 데이터베이스(11)로부터 판독하고(S3942), 판독한 클라이언트 레코드와 취득 다운로드 정보 중 어느 하나를 선택한다(S3943). 해소 처리부(124)는, 예컨대 클라이언트 레코드 및 취득 다운로드 정보의 힌트를 출력하여 사용자에게 선택시키도록 할 수 있다.
해소 처리부(124)는, 클라이언트 레코드를 선택한 경우(S3944: YES), 클라이언트 레코드의 LUID, GUID, 갱신 시점, 키, 칼럼, 힌트 및 본체를 포함하는 해소 정보를 해소 요구(45)에 추가하고(S3945), 취득 다운로드 정보를 선택한 경우에는(S3944: NO), 취득 다운로드 정보의 GUID, 갱신 시점, 칼럼, 힌트 및 본체를 포함하는 해소 정보를 해소 요구(45)에 추가하며(S3946), 클라이언트 레코드의 갱신 시점, 키, 칼럼, 힌트 및 본체를, 취득 다운로드 정보인 것으로 변경하도록 클라이언트 데이터베이스(11)를 갱신한다(S3947). 해소 처리부(124)는, 충돌 기억부(137)로부터 상기 GUID를 삭제한다(S3948).
도 45에 도시하는 중복 해소 처리에서는, 상기 도 43의 단계 S3906에서 추출된 취득 다운로드 정보의 각각에 대해서 이하의 처리를 행한다.
해소 처리부(124)는, 취득 다운로드 정보에 포함되는 GUID가 중복 기억부(136)에 기억되어 있으면(S3961), 그 GUID에 대응하는 클라이언트 레코드를 클라이언트 데이터베이스(11)로부터 판독하고(S3962), 판독한 클라이언트 레코드와 취득 다운로드 정보 중 어느 하나를 선택한다(S3963). 해소 처리부(124)는, 전술한 충돌 해소 처리와 마찬가지로, 예컨대 클라이언트 레코드 및 취득 다운로드 정보의 힌트를 출력하여 사용자에게 선택시키도록 할 수 있다.
해소 처리부(124)는, 클라이언트 레코드를 선택한 경우(S3964: YES), 클라이언트 레코드의 LUID, GUID, 갱신 시점, 키, 칼럼, 힌트 및 본체를 포함하는 해소 정보를 해소 요구(45)에 추가하고(S3965), 취득 다운로드 정보를 선택한 경우에는(S3964: NO), 취득 다운로드 정보의 GUID, 갱신 시점, 칼럼, 힌트 및 본체를 포함하는 해소 정보를 해소 요구(45)에 추가한다(S3966). 해소 처리부(124)는, 취득 다운로드 정보의 GUID에 대응하는 GUID를 중복 기억부(136)로부터 판독하여 G로 하고(S3967), 클라이언트 데이터베이스(11)로부터 GUID가 G와 일치하는 클라이언트 레코드를 삭제한다(S3968).
해소 처리부(124)는, 중복 기억부(136)로부터 취득 다운로드 정보의 GUID에 대응하는 레코드를 삭제하고(S3969), 미검증 기억부(135)로부터 취득 다운로드 정보의 GUID를 삭제한다(S3970).
==해소 요구 대응(S52)==
도 46은, 전술한 도 36의 단계 S52에서 서버(20)가 실행하는, 해소 요구(45)에 대응하는 처리의 흐름을 도시하는 도면이다.
해소 처리부(221)는, 비어 있는 해소 결과 정보(46)를 작성하고(S5201), 해소 요구(45)에 포함되어 있는 해소 정보의 각각에 대해서, 이하의 처리를 행한다.
해소 처리부(221)는, 해소 정보의 GUID가 설정되어 있지 않는 경우에는(S5202: YES), 새롭게 할당된 GUID와, 해소 정보에 설정되어 있는 LUID, 갱신 시점, 키, 칼럼, 힌트 및 본체를 설정한 서버 레코드를 작성하여 서버 데이터베이스(21)에 등록하고(S5203), LUID, GUID, 갱신 시점, 「거짓」의 삭제 플래그, 및 「성공」의 스테이터스를 포함하는 결과 정보를 해소 결과 정보(46)에 추가한다(S5204).
한편, 해소 정보에 GUID가 설정되어 있는 경우(S5202: NO), 해소 처리부(221)는, 해소 정보의 GUID에 대응하는 서버 레코드를 서버 데이터베이스(21)로부터 검색하고(S5205), 그 GUID에 대응하는 서버 레코드가 존재하지 않으면(S5206: NO), 해소 처리부(221)는, 해소 정보의 GUID와, 「참」의 삭제 플래그 및 「충돌」의 스테이터스를 포함하는 결과 정보를 해소 결과 정보(46)에 추가한다(S5207).
상기 GUID에 대응하는 서버 레코드가 존재하는 경우(S5206: YES), 해소 처리부(221)는, 서버 레코드의 갱신 시점과 해소 정보의 갱신 시점이 일치하지 않으면(S5208: NO), 서버 레코드의 GUID 및 갱신 시점과, 「거짓」의 삭제 플래그 및 「충돌」의 스테이터스를 포함하는 결과 정보를 해소 결과 정보(46)에 추가한다(S5209).
해소 처리부(221)는, 갱신 시점이 일치하고(S5208: YES), 해소 정보의 삭제 플래그가 「참」이면(S5210: YES), GUID에 대응하는 서버 레코드를 서버 데이터베이스(21)로부터 삭제하고(S5211), 삭제 플래그가 「거짓」이면(S5210: NO), 해소 처리부(221)는, 서버 레코드에, 해소 정보의 갱신 시점, 키, 칼럼, 힌트 및 본체를 설정하도록 서버 데이터베이스(21)를 갱신한다(S5212).
해소 처리부(221)는, 해소 정보의 LUID, GUID, 갱신 시점 및 삭제 플래그와, 「성공」의 스테이터스를 포함하는 결과 정보를 해소 결과 정보(46)에 추가한다(S5213). 또한, 해소 처리부(221)는, 해소 정보의 키에 일치하는 서버 레코드를 서버 데이터베이스(21)로부터 검색하고(S5214), 일치하는 서버 레코드가 존재하는 경우(S5215: YES), 검색한 서버 레코드의 GUID 및 갱신 시점과, 「거짓」의 삭제 플래그 및 「충돌」의 스테이터스를 포함하는 중복 정보를 해소 결과 정보(46)에 추가한다(S5216).
이상의 처리가 각 해소 정보에 대해서 행해진다.
==해소 결과 대응(S54)==
도 47은, 전술한 도 36의 단계 S54에서 클라이언트(10)가 실행하는, 해소 결과 정보(46)에 대응하는 처리의 흐름을 도시하는 도면이다.
해소 처리부(124)는, 비어 있는 다운로드 요구(43)를 작성하고(S5401), 해소 결과 정보(46)에 포함되어 있는 결과 정보의 각각에 대해서, 이하의 처리를 행한다.
해소 처리부(124)는, 결과 정보에 포함되는 LUID가 미취득 ID 기억부(134)에 등록되어 있는 경우에는(S5402: YES), 그 LUID에 대응하는 클라이언트 레코드에, 결과 정보의 GUID를 설정하도록 클라이언트 데이터베이스(11)를 갱신하고(S5403), 미취득 ID 기억부(134)로부터 그 LUID를 삭제한다(S5404).
다음에, 스테이터스가 「충돌」이면(S5405: YES), 해소 처리부(124)는, 결과 정보의 GUID를 충돌 기억부(137)에 등록하고(S5406), 다운로드 결정부(115)는, 그 결과 정보의 GUID가 나타내는 데이터를 다운로드할지의 여부를 결정한다(S5407). 다운로드 결정부(115)는, 예컨대 충돌한 데이터는 서버(20)를 우선하는 것으로서, 자동적으로 다운로드하는 것을 결정하여도 좋고, 클라이언트 데이터를 우선하는 것으로서, 다운로드하지 않는 것을 결정하여도 좋으며, 사용자에게 다운로드할지의 여부를 조회하도록 하여도 좋다. 또한, 결과 정보에 키나 칼럼, 힌트 등을 포함하도록 해 두고, 다운로드 결정부(115)는 키나 칼럼, 힌트 등이 정해진 조건을 만족시키는 경우에 다운로드하는 것을 결정하도록 하여도 좋다. 다운로드 결정부(115)는, 다운로드하는 것으로 결정한 경우에는(S5409: YES), 결과 정보의 GUID를 포함하는 취득 정보를 생성하여 다운로드 요구(43)에 설정한다(S5410).
한편, 스테이터스가 「성공」인 경우에는(S5405: NO), 해소 처리부(124)는, 결과 정보의 GUID에 대응하는 클라이언트 변경 이력을 클라이언트 변경 이력 기억부(133)로부터 삭제한다(S5408).
이상의 처리를 결과 정보의 각각에 대해서 반복한 후, 다운로드 결정부(115)는, 해소 결과 정보(46)에 포함되어 있는 중복 정보 중, 대응하는 데이터를 다운로드하는 것을 결정하고(S5411), 결정한 중복 정보의 GUID를 포함하는 취득 정보를 생성하여 다운로드 요구(43)에 설정한다(S5412). 또한 다운로드 요구(43)에 취득 정보가 설정되지 않았던 경우에는, 전술한 도 36의 단계 S55?S58의 처리를 생략하는 것으로 한다.
이와 같이 하여, 선택 필터에 매치하는 클라이언트 레코드와 서버 레코드의 동기가 행해진다.
이상 설명한 바와 같이, 전술한 제1 및 제2 실시형태의 통신 시스템에 의하면, 서버(20)에 서버 변경 이력이 기록되어 있는 데이터에 대해서는, 서버 변경 이력에 기초하여 클라이언트(10)가 데이터의 추가, 갱신 또는 삭제를 반영할 수 있다. 서버(20)측에서는, 어느 클라이언트(10)에 대해서 어느 데이터가 갱신되어 있는지 등을 관리할 필요가 없다. 따라서, 서버(20)에서 클라이언트(10)마다의 상태를 관리하는 비용을 저감할 수 있다. 따라서, 서버(20)를 효과적으로 운용할 수 있다. 따라서, 1대의 서버(20)에 다수의 클라이언트(10)로부터 액세스되는 경우에는 효과적이다.
또한, 본 실시형태의 통신 시스템에서는, 필터 조건을 동기 요구에 설정하여 송신함으로써, 서버(20)에서 필터 조건에 매치하는 데이터만을 대상으로 하여 추가나 삭제, 갱신을 검지할 수 있다. 따라서, 예컨대 서버(20)에서 클라이언트(10)가 기억하고 있는 데이터의 일람을 관리하거나, 클라이언트(10)로부터 기억되어 있는 데이터의 일람을 송신하거나 하지 않고, 필터 조건에 매치하는 일부 데이터만을 선택적으로 동기하는 것이 가능해지기 때문에, 효율적인 데이터의 동기를 실현할 수 있다.
또한, 일반적으로, 새로운 데이터정도 가치가 높은 것이 많을 때, 본 실시형태의 통신 시스템에 의하면, 새로운 데이터에 대해서는, 대량의 데이터가 저장되는 서버 데이터베이스(21)를 검색하지 않고, 서버 변경 이력에 기초하여 동기를 행할 수 있기 때문에, 효율적으로 데이터를 동기할 수 있다. 즉, 보다 가치가 높은 데이터에 대해서는, 보다 효율적으로 데이터를 동기하는 것이 가능해진다. 따라서, 클라이언트와 서버 사이에서 효과적인 동기를 행할 수 있다.
또한, 일반적으로, 필터아웃된 데이터는 동기의 대상으로 하지 않고, 클라이언트(10)의 데이터를 삭제하는 동기가 행해지는 것이 행해지고 있을 때, 본 실시형태에서는, 클라이언트(10)가 동기의 대상으로 하는 데이터를 결정하고 있기 때문에, 클라이언트(10)는, 서버(20)에서 필터아웃된 데이터에 대해서도, 다운로드 요구에 데이터 ID를 지정하여, 동기의 대상으로 할 수 있다. 클라이언트(10)에서는, 클라이언트 데이터베이스(11)에는 갱신 전의 데이터가 기억되어 있고, 클라이언트(10)의 사용자는, 클라이언트 데이터베이스(11)에 기억되어 있는 데이터에 대하여 흥미를 갖고 있다. 본 실시형태의 통신 시스템에 의하면 서버(20)측에서 필터아웃되었다고 해도, 사용자의 흥미 범위에 포함되는 데이터, 즉 사용자에게 있어서 중요도가 높은 데이터를 우선적으로 동기의 대상으로 하는 것이 가능해져, 사용자에게 있어서 편리하다. 또한, 사용자의 흥미 범위에 포함되는 데이터를 우선적으로 다운로드하는 것에 의해, 사용자에게 있어서 응답 시간을 짧게 느끼게 하는 것이 기대된다.
또한, 본 실시형태의 통신 시스템에서는, 서버(20)에서 추가나 변경된 데이터를 갑자기 송신하지 않고, 클라이언트(10)는 힌트를 참고로 하여, 필요한 데이터만을 다운로드할 수 있다. 따라서, 예컨대 휴대전화 등에서는, 기억 용량이 한정되고, 또한 통신 속도에도 한계가 있으며, 그다지 대량의 데이터를 다운로드할 수 없는 경우도 있지만, 클라이언트(10)는, 기억 용량이나 통신 속도 등의 상황에 따라 데이터를 유연하게 취득하는 것이 가능해진다.
또한, 본 실시형태의 통신 시스템에 의하면, 앵커 시점이 바운더리 시점보다 앞인 경우에는, 서버(20)는, 앵커 시점부터 바운더리 시점까지 추가된 데이터를 검색하고, 변경 특징 정보로서 클라이언트(10)에 통지할 수 있다. 따라서, 서버(20)에서 바운더리 시점보다 앞의 서버 변경 이력을 기록해 두지 않았다고 해도, 클라이언트(10)는, 적어도 추가 및 갱신된 데이터를 취득할 수 있다. 따라서, 서버(20)에서 모든 변경 이력을 기억하지 않고, 데이터를 동기하는 것이 가능해지기 때문에, 데이터의 동기에 따른 서버(20)의 부하를 억제할 수 있다.
또한, 본 실시형태의 통신 시스템에 의하면, 앵커 시점이 바운더리 시점보다 앞인 경우, 클라이언트(10)로부터 바운더리 시점보다 앞의 갱신 시점의 데이터를 진부화 정보로서 서버(20)에 송신함으로써, 갱신이나 삭제가 되어 있지 않는지의 여부를 서버(20)에 조회할 수 있다. 따라서, 변경 이력이 존재하는 데이터에 대한 갱신에 후속하여, 변경 이력이 존재하지 않는 데이터에 대해서도 동기를 행하도록 할 수 있다. 따라서, 확실한 데이터의 동기를 행하는 것이 가능해진다.
또한, 필터 조건을 적용하는 대상이 되는 칼럼이 갱신된 경우라도, 갱신 전의 칼럼을 구 칼럼으로 하여 서버 변경 이력 기억부(231)에 관리하고 있기 때문에, 변경 이력이 존재하는 데이터에 대해서는, 서버(20)에서 데이터가 갱신되고, 필터 조건에 매치하지 않게 된 경우라도, 클라이언트(10)에 기억되어 있는 데이터를 동기할 수 있다.
또한, 본 실시형태의 통신 시스템에서는, 서버(20)는, 앵커 시점보다 뒤에 작성되고, 그 후 삭제된 데이터에 대해서는, 갱신 정보를 클라이언트(10)에 송신하지 않도록 하고 있다. 따라서, 효율적인 동기를 행할 수 있다.
또한, 제2 실시형태의 통신 시스템에서는, 클라이언트(10) 및 서버(20)의 양쪽에서 데이터가 변경된 경우라도, 클라이언트(10)에서 충돌을 검지하고, 클라이언트(10)에서 변경된 데이터와, 서버(20)에서 변경된 데이터 중 어느 하나를 선택하는 것에 의해 충돌을 해소할 수 있다.
또한, 클라이언트(10)에서는, 데이터의 중복을 검출하여, 중복을 해소할 수 있다. 따라서, 동일한 데이터가 복수 등록되는 것에 의한 리소스의 소비를 억제할 수 있다.
또한, 제2 실시형태의 통신 시스템에서는, 클라이언트(10)에서 데이터를 작성하는 경우에, 클라이언트(10)는 GUID를 할당하지 않고, 클라이언트(10)에서 일의의 LUID를 할당하는 것만으로, 동기시에 시스템 내에서 일의의 글로벌 ID를, 서버(20)가 할당하도록 할 수 있다. 클라이언트(10)가 데이터의 작성마다 GUID를 할당하는 경우에는, GUID의 할당 처리에 따른 부하를 무시할 수 없지만, 제2 실시형태와 같이, 클라이언트(10)는 LUID를 할당하면 좋기 때문에, ID의 할당에 따른 처리 부하를 억제하는 것이 가능해진다. 한편, GUID의 할당은 서버(20)로 일원화할 수 있기 때문에, 확실하게 일의의 GUID를 용이하게 할당할 수 있다.
또한, 제2 실시형태의 통신 시스템에서는, 클라이언트(10)와 서버(20)의 양쪽에서 데이터가 변경된 충돌을 검지하여, 힌트 등에 기초하여 충돌을 해소한 후에 동기를 행하도록 하고 있다. 따라서, 복수의 클라이언트(10)로부터 동일한 데이터에 대하여 변경이 행해지는 상황이어도, 적절히 동기를 행할 수 있다.
==변형예==
또한, 전술한 실시형태에서는, 데이터의 작성 시점이나 갱신 시점, 삭제 시점 등은, 서버 데이터베이스(21)에 대한 변경의 수순을 나타내는 값인 것으로 했지만, 이것에 한하지 않고, 타임스탬프를 채용하여도 좋다. 이 경우에, 타임스탬프의 단위 시간(예컨대 밀리초, 마이크로초 등)이 낮고, 동일한 타임스탬프에 복수의 변경이 행해질 수 있는 경우에는, 타임스탬프에 데이터의 식별 정보를 연결한 것을 「시점」으로서 채용하도록 하며, 서버 변경 이력 기억부(231)에 서버 변경 이력을 등록하는 타이밍을 적어도 상기 단위 시간 이상 늦추도록 하여도 좋다.
또한, 전술한 실시형태에서는, 설명을 간단히 하기 위해, 클라이언트(10) 및 서버(20)는 1대씩인 것으로 했지만, 복수의 클라이언트(10)가 1대의 서버(20)에 접속하는 형태로 하여도 좋고, 1대의 클라이언트(10)가 복수의 서버(20)에 접속하는 형태로 하여도 좋으며, 복수의 클라이언트(10)가 복수의 서버(20)에 접속하는 형태로 하여도 좋다.
또한, 본 실시형태에서는, 클라이언트 ID는 미리 클라이언트 ID 기억부(131)에 기억되어 있는 것으로 했지만, 이것에 한하지 않고, 예컨대 서버(20)가 클라이언트 ID를 클라이언트(10)에 할당하고, 클라이언트(10)가 서버(20)로부터 할당된 클라이언트 ID를 취득하여 클라이언트 ID 기억부(131)에 등록하도록 할 수 있다. 클라이언트 ID는, 예컨대 클라이언트(10)가 기동할 때마다 재설정되도록 하여도 좋다.
또한, 본 실시형태에서는, 서버 변경 이력 기억부(231)에는, 추가, 갱신 및 삭제에 관한 서버 변경 이력이 등록되는 것으로 했지만, 삭제에 관한 서버 변경 이력만을 관리하도록 하여도 좋다. 이 경우, 동기 요구(41)에 대응하는 처리(도 16이나 도 38)의 단계 S3307에서, 서버(20)는, 서버 데이터베이스(21)로부터 앵커 시점보다 갱신 시점이 뒤인 서버 레코드의 GUID나 갱신 시점, 힌트, 키를 취득하여, 변경 특징 정보에 설정하도록 한다. 삭제만을 관리하는 것에 의해, 서버 변경 이력을 관리하는 리소스를 저감할 수 있다.
또한, 서버 변경 이력 기억부(231)를 생략하도록 할 수도 있다. 이 경우, 서버(20)는, 앵커 시점보다 뒤의 갱신 시점을 포함하는 서버 레코드를 서버 데이터베이스(21)로부터 검색하여 변경 특징 정보를 작성하도록 한다. 클라이언트(10)는, 동기 정보(42)의 대응 처리(도 19 나 도 41)의 단계 S3506?S3508에서, 모든 클라이언트 레코드의 삭제 가능성 플래그에 「참」을 설정하도록 한다. 또한 이 경우에도, 삭제에 대해서는, 서버 변경 이력 대신에 서버 레코드에 삭제 플래그를 설정하도록 하여 이력을 관리하도록 하여도 좋다. 서버(20)는, 정기적으로 현재의 시점부터 정해진 과거 시점 이전의 서버 레코드를 서버 데이터베이스(21)로부터 삭제하도록 할 수 있다.
또한, 본 실시형태에서는, 동기 정보(42)에는, 필터 조건에 해당하는 변경 특징 정보를 모두 동기 정보(42)에 포함하는 것으로 했지만, 동기 정보(42)에 포함하는 변경 특징 정보의 수를 제한하기 위한 조건(이하, 「리미트 조건」이라고 함)을 동기 요구에 포함하도록 하여도 좋다. 리미트 조건은, 예컨대 레코드를 정해진 칼럼으로 소트한 것 중의 n번째로부터 정해진 수개 등으로 설정할 수 있다.
또한, 본 실시형태에서는, 필터 조건이 반드시 설정되는 것으로 했지만, 필터 조건을 지정하지 않고, 모든 데이터를 갱신 대상으로 하여도 좋다.
또한, 본 실시형태에서는, 동기 정보(42)나 다운로드 정보(44), 해소 요구(45) 등은 1회의 송신으로 보내지는 것으로 했지만, 예컨대 복수회로 나눠 송신하도록 하여도 좋다.
또한, 본 실시형태에서는, 바운더리 시점보다 앞에 추가 또는 갱신된 데이터에 대해서도, 변경 특징 정보를 동기 정보(42)에 포함하도록 했지만, 동기 정보(42)에는 바운더리 시점 이후의 데이터에 대한 변경 특징 정보만을 포함하도록 하고, 클라이언트(10)의 갱신 처리부(120)가, 앵커 시점이 바운더리 시점보다 앞인 경우에, 바운더리 시점보다 앞에 추가 또는 갱신된 데이터를 취득하기 위한 커맨드(이하, 「추가 갱신 정보 취득 요구」로 함)에 앵커 시점 및 바운더리 시점을 설정하여 서버(20)에 송신하도록 하고, 서버(20)의 변경 취득부(215)는, 작성 시점이 추가 갱신 정보 취득 요구에 포함되는 앵커 시점보다 뒤이며, 갱신 시점이 추가 갱신 정보 취득 요구에 포함되는 바운더리 시점보다 앞인 서버 레코드를 서버 데이터베이스(21)로부터 검색하여 변경 특징 정보를 작성하고, 클라이언트(10)에 송신하도록 하여도 좋다. 이 경우, 변경 이력에 기초하는 데이터의 갱신을 보다 우선하여 처리하는 것이 가능해진다.
또한, 서버(20)가 리셋하는 경우가 있는 경우나, 서버(20)가 복수의 서버 데이터베이스(21)를 관리하는 경우에는, 동기 대상이 되는 서버 데이터베이스(21)에 ID(이하, 「동기 ID」로 함)를 할당하고, 동기 요구(41), 동기 정보(42), 다운로드 요구(43), 다운로드 정보(44), 해소 요구(45), 해소 결과 정보(46)에 동기 ID를 포함하도록 하여도 좋다. 이 경우, 클라이언트(10)는, 동기 요구(41)나 다운로드 요구(43), 해소 요구(45)에 설정되어 있던 동기 ID와, 서버(20)로부터 응답되는 동기 정보(42)나 다운로드 정보(44), 해소 결과 정보(46)에 설정되어 있는 동기 ID가 상이한 경우에는, 클라이언트(10)는, 클라이언트 데이터베이스(11)에 기억되어 있는 데이터를 모두 삭제한 후, 처음부터 동기 처리를 다시 하도록 하여도 좋다.
또한, 본 실시형태에서는, 예컨대 도 19의 단계 S3502 등에서, 동기 정보(42)에 포함되어 있는 최신 이력 시점에서 앵커 시점을 갱신하는 것으로 했지만, 동기 정보(42)에 포함되어 있는 변경 특징 정보 중, 다운로드 결정부(115)가 다운로드해야 하는 것으로 결정한 데이터에 대응하는 것에 포함되는 가장 새로운 갱신 시점을 앵커 시점으로서 선택 필터 조건에 대응시켜 앵커 기억부(132)에 등록하도록 하여도 좋다. 또한 동기 정보(42)를 수신했을 때에는 앵커 시점을 갱신하지 않고, 그 후 다운로드 요구(43)에 따라 서버(20)로부터 다운로드 정보(44)를 수신하며, 다운로드 정보(44)에 기초하여 데이터를 클라이언트 데이터베이스(11)에 등록할 때마다, 등록한 데이터의 갱신 시점을 앵커 시점으로서 앵커 기억부(132)에 등록하도록 하여도 좋다. 이것에 의해, 예컨대 한번에 다운로드를 행하지 않고, 정해진 수의 데이터를 다운로드하여 클라이언트 데이터베이스(11)에 등록하는 처리를 복수회 반복하는 경우에 있어서, 도중에 다운로드가 실패했을 때에는, 다음번의 동기 처리에서, 실패한 시점 이후의 데이터에 대해서 동기를 다시 하는 것이 가능해진다. 이 경우, 동기 정보(42)에 포함되어 있었던 모든 변경 특징 정보에 대응하는 데이터를 다운로드했을 때에만, 동기 정보(42)에 포함되어 있었던 최신 이력 시점을 앵커 시점으로서 앵커 기억부(132)에 등록하도록 하여도 좋다.
또한, 본 실시형태에서는, 진부화 정보 취득부(117)는, 삭제 가능성 플래그 또는 갱신 가능성 플래그가 「참」인 클라이언트 레코드 중, GUID가 취득 정보에 포함되어 있지 않는 것의 모두에 대해서 진부화 정보를 작성하는 것으로 했지만, 이것에 한하지 않고, 삭제 가능성 플래그 및 갱신 가능성 플래그 중 어느 하나 이상이 「참」인 클라이언트 레코드, 즉 서버(20)에서 삭제 또는 갱신되어 있을 가능성이 있는 데이터 중, 서버(20)에서 삭제 또는 갱신되어 있는지의 여부를 조사해야 하는 것을 결정하고, 결정한 데이터에 대해서만 진부화 정보를 작성하도록 하여도 좋다. 이 경우, 클라이언트(10)는, 예컨대 삭제 가능성 플래그 및 갱신 가능성 플래그 중 어느 하나 이상이 「참」인 클라이언트 레코드 모두에 대해서 진부화 정보를 작성하도록 하여도 좋고, 정해진 조건에 매치하는 클라이언트 데이터에 대해서 진부화 정보를 작성하도록 하여도 좋으며, 클라이언트(10)의 사용자로부터 지정된 클라이언트 데이터에 대해서 진부화 정보를 작성하도록 하여도 좋다.
또한, 본 실시형태에서는, 다운로드 결정부(115)가 다운로드하지 않는 것으로 결정한 데이터에 대해서는 단적으로 다운로드를 행하지 않도록 했지만, 서버(20)에서 갱신되어 있는 데이터에 대해서는, 클라이언트 레코드에 갱신되어 있는 취지를 나타내는 플래그(이하, 「갱신 플래그」로 함)를 설정해 두고, 다음 동기 처리시에, 갱신 플래그가 참인 것에 대해서도 다운로드를 하도록 결정하도록 할 수도 있다. 이 경우, 다운로드 결정부(115)는, 예컨대 동기 정보(42)에 포함되어 있는 변경 특징 정보에 기초하여 추가 또는 갱신되어 있는 데이터를 특정하고, 클라이언트 데이터베이스(11)로부터 갱신 플래그가 참인 클라이언트 레코드를 검색하며, 특정한 데이터와 검색한 클라이언트 레코드 중으로부터 다운로드해야 하는 데이터를 결정할 수 있다.
또한, 다운로드 결정부(115)가 다운로드하지 않는 것으로 결정한 데이터에 대해서, 뒤에서부터 다운로드하도록 하여도 좋고, 클라이언트 데이터베이스(11)로부터 삭제하도록 하여도 좋다.
또한, 클라이언트 데이터베이스(11)에 기억되는 오래된 데이터를 정기적으로 삭제하도록 하여도 좋다. 이 경우, 클라이언트(10)는, 예컨대 1분이나 5분, 1시간 등의 정해진 시간마다 또는 클라이언트(10)에서의 처리의 부하가 저감된 것을 검지했을 때에, 클라이언트 레코드 중, 갱신 시점이 현재의 일시보다 정해진 시간 이상 전의 것을 클라이언트 데이터베이스(11)로부터 삭제하도록 할 수 있다. 앵커 기억부(132)가, 필터 조건과 앵커 시점에 대응시켜, 이들이 앵커 기억부(132)에 등록된 일시를 기억해 두고, 클라이언트(10)는, 등록 일시가 현재의 일시보다 정해진 시간 이상 앞인지의 여부에 의해 필터 조건이 오래됐는지 새로운지를 판단하여, 오래된 필터 조건에 매치하는 클라이언트 레코드 중, 새로운 필터 조건에 매치하지 않는 것을, 클라이언트 데이터베이스(11)로부터 삭제하도록 할 수도 있다.
또한, 전술한 실시형태에서는, 서버 변경 이력은, 변경의 종별(추가, 갱신 또는 삭제)을 막론하고, 서버(20)에서 데이터가 변경될 때마다 하나 작성되는 것으로 했지만, 이것에 한하지 않고, 예컨대 갱신된 데이터에 대해서 하나의 서버 변경 이력을 기록하도록 하여도 좋다. 이 경우, 서버 변경 이력에는, 예컨대 변경된 데이터의 항목을, 「{항목=최신값, 최근값, …, 최고(最古)값}」이라고 하는 리스트 표현으로 하는 등, 데이터의 각 항목에 대해서 정해진 수의 이력을 설정 가능하게 해둔다. 서버 레코드가 갱신될 때마다, 갱신된 서버 레코드의 GUID에 대응하는 서버 변경 이력을 서버 변경 이력 기억부(231)로부터 검색하여, 서버 변경 이력이 존재하는 경우에는, 갱신된 서버 레코드의 최신값을, 서버 변경 이력에 포함되는 항목의 최신값으로서 설정하도록 한다. 항목의 이력 리스트가 정해진 수를 초과한 경우에는, 최고의 값을 리스트로부터 삭제하도록 한다. 이와 같이, 동일한 서버 레코드에 대한 복수의 갱신을 하나의 변경 이력으로 관리함으로써, 어떤 하나의 서버 레코드에 대한 갱신 빈도가 높아진 경우에도, 그 서버 레코드의 갱신에 대한 서버 변경 이력이 서버 변경 이력 기억부(231)를 독점해 버리는 상황을 방지할 수 있다. 따라서, 변경 이력의 수를 유한으로 하고 있는 경우에 있어서, 서버 레코드의 갱신 빈도가 높을 때라도, 보다 많은 데이터에 대한 변경 이력을 관리할 수 있다. 따라서, 유한의 변경 이력이라도, 서버(20)에서의 데이터의 변경을 확실하게 관리하는 것이 가능해진다.
또한, 본 실시형태에서는, 서버 데이터베이스(21)가, 데이터 본체에 추가로 키나 칼럼, 힌트 등도 포함한 서버 레코드를 기억하는 것으로 했지만, 데이터의 본체와, 그 데이터의 키나 칼럼, 힌트 등의 메타 정보를 상이한 데이터로서 기억하도록 하여도 좋다. 예컨대 서버 데이터베이스(21)가 기억하는 서버 레코드에는, GUID, 작성 시점, 갱신 시점 및 본체만이 포함되어 있는 것으로 하고, 서버(20)는, 서버 데이터베이스(21)에 기억되어 있는 서버 레코드의 각각 대응하는 GUID, 갱신 시점, 키, 칼럼 및 힌트를 포함하는 정보(이하, 「헤더 데이터」라고 함)를 기억하는 헤더 데이터 베이스를 구비하도록 할 수 있다. 이 경우, 도 16이나 도 38에 도시하는 동기 요구(41)에의 대응 처리의 단계 S3307에서, 변경 취득부(215)는, 헤더 데이터 베이스로부터, 갱신 시점이 앵커 시점보다 뒤이며, 갱신 시점이 바운더리 시점보다 앞인 데이터를 판독하여, 변경 특징 정보를 작성한다. 따라서, 변경 취득부(215)는, 서버 데이터베이스(21)에 액세스하지 않고, 동기 요구(41)에 따라, 앵커 시점부터 바운더리 시점까지 사이에 추가나 갱신이 이루어진 데이터를 검출하는 것이 가능해지고, 서버 데이터베이스(21)에의 액세스가 많은 경우라도, 효율적으로 동기의 대상이 될 수 있는 데이터를 검출할 수 있다. 또한, 헤더 데이터베이스를 마련하는 것에 의해, 서버 데이터베이스(21)의 구성을 변경하지 않고, 헤더 데이터를 이용하여 데이터를 동기할 수 있다. 따라서, 예컨대 운용중인 서버 데이터베이스(21)가 존재하고 있는 경우 등에도, 용이하게 운용중인 서버 데이터베이스(21)를 동기의 대상으로 하는 것이 가능해진다.
또한, 마찬가지로, 클라이언트(10)가, 클라이언트 데이터베이스(11)와는 별도로, 헤더 데이터를 기억하는 헤더 데이터베이스를 구비하도록 하여도 좋다. 이 경우, 예컨대 클라이언트(10)에서, 클라이언트 데이터베이스(11)를 이용하는 PIM(Personal Information Manager) 애플리케이션 등이 동작하고 있을 때라도, 클라이언트 데이터베이스(11)의 구성을 변경하지 않고, 데이터를 동기하도록 하는 것이 가능해진다.
또한, 본 실시형태에서는, 삭제에 대한 서버 변경 이력을 서버 변경 이력 기억부(231)에 등록하는 것으로 했지만, 서버 레코드에 삭제 플래그를 설정하도록 하여도 좋다. 이 경우, 서버 레코드를 삭제할 때에는, 서버 레코드의 삭제 플래그를 참으로 설정하고, 갱신 시점에 현재의 시점을 설정하도록 한다. 또한, 정기적으로, 삭제 플래그가 참으로 설정되어 있는 서버 레코드 중, 서버 레코드의 갱신 시점이 바운더리 시점[서버 변경 이력 기억부(231)에 등록되어 있는 서버 변경 이력의 최고의 갱신 시점]보다 오래된 것을 서버 데이터베이스(21)로부터 삭제하도록 한다. 변경 이력 취득부(214)는, 선택 필터 조건에 매치하는 서버 변경 이력을 서버 변경 이력 기억부(231)로부터 검색하고, 선택 필터 조건에 매치하는 서버 레코드 중 삭제 플래그가 참인 것을 검색하며, 검색한 서버 변경 이력 및 서버 레코드에 기초하여 변경 특징 정보를 작성하도록 한다. 변경 이력 취득부(214)는, 선택 필터 조건에 매치하는 서버 변경 이력의 가장 새로운 시점과, 삭제 플래그가 「참」인 서버 레코드의 가장 새로운 갱신 시점 중 새로운 것을 최신 이력 시점으로서 결정하도록 한다.
또한, 본 실시형태에서는, 서버 변경 이력은, 서버 변경 이력 기억부(231)에 통합하여 등록하는 것으로 했지만, 서버 데이터베이스(21)에 등록되는 서버 레코드에 부대시켜 기억하도록 하여도 좋다. 예컨대 서버 레코드를 오브젝트로서 실장하는 경우에, 서버 레코드의 인스턴스마다 서버 변경 이력을 그 속성으로서 관리하도록 할 수 있다. 이 경우, 인스턴스마다 정해진 수의 서버 변경 이력을 기억해 두도록 하고, 정해진 수를 초과하는 서버 변경 이력은 오래된 갱신 시점의 것부터 순서대로 삭제되어 가도록 한다.
또한, 본 실시형태에서는, 도 41(및 도 19)에 도시하는 동기 정보(42)의 대응 처리의 단계 S3508에서, 갱신 시점이 바운더리 시점보다 앞의 데이터에 대해서, 삭제 가능성 플래그 및 갱신 가능성 플래그를 참으로 설정하는 것으로 했지만, 충돌 또는 중복을 검지했기 때문에 다운로드를 하지 않았던 시점을 고려하도록 하여도 좋다. 이 경우, 클라이언트 레코드에는, 판명되어 있는 서버 레코드의 갱신 시점을 나타내는 「관측 시점」을 포함하도록 하고, 예컨대 전술한 도 44의 충돌 해소 처리나 도 45의 중복 해소 처리의 루프 중에서, 취득 다운로드 정보에 설정되어 있는 GUID에 대응하는 클라이언트 레코드가 클라이언트 데이터베이스(11)에 존재하고 있으면, 대응하는 클라이언트 레코드의 관측 시점에 취득 다운로드 정보의 갱신 시점을 설정하도록 한다. 또한, 필터 조건에 매치하는 클라이언트 레코드의 관측 시점이, 필터 조건에 대응하는 앵커 시점보다 앞인 경우에는, 클라이언트 레코드의 관측 시점을 앵커 시점에 갱신하도록 한다. 또한 도 41의 단계 S3508에서 갱신 가능성 플래그만을 「참」으로 설정하도록 하고, 계속해서 필터 조건에 매치하고, 관측 시점이 바운더리 시점보다 앞인 것을 검색하며, 이 검색한 클라이언트 데이터의 삭제 가능성 플래그를 「참」으로 설정하도록 한다. 이것에 의해, 서버(20)에서 삭제되어 있지 않는 것이 판명되어 있는 시점보다 앞의 데이터에 삭제 가능성 플래그를 설정하는 경우가 없어진다. 이것에 의해, 클라이언트(10)는, 삭제 가능성 플래그가 「거짓」이고, 갱신 가능성 플래그가 「참」인 클라이언트 레코드에 대해서는, 그 클라이언트 레코드는 적어도 서버에서 삭제는 되어 있지 않는 것으로 판단할 수 있다. 따라서, 예컨대 클라이언트(10)가, 클라이언트 레코드가 서버(20)에서 삭제되어 있지 않는지의 여부를 서버(20)에 조회하는 경우에는, 삭제 가능성 플래그가 「참」인 클라이언트 레코드에 대해서만 서버(20)에 조회하면 되기 때문에, 조회의 대상이 되는 클라이언트 레코드를 좁힐 수 있다. 또한, 다운로드 결정부(115)가 다운로드하는 데이터를 결정하는 경우에 있어서, 삭제 가능성 플래그에 따라 우선 순위를 두도록 할 수 있다. 예컨대 1회의 다운로드 가능한 데이터 수에 제한이 있는 경우에는, 삭제 가능성 플래그가 「거짓」인 데이터를 먼저 다운로드하거나, 반대로 삭제 가능성 플래그가 「참」인 데이터를 먼저 다운로드하거나 할 수 있다.
또한, 제2 실시형태에서는, 서버(20)는, 동기 요구(41)에 포함되는 필터 조건에 매치하는 서버 변경 이력만을 클라이언트(10)에 응답하는 것으로 했지만, 이것에 한하지 않고, 예컨대 필터 조건에 매치하지 않아도, 필터 조건으로 지정된 값에 유사한 것도 동기 정보(42)에 설정하도록 하여도 좋다. 이 경우, 서버(20)는, 필터 조건에 매치하지 않는 취지를 나타내는 플래그(이하, 「매치 불명확 플래그」라고 함)를 서버 변경 이력에 부대시켜 동기 정보(42)에 설정하고, 클라이언트(10)는, 예컨대 매치 불명확 플래그가 거짓인 것에 대해서는, 사용자에 대하여, 필터 조건에 매치는 하지 않지만, 매치할 가능성이 있는 취지의 제안 정보로서 표시하도록 하여도 좋다.
또한, 제2 실시형태에서는, 동기 요구(41)에는, 중복 기억부(136) 및 충돌 기억부(137)에 GUID가 등록되어 있지 않는 모든 클라이언트 변경 이력에 대응하는 변경 특징 정보가 포함되는 것으로 했지만, 동기 요구(41)에는 중복 기억부(136) 및 충돌 기억부(137)에 GUID가 등록되어 있지 않고, 변경 종별이 「삭제」인 클라이언트 변경 이력에 기초하는 변경 특징 정보만을 포함하도록 하여도 좋다. 이 경우, 서버(20)는, 도 36에 도시하는 단계 S33의 동기 요구의 대응 처리(도 38)에서, 단계 S3310의 충돌 중복의 검지 처리를 생략하고, 변경 종별이 「삭제」 이외의 클라이언트 변경 이력에 대해서는, 충돌하는 것에 대해서는 해소 처리부(124)에 의해, 도 44의 단계 3943에서 클라이언트 레코드와, 서버 레코드 중 어느 하나를 선택한 후에, 해소 요구(45)에 포함되고, 충돌하지 않는 것에 대해서는, 해소 처리부(124)는, 도 43의 단계 3908 후에, 대응하는 클라이언트 레코드를 해소 요구(45)에 포함하도록 한다. 이와 같이 함으로써, 서버(20)에서 충돌이나 중복의 검출 처리를 행하는 처리 부하를 경감할 수 있다.
이상, 본 실시형태에 대해서 설명했지만, 상기 실시형태는 본 발명의 이해를 용이하게 하기 위한 것이고, 본 발명을 한정하여 해석하기 위한 것이 아니다. 본 발명은, 그 취지를 일탈하지 않고, 변경, 개량될 수 있으며, 본 발명에는 그 등가물도 포함된다.
10: 클라이언트, 11: 클라이언트 데이터베이스, 20: 서버, 21: 서버 데이터베이스, 30: 통신 네트워크, 41: 동기 요구, 42: 동기 정보, 43: 다운로드 요구, 44: 다운로드 정보, 45: 해소 요구, 46: 해소 결과 정보, 101: CPU, 102: 메모리, 103: 기억 장치, 104: 통신 인터페이스, 105: 입력 장치, 106: 출력 장치, 110: 클라이언트 변경 검지부, 111: 필터 선택부, 112: 동기 요구 송신부, 113: 동기 정보 수신부, 114: 삭제 처리부, 115: 다운로드 결정부, 116: 앵커 갱신부, 117: 진부화 정보 취득부, 118: 다운로드 요구 송신부, 119: 다운로드 정보 수신부, 120: 갱신 처리부, 121: 충돌 중복 해소 결정부, 122: 해소 요구 송신부, 123: 해소 결과 정보 수신부, 124: 해소 처리부, 131: 클라이언트 ID 기억부, 132: 앵커 기억부, 133: 클라이언트 변경 이력 기억부, 134: 미취득 ID 기억부, 135: 미검증 기억부, 136: 중복 기억부, 137: 충돌 기억부, 201: CPU, 202: 메모리, 203: 기억 장치, 204: 통신 인터페이스, 205: 입력 장치, 206: 출력 장치, 210: GUID 생성부, 211: 시점 생성부, 212: 데이터베이스 변경부, 213: 동기 요구 수신부, 214: 변경 이력 취득부, 215: 변경 취득부, 216: 동기 정보 송신부, 217: 다운로드 요구 수신부, 218: 데이터 취득부, 219: 다운로드 정보 송신부, 220: 해소 요구 수신부, 221: 해소 처리부, 222: 해소 결과 정보 송신부, 231: 서버 변경 이력 기억부.
Claims (20)
- 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 시스템으로서,
상기 서버는, 갱신 시점을 포함하는 데이터를 기억하는 제1 데이터베이스에 액세스 가능하고,
상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하고,
상기 클라이언트는, 상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하는 앵커 시점 기억부와, 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하는 동기 요구 송신부를 구비하고,
상기 서버는, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 상기 데이터인 갱신 데이터를 상기 제1 데이터베이스로부터 검색하며, 상기 각 갱신 데이터에 대해서 상기 갱신 데이터를 나타내는 데이터 ID 및 상기 갱신 데이터의 상기 갱신 시점을 포함하는 변경 정보를 생성하는 변경 정보 취득부와, 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하는 동기 정보 송신부를 구비하고,
상기 클라이언트는, 상기 변경 정보에 대응하는 상기 데이터 중, 다운로드해야하는 것인 취득 데이터를 결정하는 다운로드 결정부와, 상기 취득 데이터를 나타내는 데이터 ID를 포함하는 다운로드 요구를 상기 서버에 송신하는 다운로드 요구 송신부를 구비하고,
상기 서버는, 상기 다운로드 요구에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하는 데이터 취득부와, 상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하는 다운로드 정보 송신부를 구비하고,
상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 갱신 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템. - 제1항에 있어서, 상기 다운로드 결정부는, 상기 각 변경 정보에 대해서, 상기 변경 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터에 포함되는 상기 갱신 시점을 상기 제2 데이터베이스로부터 취득하고, 상기 제2 데이터베이스로부터 취득한 상기 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 오래된 경우에는, 그 데이터를 다운로드하는 것을 결정하고, 상기 제2 데이터베이스로부터 취득한 상기 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 새로운 경우에는, 사용자로부터의 설정에 따라, 그 데이터를 다운로드할지의 여부를 결정하는 것을 특징으로 하는 데이터 동기 시스템.
- 제1항에 있어서, 상기 서버는, 상기 제1 데이터베이스로부터 삭제된 상기 데이터를 나타내는 상기 데이터 ID 및 삭제 시점을 포함하는 변경 이력을 기억하는 서버 변경 이력 기억부와, 상기 동기 요구에 포함되는 상기 앵커 시점보다 뒤의 상기 삭제 시점을 포함하는 상기 변경 이력을 상기 서버 변경 이력 기억부로부터 취득하는 변경 이력 취득부를 구비하고,
상기 동기 정보 송신부는, 상기 변경 이력 취득부가 취득한 상기 변경 이력을 상기 동기 정보에 더 포함하고,
상기 클라이언트는, 상기 동기 정보에 포함되는 상기 변경 이력에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템. - 제1항에 있어서, 상기 서버는, 상기 제1 데이터베이스로부터 삭제된 데이터에 대해서, 상기 삭제된 데이터를 나타내는 데이터 ID 및 삭제 시점을 포함하는 변경 이력을, 상기 삭제 시점이 새로운 순으로 정해진 수만큼 기억하는 서버 변경 이력 기억부를 구비하고,
상기 변경 정보 취득부는, 상기 앵커 시점보다 뒤의 상기 삭제 시점을 포함하는 상기 변경 이력을 상기 서버 변경 이력 기억부로부터 취득하고,
상기 동기 정보 송신부는, 상기 변경 정보에 추가로, 상기 서버 변경 이력 기억부가 기억하고 있는 상기 변경 이력에 포함되는 가장 오래된 상기 삭제 시점인 바운더리 시점, 및 상기 취득한 변경 이력을 상기 동기 정보에 포함하여 상기 클라이언트에 송신하고,
상기 클라이언트는,
상기 동기 정보에 포함되는 상기 변경 이력에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부와,
상기 앵커 시점이 상기 바운더리 시점보다 앞인 경우에, 상기 제2 데이터베이스에 기억되어 있는 상기 데이터 중, 상기 데이터의 상기 갱신 시점이 상기 바운더리 시점보다 앞이며, 상기 데이터를 나타내는 데이터 ID를 포함하는 상기 변경 정보가 상기 동기 정보에 포함되어 있지 않은 것을 검색하고, 상기 검색된 각 데이터에 대해서 상기 데이터를 나타내는 데이터 ID 및 상기 데이터의 상기 갱신 시점을 포함하는 진부화(陳腐化) 정보를 생성하는 진부화 정보 취득부
를 구비하고,
상기 다운로드 요구 송신부는, 상기 취득 데이터의 ID에 추가로, 상기 진부화 정보를 상기 다운로드 요구에 포함하여 상기 서버에 송신하고,
상기 데이터 취득부는 또한, 상기 다운로드 요구에 포함되는 상기 각 진부화 정보에 대해서, 상기 진부화 정보에 대응하는 상기 데이터가 상기 제1 데이터베이스에 기억되어 있는지의 여부를 판정하고, 상기 제1 데이터베이스에 기억되어 있지 않는 것으로 판정된 상기 데이터를 나타내는 상기 데이터 ID를, 삭제된 데이터를 나타내는 삭제 ID로 하여 상기 다운로드 정보에 포함하고,
상기 삭제 처리부는, 상기 다운로드 정보에 포함되는 상기 삭제 ID에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 것을 특징으로 하는 데이터 동기 시스템. - 제1항에 있어서, 상기 클라이언트는, 상기 동기 정보에 포함되어 있는 상기 각 변경 정보에 대해서, 상기 변경 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터의 상기 갱신 시점을 상기 제2 데이터베이스로부터 판독하고, 상기 판독된 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 새로운 경우에, 상기 데이터 ID에 대응하는 상기 데이터를 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하는 충돌 해소부를 구비하고,
상기 다운로드 요구 송신부는, 상기 충돌 해소부가 다운로드하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하고,
상기 클라이언트는, 상기 충돌 해소부가 업로드하는 것으로 결정한 상기 데이터를 상기 제2 데이터베이스로부터 판독하여, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하는 해소 요구 송신부를 구비하고,
상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하는 해소 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템. - 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 시스템으로서,
상기 서버는, 데이터에 갱신 시점을 부대시켜 기억하는 제1 데이터베이스에 액세스 가능하고, 상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하고,
상기 서버는, 상기 제1 데이터베이스에 대한 데이터의 변경 이력을 새로운 순으로 정해진 수만큼 기억하는 서버 변경 이력 기억부를 구비하고,
상기 서버 변경 이력 기억부가 기억하는 상기 변경 이력인 서버 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 데이터 ID와, 그 데이터에 부대되어 있는 상기 갱신 시점을 포함하고,
상기 클라이언트는,
상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하는 앵커 기억부와,
상기 데이터를 취득하기 위한 조건 및 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하는 동기 요구 송신부와,
상기 서버는,
상기 서버 변경 이력 기억부로부터, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터에 대응하는 상기 서버 변경 이력 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 것을 취득하는 변경 이력 취득부와,
상기 제1 데이터베이스로부터, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤이며, 상기 서버 변경 이력 기억부에 기억되어 있는 가장 오래된 상기 갱신 시점인 바운더리 시점보다 앞인 것을 검색하고, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 변경 정보를 생성하는 변경 정보 취득부와,
상기 바운더리 시점, 상기 취득된 서버 변경 이력, 및 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하는 동기 정보 송신부
를 구비하고,
상기 클라이언트는,
상기 동기 정보에 포함되는 상기 서버 변경 이력 또는 상기 변경 정보에 대응하는 상기 데이터로부터 다운로드해야 하는 것을 결정하는 다운로드 결정부와,
상기 제2 데이터베이스로부터, 상기 조건에 매치하는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점부터 상기 바운더리 시점까지의 사이인 것을 검색하고, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 진부화 정보를 생성하는 진부화 정보 취득부와,
결정된 상기 데이터를 나타내는 취득 데이터 ID 및 상기 진부화 정보를 포함하는 다운로드 요구를 상기 서버에 송신하는 다운로드 요구 송신부
를 구비하고,
상기 서버는,
상기 다운로드 요구에 포함되는 상기 진부화 정보에 대응하는 상기 데이터 중, 상기 갱신 시점이 상기 진부화 정보에 포함되는 상기 갱신 시점보다 새로운 것과, 상기 취득 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하는 데이터 취득부와,
상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하는 다운로드 정보 송신부
를 구비하고,
상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 갱신 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템. - 제6항에 있어서, 상기 서버 변경 이력에는, 데이터의 변경이 데이터의 추가, 갱신 또는 삭제 중 어느 것인지를 나타내는 변경 종별 정보가 더 포함되고,
상기 클라이언트는, 상기 동기 정보의 수신에 따라, 상기 동기 정보에 포함되는 상기 서버 변경 이력 중, 상기 변경 종별 정보가 삭제를 나타내는 것에 대해서, 상기 서버 변경 이력에 포함되는 상기 데이터 ID가 나타내는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템. - 제6항에 있어서, 상기 데이터 취득부는, 상기 다운로드 요구에 포함되는 상기 진부화 정보 중, 상기 진부화 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터가 상기 제1 데이터베이스에 등록되어 있지 않는 것에 대해서, 상기 진부화 정보에 포함되는 상기 데이터 ID를 포함하는 삭제 정보를 상기 다운로드 정보에 설정하고,
상기 클라이언트는, 상기 다운로드 정보에 상기 삭제 정보가 포함되어 있는 경우에, 상기 삭제 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템. - 제6항에 있어서, 상기 데이터에는, 상기 데이터의 내용에 기초하여 생성되는, 상기 조건에 상기 데이터가 매치하는지의 여부를 판정하기 위한 정보인 칼럼이 더 부대되고,
상기 서버 변경 이력에는, 데이터의 변경이 데이터의 추가, 갱신 또는 삭제 중 어느 것이었는지를 나타내는 변경 종별 정보와, 상기 데이터에 부대되는 상기 칼럼이 더 포함되고,
상기 변경 이력 취득부는, 상기 서버 변경 이력 중, 상기 칼럼이 상기 동기 요구에 포함되는 상기 조건에 매치하면서, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 것을 취득하고,
상기 변경 정보 취득부는, 상기 제1 데이터베이스에 기억되어 있는 상기 데이터 중, 상기 데이터에 부대되는 상기 칼럼이 상기 동기 요구에 포함되는 상기 조건에 매치하고, 상기 갱신 시점이 상기 앵커 시점보다 뒤이면서, 상기 바운더리 시점보다 앞인 것을 검색하여, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID, 상기 데이터에 부대되는 상기 갱신 시점, 및 상기 데이터에 포함되는 상기 칼럼을 상기 변경 정보에 설정하고,
상기 진부화 정보 취득부는, 상기 제2 데이터베이스에 기억되는 데이터 중, 상기 칼럼이 상기 조건에 매치하면서, 상기 갱신 시점이 상기 앵커 시점부터 상기 바운더리 시점까지의 사이인 것을 검색하는 것을 특징으로 하는 데이터 동기 시스템. - 제6항에 있어서, 상기 데이터에는, 상기 데이터의 내용에 기초하여 생성되는, 상기 클라이언트에 있어서 상기 데이터를 다운로드할지의 여부를 결정하기 위한 정보인 힌트가 더 부대되고,
상기 서버 변경 이력에는, 데이터의 변경이 데이터의 추가, 갱신 또는 삭제 중 어느 것이었는지를 나타내는 변경 종별 정보와, 상기 데이터의 부대되는 상기 힌트가 더 포함되고,
상기 변경 정보 취득부는, 상기 검색된 각 데이터에 대해서, 상기 데이터에 부대되는 상기 힌트를 상기 변경 정보에 더 포함하고,
상기 다운로드 결정부는, 상기 서버 변경 이력 또는 상기 변경 정보에 포함되는 상기 힌트에 기초하여 상기 다운로드해야 하는 데이터를 결정하는 것을 특징으로 하는 데이터 동기 시스템. - 제10항에 있어서, 상기 다운로드 결정부는, 상기 서버 변경 이력 또는 상기 변경 정보에 포함되는 상기 힌트를 출력하고, 사용자가 선택한 상기 출력된 힌트에 대응하는 상기 데이터를, 상기 다운로드해야 하는 데이터로서 결정하는 것을 특징으로 하는 데이터 동기 시스템.
- 제6항에 있어서, 상기 데이터에는 상기 갱신 시점이 부대되고,
상기 서버는, 상기 제1 데이터베이스에 대한 조작이 행해질 때마다 커지는 수치를 상기 갱신 시점으로서 생성하는 시점 생성부를 구비하고,
상기 제1 데이터베이스에 기록될 때에, 상기 데이터에는 상기 시점 생성부가 생성한 상기 갱신 시점이 부대되는 것을 특징으로 하는 데이터 동기 시스템. - 제6항에 있어서, 상기 데이터에는 상기 갱신 시점이 부대되고,
상기 서버는, 상기 제1 데이터베이스에 대한 조작이 행해질 때에, 상기 서버에서의 타임스탬프를 취득하며, 상기 취득된 타임스탬프에, 상기 데이터의 식별 정보를 연결한 값을 상기 갱신 시점으로서 생성하는 시점 생성부를 구비하고,
상기 제1 데이터베이스에 기록될 때에, 상기 데이터에는 상기 시점 생성부가 생성한 상기 갱신 시점이 부대되는 것을 특징으로 하는 데이터 동기 시스템. - 제6항에 있어서, 상기 클라이언트는, 상기 제2 데이터베이스에서의 데이터의 변경 이력을 기억하는 클라이언트 변경 이력 기억부를 구비하고,
상기 클라이언트 변경 이력 기억부가 기억하는 상기 변경 이력인 클라이언트 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 상기 데이터 ID와, 상기 데이터에 부대되어 있는 상기 갱신 시점을 포함하고,
상기 동기 요구 송신부는, 상기 조건에 매치하는 상기 데이터에 대응하는 상기 클라이언트 변경 이력을 상기 클라이언트 변경 이력 기억부로부터 취득하고, 상기 취득된 클라이언트 변경 이력을 상기 동기 요구에 설정하여 상기 서버에 송신하고,
상기 서버는, 상기 동기 요구에 포함되는 상기 클라이언트 변경 이력의 각각에 대해서, 상기 클라이언트 변경 이력에 포함되는 상기 데이터 ID에 대응하는, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되어 있는 상기 갱신 시점이, 상기 클라이언트 변경 이력에 포함되어 있는 상기 갱신 시점보다 뒤인 경우, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되는 상기 갱신 시점 및 상기 데이터 ID를 포함하는 충돌 정보를 생성하는 충돌 검지부를 구비하고,
상기 동기 정보 송신부는, 상기 충돌 정보를 더 포함하는 상기 동기 정보를 상기 클라이언트에 송신하고,
상기 클라이언트는, 상기 충돌 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를, 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하는 충돌 해소부를 구비하고,
상기 다운로드 요구 송신부는, 상기 충돌 해소부가 다운로드하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하고,
상기 클라이언트는, 상기 충돌 해소부가 업로드하는 것으로 결정한 상기 데이터를 상기 제2 데이터베이스로부터 판독하고, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하는 해소 요구 송신부를 구비하고,
상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하는 해소 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템. - 제14항에 있어서, 상기 데이터에는, 상기 데이터에 정해진 알고리즘을 적용하여 구할 수 있는 데이터인 키가 더 부대되고,
상기 서버 변경 이력 및 상기 클라이언트 변경 이력에는 각각 상기 키가 포함되고,
상기 서버는, 상기 제1 데이터베이스에 기억되어 있는 상기 데이터 중, 상기 키가 상기 동기 요구에 포함되는 상기 클라이언트 변경 이력 중 어느 하나에 포함되는 상기 키와 일치하는 것을 검색하고, 상기 검색된 데이터를 나타내는 상기 데이터 ID를 포함하는 중복 정보를 생성하는 중복 검지부를 구비하고,
상기 동기 정보 송신부는, 상기 중복 정보를 더 포함하는 상기 동기 정보를 상기 클라이언트에 송신하고,
상기 클라이언트는, 상기 중복 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터 중, 삭제해야 하는 것을 결정하는 중복 해소부를 구비하고,
상기 해소 요구 송신부는, 상기 중복 해소부가 삭제해야 하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 포함하는 해소 정보를 상기 해소 요구에 더 포함하여 상기 서버에 송신하고,
상기 해소 처리부는 또한, 상기 해소 요구에 포함되는 상기 해소 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 삭제하는 것을 특징으로 하는 데이터 동기 시스템. - 제14항에 있어서, 상기 데이터에는 상기 데이터 ID가 부대되어 있고,
상기 데이터 ID에는, 상기 클라이언트에서 일의의 식별 정보인 로컬 ID와, 상기 서버 및 상기 클라이언트의 양쪽에서 일의의 식별 정보인 글로벌 ID가 포함되고,
상기 클라이언트는,
상기 클라이언트에서 상기 데이터가 작성된 경우에, 상기 작성된 데이터에 상기 로컬 ID를 할당하는 로컬 ID 할당부와,
상기 작성된 데이터에 할당된 상기 로컬 ID 중, 상기 글로벌 ID가 할당되어 있지 않는 것인 미취득 ID를 기억하는 미취득 ID 기억부
를 구비하고,
상기 동기 요구 송신부는 또한, 상기 미취득 ID 기억부에 기억되어 있는 상기 미취득 ID를 포함하여 상기 동기 요구를 상기 서버에 송신하고,
상기 서버는, 상기 동기 요구에 포함되어 있는 상기 미취득 ID에 대응하는 상기 글로벌 ID를 상기 제1 데이터베이스로부터 검색하여, 상기 미취득 ID에 대응하는 상기 글로벌 ID가 있는 경우에는, 그 대응하는 글로벌 ID를 상기 제1 데이터베이스로부터 취득하며, 상기 취득된 글로벌 ID 및 상기 미취득 ID를 포함하는 ID 정보를 생성하고, 상기 로컬 ID에 대응하는 상기 글로벌 ID가 없는 경우에는, 새롭게 상기 글로벌 ID를 할당하여, 상기 할당된 글로벌 ID 및 상기 로컬 ID를 포함하는 ID 정보를 생성하는 글로벌 ID 취득부를 구비하고,
상기 동기 정보 송신부는 또한, 상기 ID 정보를 포함하여 상기 동기 정보를 상기 클라이언트에 송신하고,
상기 클라이언트는, 상기 동기 정보에 포함되어 있는 상기 ID 정보의 각각에 대해서, 상기 ID 정보에 포함되는 상기 미취득 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 검색하고, 상기 검색된 데이터에 부대되는 상기 데이터 ID에, 상기 ID 정보에 포함되는 상기 글로벌 ID를 설정하는 글로벌 ID 등록부를 구비하는 것을 특징으로 하는 데이터 동기 시스템. - 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 방법으로서,
상기 서버는, 갱신 시점을 포함하는 데이터를 기억하는 제1 데이터베이스에 액세스 가능하고, 상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하고,
상기 클라이언트는, 상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하고, 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하고,
상기 서버는, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 상기 데이터인 갱신 데이터를 상기 제1 데이터베이스로부터 검색하고, 상기 각 갱신 데이터에 대해서 상기 갱신 데이터를 나타내는 데이터 ID 및 상기 갱신 데이터의 상기 갱신 시점을 포함하는 변경 정보를 생성하며, 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하고,
상기 클라이언트는, 상기 변경 정보에 대응하는 상기 데이터 중, 다운로드해야 하는 것인 취득 데이터를 결정하여, 상기 취득 데이터를 나타내는 데이터 ID를 포함하는 다운로드 요구를 상기 서버에 송신하고,
상기 서버는, 상기 다운로드 요구에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하여, 상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하고,
상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 것을 특징으로 하는 데이터 동기 방법. - 제17항에 있어서, 상기 클라이언트는, 상기 동기 정보에 포함되어 있는 상기 각 변경 정보에 대해서, 상기 변경 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터의 상기 갱신 시점을 상기 제2 데이터베이스로부터 판독하여, 상기 판독된 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 새로운 경우에, 상기 데이터 ID에 대응하는 상기 데이터를 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하고,
상기 클라이언트는, 다운로드하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하고,
상기 클라이언트는, 업로드하는 것으로 결정된 상기 데이터를 상기 제2 데이터베이스로부터 판독하여, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하고,
상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하는 것을 특징으로 하는 데이터 동기 방법. - 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 방법으로서,
상기 서버는, 데이터에 갱신 시점을 부대시켜 기억하는 제1 데이터베이스에 액세스 가능하고, 상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하고,
상기 서버는, 상기 제1 데이터베이스에 대한 데이터의 변경 이력을 새로운 순으로 정해진 수만큼 기억하고 있고,
상기 서버가 기억하는 상기 변경 이력인 서버 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 데이터 ID와, 그 데이터에 부대되어 있는 상기 갱신 시점을 포함하고,
상기 클라이언트는, 상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하고,
상기 클라이언트는, 상기 데이터를 취득하기 위한 조건 및 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하고,
상기 서버는, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터에 대응하는 상기 서버 변경 이력 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 것을 취득하고,
상기 서버는, 상기 제1 데이터베이스로부터, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤이면서, 상기 서버가 기억하고 있는 상기 서버 변경 이력의 상기 갱신 시점 중 가장 오래된 것인 바운더리 시점보다 앞인 상기 데이터를 검색하여, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 변경 정보를 생성하고,
상기 서버는, 상기 바운더리 시점, 상기 취득된 서버 변경 이력, 및 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하고,
상기 클라이언트는, 상기 동기 정보에 포함되는 상기 서버 변경 이력 또는 상기 변경 정보에 대응하는 상기 데이터로부터 다운로드해야 하는 것을 결정하고,
상기 클라이언트는, 상기 제2 데이터베이스로부터, 상기 조건에 매치되는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점부터 상기 바운더리 시점까지의 사이인 것을 검색하고, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 진부화 정보를 생성하고,
상기 클라이언트는, 결정된 상기 데이터를 나타내는 취득 데이터 ID 및 상기 진부화 정보를 포함하는 다운로드 요구를 상기 서버에 송신하고,
상기 서버는, 상기 다운로드 요구에 포함되는 상기 진부화 정보에 대응하는 상기 데이터 중, 상기 갱신 시점이 상기 진부화 정보에 포함되는 상기 갱신 시점보다 새로운 것과, 상기 취득 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하고,
상기 서버는, 상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하고,
상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 것을 특징으로 하는 데이터 동기 방법. - 제19항에 있어서, 상기 클라이언트는, 상기 제2 데이터베이스에서의 데이터의 변경 이력을 기억하고 있고,
상기 클라이언트가 기억하는 상기 변경 이력인 클라이언트 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 상기 데이터 ID와, 상기 데이터에 부대되어 있는 상기 갱신 시점을 포함하고,
상기 클라이언트는, 상기 조건에 매치되는 상기 데이터에 대응하는 상기 클라이언트 변경 이력을 취득하고, 상기 취득된 클라이언트 변경 이력을 상기 동기 요구에 설정하여 상기 서버에 송신하고,
상기 서버는, 상기 동기 요구에 포함되는 상기 클라이언트 변경 이력의 각각에 대해서, 상기 클라이언트 변경 이력에 포함되는 상기 데이터 ID에 대응하는, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되어 있는 상기 갱신 시점이, 상기 클라이언트 변경 이력에 포함되어 있는 상기 갱신 시점보다 뒤인 경우, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되는 상기 갱신 시점 및 상기 데이터 ID를 포함하는 충돌 정보를 생성하고,
상기 서버는, 상기 충돌 정보를 더 포함하는 상기 동기 정보를 상기 클라이언트에 송신하고,
상기 클라이언트는, 상기 충돌 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를, 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하고,
상기 클라이언트는, 상기 다운로드하는 것으로 결정된 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하고,
상기 클라이언트는, 상기 업로드하는 것으로 결정된 데이터를 상기 제2 데이터베이스로부터 판독하여, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하고,
상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하는 것을 특징으로 하는 데이터 동기 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009204686A JP5061166B2 (ja) | 2009-09-04 | 2009-09-04 | データ同期システムおよびデータ同期方法 |
JPJP-P-2009-204686 | 2009-09-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120049375A true KR20120049375A (ko) | 2012-05-16 |
KR101569562B1 KR101569562B1 (ko) | 2015-11-16 |
Family
ID=43649199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127007751A KR101569562B1 (ko) | 2009-09-04 | 2010-08-11 | 데이터 동기 시스템 및 데이터 동기 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8775374B2 (ko) |
EP (1) | EP2474911B1 (ko) |
JP (1) | JP5061166B2 (ko) |
KR (1) | KR101569562B1 (ko) |
WO (1) | WO2011027654A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110691112A (zh) * | 2018-07-06 | 2020-01-14 | 优信拍(北京)信息科技有限公司 | 一种数据同步方法,装置及*** |
Families Citing this family (192)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924344B2 (en) * | 2007-11-28 | 2014-12-30 | Microsoft Corporation | User profile replication |
US9456054B2 (en) | 2008-05-16 | 2016-09-27 | Palo Alto Research Center Incorporated | Controlling the spread of interests and content in a content centric network |
US8923293B2 (en) | 2009-10-21 | 2014-12-30 | Palo Alto Research Center Incorporated | Adaptive multi-interface use for content networking |
JP2011221583A (ja) * | 2010-04-02 | 2011-11-04 | Seiko Epson Corp | コンテンツ提供システム、情報処理装置、コンテンツ提供方法、プログラムおよびコンピューター読み取り可能な記録媒体 |
US20120117105A1 (en) * | 2010-11-05 | 2012-05-10 | Apple Inc. | Collaborative Database Operations |
US8707022B2 (en) * | 2011-04-05 | 2014-04-22 | Apple Inc. | Apparatus and methods for distributing and storing electronic access clients |
JP5656722B2 (ja) * | 2011-04-11 | 2015-01-21 | Kii株式会社 | データ同期装置、データ同期システム、データ同期方法及びプログラム |
US9225792B2 (en) * | 2011-07-12 | 2015-12-29 | Alcatel Lucent | System and method for caching mobile services database objects |
US8682868B2 (en) * | 2011-12-02 | 2014-03-25 | International Business Machines Corporation | Removal of data remanence in deduplicated storage clouds |
JP5890674B2 (ja) * | 2011-12-07 | 2016-03-22 | キヤノン株式会社 | 情報処理装置、情報処理方法 |
CN102571923A (zh) * | 2011-12-13 | 2012-07-11 | 中国电子科技集团公司第十五研究所 | 数据同步***及方法 |
US8601121B2 (en) * | 2012-01-09 | 2013-12-03 | International Business Machines Corporation | Tracking changes to data within various data repositories |
KR102039028B1 (ko) | 2012-02-24 | 2019-10-31 | 삼성전자 주식회사 | 휴대단말기의 데이터 공유 장치 및 방법 |
SG194245A1 (en) * | 2012-04-17 | 2013-11-29 | ZingMobile Pte Ltd | A method for real-time synchronization between a device and host servers |
JP5928162B2 (ja) * | 2012-05-31 | 2016-06-01 | 村田機械株式会社 | 画像データ処理装置、画像データ処理方法、画像データ処理プログラム、それを格納した記録媒体、および画像データ処理システム |
US8892523B2 (en) * | 2012-06-08 | 2014-11-18 | Commvault Systems, Inc. | Auto summarization of content |
US9881017B2 (en) | 2012-08-03 | 2018-01-30 | Egnyte, Inc. | System and method for event-based synchronization of remote and local file systems |
CN104737135B (zh) * | 2012-10-25 | 2017-07-25 | 富士通株式会社 | 信息处理终端以及同步控制方法 |
US9280546B2 (en) | 2012-10-31 | 2016-03-08 | Palo Alto Research Center Incorporated | System and method for accessing digital content using a location-independent name |
US9400800B2 (en) | 2012-11-19 | 2016-07-26 | Palo Alto Research Center Incorporated | Data transport by named content synchronization |
US10430839B2 (en) | 2012-12-12 | 2019-10-01 | Cisco Technology, Inc. | Distributed advertisement insertion in content-centric networks |
US9253075B2 (en) * | 2012-12-19 | 2016-02-02 | Palo Alto Research Center Incorporated | Dynamic routing protocols using database synchronization |
US9978025B2 (en) | 2013-03-20 | 2018-05-22 | Cisco Technology, Inc. | Ordered-element naming for name-based packet forwarding |
US9935791B2 (en) | 2013-05-20 | 2018-04-03 | Cisco Technology, Inc. | Method and system for name resolution across heterogeneous architectures |
US9185120B2 (en) | 2013-05-23 | 2015-11-10 | Palo Alto Research Center Incorporated | Method and system for mitigating interest flooding attacks in content-centric networks |
KR20150004200A (ko) * | 2013-07-02 | 2015-01-12 | 한국전자통신연구원 | 데이터 복제 방법 및 장치 |
JP6136694B2 (ja) * | 2013-07-19 | 2017-05-31 | 富士通株式会社 | データ管理プログラム、データ管理装置およびデータ管理方法 |
US9444722B2 (en) | 2013-08-01 | 2016-09-13 | Palo Alto Research Center Incorporated | Method and apparatus for configuring routing paths in a custodian-based routing architecture |
US9407549B2 (en) | 2013-10-29 | 2016-08-02 | Palo Alto Research Center Incorporated | System and method for hash-based forwarding of packets with hierarchically structured variable-length identifiers |
US9276840B2 (en) | 2013-10-30 | 2016-03-01 | Palo Alto Research Center Incorporated | Interest messages with a payload for a named data network |
US9282050B2 (en) | 2013-10-30 | 2016-03-08 | Palo Alto Research Center Incorporated | System and method for minimum path MTU discovery in content centric networks |
US9401864B2 (en) | 2013-10-31 | 2016-07-26 | Palo Alto Research Center Incorporated | Express header for packets with hierarchically structured variable-length identifiers |
US10129365B2 (en) | 2013-11-13 | 2018-11-13 | Cisco Technology, Inc. | Method and apparatus for pre-fetching remote content based on static and dynamic recommendations |
US9311377B2 (en) | 2013-11-13 | 2016-04-12 | Palo Alto Research Center Incorporated | Method and apparatus for performing server handoff in a name-based content distribution system |
US10101801B2 (en) | 2013-11-13 | 2018-10-16 | Cisco Technology, Inc. | Method and apparatus for prefetching content in a data stream |
US10089655B2 (en) | 2013-11-27 | 2018-10-02 | Cisco Technology, Inc. | Method and apparatus for scalable data broadcasting |
US9503358B2 (en) | 2013-12-05 | 2016-11-22 | Palo Alto Research Center Incorporated | Distance-based routing in an information-centric network |
US9544373B2 (en) | 2013-12-24 | 2017-01-10 | Dropbox, Inc. | Systems and methods for maintaining local virtual states pending server-side storage across multiple devices and users and intermittent network connections |
US10067652B2 (en) * | 2013-12-24 | 2018-09-04 | Dropbox, Inc. | Providing access to a cloud based content management system on a mobile device |
US9379979B2 (en) | 2014-01-14 | 2016-06-28 | Palo Alto Research Center Incorporated | Method and apparatus for establishing a virtual interface for a set of mutual-listener devices |
US10172068B2 (en) | 2014-01-22 | 2019-01-01 | Cisco Technology, Inc. | Service-oriented routing in software-defined MANETs |
US10098051B2 (en) | 2014-01-22 | 2018-10-09 | Cisco Technology, Inc. | Gateways and routing in software-defined manets |
US9374304B2 (en) | 2014-01-24 | 2016-06-21 | Palo Alto Research Center Incorporated | End-to end route tracing over a named-data network |
US9954678B2 (en) | 2014-02-06 | 2018-04-24 | Cisco Technology, Inc. | Content-based transport security |
US9531679B2 (en) | 2014-02-06 | 2016-12-27 | Palo Alto Research Center Incorporated | Content-based transport security for distributed producers |
US9678998B2 (en) | 2014-02-28 | 2017-06-13 | Cisco Technology, Inc. | Content name resolution for information centric networking |
US10089651B2 (en) | 2014-03-03 | 2018-10-02 | Cisco Technology, Inc. | Method and apparatus for streaming advertisements in a scalable data broadcasting system |
CN103873567B (zh) * | 2014-03-03 | 2018-09-04 | 北京智谷睿拓技术服务有限公司 | 基于任务的数据传输方法及数据传输装置 |
US9836540B2 (en) | 2014-03-04 | 2017-12-05 | Cisco Technology, Inc. | System and method for direct storage access in a content-centric network |
US9391896B2 (en) | 2014-03-10 | 2016-07-12 | Palo Alto Research Center Incorporated | System and method for packet forwarding using a conjunctive normal form strategy in a content-centric network |
US9473405B2 (en) | 2014-03-10 | 2016-10-18 | Palo Alto Research Center Incorporated | Concurrent hashes and sub-hashes on data streams |
US9626413B2 (en) | 2014-03-10 | 2017-04-18 | Cisco Systems, Inc. | System and method for ranking content popularity in a content-centric network |
US9407432B2 (en) | 2014-03-19 | 2016-08-02 | Palo Alto Research Center Incorporated | System and method for efficient and secure distribution of digital content |
US9916601B2 (en) | 2014-03-21 | 2018-03-13 | Cisco Technology, Inc. | Marketplace for presenting advertisements in a scalable data broadcasting system |
US9363179B2 (en) | 2014-03-26 | 2016-06-07 | Palo Alto Research Center Incorporated | Multi-publisher routing protocol for named data networks |
US20150280786A1 (en) * | 2014-03-31 | 2015-10-01 | Raveeshkumar Bhat | Near field communication based data transfer |
US9363086B2 (en) | 2014-03-31 | 2016-06-07 | Palo Alto Research Center Incorporated | Aggregate signing of data in content centric networking |
US9716622B2 (en) | 2014-04-01 | 2017-07-25 | Cisco Technology, Inc. | System and method for dynamic name configuration in content-centric networks |
US20150286623A1 (en) * | 2014-04-02 | 2015-10-08 | Samsung Electronics Co., Ltd. | Method and apparatus for marking relevant updates to html 5 |
US10075521B2 (en) | 2014-04-07 | 2018-09-11 | Cisco Technology, Inc. | Collection synchronization using equality matched network names |
US9473576B2 (en) | 2014-04-07 | 2016-10-18 | Palo Alto Research Center Incorporated | Service discovery using collection synchronization with exact names |
US9390289B2 (en) | 2014-04-07 | 2016-07-12 | Palo Alto Research Center Incorporated | Secure collection synchronization using matched network names |
US9451032B2 (en) | 2014-04-10 | 2016-09-20 | Palo Alto Research Center Incorporated | System and method for simple service discovery in content-centric networks |
US9203885B2 (en) | 2014-04-28 | 2015-12-01 | Palo Alto Research Center Incorporated | Method and apparatus for exchanging bidirectional streams over a content centric network |
US9992281B2 (en) | 2014-05-01 | 2018-06-05 | Cisco Technology, Inc. | Accountable content stores for information centric networks |
US9609014B2 (en) | 2014-05-22 | 2017-03-28 | Cisco Systems, Inc. | Method and apparatus for preventing insertion of malicious content at a named data network router |
US9455835B2 (en) | 2014-05-23 | 2016-09-27 | Palo Alto Research Center Incorporated | System and method for circular link resolution with hash-based names in content-centric networks |
US9276751B2 (en) | 2014-05-28 | 2016-03-01 | Palo Alto Research Center Incorporated | System and method for circular link resolution with computable hash-based names in content-centric networks |
US9467377B2 (en) | 2014-06-19 | 2016-10-11 | Palo Alto Research Center Incorporated | Associating consumer states with interests in a content-centric network |
US9516144B2 (en) | 2014-06-19 | 2016-12-06 | Palo Alto Research Center Incorporated | Cut-through forwarding of CCNx message fragments with IP encapsulation |
US9537719B2 (en) | 2014-06-19 | 2017-01-03 | Palo Alto Research Center Incorporated | Method and apparatus for deploying a minimal-cost CCN topology |
EP3161685B1 (en) * | 2014-06-24 | 2022-06-08 | Google LLC | Processing mutations for a remote database |
US9426113B2 (en) | 2014-06-30 | 2016-08-23 | Palo Alto Research Center Incorporated | System and method for managing devices over a content centric network |
US9699198B2 (en) | 2014-07-07 | 2017-07-04 | Cisco Technology, Inc. | System and method for parallel secure content bootstrapping in content-centric networks |
US9621354B2 (en) | 2014-07-17 | 2017-04-11 | Cisco Systems, Inc. | Reconstructable content objects |
US9959156B2 (en) | 2014-07-17 | 2018-05-01 | Cisco Technology, Inc. | Interest return control message |
US9590887B2 (en) | 2014-07-18 | 2017-03-07 | Cisco Systems, Inc. | Method and system for keeping interest alive in a content centric network |
US9729616B2 (en) | 2014-07-18 | 2017-08-08 | Cisco Technology, Inc. | Reputation-based strategy for forwarding and responding to interests over a content centric network |
US9535968B2 (en) | 2014-07-21 | 2017-01-03 | Palo Alto Research Center Incorporated | System for distributing nameless objects using self-certifying names |
US10380076B2 (en) | 2014-07-21 | 2019-08-13 | Egnyte, Inc. | System and method for policy based synchronization of remote and local file systems |
US9882964B2 (en) | 2014-08-08 | 2018-01-30 | Cisco Technology, Inc. | Explicit strategy feedback in name-based forwarding |
US9729662B2 (en) | 2014-08-11 | 2017-08-08 | Cisco Technology, Inc. | Probabilistic lazy-forwarding technique without validation in a content centric network |
US9503365B2 (en) | 2014-08-11 | 2016-11-22 | Palo Alto Research Center Incorporated | Reputation-based instruction processing over an information centric network |
US9391777B2 (en) | 2014-08-15 | 2016-07-12 | Palo Alto Research Center Incorporated | System and method for performing key resolution over a content centric network |
JP6442915B2 (ja) * | 2014-08-15 | 2018-12-26 | 富士ゼロックス株式会社 | 通信端末、通信システム及びプログラム |
US9800637B2 (en) | 2014-08-19 | 2017-10-24 | Cisco Technology, Inc. | System and method for all-in-one content stream in content-centric networks |
US9467492B2 (en) | 2014-08-19 | 2016-10-11 | Palo Alto Research Center Incorporated | System and method for reconstructable all-in-one content stream |
US9497282B2 (en) | 2014-08-27 | 2016-11-15 | Palo Alto Research Center Incorporated | Network coding for content-centric network |
US10204013B2 (en) | 2014-09-03 | 2019-02-12 | Cisco Technology, Inc. | System and method for maintaining a distributed and fault-tolerant state over an information centric network |
US9553812B2 (en) | 2014-09-09 | 2017-01-24 | Palo Alto Research Center Incorporated | Interest keep alives at intermediate routers in a CCN |
US10069933B2 (en) | 2014-10-23 | 2018-09-04 | Cisco Technology, Inc. | System and method for creating virtual interfaces based on network characteristics |
US9590948B2 (en) | 2014-12-15 | 2017-03-07 | Cisco Systems, Inc. | CCN routing using hardware-assisted hash tables |
US9536059B2 (en) | 2014-12-15 | 2017-01-03 | Palo Alto Research Center Incorporated | Method and system for verifying renamed content using manifests in a content centric network |
US10237189B2 (en) | 2014-12-16 | 2019-03-19 | Cisco Technology, Inc. | System and method for distance-based interest forwarding |
US9846881B2 (en) | 2014-12-19 | 2017-12-19 | Palo Alto Research Center Incorporated | Frugal user engagement help systems |
US10003520B2 (en) | 2014-12-22 | 2018-06-19 | Cisco Technology, Inc. | System and method for efficient name-based content routing using link-state information in information-centric networks |
US9473475B2 (en) | 2014-12-22 | 2016-10-18 | Palo Alto Research Center Incorporated | Low-cost authenticated signing delegation in content centric networking |
US9660825B2 (en) | 2014-12-24 | 2017-05-23 | Cisco Technology, Inc. | System and method for multi-source multicasting in content-centric networks |
US9946743B2 (en) | 2015-01-12 | 2018-04-17 | Cisco Technology, Inc. | Order encoded manifests in a content centric network |
US9602596B2 (en) | 2015-01-12 | 2017-03-21 | Cisco Systems, Inc. | Peer-to-peer sharing in a content centric network |
US9916457B2 (en) | 2015-01-12 | 2018-03-13 | Cisco Technology, Inc. | Decoupled name security binding for CCN objects |
US9832291B2 (en) | 2015-01-12 | 2017-11-28 | Cisco Technology, Inc. | Auto-configurable transport stack |
US9954795B2 (en) | 2015-01-12 | 2018-04-24 | Cisco Technology, Inc. | Resource allocation using CCN manifests |
US9462006B2 (en) | 2015-01-21 | 2016-10-04 | Palo Alto Research Center Incorporated | Network-layer application-specific trust model |
US9552493B2 (en) | 2015-02-03 | 2017-01-24 | Palo Alto Research Center Incorporated | Access control framework for information centric networking |
US10333840B2 (en) | 2015-02-06 | 2019-06-25 | Cisco Technology, Inc. | System and method for on-demand content exchange with adaptive naming in information-centric networks |
JP6611594B2 (ja) * | 2015-03-16 | 2019-11-27 | キヤノン株式会社 | データの同期を行う情報処理装置、データ同期方法およびプログラム |
EP3070619B1 (en) * | 2015-03-16 | 2023-08-16 | Canon Kabushiki Kaisha | Information processing apparatuses performing synchronization of data and data synchronization methods |
US10075401B2 (en) | 2015-03-18 | 2018-09-11 | Cisco Technology, Inc. | Pending interest table behavior |
US9258415B1 (en) * | 2015-03-30 | 2016-02-09 | Captioncall, Llc | Communication device and related methods for offline data record modification and synchronization with a backend server associated with a relay service for hearing-impaired users |
US10963430B2 (en) | 2015-04-01 | 2021-03-30 | Dropbox, Inc. | Shared workspaces with selective content item synchronization |
US9922201B2 (en) | 2015-04-01 | 2018-03-20 | Dropbox, Inc. | Nested namespaces for selective content sharing |
CN106155925A (zh) * | 2015-04-09 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种获取数据的方法及装置 |
US10437789B2 (en) | 2015-04-10 | 2019-10-08 | Egnyte, Inc. | System and method for delete fencing during synchronization of remote and local file systems |
US11144510B2 (en) | 2015-06-11 | 2021-10-12 | Egnyte, Inc. | System and method for synchronizing file systems with large namespaces |
US10116605B2 (en) | 2015-06-22 | 2018-10-30 | Cisco Technology, Inc. | Transport stack name scheme and identity management |
US10075402B2 (en) | 2015-06-24 | 2018-09-11 | Cisco Technology, Inc. | Flexible command and control in content centric networks |
US10701038B2 (en) | 2015-07-27 | 2020-06-30 | Cisco Technology, Inc. | Content negotiation in a content centric network |
US20170031960A1 (en) * | 2015-07-31 | 2017-02-02 | Panasonic Intellectual Property Management Co., Ltd. | Information recording device and data erasing method |
US9986034B2 (en) | 2015-08-03 | 2018-05-29 | Cisco Technology, Inc. | Transferring state in content centric network stacks |
US10610144B2 (en) | 2015-08-19 | 2020-04-07 | Palo Alto Research Center Incorporated | Interactive remote patient monitoring and condition management intervention system |
JP6727775B2 (ja) * | 2015-08-31 | 2020-07-22 | キヤノン株式会社 | サーバ装置、制御システム、制御方法、及び、プログラム |
US9832123B2 (en) | 2015-09-11 | 2017-11-28 | Cisco Technology, Inc. | Network named fragments in a content centric network |
US10355999B2 (en) | 2015-09-23 | 2019-07-16 | Cisco Technology, Inc. | Flow control with network named fragments |
US10313227B2 (en) | 2015-09-24 | 2019-06-04 | Cisco Technology, Inc. | System and method for eliminating undetected interest looping in information-centric networks |
US9977809B2 (en) | 2015-09-24 | 2018-05-22 | Cisco Technology, Inc. | Information and data framework in a content centric network |
US10454820B2 (en) | 2015-09-29 | 2019-10-22 | Cisco Technology, Inc. | System and method for stateless information-centric networking |
US10263965B2 (en) | 2015-10-16 | 2019-04-16 | Cisco Technology, Inc. | Encrypted CCNx |
US9794238B2 (en) | 2015-10-29 | 2017-10-17 | Cisco Technology, Inc. | System for key exchange in a content centric network |
US9571573B1 (en) | 2015-10-29 | 2017-02-14 | Dropbox, Inc. | Peer-to-peer synchronization protocol for multi-premises hosting of digital content items |
US9807205B2 (en) | 2015-11-02 | 2017-10-31 | Cisco Technology, Inc. | Header compression for CCN messages using dictionary |
US10009446B2 (en) | 2015-11-02 | 2018-06-26 | Cisco Technology, Inc. | Header compression for CCN messages using dictionary learning |
US10021222B2 (en) | 2015-11-04 | 2018-07-10 | Cisco Technology, Inc. | Bit-aligned header compression for CCN messages using dictionary |
US10097521B2 (en) | 2015-11-20 | 2018-10-09 | Cisco Technology, Inc. | Transparent encryption in a content centric network |
US9912776B2 (en) | 2015-12-02 | 2018-03-06 | Cisco Technology, Inc. | Explicit content deletion commands in a content centric network |
US10097346B2 (en) | 2015-12-09 | 2018-10-09 | Cisco Technology, Inc. | Key catalogs in a content centric network |
US10078062B2 (en) | 2015-12-15 | 2018-09-18 | Palo Alto Research Center Incorporated | Device health estimation by combining contextual information with sensor data |
US20170177613A1 (en) | 2015-12-22 | 2017-06-22 | Egnyte, Inc. | Event-Based User State Synchronization in a Cloud Storage System |
CN105577798B (zh) * | 2015-12-25 | 2019-03-05 | 北京奇虎科技有限公司 | 更新发布数据的方法及装置 |
US10257271B2 (en) | 2016-01-11 | 2019-04-09 | Cisco Technology, Inc. | Chandra-Toueg consensus in a content centric network |
US9949301B2 (en) | 2016-01-20 | 2018-04-17 | Palo Alto Research Center Incorporated | Methods for fast, secure and privacy-friendly internet connection discovery in wireless networks |
US10305864B2 (en) | 2016-01-25 | 2019-05-28 | Cisco Technology, Inc. | Method and system for interest encryption in a content centric network |
US10043016B2 (en) | 2016-02-29 | 2018-08-07 | Cisco Technology, Inc. | Method and system for name encryption agreement in a content centric network |
US10038633B2 (en) | 2016-03-04 | 2018-07-31 | Cisco Technology, Inc. | Protocol to query for historical network information in a content centric network |
US10051071B2 (en) | 2016-03-04 | 2018-08-14 | Cisco Technology, Inc. | Method and system for collecting historical network information in a content centric network |
US10742596B2 (en) | 2016-03-04 | 2020-08-11 | Cisco Technology, Inc. | Method and system for reducing a collision probability of hash-based names using a publisher identifier |
US10003507B2 (en) | 2016-03-04 | 2018-06-19 | Cisco Technology, Inc. | Transport session state protocol |
US9832116B2 (en) | 2016-03-14 | 2017-11-28 | Cisco Technology, Inc. | Adjusting entries in a forwarding information base in a content centric network |
US10212196B2 (en) | 2016-03-16 | 2019-02-19 | Cisco Technology, Inc. | Interface discovery and authentication in a name-based network |
US10067948B2 (en) | 2016-03-18 | 2018-09-04 | Cisco Technology, Inc. | Data deduping in content centric networking manifests |
US11436656B2 (en) | 2016-03-18 | 2022-09-06 | Palo Alto Research Center Incorporated | System and method for a real-time egocentric collaborative filter on large datasets |
US10091330B2 (en) | 2016-03-23 | 2018-10-02 | Cisco Technology, Inc. | Interest scheduling by an information and data framework in a content centric network |
US10033639B2 (en) | 2016-03-25 | 2018-07-24 | Cisco Technology, Inc. | System and method for routing packets in a content centric network using anonymous datagrams |
US10320760B2 (en) | 2016-04-01 | 2019-06-11 | Cisco Technology, Inc. | Method and system for mutating and caching content in a content centric network |
US9930146B2 (en) | 2016-04-04 | 2018-03-27 | Cisco Technology, Inc. | System and method for compressing content centric networking messages |
US10425503B2 (en) | 2016-04-07 | 2019-09-24 | Cisco Technology, Inc. | Shared pending interest table in a content centric network |
US10027578B2 (en) | 2016-04-11 | 2018-07-17 | Cisco Technology, Inc. | Method and system for routable prefix queries in a content centric network |
US10404450B2 (en) | 2016-05-02 | 2019-09-03 | Cisco Technology, Inc. | Schematized access control in a content centric network |
US10320675B2 (en) | 2016-05-04 | 2019-06-11 | Cisco Technology, Inc. | System and method for routing packets in a stateless content centric network |
US10547589B2 (en) | 2016-05-09 | 2020-01-28 | Cisco Technology, Inc. | System for implementing a small computer systems interface protocol over a content centric network |
US10084764B2 (en) | 2016-05-13 | 2018-09-25 | Cisco Technology, Inc. | System for a secure encryption proxy in a content centric network |
US10063414B2 (en) | 2016-05-13 | 2018-08-28 | Cisco Technology, Inc. | Updating a transport stack in a content centric network |
US10367879B2 (en) * | 2016-06-10 | 2019-07-30 | Apple Inc. | Download prioritization |
US10103989B2 (en) | 2016-06-13 | 2018-10-16 | Cisco Technology, Inc. | Content object return messages in a content centric network |
US10305865B2 (en) | 2016-06-21 | 2019-05-28 | Cisco Technology, Inc. | Permutation-based content encryption with manifests in a content centric network |
US10148572B2 (en) | 2016-06-27 | 2018-12-04 | Cisco Technology, Inc. | Method and system for interest groups in a content centric network |
US10009266B2 (en) | 2016-07-05 | 2018-06-26 | Cisco Technology, Inc. | Method and system for reference counted pending interest tables in a content centric network |
US9992097B2 (en) | 2016-07-11 | 2018-06-05 | Cisco Technology, Inc. | System and method for piggybacking routing information in interests in a content centric network |
US10122624B2 (en) | 2016-07-25 | 2018-11-06 | Cisco Technology, Inc. | System and method for ephemeral entries in a forwarding information base in a content centric network |
US10069729B2 (en) | 2016-08-08 | 2018-09-04 | Cisco Technology, Inc. | System and method for throttling traffic based on a forwarding information base in a content centric network |
US10956412B2 (en) | 2016-08-09 | 2021-03-23 | Cisco Technology, Inc. | Method and system for conjunctive normal form attribute matching in a content centric network |
US10033642B2 (en) | 2016-09-19 | 2018-07-24 | Cisco Technology, Inc. | System and method for making optimal routing decisions based on device-specific parameters in a content centric network |
US10212248B2 (en) | 2016-10-03 | 2019-02-19 | Cisco Technology, Inc. | Cache management on high availability routers in a content centric network |
US10447805B2 (en) | 2016-10-10 | 2019-10-15 | Cisco Technology, Inc. | Distributed consensus in a content centric network |
US10135948B2 (en) | 2016-10-31 | 2018-11-20 | Cisco Technology, Inc. | System and method for process migration in a content centric network |
US10243851B2 (en) | 2016-11-21 | 2019-03-26 | Cisco Technology, Inc. | System and method for forwarder connection information in a content centric network |
CN106973099B (zh) * | 2017-03-28 | 2019-08-06 | Oppo广东移动通信有限公司 | 一种数据更新方法、装置及*** |
US10614054B2 (en) | 2017-05-12 | 2020-04-07 | International Business Machines Corporation | Synchronizing data values by sending updates |
US10606820B2 (en) | 2017-05-12 | 2020-03-31 | International Business Machines Corporation | Synchronizing data values by requesting updates |
CN110309176B (zh) * | 2018-03-15 | 2024-04-05 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和数据中转站 |
US10956078B2 (en) | 2018-03-27 | 2021-03-23 | EMC IP Holding Company LLC | Storage system with loopback replication process providing object-dependent slice assignment |
US10866969B2 (en) * | 2018-03-28 | 2020-12-15 | EMC IP Holding Company LLC | Storage system with loopback replication process providing unique identifiers for collision-free object pairing |
CN108667906A (zh) * | 2018-04-12 | 2018-10-16 | 广东汇泰龙科技有限公司 | 一种基于门锁显示屏含历史记录管理*** |
CN110413684B (zh) * | 2018-04-25 | 2023-05-02 | 杭州海康存储科技有限公司 | 一种数据库同步方法、装置及*** |
CN110490636B (zh) * | 2019-07-15 | 2023-07-11 | 平安科技(深圳)有限公司 | 客户信息管理方法、装置、计算机可读存储介质及服务器 |
US11290531B2 (en) | 2019-12-04 | 2022-03-29 | Dropbox, Inc. | Immediate cloud content item creation from local file system interface |
CN111460014A (zh) * | 2020-03-02 | 2020-07-28 | 北京电信易通信息技术股份有限公司 | 一种基于警务数据库的第三方应用数据同步方法及*** |
CN111400679A (zh) * | 2020-03-12 | 2020-07-10 | 厦门区块链云科技有限公司 | 一种基于区块链的可信云存储方法及*** |
JP2021189569A (ja) * | 2020-05-26 | 2021-12-13 | 富士通株式会社 | データ更新プログラム、データ更新装置及びデータ更新方法 |
GB202110147D0 (en) | 2021-07-14 | 2021-08-25 | Graphcore Ltd | time deterministic trace |
GB202110155D0 (en) | 2021-07-14 | 2021-08-25 | Graphcore Ltd | GSP trace unit |
CN116881371B (zh) * | 2023-09-07 | 2023-11-14 | 北京逐风科技有限公司 | 数据同步方法、装置、设备及存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6564215B1 (en) * | 1999-12-16 | 2003-05-13 | International Business Machines Corporation | Update support in database content management |
JP3750504B2 (ja) * | 2000-08-09 | 2006-03-01 | セイコーエプソン株式会社 | データ更新方法および情報処理装置 |
AU2002303126A1 (en) * | 2001-03-16 | 2002-10-03 | Novell, Inc. | Client-server model for synchronization of files |
JP2004086800A (ja) * | 2002-08-29 | 2004-03-18 | Mitsubishi Electric Corp | データ同期システムおよびデータ同期方法 |
US20040044799A1 (en) | 2002-09-03 | 2004-03-04 | Nokia Corporation | Method, device and system for synchronizing of data providing for the handling of an interrupted synchronization process |
TWI231426B (en) * | 2002-09-03 | 2005-04-21 | Nokia Corp | Method, device and system for synchronizing of data providing for the handling of an interrupted synchronization process |
US7035879B2 (en) * | 2002-12-26 | 2006-04-25 | Hon Hai Precision Ind. Co., Ltd. | System and method for synchronizing data of wireless devices |
KR100547896B1 (ko) * | 2004-03-05 | 2006-01-31 | 삼성전자주식회사 | 데이터 동기화 시스템 및 서버와 클라이언트의 데이터동기화 방법 |
KR100739729B1 (ko) | 2005-09-03 | 2007-07-13 | 삼성전자주식회사 | 디지털 방송 네트워크에서 서버와 클라이언트 간 epg정보를 동기화시키기 위한 방법 및 장치 |
GB0625643D0 (en) | 2006-12-21 | 2007-01-31 | Symbian Software Ltd | Sync field filtering |
US7721003B2 (en) * | 2007-02-02 | 2010-05-18 | International Business Machines Corporation | System and method to synchronize OSGi bundle inventories between an OSGi bundle server and a client |
CN100464308C (zh) | 2007-04-20 | 2009-02-25 | 北京搜狗科技发展有限公司 | 一种用户词库同步更新的方法和*** |
-
2009
- 2009-09-04 JP JP2009204686A patent/JP5061166B2/ja not_active Expired - Fee Related
-
2010
- 2010-08-11 US US13/390,431 patent/US8775374B2/en active Active - Reinstated
- 2010-08-11 KR KR1020127007751A patent/KR101569562B1/ko active IP Right Grant
- 2010-08-11 EP EP10813605.2A patent/EP2474911B1/en not_active Not-in-force
- 2010-08-11 WO PCT/JP2010/063623 patent/WO2011027654A1/ja active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110691112A (zh) * | 2018-07-06 | 2020-01-14 | 优信拍(北京)信息科技有限公司 | 一种数据同步方法,装置及*** |
Also Published As
Publication number | Publication date |
---|---|
CN102483715A (zh) | 2012-05-30 |
US8775374B2 (en) | 2014-07-08 |
JP2011054092A (ja) | 2011-03-17 |
EP2474911A1 (en) | 2012-07-11 |
EP2474911A4 (en) | 2014-12-03 |
EP2474911B1 (en) | 2017-06-21 |
WO2011027654A1 (ja) | 2011-03-10 |
US20120179653A1 (en) | 2012-07-12 |
JP5061166B2 (ja) | 2012-10-31 |
KR101569562B1 (ko) | 2015-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101569562B1 (ko) | 데이터 동기 시스템 및 데이터 동기 방법 | |
CN104283956B (zh) | 强一致性分布式数据存储方法、装置及*** | |
CN110401724B (zh) | 文件管理方法、文件传输协议服务器及存储介质 | |
CN112035420B (zh) | 数据共享方法、共享设备和*** | |
CN107181686B (zh) | 路由表的同步方法、装置及*** | |
EP2378437A1 (en) | Data synchronization methods in communication systems | |
CN102096626A (zh) | 移动终端测试日志的处理方法和移动终端 | |
CN110968478A (zh) | 日志采集方法、服务器及计算机存储介质 | |
CN112632029B (zh) | 分布式存储***的数据管理方法、装置及设备 | |
CN110581784A (zh) | 一种节点健康检查方法、装置及设备 | |
CN113596187B (zh) | 域名配置管理*** | |
CN107451252A (zh) | 基于api的快速查询方法及其*** | |
CN112000850B (zh) | 进行数据处理的方法、装置、***及设备 | |
CN111147226B (zh) | 数据存储方法、装置及存储介质 | |
CN112291343B (zh) | 信息获取方法、装置及电子设备 | |
CN114584551A (zh) | 文件上传方法、电子设备及计算机程序产品 | |
CN114077587A (zh) | 基于规则引擎的业务处理方法、规则引擎、介质和设备 | |
KR101298852B1 (ko) | 파일 복원 방법 및 이를 위한 시스템 | |
JP5634178B2 (ja) | データ同期システムおよびデータ同期方法 | |
JP2000040025A (ja) | デ―タベ―ス管理装置、および、そのプログラムが記録された記録媒体 | |
US20070289016A1 (en) | Bi-modular system and method for detecting and removing harmful files using signature scanning | |
JPH11327989A (ja) | データベース管理装置、および、そのプログラムが記録された記録媒体 | |
US7228322B1 (en) | Data management apparatus of switching system | |
CN101562554A (zh) | 基于网络的搜索终端个人数据的方法、***及装置 | |
JPH11327987A (ja) | データベース管理装置、および、そのプログラムが記録された記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20181018 Year of fee payment: 4 |