KR20120049375A - 데이터 동기 시스템 및 데이터 동기 방법 - Google Patents

데이터 동기 시스템 및 데이터 동기 방법 Download PDF

Info

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
Application number
KR1020127007751A
Other languages
English (en)
Other versions
KR101569562B1 (ko
Inventor
요시아키 아라키
스스무 이시즈카
Original Assignee
키이 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 키이 가부시키가이샤 filed Critical 키이 가부시키가이샤
Publication of KR20120049375A publication Critical patent/KR20120049375A/ko
Application granted granted Critical
Publication of KR101569562B1 publication Critical patent/KR101569562B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2053Error 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/2056Error 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/2082Data synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details 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)에 등록한다.

Description

데이터 동기 시스템 및 데이터 동기 방법{DATA SYNCHRONIZATION SYSTEM AND DATA SYNCHRONIZATION METHOD}
본 발명은, 데이터 동기 시스템 및 데이터 동기 방법에 관한 것이다.
휴대전화 등의 클라이언트가 서버와의 사이에서 데이터를 동기하는 것이 행해지고 있다. 클라이언트는 정기적으로 변경된 데이터의 유무를 조회하여, 갱신된 데이터가 있는 경우에는 그 데이터를 다운로드한다. 종래, 서버는 변경 이력을 남기는 것에 의해, 데이터의 변경의 유무를 관리하고 있었다. 예컨대 특허문헌 1에서는 제2 데이터베이스의 갱신 이력을 보존하여, 갱신 이력의 건 수가 임계값보다 클 때에 동기를 시작함으로써, 한번의 데이터 동기로 대량의 정보가 송수신되지 않도록 하고 있다.
특허문헌 1: 일본 특허 공개 제2004-86800호 공보
그러나, 휴대전화 등의 클라이언트가 항상 서버와 통신 가능하게 되어 있다고는 한정하지 않아, 서버와 클라이언트 사이의 통신이 불능인 시간이 긴 경우에는, 가능하게 될 때까지의 사이의 모든 변경 이력을 기억해 두어야 하고, 또한 서버가 복수의 클라이언트와 통신을 행하는 경우에는, 클라이언트마다 어디까지를 동기한 것인지 관리해 두어야 했다.
본 발명은, 이러한 배경을 감안하여 이루어진 것으로, 클라이언트와 서버 사이에서 데이터를 동기하는 경우에, 서버의 부하를 저감할 수 있는 데이터 동기 시스템 및 데이터 동기 방법을 제공하는 것을 목적으로 한다.
상기 과제를 해결하기 위한 본 발명의 주된 발명은, 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 시스템으로서, 상기 서버는, 갱신 시점을 포함하는 데이터를 기억하는 제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)에 대응하는 처리의 흐름을 도시하는 도면이다.
==전체 구성==
도 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. 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 시스템으로서,
    상기 서버는, 갱신 시점을 포함하는 데이터를 기억하는 제1 데이터베이스에 액세스 가능하고,
    상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하고,
    상기 클라이언트는, 상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하는 앵커 시점 기억부와, 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하는 동기 요구 송신부를 구비하고,
    상기 서버는, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 상기 데이터인 갱신 데이터를 상기 제1 데이터베이스로부터 검색하며, 상기 각 갱신 데이터에 대해서 상기 갱신 데이터를 나타내는 데이터 ID 및 상기 갱신 데이터의 상기 갱신 시점을 포함하는 변경 정보를 생성하는 변경 정보 취득부와, 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하는 동기 정보 송신부를 구비하고,
    상기 클라이언트는, 상기 변경 정보에 대응하는 상기 데이터 중, 다운로드해야하는 것인 취득 데이터를 결정하는 다운로드 결정부와, 상기 취득 데이터를 나타내는 데이터 ID를 포함하는 다운로드 요구를 상기 서버에 송신하는 다운로드 요구 송신부를 구비하고,
    상기 서버는, 상기 다운로드 요구에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하는 데이터 취득부와, 상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하는 다운로드 정보 송신부를 구비하고,
    상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 갱신 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템.
  2. 제1항에 있어서, 상기 다운로드 결정부는, 상기 각 변경 정보에 대해서, 상기 변경 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터에 포함되는 상기 갱신 시점을 상기 제2 데이터베이스로부터 취득하고, 상기 제2 데이터베이스로부터 취득한 상기 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 오래된 경우에는, 그 데이터를 다운로드하는 것을 결정하고, 상기 제2 데이터베이스로부터 취득한 상기 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 새로운 경우에는, 사용자로부터의 설정에 따라, 그 데이터를 다운로드할지의 여부를 결정하는 것을 특징으로 하는 데이터 동기 시스템.
  3. 제1항에 있어서, 상기 서버는, 상기 제1 데이터베이스로부터 삭제된 상기 데이터를 나타내는 상기 데이터 ID 및 삭제 시점을 포함하는 변경 이력을 기억하는 서버 변경 이력 기억부와, 상기 동기 요구에 포함되는 상기 앵커 시점보다 뒤의 상기 삭제 시점을 포함하는 상기 변경 이력을 상기 서버 변경 이력 기억부로부터 취득하는 변경 이력 취득부를 구비하고,
    상기 동기 정보 송신부는, 상기 변경 이력 취득부가 취득한 상기 변경 이력을 상기 동기 정보에 더 포함하고,
    상기 클라이언트는, 상기 동기 정보에 포함되는 상기 변경 이력에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템.
  4. 제1항에 있어서, 상기 서버는, 상기 제1 데이터베이스로부터 삭제된 데이터에 대해서, 상기 삭제된 데이터를 나타내는 데이터 ID 및 삭제 시점을 포함하는 변경 이력을, 상기 삭제 시점이 새로운 순으로 정해진 수만큼 기억하는 서버 변경 이력 기억부를 구비하고,
    상기 변경 정보 취득부는, 상기 앵커 시점보다 뒤의 상기 삭제 시점을 포함하는 상기 변경 이력을 상기 서버 변경 이력 기억부로부터 취득하고,
    상기 동기 정보 송신부는, 상기 변경 정보에 추가로, 상기 서버 변경 이력 기억부가 기억하고 있는 상기 변경 이력에 포함되는 가장 오래된 상기 삭제 시점인 바운더리 시점, 및 상기 취득한 변경 이력을 상기 동기 정보에 포함하여 상기 클라이언트에 송신하고,
    상기 클라이언트는,
    상기 동기 정보에 포함되는 상기 변경 이력에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부와,
    상기 앵커 시점이 상기 바운더리 시점보다 앞인 경우에, 상기 제2 데이터베이스에 기억되어 있는 상기 데이터 중, 상기 데이터의 상기 갱신 시점이 상기 바운더리 시점보다 앞이며, 상기 데이터를 나타내는 데이터 ID를 포함하는 상기 변경 정보가 상기 동기 정보에 포함되어 있지 않은 것을 검색하고, 상기 검색된 각 데이터에 대해서 상기 데이터를 나타내는 데이터 ID 및 상기 데이터의 상기 갱신 시점을 포함하는 진부화(陳腐化) 정보를 생성하는 진부화 정보 취득부
    를 구비하고,
    상기 다운로드 요구 송신부는, 상기 취득 데이터의 ID에 추가로, 상기 진부화 정보를 상기 다운로드 요구에 포함하여 상기 서버에 송신하고,
    상기 데이터 취득부는 또한, 상기 다운로드 요구에 포함되는 상기 각 진부화 정보에 대해서, 상기 진부화 정보에 대응하는 상기 데이터가 상기 제1 데이터베이스에 기억되어 있는지의 여부를 판정하고, 상기 제1 데이터베이스에 기억되어 있지 않는 것으로 판정된 상기 데이터를 나타내는 상기 데이터 ID를, 삭제된 데이터를 나타내는 삭제 ID로 하여 상기 다운로드 정보에 포함하고,
    상기 삭제 처리부는, 상기 다운로드 정보에 포함되는 상기 삭제 ID에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 것을 특징으로 하는 데이터 동기 시스템.
  5. 제1항에 있어서, 상기 클라이언트는, 상기 동기 정보에 포함되어 있는 상기 각 변경 정보에 대해서, 상기 변경 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터의 상기 갱신 시점을 상기 제2 데이터베이스로부터 판독하고, 상기 판독된 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 새로운 경우에, 상기 데이터 ID에 대응하는 상기 데이터를 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하는 충돌 해소부를 구비하고,
    상기 다운로드 요구 송신부는, 상기 충돌 해소부가 다운로드하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하고,
    상기 클라이언트는, 상기 충돌 해소부가 업로드하는 것으로 결정한 상기 데이터를 상기 제2 데이터베이스로부터 판독하여, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하는 해소 요구 송신부를 구비하고,
    상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하는 해소 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템.
  6. 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 시스템으로서,
    상기 서버는, 데이터에 갱신 시점을 부대시켜 기억하는 제1 데이터베이스에 액세스 가능하고, 상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하고,
    상기 서버는, 상기 제1 데이터베이스에 대한 데이터의 변경 이력을 새로운 순으로 정해진 수만큼 기억하는 서버 변경 이력 기억부를 구비하고,
    상기 서버 변경 이력 기억부가 기억하는 상기 변경 이력인 서버 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 데이터 ID와, 그 데이터에 부대되어 있는 상기 갱신 시점을 포함하고,
    상기 클라이언트는,
    상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하는 앵커 기억부와,
    상기 데이터를 취득하기 위한 조건 및 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하는 동기 요구 송신부와,
    상기 서버는,
    상기 서버 변경 이력 기억부로부터, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터에 대응하는 상기 서버 변경 이력 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 것을 취득하는 변경 이력 취득부와,
    상기 제1 데이터베이스로부터, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤이며, 상기 서버 변경 이력 기억부에 기억되어 있는 가장 오래된 상기 갱신 시점인 바운더리 시점보다 앞인 것을 검색하고, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 변경 정보를 생성하는 변경 정보 취득부와,
    상기 바운더리 시점, 상기 취득된 서버 변경 이력, 및 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하는 동기 정보 송신부
    를 구비하고,
    상기 클라이언트는,
    상기 동기 정보에 포함되는 상기 서버 변경 이력 또는 상기 변경 정보에 대응하는 상기 데이터로부터 다운로드해야 하는 것을 결정하는 다운로드 결정부와,
    상기 제2 데이터베이스로부터, 상기 조건에 매치하는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점부터 상기 바운더리 시점까지의 사이인 것을 검색하고, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 진부화 정보를 생성하는 진부화 정보 취득부와,
    결정된 상기 데이터를 나타내는 취득 데이터 ID 및 상기 진부화 정보를 포함하는 다운로드 요구를 상기 서버에 송신하는 다운로드 요구 송신부
    를 구비하고,
    상기 서버는,
    상기 다운로드 요구에 포함되는 상기 진부화 정보에 대응하는 상기 데이터 중, 상기 갱신 시점이 상기 진부화 정보에 포함되는 상기 갱신 시점보다 새로운 것과, 상기 취득 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하는 데이터 취득부와,
    상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하는 다운로드 정보 송신부
    를 구비하고,
    상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 갱신 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템.
  7. 제6항에 있어서, 상기 서버 변경 이력에는, 데이터의 변경이 데이터의 추가, 갱신 또는 삭제 중 어느 것인지를 나타내는 변경 종별 정보가 더 포함되고,
    상기 클라이언트는, 상기 동기 정보의 수신에 따라, 상기 동기 정보에 포함되는 상기 서버 변경 이력 중, 상기 변경 종별 정보가 삭제를 나타내는 것에 대해서, 상기 서버 변경 이력에 포함되는 상기 데이터 ID가 나타내는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템.
  8. 제6항에 있어서, 상기 데이터 취득부는, 상기 다운로드 요구에 포함되는 상기 진부화 정보 중, 상기 진부화 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터가 상기 제1 데이터베이스에 등록되어 있지 않는 것에 대해서, 상기 진부화 정보에 포함되는 상기 데이터 ID를 포함하는 삭제 정보를 상기 다운로드 정보에 설정하고,
    상기 클라이언트는, 상기 다운로드 정보에 상기 삭제 정보가 포함되어 있는 경우에, 상기 삭제 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제2 데이터베이스로부터 삭제하는 삭제 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템.
  9. 제6항에 있어서, 상기 데이터에는, 상기 데이터의 내용에 기초하여 생성되는, 상기 조건에 상기 데이터가 매치하는지의 여부를 판정하기 위한 정보인 칼럼이 더 부대되고,
    상기 서버 변경 이력에는, 데이터의 변경이 데이터의 추가, 갱신 또는 삭제 중 어느 것이었는지를 나타내는 변경 종별 정보와, 상기 데이터에 부대되는 상기 칼럼이 더 포함되고,
    상기 변경 이력 취득부는, 상기 서버 변경 이력 중, 상기 칼럼이 상기 동기 요구에 포함되는 상기 조건에 매치하면서, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 것을 취득하고,
    상기 변경 정보 취득부는, 상기 제1 데이터베이스에 기억되어 있는 상기 데이터 중, 상기 데이터에 부대되는 상기 칼럼이 상기 동기 요구에 포함되는 상기 조건에 매치하고, 상기 갱신 시점이 상기 앵커 시점보다 뒤이면서, 상기 바운더리 시점보다 앞인 것을 검색하여, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID, 상기 데이터에 부대되는 상기 갱신 시점, 및 상기 데이터에 포함되는 상기 칼럼을 상기 변경 정보에 설정하고,
    상기 진부화 정보 취득부는, 상기 제2 데이터베이스에 기억되는 데이터 중, 상기 칼럼이 상기 조건에 매치하면서, 상기 갱신 시점이 상기 앵커 시점부터 상기 바운더리 시점까지의 사이인 것을 검색하는 것을 특징으로 하는 데이터 동기 시스템.
  10. 제6항에 있어서, 상기 데이터에는, 상기 데이터의 내용에 기초하여 생성되는, 상기 클라이언트에 있어서 상기 데이터를 다운로드할지의 여부를 결정하기 위한 정보인 힌트가 더 부대되고,
    상기 서버 변경 이력에는, 데이터의 변경이 데이터의 추가, 갱신 또는 삭제 중 어느 것이었는지를 나타내는 변경 종별 정보와, 상기 데이터의 부대되는 상기 힌트가 더 포함되고,
    상기 변경 정보 취득부는, 상기 검색된 각 데이터에 대해서, 상기 데이터에 부대되는 상기 힌트를 상기 변경 정보에 더 포함하고,
    상기 다운로드 결정부는, 상기 서버 변경 이력 또는 상기 변경 정보에 포함되는 상기 힌트에 기초하여 상기 다운로드해야 하는 데이터를 결정하는 것을 특징으로 하는 데이터 동기 시스템.
  11. 제10항에 있어서, 상기 다운로드 결정부는, 상기 서버 변경 이력 또는 상기 변경 정보에 포함되는 상기 힌트를 출력하고, 사용자가 선택한 상기 출력된 힌트에 대응하는 상기 데이터를, 상기 다운로드해야 하는 데이터로서 결정하는 것을 특징으로 하는 데이터 동기 시스템.
  12. 제6항에 있어서, 상기 데이터에는 상기 갱신 시점이 부대되고,
    상기 서버는, 상기 제1 데이터베이스에 대한 조작이 행해질 때마다 커지는 수치를 상기 갱신 시점으로서 생성하는 시점 생성부를 구비하고,
    상기 제1 데이터베이스에 기록될 때에, 상기 데이터에는 상기 시점 생성부가 생성한 상기 갱신 시점이 부대되는 것을 특징으로 하는 데이터 동기 시스템.
  13. 제6항에 있어서, 상기 데이터에는 상기 갱신 시점이 부대되고,
    상기 서버는, 상기 제1 데이터베이스에 대한 조작이 행해질 때에, 상기 서버에서의 타임스탬프를 취득하며, 상기 취득된 타임스탬프에, 상기 데이터의 식별 정보를 연결한 값을 상기 갱신 시점으로서 생성하는 시점 생성부를 구비하고,
    상기 제1 데이터베이스에 기록될 때에, 상기 데이터에는 상기 시점 생성부가 생성한 상기 갱신 시점이 부대되는 것을 특징으로 하는 데이터 동기 시스템.
  14. 제6항에 있어서, 상기 클라이언트는, 상기 제2 데이터베이스에서의 데이터의 변경 이력을 기억하는 클라이언트 변경 이력 기억부를 구비하고,
    상기 클라이언트 변경 이력 기억부가 기억하는 상기 변경 이력인 클라이언트 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 상기 데이터 ID와, 상기 데이터에 부대되어 있는 상기 갱신 시점을 포함하고,
    상기 동기 요구 송신부는, 상기 조건에 매치하는 상기 데이터에 대응하는 상기 클라이언트 변경 이력을 상기 클라이언트 변경 이력 기억부로부터 취득하고, 상기 취득된 클라이언트 변경 이력을 상기 동기 요구에 설정하여 상기 서버에 송신하고,
    상기 서버는, 상기 동기 요구에 포함되는 상기 클라이언트 변경 이력의 각각에 대해서, 상기 클라이언트 변경 이력에 포함되는 상기 데이터 ID에 대응하는, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되어 있는 상기 갱신 시점이, 상기 클라이언트 변경 이력에 포함되어 있는 상기 갱신 시점보다 뒤인 경우, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되는 상기 갱신 시점 및 상기 데이터 ID를 포함하는 충돌 정보를 생성하는 충돌 검지부를 구비하고,
    상기 동기 정보 송신부는, 상기 충돌 정보를 더 포함하는 상기 동기 정보를 상기 클라이언트에 송신하고,
    상기 클라이언트는, 상기 충돌 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를, 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하는 충돌 해소부를 구비하고,
    상기 다운로드 요구 송신부는, 상기 충돌 해소부가 다운로드하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하고,
    상기 클라이언트는, 상기 충돌 해소부가 업로드하는 것으로 결정한 상기 데이터를 상기 제2 데이터베이스로부터 판독하고, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하는 해소 요구 송신부를 구비하고,
    상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하는 해소 처리부를 구비하는 것을 특징으로 하는 데이터 동기 시스템.
  15. 제14항에 있어서, 상기 데이터에는, 상기 데이터에 정해진 알고리즘을 적용하여 구할 수 있는 데이터인 키가 더 부대되고,
    상기 서버 변경 이력 및 상기 클라이언트 변경 이력에는 각각 상기 키가 포함되고,
    상기 서버는, 상기 제1 데이터베이스에 기억되어 있는 상기 데이터 중, 상기 키가 상기 동기 요구에 포함되는 상기 클라이언트 변경 이력 중 어느 하나에 포함되는 상기 키와 일치하는 것을 검색하고, 상기 검색된 데이터를 나타내는 상기 데이터 ID를 포함하는 중복 정보를 생성하는 중복 검지부를 구비하고,
    상기 동기 정보 송신부는, 상기 중복 정보를 더 포함하는 상기 동기 정보를 상기 클라이언트에 송신하고,
    상기 클라이언트는, 상기 중복 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터 중, 삭제해야 하는 것을 결정하는 중복 해소부를 구비하고,
    상기 해소 요구 송신부는, 상기 중복 해소부가 삭제해야 하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 포함하는 해소 정보를 상기 해소 요구에 더 포함하여 상기 서버에 송신하고,
    상기 해소 처리부는 또한, 상기 해소 요구에 포함되는 상기 해소 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 삭제하는 것을 특징으로 하는 데이터 동기 시스템.
  16. 제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 등록부를 구비하는 것을 특징으로 하는 데이터 동기 시스템.
  17. 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 방법으로서,
    상기 서버는, 갱신 시점을 포함하는 데이터를 기억하는 제1 데이터베이스에 액세스 가능하고, 상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하고,
    상기 클라이언트는, 상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하고, 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하고,
    상기 서버는, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 상기 데이터인 갱신 데이터를 상기 제1 데이터베이스로부터 검색하고, 상기 각 갱신 데이터에 대해서 상기 갱신 데이터를 나타내는 데이터 ID 및 상기 갱신 데이터의 상기 갱신 시점을 포함하는 변경 정보를 생성하며, 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하고,
    상기 클라이언트는, 상기 변경 정보에 대응하는 상기 데이터 중, 다운로드해야 하는 것인 취득 데이터를 결정하여, 상기 취득 데이터를 나타내는 데이터 ID를 포함하는 다운로드 요구를 상기 서버에 송신하고,
    상기 서버는, 상기 다운로드 요구에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하여, 상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하고,
    상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 것을 특징으로 하는 데이터 동기 방법.
  18. 제17항에 있어서, 상기 클라이언트는, 상기 동기 정보에 포함되어 있는 상기 각 변경 정보에 대해서, 상기 변경 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터의 상기 갱신 시점을 상기 제2 데이터베이스로부터 판독하여, 상기 판독된 갱신 시점이 상기 변경 정보에 포함되는 상기 갱신 시점보다 새로운 경우에, 상기 데이터 ID에 대응하는 상기 데이터를 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하고,
    상기 클라이언트는, 다운로드하는 것으로 결정한 상기 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하고,
    상기 클라이언트는, 업로드하는 것으로 결정된 상기 데이터를 상기 제2 데이터베이스로부터 판독하여, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하고,
    상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하는 것을 특징으로 하는 데이터 동기 방법.
  19. 서버와, 상기 서버에 통신 가능하게 접속되는 클라이언트 사이에서 데이터를 동기하는 방법으로서,
    상기 서버는, 데이터에 갱신 시점을 부대시켜 기억하는 제1 데이터베이스에 액세스 가능하고, 상기 클라이언트는, 상기 서버로부터 취득한 데이터를 기억하는 제2 데이터베이스에 액세스 가능하고,
    상기 서버는, 상기 제1 데이터베이스에 대한 데이터의 변경 이력을 새로운 순으로 정해진 수만큼 기억하고 있고,
    상기 서버가 기억하는 상기 변경 이력인 서버 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 데이터 ID와, 그 데이터에 부대되어 있는 상기 갱신 시점을 포함하고,
    상기 클라이언트는, 상기 서버로부터 최후에 상기 데이터를 취득한 시점인 앵커 시점을 기억하고,
    상기 클라이언트는, 상기 데이터를 취득하기 위한 조건 및 상기 앵커 시점을 포함하는 동기 요구를 상기 서버에 송신하고,
    상기 서버는, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터에 대응하는 상기 서버 변경 이력 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤인 것을 취득하고,
    상기 서버는, 상기 제1 데이터베이스로부터, 상기 동기 요구에 포함되는 상기 조건에 매치하는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점보다 뒤이면서, 상기 서버가 기억하고 있는 상기 서버 변경 이력의 상기 갱신 시점 중 가장 오래된 것인 바운더리 시점보다 앞인 상기 데이터를 검색하여, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 변경 정보를 생성하고,
    상기 서버는, 상기 바운더리 시점, 상기 취득된 서버 변경 이력, 및 상기 변경 정보를 포함하는 동기 정보를 상기 클라이언트에 송신하고,
    상기 클라이언트는, 상기 동기 정보에 포함되는 상기 서버 변경 이력 또는 상기 변경 정보에 대응하는 상기 데이터로부터 다운로드해야 하는 것을 결정하고,
    상기 클라이언트는, 상기 제2 데이터베이스로부터, 상기 조건에 매치되는 상기 데이터 중, 상기 갱신 시점이 상기 앵커 시점부터 상기 바운더리 시점까지의 사이인 것을 검색하고, 상기 검색된 각 데이터에 대해서, 상기 데이터를 나타내는 상기 데이터 ID 및 상기 데이터에 부대되는 상기 갱신 시점을 포함하는 진부화 정보를 생성하고,
    상기 클라이언트는, 결정된 상기 데이터를 나타내는 취득 데이터 ID 및 상기 진부화 정보를 포함하는 다운로드 요구를 상기 서버에 송신하고,
    상기 서버는, 상기 다운로드 요구에 포함되는 상기 진부화 정보에 대응하는 상기 데이터 중, 상기 갱신 시점이 상기 진부화 정보에 포함되는 상기 갱신 시점보다 새로운 것과, 상기 취득 데이터 ID에 대응하는 상기 데이터를 상기 제1 데이터베이스로부터 취득하고,
    상기 서버는, 상기 취득된 데이터를 포함하는 다운로드 정보를 상기 클라이언트에 송신하고,
    상기 클라이언트는, 상기 다운로드 정보에 포함되는 상기 데이터를 상기 제2 데이터베이스에 등록하는 것을 특징으로 하는 데이터 동기 방법.
  20. 제19항에 있어서, 상기 클라이언트는, 상기 제2 데이터베이스에서의 데이터의 변경 이력을 기억하고 있고,
    상기 클라이언트가 기억하는 상기 변경 이력인 클라이언트 변경 이력은, 변경의 대상이 된 상기 데이터를 나타내는 상기 데이터 ID와, 상기 데이터에 부대되어 있는 상기 갱신 시점을 포함하고,
    상기 클라이언트는, 상기 조건에 매치되는 상기 데이터에 대응하는 상기 클라이언트 변경 이력을 취득하고, 상기 취득된 클라이언트 변경 이력을 상기 동기 요구에 설정하여 상기 서버에 송신하고,
    상기 서버는, 상기 동기 요구에 포함되는 상기 클라이언트 변경 이력의 각각에 대해서, 상기 클라이언트 변경 이력에 포함되는 상기 데이터 ID에 대응하는, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되어 있는 상기 갱신 시점이, 상기 클라이언트 변경 이력에 포함되어 있는 상기 갱신 시점보다 뒤인 경우, 상기 제1 데이터베이스가 기억하는 상기 데이터에 부대되는 상기 갱신 시점 및 상기 데이터 ID를 포함하는 충돌 정보를 생성하고,
    상기 서버는, 상기 충돌 정보를 더 포함하는 상기 동기 정보를 상기 클라이언트에 송신하고,
    상기 클라이언트는, 상기 충돌 정보에 포함되는 상기 데이터 ID에 대응하는 상기 데이터를, 상기 서버에 업로드할지 상기 서버로부터 다운로드할지를 결정하고,
    상기 클라이언트는, 상기 다운로드하는 것으로 결정된 데이터를 나타내는 상기 데이터 ID를 더 포함하는 상기 다운로드 요구를 상기 서버에 송신하고,
    상기 클라이언트는, 상기 업로드하는 것으로 결정된 데이터를 상기 제2 데이터베이스로부터 판독하여, 판독된 상기 데이터를 포함하는 해소 요구를 상기 서버에 송신하고,
    상기 서버는, 상기 해소 요구에 포함되어 있는 상기 데이터를 상기 제1 데이터베이스에 등록하는 것을 특징으로 하는 데이터 동기 방법.
KR1020127007751A 2009-09-04 2010-08-11 데이터 동기 시스템 및 데이터 동기 방법 KR101569562B1 (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110691112A (zh) * 2018-07-06 2020-01-14 优信拍(北京)信息科技有限公司 一种数据同步方法,装置及***

Families Citing this family (192)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 北京搜狗科技发展有限公司 一种用户词库同步更新的方法和***

Cited By (1)

* Cited by examiner, † Cited by third party
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