KR102133925B1 - Method and system for minimizing data synchronization traffic - Google Patents

Method and system for minimizing data synchronization traffic Download PDF

Info

Publication number
KR102133925B1
KR102133925B1 KR1020180088662A KR20180088662A KR102133925B1 KR 102133925 B1 KR102133925 B1 KR 102133925B1 KR 1020180088662 A KR1020180088662 A KR 1020180088662A KR 20180088662 A KR20180088662 A KR 20180088662A KR 102133925 B1 KR102133925 B1 KR 102133925B1
Authority
KR
South Korea
Prior art keywords
data type
data
client
server
data synchronization
Prior art date
Application number
KR1020180088662A
Other languages
Korean (ko)
Other versions
KR20200013448A (en
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 네이버 주식회사
Priority to KR1020180088662A priority Critical patent/KR102133925B1/en
Publication of KR20200013448A publication Critical patent/KR20200013448A/en
Application granted granted Critical
Publication of KR102133925B1 publication Critical patent/KR102133925B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • H04L67/26
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

멀티 디바이스 환경에서 데이터 타입을 공유하는 복수의 클라이언트를 대상으로 데이터 타입의 오퍼레이션을 기반으로 데이터 동기화를 수행하는 과정에서 데이터 타입에 대해 누적된 오퍼레이션들을 병합하여 병합 오퍼레이션을 클라이언트로 전송함으로써 데이터 동기화를 위한 네트워크 트래픽을 줄일 수 있다.In the process of performing data synchronization based on the operation of the data type for a plurality of clients sharing the data type in a multi-device environment, the accumulated operations for the data type are merged and the merge operation is transmitted to the client for data synchronization. Reduce network traffic.

Description

데이터 동기화 트래픽을 최소화하기 위한 방법 및 시스템{METHOD AND SYSTEM FOR MINIMIZING DATA SYNCHRONIZATION TRAFFIC}Method and system for minimizing data synchronization traffic{METHOD AND SYSTEM FOR MINIMIZING DATA SYNCHRONIZATION TRAFFIC}

아래의 설명은 멀티 디바이스의 데이터 동기화를 위한 기술에 관한 것이다.The following description relates to a technique for data synchronization of multiple devices.

모바일 및 IoT 장치가 널리 보급됨에 따라, 서버 측의 데이터베이스와의 빈번한 데이터 동기화 작업이 필수적이다. 데이터 동기화는 어플리케이션의 품질에 있어 중요하며, 클라이언트뿐만 아니라 서버에서도 많은 코드 라인을 필요로 한다.With the widespread use of mobile and IoT devices, frequent data synchronization with a server-side database is essential. Data synchronization is important to the quality of the application and requires a lot of code lines on the server as well as on the client.

예컨대, 한국등록특허 제10-1140603호(등록일 2012년 04월 20일)에는 클라이언트의 데이터베이스와 서버의 데이터베이스 간의 데이터 동기화를 수행하는 기술이 개시되어 있다.For example, Korean Patent Registration No. 10-1140603 (registration date April 20, 2012) discloses a technique for performing data synchronization between a client database and a server database.

데이터베이스와 같은 전통적인 시스템은 대용량의 데이터를 서버 측에 저장하고 클라이언트 측에서 쿼링(querying)하는데 주로 초점을 맞추기 때문에 멀티 디바이스의 데이터 동기화에 적절한 솔루션은 아니다.Traditional systems, such as databases, are not a suitable solution for data synchronization across multiple devices because they focus primarily on storing large amounts of data on the server side and querying on the client side.

멀티 디바이스의 데이터 동기화를 목적으로 데이터베이스와 같은 데이터 시스템을 이용한다면 어플리케이션이나 서비스 개발자들이 주기적으로 서버에서 값을 읽어와서 로컬의 변경 사항과 비교하여 상충(conflict) 문제를 직접 관리해야 한다.If a data system such as a database is used for data synchronization of multi-devices, application or service developers must periodically read the values from the server and compare them with local changes to manage conflict problems directly.

만약 서버에 변경된 사항이 있을 때마다 읽어오지 못하는 경우 여러 클라이언트의 변경 사항을 모두 고려하거나 또는 클라이언트가 어떤 오퍼레이션(operation)을 했는지 알 수 없어서 원하는 대로 동기화 되기 어렵다.If the server fails to read each time there is a change, it is difficult to synchronize as desired because it is not possible to consider all the changes of multiple clients or what operations the client has performed.

클라이언트(client)와 서버(server) 간에 데이터 타입(data type)의 오퍼레이션(operation)을 기반으로 데이터 동기화를 수행하는 과정에서 서버에서 클라이언트로 데이터 타입의 변경 사항(difference)을 전송할 때 변경 사항의 전송량을 줄일 수 있는 방법 및 시스템을 제공한다.The amount of data transfer when the data type changes are transmitted from the server to the client in the process of performing data synchronization based on the operation of the data type between the client and the server. It provides a method and system to reduce the.

컴퓨터로 구현되는 서버에서의 데이터 동기화 방법에 있어서, 멀티 디바이스 환경에서 데이터 타입(data type)을 공유하는 복수의 클라이언트에 대해 상기 데이터 타입의 오퍼레이션(operation)을 기반으로 데이터 동기화를 수행하는 단계를 포함하고, 상기 데이터 동기화를 수행하는 단계는, 상기 데이터 타입에 대해 누적된 오퍼레이션들을 병합하여 병합 오퍼레이션(merged operation)을 상기 클라이언트로 전송하는 단계를 포함하는 데이터 동기화 방법을 제공한다.A method for synchronizing data in a computer-implemented server, the method comprising performing data synchronization based on an operation of the data type for a plurality of clients sharing a data type in a multi-device environment. And, the step of performing the data synchronization provides a data synchronization method comprising merging operations accumulated for the data type and transmitting a merge operation to the client.

일 측면에 따르면, 상기 전송하는 단계는, 상기 누적된 오퍼레이션들을 상기 데이터 타입의 최종 변화 값을 나타내는 하나의 오퍼레이션으로 병합하여 상기 클라이언트로 전송할 수 있다.According to one aspect, the step of transmitting may merge the accumulated operations into one operation representing a final change value of the data type and transmit it to the client.

다른 측면에 따르면, 상기 전송하는 단계는, 상기 데이터 타입에 대응되는 병합 방식으로 상기 누적된 오퍼레이션들을 병합하여 상기 클라이언트로 전송할 수 있다.According to another aspect, in the transmitting, the accumulated operations may be merged and transmitted to the client in a merging manner corresponding to the data type.

또 다른 측면에 따르면, 상기 전송하는 단계는, 상기 데이터 타입에 대해 변경된 값들을 합산한 결과 값을 상기 병합 오퍼레이션으로 생성하여 상기 클라이언트로 전송할 수 있다.According to another aspect, the transmitting step may generate a result of summing the changed values for the data type as the merge operation and transmit it to the client.

또 다른 측면에 따르면, 상기 전송하는 단계는, 상기 데이터 타입에 대해 상기 누적된 오퍼레이션들을 데이터 타입의 내용이 빈 것으로 간주되어 데이터 타입이 오퍼레이션을 실행하는 규칙에 따라 실행하고 실행 결과를 상기 병합 오퍼레이션으로 생성하여 상기 클라이언트로 전송할 수 있다.According to another aspect, in the transmitting, the accumulated operations for the data type are regarded as empty in the content of the data type, and the data type is executed according to a rule that executes the operation, and the execution result is the merge operation. It can be generated and sent to the client.

또 다른 측면에 따르면, 상기 병합 오퍼레이션은 상기 데이터 타입의 각 요소 별로 구분되어 생성될 수 있다.According to another aspect, the merge operation may be generated separately for each element of the data type.

또 다른 측면에 따르면, 상기 병합 오퍼레이션은 상기 클라이언트에서 상기 데이터 타입의 기존 상태에 실행될 수 있다.According to another aspect, the merge operation may be performed on the client in an existing state of the data type.

또 다른 측면에 따르면, 상기 데이터 동기화를 수행하는 단계는, 상기 복수의 클라이언트 중 적어도 하나의 클라이언트에서 상기 데이터 타입에 대해 생성된 오퍼레이션을 푸시(push)하면 상기 푸시된 오퍼레이션을 풀(pull)하여 상기 복수의 클라이언트가 같은 데이터 타입의 상태를 유지하도록 해당 데이터 타입을 상기 풀된 오퍼레이션과 동기화하는 단계를 포함할 수 있다.According to another aspect, in the step of performing the data synchronization, when the operation generated for the data type is pushed by at least one client among the plurality of clients, the pushed operation is pulled to perform the data synchronization. And synchronizing the data type with the pulled operation so that a plurality of clients maintain the state of the same data type.

또 다른 측면에 따르면, 상기 데이터 동기화를 수행하는 단계는, 상기 데이터 타입의 오퍼레이션을 오퍼레이션 생성에 따른 논리적인 시간과 함께 물리적인 시간을 반영하여 관리하는 단계를 포함할 수 있다.According to another aspect, the step of performing the data synchronization may include managing the operation of the data type by reflecting a physical time together with a logical time according to operation creation.

상기 데이터 동기화 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 비-일시적인 컴퓨터 판독가능한 기록 매체를 제공한다.A non-transitory computer readable recording medium in which a program for executing the data synchronization method is recorded on a computer is provided.

컴퓨터로 구현되는 서버의 데이터 동기화 시스템에 있어서, 메모리; 및 상기 메모리와 연결되고, 상기 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 멀티 디바이스 환경에서 데이터 타입을 공유하는 복수의 클라이언트에 대해 상기 데이터 타입의 오퍼레이션을 기반으로 데이터 동기화를 수행하는 과정을 처리하고, 상기 데이터 동기화를 수행하는 과정은, 상기 데이터 타입에 대해 누적된 오퍼레이션들을 병합하여 병합 오퍼레이션을 상기 클라이언트로 전송하는 과정을 포함하는 데이터 동기화 시스템을 제공한다.A computer-implemented server data synchronization system comprising: a memory; And at least one processor coupled to the memory and configured to execute computer readable instructions contained in the memory, wherein the at least one processor is configured to: The process of performing data synchronization based on the operation of the data type, and the process of performing the data synchronization includes the steps of merging the operations accumulated for the data type and transmitting the merge operation to the client. Provide a synchronization system.

본 발명의 실시예들에 따르면, 클라이언트와 서버 간에 데이터 타입의 오퍼레이션을 기반으로 데이터 동기화를 수행하는 시스템에서 서버에서 클라이언트로 데이터 타입의 변경 사항을 전송할 때 필요로 하는 오퍼레이션들을 서버에서 병합하여(merge) 최종적인 변경 사항만을 클라이언트로 전송함으로써 데이터 동기화를 위한 네트워크 트래픽을 효과적으로 줄일 수 있다.According to embodiments of the present invention, in a system that performs data synchronization based on an operation of a data type between a client and a server, operations required when transmitting a data type change from a server to a client are merged at the server (merge) ) By sending only the final changes to the client, network traffic for data synchronization can be effectively reduced.

도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다.
도 3은 본 발명의 일실시예에 있어서, 데이터 타입 기반의 데이터 동기화를 위한 클라이언트 아키텍쳐의 예를 도시한 것이다.
도 4는 본 발명의 일실시예에 있어서, 데이터 타입 기반의 데이터 동기화를 위한 서버 아키텍쳐의 예를 도시한 것이다.
도 5 내지 도 6은 본 발명의 일실시예에 있어서, 푸시 규칙과 풀 규칙을 따르는 푸시-풀 동작의 예를 도시한 것이다.
도 7은 본 발명의 일실시예에 있어서, 서버에서 클라이언트로 병합 오퍼레이션을 전달하는 과정의 예를 도시한 것이다.
도 8은 본 발명의 일실시예에 있어서, 병합 오퍼레이션의 예시들을 도시한 것이다.
1 is a diagram showing an example of a network environment according to an embodiment of the present invention.
2 is a block diagram illustrating an internal configuration of an electronic device and a server in an embodiment of the present invention.
3 illustrates an example of a client architecture for data type-based data synchronization in an embodiment of the present invention.
4 shows an example of a server architecture for data type-based data synchronization in an embodiment of the present invention.
5 to 6 show an example of a push-pull operation following a push rule and a pull rule in one embodiment of the present invention.
7 shows an example of a process of delivering a merge operation from a server to a client in an embodiment of the present invention.
8 shows examples of the merge operation in one embodiment of the present invention.

이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

본 발명의 실시예들은 멀티 디바이스의 데이터 동기화를 위한 기술에 관한 것이다.Embodiments of the present invention relate to techniques for data synchronization of multiple devices.

본 명세서에서 구체적으로 개시되는 것들을 포함하는 실시예들은 오퍼레이션 기반의 데이터 동기화 시스템에서 병합 오퍼레이션(merged operation)을 이용하여 데이터 동기화를 위한 네트워크 트래픽을 줄일 수 있고, 이를 통해 효율성, 리소스 절감, 비용 절감 등의 측면에 있어서 상당한 장점들을 달성한다.Embodiments including those specifically disclosed herein can reduce network traffic for data synchronization by using a merged operation in an operation-based data synchronization system, thereby reducing efficiency, resource reduction, cost, etc. In terms of achieving significant advantages.

도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다.1 is a diagram showing an example of a network environment according to an embodiment of the present invention. The network environment of FIG. 1 shows an example including a plurality of electronic devices 110, 120, 130, 140, a plurality of servers 150, 160, and a network 170. 1 is not limited to the number of electronic devices or the number of servers as an example for explaining the invention.

복수의 전자 기기들(110, 120, 130, 140)은 컴퓨터 시스템으로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 내비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC, 게임 콘솔(game console), 웨어러블 디바이스(wearable device), IoT(internet of things) 디바이스, VR(virtual reality) 디바이스, AR(augmented reality) 디바이스 등이 있다. 일례로 도 1에서는 전자 기기(110)의 예로 스마트폰의 형상을 나타내고 있으나, 본 발명의 실시예들에서 전자 기기(110)는 실질적으로 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있는 다양한 물리적인 컴퓨터 시스템들 중 하나를 의미할 수 있다.The plurality of electronic devices 110, 120, 130, and 140 may be fixed terminals or mobile terminals implemented as a computer system. For example, a plurality of electronic devices (110, 120, 130, 140), smart phones (smart phone), mobile phones, navigation, computers, notebooks, digital broadcasting terminal, PDA (Personal Digital Assistants), PMP (Portable Multimedia Player) ), tablet PCs, game consoles, wearable devices, internet of things (IoT) devices, virtual reality (VR) devices, and augmented reality (AR) devices. For example, although the shape of a smartphone is shown as an example of the electronic device 110 in FIG. 1, in the embodiments of the present invention, the electronic device 110 is substantially different from the network 170 using a wireless or wired communication method. It may mean one of various physical computer systems capable of communicating with the electronic devices 120, 130, 140 and/or the servers 150, 160.

통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망, 위성망 등)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.The communication method is not limited, and a communication method using a communication network (eg, a mobile communication network, a wired Internet, a wireless Internet, a broadcasting network, a satellite network, etc.) that the network 170 may include, as well as short-range wireless communication between devices are included. Can. For example, the network 170 includes a personal area network (PAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), and a broadband network (BBN). , Any one or more of the networks such as the Internet. Further, the network 170 may include any one or more of a network topology including a bus network, a star network, a ring network, a mesh network, a star-bus network, a tree or a hierarchical network, etc. It is not limited.

서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다. 예를 들어, 서버(150)는 네트워크(170)를 통해 접속한 복수의 전자 기기들(110, 120, 130, 140)로 제1 서비스를 제공하는 시스템일 수 있으며, 서버(160) 역시 네트워크(170)를 통해 접속한 복수의 전자 기기들(110, 120, 130, 140)로 제2 서비스를 제공하는 시스템일 수 있다. 보다 구체적인 예로, 서버(150)는 복수의 전자 기기들(110, 120, 130, 140)에 설치되어 구동되는 컴퓨터 프로그램으로서의 어플리케이션을 통해, 해당 어플리케이션이 목적하는 서비스를 제1 서비스로서 복수의 전자 기기들(110, 120, 130, 140)로 제공할 수 있다. 다른 예로, 서버(160)는 상술한 어플리케이션의 설치 및 구동을 위한 파일을 복수의 전자 기기들(110, 120, 130, 140)로 배포하는 서비스를 제2 서비스로서 제공할 수 있다.Each of the servers 150 and 160 communicates with a plurality of electronic devices 110, 120, 130, and 140 through a network 170 to provide commands, codes, files, content, services, or the like, or a plurality of computers. It can be implemented with devices. For example, the server 150 may be a system that provides a first service to a plurality of electronic devices 110, 120, 130, 140 accessed through the network 170, and the server 160 is also a network ( It may be a system that provides a second service to a plurality of electronic devices (110, 120, 130, 140) accessed through (170). As a more specific example, the server 150 may use a plurality of electronic devices as a first service as a service targeted by the application through an application as a computer program installed and driven on the plurality of electronic devices 110, 120, 130, and 140. It can be provided in the field (110, 120, 130, 140). As another example, the server 160 may provide a service for distributing a file for installing and driving the above-described application to a plurality of electronic devices 110, 120, 130, 140 as a second service.

도 2는 본 발명의 일실시예에 있어서 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다. 도 2에서는 전자 기기에 대한 예로서 전자 기기(110), 그리고 서버(150)의 내부 구성을 설명한다. 또한, 다른 전자 기기들(120, 130, 140)이나 서버(160) 역시 상술한 전자 기기(110) 또는 서버(150)와 동일한 또는 유사한 내부 구성을 가질 수 있다.2 is a block diagram illustrating an internal configuration of an electronic device and a server according to an embodiment of the present invention. 2 illustrates an internal configuration of the electronic device 110 and the server 150 as an example of the electronic device. In addition, other electronic devices 120, 130, 140 or the server 160 may also have the same or similar internal configuration to the above-described electronic device 110 or the server 150.

전자 기기(110)와 서버(150)는 메모리(211, 221), 프로세서(212, 222), 통신 모듈(213, 223) 그리고 입출력 인터페이스(214, 224)를 포함할 수 있다. 메모리(211, 221)는 비-일시적인 컴퓨터 판독가능한 기록매체로서, RAM(random access memory), ROM(read only memory), 디스크 드라이브, SSD(solid state drive), 플래시 메모리(flash memory) 등과 같은 비소멸성 대용량 저장 장치(permanent mass storage device)를 포함할 수 있다. 여기서 ROM, SSD, 플래시 메모리, 디스크 드라이브 등과 같은 비소멸성 대용량 저장 장치는 메모리(211, 221)와는 구분되는 별도의 영구 저장 장치로서 전자 기기(110)나 서버(150)에 포함될 수도 있다. 또한, 메모리(211, 221)에는 운영체제와 적어도 하나의 프로그램 코드(일례로 전자 기기(110)에 설치되어 구동되는 브라우저나 특정 서비스의 제공을 위해 전자 기기(110)에 설치된 어플리케이션 등을 위한 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리(211, 221)와는 별도의 컴퓨터에서 판독가능한 기록매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독가능한 기록매체가 아닌 통신 모듈(213, 223)을 통해 메모리(211, 221)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템(일례로, 상술한 서버(160))이 네트워크(170)를 통해 제공하는 파일들에 의해 설치되는 컴퓨터 프로그램(일례로 상술한 어플리케이션)에 기반하여 메모리(211, 221)에 로딩될 수 있다.The electronic device 110 and the server 150 may include memories 211 and 221, processors 212 and 222, communication modules 213 and 223, and input/output interfaces 214 and 224. The memory 211, 221 is a non-transitory computer-readable recording medium, such as random access memory (RAM), read only memory (ROM), disk drive, solid state drive (SSD), flash memory, etc. And a permanent mass storage device. Here, a non-volatile mass storage device such as a ROM, SSD, flash memory, disk drive, etc. may be included in the electronic device 110 or the server 150 as a separate permanent storage device separate from the memories 211 and 221. Also, the memory 211 and 221 may include an operating system and at least one program code (for example, a browser installed and driven in the electronic device 110 or a code for an application installed in the electronic device 110 to provide a specific service). Can be stored. These software components can be loaded from a computer-readable recording medium separate from the memories 211 and 221. Such a separate computer-readable recording medium may include a computer-readable recording medium such as a floppy drive, disk, tape, DVD/CD-ROM drive, and memory card. In other embodiments, software components may be loaded into memory 211 and 221 through communication modules 213 and 223 rather than a computer-readable recording medium. For example, at least one program is a computer program installed by files provided by a file distribution system (for example, the server 160 described above) that distributes installation files of developers or applications through the network 170. It may be loaded into the memories 211 and 221 based on (for example, the above-described application).

프로세서(212, 222)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(211, 221) 또는 통신 모듈(213, 223)에 의해 프로세서(212, 222)로 제공될 수 있다. 예를 들어 프로세서(212, 222)는 메모리(211, 221)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.Processors 212 and 222 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input/output operations. Instructions may be provided to processors 212 and 222 by memory 211 and 221 or communication modules 213 and 223. For example, the processors 212 and 222 may be configured to execute instructions received according to program codes stored in a recording device such as the memories 211 and 221.

통신 모듈(213, 223)은 네트워크(170)를 통해 전자 기기(110)와 서버(150)가 서로 통신하기 위한 기능을 제공할 수 있으며, 전자 기기(110) 및/또는 서버(150)가 다른 전자 기기(일례로 전자 기기(120)) 또는 다른 서버(일례로 서버(160))와 통신하기 위한 기능을 제공할 수 있다. 일례로, 전자 기기(110)의 프로세서(212)가 메모리(211)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이 통신 모듈(213)의 제어에 따라 네트워크(170)를 통해 서버(150)로 전달될 수 있다. 역으로, 서버(150)의 프로세서(222)의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 통신 모듈(223)과 네트워크(170)를 거쳐 전자 기기(110)의 통신 모듈(213)을 통해 전자 기기(110)로 수신될 수 있다. 예를 들어 통신 모듈(213)을 통해 수신된 서버(150)의 제어 신호나 명령, 컨텐츠, 파일 등은 프로세서(212)나 메모리(211)로 전달될 수 있고, 컨텐츠나 파일 등은 전자 기기(110)가 더 포함할 수 있는 저장 매체(상술한 영구 저장 장치)로 저장될 수 있다.The communication modules 213 and 223 may provide a function for the electronic device 110 and the server 150 to communicate with each other through the network 170, and the electronic device 110 and/or the server 150 are different. An electronic device (eg, the electronic device 120) or another server (eg, the server 160) may provide a function for communication. For example, the request generated by the processor 212 of the electronic device 110 according to the program code stored in the recording device, such as the memory 211, the server 150 through the network 170 under the control of the communication module 213 ). Conversely, control signals or commands, contents, files, etc. provided under the control of the processor 222 of the server 150 are communicated through the communication module 223 and the network 170 and the communication module 213 of the electronic device 110. ) To the electronic device 110. For example, control signals, commands, contents, files, and the like of the server 150 received through the communication module 213 may be transmitted to the processor 212 or the memory 211, and contents or files may be transferred to the electronic device ( 110) may be further stored as a storage medium (permanent storage device described above).

입출력 인터페이스(214)는 입출력 장치(215)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드, 마우스, 마이크로폰, 카메라 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커, 햅틱 피드백 디바이스(haptic feedback device) 등과 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(214)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 입출력 장치(215)는 전자 기기(110)와 하나의 장치로 구성될 수도 있다. 또한, 서버(150)의 입출력 인터페이스(224)는 서버(150)와 연결되거나 서버(150)가 포함할 수 있는 입력 또는 출력을 위한 장치(미도시)와의 인터페이스를 위한 수단일 수 있다. 보다 구체적인 예로, 전자 기기(110)의 프로세서(212)가 메모리(211)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(150)나 전자 기기(120)가 제공하는 데이터를 이용하여 구성되는 서비스 화면이나 컨텐츠가 입출력 인터페이스(214)를 통해 디스플레이에 표시될 수 있다.The input/output interface 214 may be a means for interfacing with the input/output device 215. For example, the input device may include devices such as a keyboard, mouse, microphone, camera, and the like, and the output device may include devices such as a display, a speaker, a haptic feedback device, and the like. As another example, the input/output interface 214 may be a means for an interface with a device in which functions for input and output are integrated into one, such as a touch screen. The input/output device 215 may be configured with the electronic device 110 and one device. Further, the input/output interface 224 of the server 150 may be a means for interfacing with the server 150 or with an apparatus (not shown) for input or output that the server 150 may include. As a more specific example, the service configured by using the data provided by the server 150 or the electronic device 120 when the processor 212 of the electronic device 110 processes a command of a computer program loaded in the memory 211. The screen or content may be displayed on the display through the input/output interface 214.

또한, 다른 실시예들에서 전자 기기(110) 및 서버(150)는 도 2의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기(110)는 상술한 입출력 장치(215) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 전자 기기(110)가 스마트폰인 경우, 일반적으로 스마트폰이 포함하고 있는 가속도 센서나 자이로 센서, 카메라 모듈, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 전자 기기(110)에 더 포함되도록 구현될 수 있다.Also, in other embodiments, the electronic device 110 and the server 150 may include more components than those in FIG. 2. However, there is no need to clearly show most prior art components. For example, the electronic device 110 may be implemented to include at least a part of the input/output device 215 described above, or other components such as a transceiver, a Global Positioning System (GPS) module, a camera, various sensors, and a database. It may also include more. As a more specific example, when the electronic device 110 is a smartphone, an acceleration sensor or a gyro sensor, a camera module, various physical buttons included in a smartphone, buttons using a touch panel, input/output ports, and a vibrator for vibration Various components, such as, may be implemented to be further included in the electronic device 110.

이하에서는 멀티 디바이스 환경에서 데이터 타입 기반의 데이터 동기화를 수행할 수 있는 방법 및 시스템의 구체적인 실시예를 설명하기로 한다.Hereinafter, a specific embodiment of a method and a system capable of performing data type-based data synchronization in a multi-device environment will be described.

본 발명에 따른 데이터 동기화 시스템은 멀티 디바이스 환경에서 구현되는 것으로, 멀티 디바이스로서 전자 기기(110, 120, 130, 140)에 구현되는 복수의 클라이언트와 서버(150)를 포함하여 구성될 수 있다.The data synchronization system according to the present invention is implemented in a multi-device environment, and may include a plurality of clients and servers 150 implemented in electronic devices 110, 120, 130, and 140 as multi-devices.

서버(150)는 멀티 디바이스의 복수 클라이언트가 여러 종류의 데이터 타입을 동기화 할 수 있게 해준다. 클라이언트는 국지적으로(locally) 데이터 타입을 복제하고 자체 복제본만 읽을 수 있다. 일부 로컬 오퍼레이션이 데이터 타입을 수정하면 해당 데이터 타입이 즉시 실행되어 서버(150)에 푸시한다. 한편, 서버(150)에서 일부 원격 오퍼레이션이 풀 되면 가능한 한 빨리 해당 데이터 타입으로 실행된다. 여러 클라이언트에서 복제된 데이터 타입은 동일한 오퍼레이션 세트를 실행해야 하나 오퍼레이션 중 인과 관계에 위반되지 않는 한 동일한 순서로 실행되지 않아도 된다. 일치하지 않는 오퍼레이션 순서에 대해 일관성을 유지하기 위해 데이터 타입은 이하에서 설명하게 될 CRDT(Conflict-free Replicated Data Type)의 이론에 따라 구현될 수 있다.The server 150 allows multiple clients of multiple devices to synchronize different types of data. The client can replicate the data type locally and read only its own copy. When some local operations modify the data type, the data type is executed immediately and pushed to the server 150. On the other hand, if some remote operation is released from the server 150, it is executed with the corresponding data type as soon as possible. Data types replicated from multiple clients must run the same set of operations, but do not have to be executed in the same order, as long as the causal relationship is not violated during the operation. In order to maintain consistency with respect to the inconsistent operation order, the data type may be implemented according to the theory of Conflict-free Replicated Data Type (CRDT), which will be described below.

데이터베이스와 같은 영구적인 저장소는 생성(create), 읽기(read), 업데이트(update), 삭제(delete)의 4가지 기본 기능을 제공하는 CRUD 모델을 따른다. 이러한 기능들은 단일 클라이언트와 서버 간에 정의되며, 클라이언트에서 원본 데이터(original data)가 위치하는 서버로 이동하는 경향이 있다.Permanent storage like a database follows the CRUD model, which provides four basic functions: create, read, update, and delete. These functions are defined between a single client and server, and tend to move from the client to the server where the original data is located.

본 발명에서는 APPD(attach, push-pull, detach) 모델을 도입하여 데이터 타입 공유에 적용하고, 이러한 모델은 복제된 데이터의 효율적인 멀티 디바이스 동기화를 위해 오퍼레이션의 이중 전송이 용이하다.In the present invention, an APPD (attach, push-pull, detach) model is introduced and applied to data type sharing, and this model facilitates double transmission of operations for efficient multi-device synchronization of replicated data.

본 발명에 따른 데이터 동기화 시스템에서 클라이언트는 새 데이터를 작성하거나 서버(150)에 저장된 데이터 타입을 공유하기 위해 데이터 타입을 첨부(attach)해야 한다. 데이터 타입을 첨부하는 것은 이후에 데이터 타입에 대한 모든 오퍼레이션이 푸시-풀 됨을 의미한다. 클라이언트가 첨부된 데이터 타입을 분리(detach)하면 더 이상 푸시-풀이 발생하지 않는다. CRUD 모델을 비교하면 클라이언트가 항상 로컬에 첨부된 복제본을 읽기 때문에 APPD 모델의 경우 서버(150)에 읽기 기능을 제공하지 않는다. 또한, 본 발명에서는 첨부 후 생성 오퍼레이션을 푸시하여 '생성(C)' 기능을 수행하고 오퍼레이션을 통해 '업데이트(U)'를 하게 된다. 삭제(D) 역시 오퍼레이션을 통해 수행되므로 CRUD의 CUD(생성, 업데이트, 삭제)는 푸시-풀 과정에 포함된다.In the data synchronization system according to the present invention, the client must attach data types to create new data or to share data types stored in the server 150. Attaching a data type means that all operations on the data type will be pushed afterwards. When the client detaches the attached data type, push-pull no longer occurs. When comparing the CRUD model, the APPD model does not provide a read function to the server 150 because the client always reads the locally attached copy. In addition, in the present invention, after the attachment, the creation operation is pushed to perform the function of'creation (C)' and'update (U)' through the operation. Delete (D) is also performed through the operation, so CUD (creation, update, delete) of CRUD is included in the push-pull process.

본 발명에 따른 데이터 동기화 시스템에서 클라이언트는 낮은 대기 시간으로 높은 가용성을 유지하도록 설계될 수 있으며, 서버(150)는 높은 확장성을 갖도록 설계될 수 있다. CRDT의 특성으로 인해 클라이언트는 첨부(복제)된 데이터 타입에 오프라인으로 액세스 할 수 있으며 이는 자연스럽게 낮은 대기 시간을 초래할 수 있다. 클라이언트는 상태를 유지하게 되는(stateful) 반면에, 서버는 클라이언트들의 엄청난 푸시-풀을 처리하기 위한 스케일 아웃을 지원하기 위해 비상태적이다(stateless).In the data synchronization system according to the present invention, the client may be designed to maintain high availability with low latency, and the server 150 may be designed to have high scalability. Due to the nature of the CRDT, clients can access attached (replicated) data types offline, which can naturally result in low latency. The client is stateful, while the server is stateless to support scale-out to handle the enormous push-pull of clients.

본 발명에 따른 데이터 동기화 시스템은 CRDT을 구현할 수 있다. CRDT는 복제된 데이터 타입이 서로 다른 순서의 오퍼레이션을 실행하더라도 상충 문제를 해결하기 위해 개입 없이 궁극적 일관성(eventual consistency)을 유지할 수 있다. 일관성을 유지하는 방법에 따라 CRDT를 오퍼레이션 기반 CRDT와 상태 기반 CRDT로 구분할 수 있다. 네트워크 파티션(network partitions)에도 불구하고 CRDT는 높은 가용성과 낮은 대기 시간을 보장할 수 있으며, 오퍼레이션의 동일한 집합은 결과적으로 일관성을 유지할 수 있다.The data synchronization system according to the present invention can implement CRDT. CRDT can maintain eventual consistency without intervention in order to solve the conflict problem even if the duplicated data types perform different sequences of operations. Depending on how to maintain consistency, CRDT can be divided into operation-based CRDT and state-based CRDT. Despite network partitions, CRDT can guarantee high availability and low latency, and the same set of operations can be consistent as a result.

CRDT의 대부분의 이론들은 오퍼레이션이 P2P(peer-to-peer) 방식으로 전달된다고 가정하나, 사용 어플리케이션들과 서비스들은 공유 데이터에 대한 책임과 안정성을 보장해야 하므로 본 발명은 클라이언트와 서버 간의 안정적인 푸시-풀 메커니즘을 통해 백-엔드 서비스로 구현할 수 있다.Most theories of CRDT assume that the operation is delivered in a peer-to-peer (P2P) manner, but since the applications and services used must guarantee responsibility and stability for shared data, the present invention provides stable push-between the client and server. It can be implemented as a back-end service through a pull mechanism.

본 발명에서는 다양한 멀티 디바이스 데이터 동기화 구현을 향상시킬 수 있으며, 예를 들어 사용자가 특정 디바이스의 브라우저에 북마크를 추가하면 다른 디바이스의 모든 사용자 브라우저에 북마크가 표시되어야 한다. 브라우저 개발자는 북마크를 관리하는 데이터 타입에 대해 일부 오퍼레이션을 적용하는 코드를 사용하여 이러한 기능을 수행할 수 있으며, 이로 인해 북마크 추가와 관련된 오퍼레이션을 푸싱하거나 풀링한다.In the present invention, various multi-device data synchronization implementations can be improved. For example, when a user adds a bookmark to a browser of a specific device, the bookmark should be displayed in all user browsers of another device. Browser developers can accomplish this by using code that applies some operations to the data types that manage bookmarks, which pushes or pulls operations related to adding bookmarks.

본 발명에서는 오퍼레이션 기반 CRDT에 속하는 복제된 고정 크기 어레이(replicated fixed-size arrays, RFAs), 복제된 해시 테이블(replicated hash table, RHTs), 복제된 확장 가능한 어레이(replicated growable arrays, RGAs)를 포함한 몇 가지 종류의 데이터 타입을 구현할 수 있다. 이러한 데이터 타입의 오퍼레이션은 다음 두 가지 일관성 원칙에 따라 설계될 수 있다: (1) 오퍼레이션 교환법칙(operation commutativity)과 (2) 우선순위 이행 법칙(precedence transitivity). 이를 이용하기 위해 본 발명에서는 논리 시간(scalar logical time)을 사용한다.In the present invention, several, including replicated fixed-size arrays (RFAs), replicated hash tables (RTHs), and replicated growable arrays (RGAs) belonging to an operation-based CRDT are provided. You can implement several kinds of data types. Operations of this data type can be designed according to the following two consistency principles: (1) operation commutativity and (2) precedence transitivity. In order to use this, in the present invention, a logical logical time is used.

본 발명에 따른 데이터 동기화 시스템에 CRDT를 도입하기 위해 스냅샷(snapshot)과 에포크(epoch) 개념을 적용할 수 있다. 첫째, CRDT가 오퍼레이션 또는 변경 사항을 누적하는 방식으로 동작함에도 불구하고 효율성 차원에서 스냅샷을 허용할 수 있다. 데이터 타입에 대한 동기화가 매우 빈번하거나 오랜 기간 지속되면 많은 양의 오퍼레이션이 누적될 수 있고 최종적 결과에서 오퍼레이션들끼리 그 효과를 상쇄할 수 있다. 따라서, 처음 동기화 과정에 참여하거나 간헐적으로(혹은 긴 주기로) 데이터 동기화에 참여할 때 누적된 오퍼레이션으로만 수행되면 비효율적이기 때문에 이러한 비효율성을 줄이기 위해 데이터 타입의 스냅샷을 사용할 수 있다. 둘째, 데이터 동기화에 있어 논리적인 시간 자체가 때때로 간헐적인 동기화를 왜곡하기 때문에 논리적인 시간을 에포크라는 물리적 시간으로 보정할 수 있다. 또한, 에포크는 삭제된 요소에 대한 RHTs와 RGAs에 필요한 삭제 표시(tombstones)의 쓰레기 수거(garbage-collect)에 사용될 수 있다.In order to introduce CRDT to the data synchronization system according to the present invention, snapshot and epoch concepts can be applied. First, even though the CRDT operates in a way that accumulates operations or changes, it can allow snapshots for efficiency reasons. If the synchronization for the data type is very frequent or lasts a long time, a large amount of operations may accumulate and the effects of the operations may be canceled out in the final result. Therefore, when participating in the synchronization process for the first time or intermittently (or in a long cycle) of data synchronization, it is inefficient if only the cumulative operation is performed, so a snapshot of the data type can be used to reduce this inefficiency. Second, since the logical time itself sometimes distorts intermittent synchronization in data synchronization, the logical time can be corrected to the physical time called epoch. In addition, epochs can be used for garbage-collect of tombstones required for RHTs and RGAs for deleted elements.

먼저, 클라이언트와 서버 간에 오퍼레이션을 교환(푸시/풀)하기 위한 구체적인 시스템 아키텍처(system architecture)를 설명한다.First, a detailed system architecture for exchanging (pushing/pulling) operations between a client and a server will be described.

도 3은 본 발명의 일실시예에 있어서, 데이터 타입 기반의 데이터 동기화를 위한 클라이언트 아키텍쳐의 예를 도시한 것이다.3 illustrates an example of a client architecture for data type-based data synchronization in an embodiment of the present invention.

서버(150 또는 160)는 멀티 디바이스에서 데이터 타입을 공유하는 다양한 어플리케이션을 구현하는데 사용할 수 있는 클라이언트 SDK(Software Development Kit)를 제공할 수 있다. 도 3에 도시한 바와 같이, 다수의 데이터 타입(310)은 클라이언트(300)에 첨부되는 것으로, 클라이언트(300)는 데이터 타입(310)의 로컬 혹은 원격 오퍼레이션을 로컬 저장소(local storage)(302)에 저장하고 이들을 서버(150)와 동기화 할 수 있다. 효율적인 관리를 위해 클라이언트(300)는 여러 데이터 타입(310)으로 공유되는 하나의 싱크 에이전트(sync agent)(301)와 로컬 저장소(302)를 포함할 수 있다.The server 150 or 160 may provide a client software development kit (SDK) that can be used to implement various applications that share data types on multiple devices. As shown in FIG. 3, a plurality of data types 310 are attached to the client 300, and the client 300 stores local or remote operations of the data type 310 in local storage 302. And store them in sync with server 150. For efficient management, the client 300 may include a single sync agent 301 and a local storage 302 shared by various data types 310.

데이터 타입(310)이 오퍼레이션 APIs를 통해 로컬 오퍼레이션을 생성하면 실행에 필요한 파라미터를 가진 오퍼레이션 인스턴스로 변환된다. 모든 오퍼레이션은 CRDT의 특성을 기반으로 로컬 및 원격 실행의 동작을 별도로 정의한다. 국지적으로 생성된 오퍼레이션 인스턴스는 데이터 타입(310)의 오퍼레이션 실행자(operation executor)에 의해 실행된 후, 제한된 크기의 로컬 오퍼레이션 버퍼에 저장되고 아울러 클라이언트(300)의 로컬 저장소(302)에 저장될 수 있다.When the data type 310 creates a local operation through operation APIs, it is converted into an operation instance having parameters required for execution. All operations separately define the behavior of local and remote execution based on the characteristics of the CRDT. After the locally generated operation instance is executed by an operation executor of data type 310, it is stored in a local operation buffer of a limited size and may also be stored in the local storage 302 of the client 300. .

로컬 저장소(302)는 데이터 동기화를 위한 클라이언트 상태를 유지하도록 하며 이는 클라이언트(300)가 오프라인 기능을 가지고 있음을 의미한다. 모든 데이터 타입(310)의 스냅샷이 특정 지점에 저장되고 이후의 오퍼레이션도 로컬 저장소(302)에 저장되므로 클라이언트(300)는 서버(150)와의 동기화 없이 데이터 타입(310)의 마지막 상태를 복원할 수 있다.The local storage 302 maintains a client state for data synchronization, which means that the client 300 has an offline function. Since the snapshots of all data types 310 are stored at a specific point and subsequent operations are also stored in the local storage 302, the client 300 can restore the last state of the data type 310 without synchronization with the server 150. Can.

싱크 에이전트(301)는 서버(150)와의 동기화를 담당한다. 클라이언트(300)에 첨부된 데이터 타입(310)의 새로 생성된 오퍼레이션을 단일 푸시 데이터로 압축하는데, 이는 해당 데이터 타입(310)의 로컬 오퍼레이션 버퍼 혹은 로컬 저장소(302)에서 수집된 것이다. 싱크 에이전트(301)가 푸시 데이터를 서버(150)에 보낼 때마다 첨부된 데이터 타입(310)에 대한 풀 데이터(pulled data)가 응답으로 수신된다. 이는 원격 오퍼레이션을 순서대로 실행하는 해당 데이터 타입(310)으로 원격 오퍼레이션을 전달할 수 있다. 싱크 에이전트(301)는 서버(150)로부터 풀 된 모든 원격 오퍼레이션을 실행한 후 해당 이벤트를 등록된 모든 처리기에 통보되고 로컬 저장소(302)에 저장한다.The sink agent 301 is in charge of synchronization with the server 150. The newly created operation of the data type 310 attached to the client 300 is compressed into a single push data, which is collected from the local operation buffer or local storage 302 of the data type 310. Whenever the sink agent 301 sends push data to the server 150, pulled data for the attached data type 310 is received in response. This may deliver the remote operation to the corresponding data type 310 that executes the remote operation in order. The sink agent 301 executes all remote operations pulled from the server 150 and then notifies all registered handlers of the event and stores the event in the local storage 302.

클라이언트(300)는 수동 타입과 실시간 타입의 싱크 에이전트(301)를 제공할 수 있으며, 둘 중 하나의 타입을 선택적으로 적용할 수 있다. 수동 타입의 싱크 에이전트(301)가 있는 클라이언트(300)는 동기화 명령(sync function)이 호출될 때마다 상기한 과정의 푸시-풀 동작을 수행한다. 한편, 실시간 타입의 싱크 에이전트(301)는 일부 로컬 오퍼레이션이 새로 생성되는 즉시 푸시-풀 동작을 수행할 수 있다. 또한, 푸시-풀 동작은 실시간 타입의 싱크 에이전트(301)가 일부 원격 오퍼레이션이 서버(150)에서 푸시됨을 알리는 알림을 받을 때마다 호출된다.The client 300 may provide a sink agent 301 of a passive type and a real-time type, and one type of the two may be selectively applied. The client 300 having the passive type sink agent 301 performs a push-pull operation of the above-described process whenever a synchronization function is called. Meanwhile, the real-time type sink agent 301 may perform a push-pull operation as soon as some local operation is newly generated. In addition, the push-pull operation is called whenever the sink agent 301 of the real-time type receives a notification that some remote operations are pushed from the server 150.

도 4는 본 발명의 일실시예에 있어서, 데이터 타입 기반의 데이터 동기화를 위한 서버 아키텍쳐의 예를 도시한 것이다.4 shows an example of a server architecture for data type-based data synchronization in an embodiment of the present invention.

서버(150)는 멀티 디바이스의 데이터 동기화를 위한 데이터 동기화 시스템으로, 엄청난 양의 푸시-풀 동작을 처리하기 위한 구조로 설계된다. 본 발명에서는 수평 확장성(horizontal scalability), 즉 스케일-아웃(scale-out)을 달성하기 위해 서버(150)를 비상태적(stateless)으로 구현할 수 있다. 서버(150)는 확장 가능한 데이터베이스(401)에서 상태를 읽고 저장함으로써 푸시에 대한 출력으로 풀 데이터를 응답해야 한다.The server 150 is a data synchronization system for data synchronization of multi-devices, and is designed with a structure for handling a huge amount of push-pull operations. In the present invention, the server 150 may be implemented stateless to achieve horizontal scalability, that is, scale-out. The server 150 should respond to pull data as an output for push by reading and storing the state in the scalable database 401.

도 4에 도시한 바와 같이, 푸시 데이터가 네트워크 스위치(예컨대, L4)를 통해 임의의 서버 노드(410)에 분배되면 해당 서버 노드(410)의 수집 쓰레드(aggregator thread)는 여러 데이터 타입의 푸시 데이터가 개별 데이터 타입의 푸시 데이터로 분리되고 각각의 쓰레드는 병렬로 처리될 수 있다. 각 푸시 동작에서 오퍼레이션은 데이터베이스(401)에 저장되고 데이터베이스(401)에서 가져온 일부 오퍼레이션은 풀 데이터로 압축된다. 다음, 압축된 풀 데이터는 집계되어 클라이언트(300)로 전송된다.As illustrated in FIG. 4, when push data is distributed to any server node 410 through a network switch (eg, L4), the aggregator thread of the server node 410 may push data of various data types. Is separated into push data of individual data types and each thread can be processed in parallel. In each push operation, operations are stored in database 401 and some operations taken from database 401 are compressed into full data. Next, the compressed pool data is aggregated and transmitted to the client 300.

서버(150)는 다른 데이터 타입에 속하는 한 푸시-풀 동작을 병렬로 처리할 수 있다. 그러나, 동일한 데이터 타입에 대해 동시 발생된 푸시 동작들은 오퍼레이션을 풀링하는 데에 서로 영향을 줄 수 있기 때문에, 본 발명에서는 분산 잠금(distributed lock)을 사용하여 동일한 데이터 타입에 대한 푸시 데이터들을 직렬화 하도록 처리할 수 있다.The server 150 may process one push-pull operation belonging to different data types in parallel. However, since push operations simultaneously generated for the same data type can affect each other to pool operations, the present invention uses distributed lock to serialize push data for the same data type. can do.

서버(150)는 모든 데이터 타입의 스냅샷을 가능한 한 최신 상태로 유지해야 한다. 이에, 각 서버 노드(410)는 새 오퍼레이션을 수신하는 데이터 타입의 스냅샷을 주기적으로 갱신할 수 있다.The server 150 should keep snapshots of all data types as current as possible. Accordingly, each server node 410 may periodically update a snapshot of a data type that receives a new operation.

다음으로, 클라이언트(300)와 서버(150) 간의 구체적인 오퍼레이션 교환(푸시-풀) 과정을 설명한다.Next, a detailed operation exchange (push-pull) process between the client 300 and the server 150 will be described.

클라이언트(300)는 상태를 유지하게 되므로 상태에 따라 푸시-풀 되는 오퍼레이션을 결정할 수 있다. 이에, 서버(150)는 클라이언트(300)가 첨부한 데이터 타입과 관련하여 푸시-풀 상태를 추적해야 한다. 즉, 서버(150)는 어떤 클라이언트가 어떤 데이터 타입을 첨부하는지에 대한 정보, 그리고 클라이언트에서 푸시 또는 풀 되는 오퍼레이션의 수를 기록해야 한다. 이러한 내용을 바탕으로 푸시-풀 메커니즘은 아래의 두 가지 조건을 충족해야 한다.Since the client 300 maintains the state, it is possible to determine an operation that is pushed-pull according to the state. Accordingly, the server 150 must track the push-pull status with respect to the data type attached by the client 300. That is, the server 150 should record information about which client attaches which data type, and the number of operations pushed or pulled from the client. Based on this, the push-pull mechanism must meet the following two conditions.

(1) 서버(150)와 클라이언트(300)는 모든 클라이언트에 의해 생성된 모든 오퍼레이션을 순서대로 수신해야 한다.(1) The server 150 and the client 300 must receive all operations generated by all clients in order.

(2) 서버(150)와 클라이언트(300)는 중복된 오퍼레이션을 필터링 해야 한다.(2) The server 150 and the client 300 need to filter duplicate operations.

상기한 두 가지 조건을 충족시키려면 모든 클라이언트의 각 데이터 타입이 클라이언트 시퀀스(cseq)를 유지해야 하며, 서버(150)는 각 데이터 타입에 대해 서버 시퀀스(sseq)를 유지해야 한다. 오퍼레이션이 클라이언트(300) 또는 서버(150)와 연관될 때마다 클라이언트 시퀀스(cseq)와 서버 시퀀스(sseq)가 업데이트 되며 오퍼레이션은 상기한 시퀀스들로 식별될 수 있다. 클라이언트 시퀀스(cseq)는 클라이언트(300)의 데이터 타입이 로컬 오퍼레이션을 생성할 때마다 1씩 증가하고, 서버 시퀀스(sseq)는 서버(150)가 데이터 타입에 대한 오퍼레이션을 수신할 때마다 1씩 증가한다.To satisfy the above two conditions, each data type of all clients must maintain a client sequence (cseq), and the server 150 must maintain a server sequence (sseq) for each data type. Whenever the operation is associated with the client 300 or the server 150, the client sequence cseq and the server sequence sseq are updated, and the operation can be identified by the above-described sequences. The client sequence cseq increases by 1 each time the data type of the client 300 generates a local operation, and the server sequence sseq increases by 1 each time the server 150 receives an operation for the data type. do.

푸시-풀 데이터를 추적하기 위해 클라이언트 시퀀스(cseq)와 서버 시퀀스(sseq)의 쌍(cseq, sseq)인 체크 포인트(check point)(CP)를 이용할 수 있다. 첨부된 모든 데이터 타입에 대해 서버(150) 및 클라이언트(300)는 다음과 같이 푸시-풀 상태를 나타내는 CPserver와 CPclient를 유지 관리할 수 있다: CPserver[sseq]은 서버(150)가 클라이언트(300)로 보낸 가장 최근 시퀀스, CPserver[cseq]은 서버(150)가 클라이언트(300)로부터 수신한 가장 최근 시퀀스, CPclient[sseq]은 클라이언트(300)가 서버(150)로부터 수신한 가장 최근 시퀀스, CPclient[cseq]은 서버(150)가 수신을 확인한 가장 최근 시퀀스를 의미한다.To track the push-pull data, a check point (CP), which is a pair (cseq, sseq) of a client sequence (cseq) and a server sequence (sseq), can be used. For all the attached data types, the server 150 and the client 300 can maintain a CP server and a CP client indicating a push-pull state as follows: CP server [sseq] is a server 150 client The most recent sequence sent to 300, CP server [cseq] is the most recent sequence received by server 150 from client 300, and CP client [sseq] is the most recent sequence received by server 300 from server 150 The latest sequence, CP client [cseq], means the most recent sequence that the server 150 confirms the reception.

클라이언트 시퀀스(cseq), 서버 시퀀스(sseq), 클라이언트 체크 포인트(CPclient), 및 서버 체크 포인트(CPserver)에 따라 푸시 동작과 풀 동작 각각은 일부 오퍼레이션을 로드하고 아래와 같이 푸시 체크 포인트(CPPUSH)와 풀 체크 포인트(CPPULL)를 계산한다.Depending on the client sequence (cseq), server sequence (sseq), client checkpoint (CP client ), and server checkpoint (CP server ), each push operation and pull operation loads some operations and push checkpoint (CP PUSH) ) And the full checkpoint (CP PULL ).

(1) 푸시 규칙(1) Push rule

- 푸시 동작은 CPclient[cseq]+1에서 cseq로 오퍼레이션을 로드한다.-Push operation loads the operation from CP client [cseq]+1 to cseq.

- 이러한 푸시 동작에서 최근 오퍼레이션의 cseq에 대한 체크 포인트(CPPUSH)는 (CPclient[sseq], cseq)이다.-In this push operation, the check point (CP PUSH ) for cseq of the latest operation is (CP client [sseq], cseq).

(2) 풀 규칙(2) Pool rules

- 풀 동작은 클라이언트(300)에 대한 원격 오퍼레이션을 CPPUSH[sseq]+1에서 cseq로 로드한다.-The full operation loads the remote operation for the client 300 from CP PUSH [sseq]+1 to cseq.

- 해당 푸시 동작 바로 이후의 서버(150)의 sseq에 대한 체크 포인트(CPPULL)는 (sseq, CPserver[cseq])이다.-The check point (CP PULL ) for sseq of the server 150 immediately after the corresponding push operation is (sseq, CP server [cseq]).

도 5는 본 발명의 일실시예에 있어서, 푸시 규칙과 풀 규칙을 따르는 푸시-풀 동작의 예를 도시한 것이다.5 illustrates an example of a push rule and a push-pull operation following a pull rule in one embodiment of the present invention.

도 5를 참조하면, 클라이언트(300)는 최초로 데이터 타입이 오퍼레이션을 생성할 때 클라이언트 시퀀스 (cseq=1)를 업데이트 하고 해당 오퍼레이션에 대한 체크 포인트 (CPPUSH # 1:(0,1))를 계산하여 서버(150)로 푸시한다.Referring to FIG. 5, when the data type first generates an operation, the client 300 updates the client sequence (cseq=1) and calculates a checkpoint (CP PUSH # 1 :(0,1)) for the operation. To the server 150.

이에, 서버(150)는 클라이언트(300)로부터 데이터 타입에 대한 오퍼레이션을 수신할 때 서버 시퀀스 (sseq+1)를 업데이트 하고 해당 서버 시퀀스 (sseq+1)에 대한 체크 포인트 (CPPULL # 1:(1,1))를 계산하여 클라이언트(300)로 전달함으로써 클라이언트(300)의 푸시에 대한 풀을 응답한다.Accordingly, when the server 150 receives an operation for the data type from the client 300, it updates the server sequence (sseq+1) and checkpoints for the server sequence (sseq+1) (CP PULL # 1 :( 1, 1)) is computed and delivered to the client 300 to respond to the pull of the client 300.

상기한 과정에 적용된 푸시 규칙과 풀 규칙이 앞서 언급된 푸시-풀 메커니즘의 두 가지 조건을 보장함을 알 수 있다.It can be seen that the push rule and pull rule applied to the above process guarantee two conditions of the aforementioned push-pull mechanism.

도 5에 도시한 바와 같이, 일부 푸시(PUSH#2)가 손실되더라도 후속 푸시(PUSH#3)는 해당 푸시(PUSH#3)에 대한 응답인 PULL이 없어 클라이언트 체크 포인트(CPclient)가 업데이트 되지 않기 때문에 후속 푸시(PUSH#3)에서 두 오퍼레이션(cseq=2, 3)을 함께 송신할 수 있다. 다시 말해, 일부 PULL이 누락된 경우 다음 PUSH는 손실된 PULL의 오퍼레이션을 포함하는 PULL을 유도한다.As illustrated in FIG. 5, although some pushes (PUSH#2) are lost, the subsequent push (PUSH#3) does not have a PULL that is a response to the push (PUSH#3), so the client checkpoint (CP client ) is not updated Since it is not possible, two operations (cseq=2, 3) can be transmitted together in a subsequent push (PUSH#3). In other words, if some PULLs are missing, the next PUSH leads to a PULL containing the operation of the lost PULL.

그리고, 본 발명에 따른 푸시-풀 메커니즘에서 중복된 오퍼레이션 전송을 고려할 수 있다. 예를 들어, 도 5에 도시한 바와 같이 cseq=4의 오퍼레이션(cseq=4)에 대해 PUSH#4,5가 중복하여 전송될 수 있다. 이때, 서버(150)가 PUSH#5를 수신하면 서버 체크 포인트 CPserver[cseq]가 이미 4이기 때문에 cseq=4의 오퍼레이션이 거부된다. 그럼에도 불구하고, PUSH#5는 CPPULL #5[sseq]=4를 기반으로 오퍼레이션을 로드한다. 클라이언트(300)가 CPPULL #5를 수신한 경우 CPPULL #5:(7,4)와 CPclient:(6,4)를 비교하여 sseq=7의 단 한번의 오퍼레이션만을 허용한다.And, in the push-pull mechanism according to the present invention, it is possible to consider transmission of duplicate operations. For example, as illustrated in FIG. 5, PUSH#4,5 may be repeatedly transmitted for an operation (cseq=4) of cseq=4. At this time, when the server 150 receives PUSH#5, the operation of cseq=4 is rejected because the server checkpoint CP server [cseq] is already 4. Nevertheless, PUSH#5 loads the operation based on CP PULL #5 [sseq]=4. When the client 300 receives CP PULL #5 , CP PULL #5 :(7,4) is compared with CP client :(6,4) to allow only one operation of sseq=7.

본 발명에 따른 데이터 동기화 시스템은 실시간 동기화를 지원하는데, 이는 서버(150)가 새로운 오퍼레이션의 도착을 각 클라이언트(300)에 알릴 수 있어야 함을 의미한다. 서버(150)가 서버 체크 포인트(CPserver)와 서버 시퀀스(sseq)를 기반으로 새로운 오퍼레이션의 도착을 아는 것은 간단하다. 즉, CPserver[sseq]<sseq이다. 따라서, 서버(150)는 새로운 오퍼레이션을 수신하면 각 클라이언트(300)에 오퍼레이션 수신에 대한 알림으로서 CPnotify=(sseq, CPserver[sseq])를 송신한다. 이에, 클라이언트(300)의 실시간 방식의 싱크 에이전트(301)가 서버(150)로부터 알림을 받자 마자 푸시 동작을 호출할 수 있다.The data synchronization system according to the present invention supports real-time synchronization, which means that the server 150 should be able to inform each client 300 of the arrival of a new operation. It is simple for the server 150 to know the arrival of a new operation based on a server checkpoint (CP server ) and a server sequence (sseq). That is, CP server [sseq]<sseq. Accordingly, when receiving a new operation, the server 150 transmits CP notify =(sseq, CP server [sseq]) as a notification for receiving the operation to each client 300. Accordingly, the real-time sync agent 301 of the client 300 may call a push operation as soon as it receives a notification from the server 150.

일반적으로, CRDT는 오퍼레이션 및 논리 시간에 따라 작동하지만 실제 서비스에서는 항상 효율적으로 합리적인 것은 아니다. 이에, 본 발명에서는 상기 서술한 스냅샷과 에포크라는 두 가지 개념을 제안하였다.In general, CRDT operates according to operation and logical time, but it is not always efficient and reasonable in actual service. Accordingly, the present invention proposed two concepts of the above-described snapshot and epoch.

서버(150)에서 모든 데이터 타입에 대해 모든 오퍼레이션을 유지해야 하는 번거로움 때문에 서버(150)는 오퍼레이션을 주기적으로 삭제할 수 있다. 클라이언트(300)가 데이터 타입을 새로 첨부하거나 많은 수의 오퍼레이션이 푸시된 후 클라이언트(300)가 푸시-풀을 재개할 때 도 6에 도시한 바와 같이 서버 히스토리에 저장된 것보다 오래된 오퍼레이션(즉, n'+1<n)을 요구할 수 있다. 이러한 경우, 서버(150)는 CPPULL #1에 최신 스냅샷(SNAP#1)을 반환하고 이를 수신한 클라이언트(300)는 서버(150)로부터 수신된 스냅샷(SNAP#1)으로 데이터 타입을 대체할 수 있다. 이후 클라이언트(300)에서는 푸시된 것에서 로컬 오퍼레이션을 재현해야 한다.The server 150 may periodically delete the operation because of the hassle of maintaining all operations for all data types in the server 150. When the client 300 resumes the push-pull after the client 300 newly attaches a data type or a large number of operations are pushed, operations older than those stored in the server history (i.e., n) '+1<n). In this case, the server 150 returns the latest snapshot (SNAP #1 ) to CP PULL #1 , and the client 300 receiving the data type is the snapshot (SNAP #1 ) received from the server 150. Can be replaced. Thereafter, the client 300 must reproduce the local operation from the pushed one.

그리고, 일부 데이터 타입은 일반적으로 논리 타임 스탬프를 기반으로 비인과적 오퍼레이션(concurrent operations)을 교환법칙(commutativity)이 성립하도록 만든다. 논리 시간은 오퍼레이션의 발생에 따라 진행되므로 실제 시간은 중요하지 않다. 클라이언트(300)가 상당히 오랜 기간 동안 오프라인에 동작하거나 일부 데이터 타입이 다른 여러 클라이언트에 의해 활발하게 업데이트가 된다면, 일부 클라이언트는 매우 오래된 데이터 타입의 복제본에서 발생된 오퍼레이션을 서버(150)에 전송할 수 있다. 이러한 이유로, 본 발명에서는 논리적인 시간 개념과 함께 서버(150)에서 증가하는 에포크라고 하는 물리적 시간으로 보정된 시간 단위를 적용할 수 있다. 각 데이터 타입에 대해 에포크의 마지막 증가 이후 다음의 조건 중 적어도 하나가 만족되면 에포크를 증가시킨다: (1) 일정 개수(k개)를 초과하는 오퍼레이션이 새로 푸시되고 (2) 일정 시간(h시간)이 물리적으로 지나면 에포크를 증가시킨다. 도 6에 도시한 바와 같이, 모든 PUSH는 클라이언트(300)의 에포크 내에 들어가지만 해당 PULL은 클라이언트(300)를 업데이트 하는 서버(150)의 에포크를 반환한다. 오퍼레이션의 논리 타임 스탬프를 비교하기 전에 에포크가 오퍼레이션 우선 순위를 결정하기 위해 미리 고려될 수 있다.In addition, some data types generally cause the commutativity to be established for concurrent operations based on a logical time stamp. The actual time is not important because the logic time is performed according to the occurrence of the operation. If the client 300 operates offline for a considerable period of time, or if some data types are actively updated by several other clients, some clients may send operations generated on replicas of very old data types to the server 150 . For this reason, in the present invention, it is possible to apply a time unit corrected to a physical time called an epoch increasing in the server 150 with a logical time concept. For each data type, after at least one of the following conditions is satisfied after the last increase of the epoch, the epoch is increased: (1) operations exceeding a certain number (k) are pushed anew, and (2) a certain time (h hour). After this physical pass, the epoch increases. As shown in FIG. 6, all PUSHs are included in the epoch of the client 300, but the corresponding PULL returns the epoch of the server 150 updating the client 300. Before comparing the logical time stamp of the operation, the epoch can be considered in advance to determine the operation priority.

일부 서로 다른 에포크의 두 개의 오퍼레이션은 여러 오퍼레이션들이 그 사이에 푸시되었음을 의미하므로 이전 에포크의 오퍼레이션은 상황에 맞지 않을 수 있다. 이러한 의미에서, 서버(150)는 현재 서버 에포크(ep)에서 고정 정수(E)를 뺀 값(ep-E)보다 작은 에포크의 오퍼레이션을 거부한다. 대신, 도 6에 도시한 PUSH#2-PULL#2에서 알 수 있듯이 서버(150)는 최신 스냅샷으로 PULL을 되돌려 보내고 클라이언트(300)의 스냅샷을 재설정할 수 있다.Two operations on some different epochs mean that multiple operations have been pushed in between, so the operation of the previous epoch may not fit the situation. In this sense, the server 150 rejects the operation of the epoch smaller than the current server epoch (ep) minus a fixed integer (E) (ep-E). Instead, as can be seen from PUSH #2 -PULL #2 shown in FIG. 6, the server 150 may send the PULL back to the latest snapshot and reset the snapshot of the client 300.

오래된 에포크의 오퍼레이션을 거절하는 정책은 삭제 표시(tombstone)의 쓰레기 수집(garbage collect tombstones)에 사용될 수 있다. RHTs 및 RGAs에서 비롯된 데이터 타입에서 추후 전송되는 오퍼레이션이 더 이상 삭제 표시(tombstones)를 참조하지 않도록 하여 안전하게 삭제 표시를 쓰레기 수거 할 수 있다.The policy to deny the operation of old epochs can be used for garbage collection tombstones. In the data types originating from RHTs and RGAs, later transmitted operations can no longer refer to tombstones so that tombstones can be safely collected.

따라서, 본 발명에 따른 데이터 동기화 시스템은 백-엔드 서버로 구성되어 멀티 디바이스에서 운영되는 대규모 클라이언트의 동기화를 효율적으로 지원할 수 있다. 더욱이, 서버-클라이언트 모델에서 대규모의 데이터 타입에 대해 빠짐 없이, 그리고 중복 없이 오퍼레이션을 푸시-풀 함으로써 신뢰성 있는 오퍼레이션 전송 메커니즘을 제공할 수 있다. 또한, 논리적 시간에 물리적 시간 개념(에포크)을 추가하여 동기화 시 발생하는 오퍼레이션 간의 상충 문제를 해결할 수 있으며 데이터 타입의 불필요한 메타데이터를 제거할 수 있다.Therefore, the data synchronization system according to the present invention can be configured as a back-end server to efficiently support synchronization of large-scale clients operating on multiple devices. Moreover, in the server-client model, it is possible to provide a reliable operation transfer mechanism by pushing-pull the operation without missing and without duplication for large data types. In addition, by adding the concept of physical time (epoch) to logical time, it is possible to solve a conflict problem between operations occurring during synchronization, and unnecessary metadata of a data type can be removed.

이하에서는 오퍼레이션 기반의 데이터 동기화 시스템에서 네트워크 트래픽을 줄이는 방법을 설명하기로 한다.Hereinafter, a method of reducing network traffic in an operation-based data synchronization system will be described.

서버(150)는 데이터 타입의 오퍼레이션을 기반으로 데이터 동기화를 수행하는 과정에서 클라이언트(300)의 요청에 따라 데이터 타입의 변경 사항을 클라이언트(300)로 전송한다.In the process of performing data synchronization based on the operation of the data type, the server 150 transmits the change of the data type to the client 300 according to the request of the client 300.

서버(150)는 여러 클라이언트들에서 발생한 오퍼레이션을 축적하고 특정 클라이언트의 요청에 따라 그 동안 축적된 오퍼레이션을 해당 클라이언트로 전달하게 되는데, 데이터 타입의 특정 부분이 반복적으로 변경될 경우 오퍼레이션들끼리 서로의 기능을 상쇄시킬 수 있기 때문에 최종적 결과 상태의 관점에서 불필요한 수많은 오퍼레이션들을 전송되어 데이터 동기화를 위한 네트워크 트래픽이 많이 요구된다.The server 150 accumulates operations that have occurred in various clients and delivers the accumulated operation to the corresponding client according to the request of a specific client. When a specific portion of the data type is repeatedly changed, the operations of each other function. Since it can cancel out, many unnecessary operations are transmitted in terms of the final result state, and network traffic for data synchronization is required.

본 발명에서는 데이터 타입의 오퍼레이션을 기반으로 데이터 동기화를 수행하는 시스템에서 클라이언트로 전달되는 변경 사항의 전송량을 줄이기 위한 방법을 제안한다.The present invention proposes a method for reducing the transmission amount of changes transmitted from a system performing data synchronization to a client based on a data type operation.

도 7은 본 발명의 일실시예에 있어서, 서버에서 클라이언트로 병합 오퍼레이션을 전달하는 과정의 예를 도시한 것이다.7 shows an example of a process of delivering a merge operation from a server to a client in an embodiment of the present invention.

도 7을 참조하면, 서버(150)는 클라이언트(300)의 요청에 따라 데이터 타입의 변경 사항을 클라이언트(300)로 전송할 때 필요로 하는 원격 오퍼레이션들을 서버(150)에서 직접 병합한 병합 오퍼레이션을 전송함으로써 클라이언트(300)로의 전송량을 줄일 수 있다.Referring to FIG. 7, the server 150 transmits a merge operation in which the remote operations required when transmitting a change of the data type to the client 300 at the request of the client 300 are directly merged by the server 150 By doing so, the transmission amount to the client 300 can be reduced.

다시 말해, 서버(150)는 클라이언트(300)의 요청에 대응되는 데이터 타입에 대해 데이터베이스(401)에 저장된 오퍼레이션들을 가져와 서버(150)에서 직접 병합한 후 병합된 오퍼레이션을 해당 데이터 타입의 변경 사항으로서 클라이언트(300)로 전송할 수 있다.In other words, the server 150 fetches the operations stored in the database 401 for the data type corresponding to the request of the client 300, merges them directly in the server 150, and then converts the merged operation as a change of the data type. It can be transmitted to the client 300.

따라서, 서버(150)는 데이터 타입에 대해 생성된 전체 이력의 오퍼레이션들을 모두 전송하는 것이 아니라 병합 오퍼레이션을 통해 최종적으로 변경된 값만을 클라이언트(300)로 전송할 수 있다.Therefore, the server 150 may not transmit all the operations of the entire history generated for the data type, but may transmit only the finally changed value through the merge operation to the client 300.

오퍼레이션을 병합하는 방법은 데이터 타입에 따라 달라질 수 있으며, 서버(150)는 클라이언트(300)에서 요청하는 데이터 타입에 따른 병합 방식으로 원격 오퍼레이션들을 병합할 수 있다.The method of merging operations may vary depending on the data type, and the server 150 may merge remote operations in a merging method according to the data type requested by the client 300.

일례로, 서버(150)는 오퍼레이션의 교환법칙(operation commutativity)이 성립하는 데이터 타입에 대해 변경된 값을 직접 계산하여 최종 결과 값을 병합 오퍼레이션으로 생성하여 클라이언트(300)로 전달할 수 있다. 다른 예로, 서버(150)는 데이터 타입에 대해 풀해야 하는 오퍼레이션을 CRDT가 오퍼레이션을 실행하는 규칙에 따라 실행하여 그 결과를 병합 오퍼레이션으로 생성하여 클라이언트(300)로 전달할 수 있다. 다시 말해, 서버(150)는 데이터 타입에 대해 풀해야 하는 오퍼레이션들을 CRDT 내부의 규칙에 따라 실행하고 실행 결과를 병합 오퍼레이션으로 생성하여 클라이언트(300)로 전달할 수 있다. 데이터 타입에 따라서는 병합 오퍼레이션이 해당 데이터 타입의 각 요소(element) 별로 구분되어 생성될 수 있다.For example, the server 150 may directly calculate the changed value for the data type established by the operation commutativity of the operation, generate the final result value as a merge operation, and deliver it to the client 300. As another example, the server 150 may execute an operation that needs to be pulled for a data type according to a rule in which the CRDT executes the operation, and generate the result as a merge operation and deliver it to the client 300. In other words, the server 150 may execute operations that need to be pulled for the data type according to the rules in the CRDT, generate execution results as a merge operation, and deliver them to the client 300. Depending on the data type, the merge operation may be generated separately for each element of the data type.

서버(150)에서 병합 오퍼레이션이 스냅샷과 다른 점은 새로운 스냅샷을 생성하기 위해서 기존의 스냅샷을 기반하여 오퍼레이션들을 실행하는 반면, 병합 오퍼레이션은 데이터 타입의 내용을 빈 것으로 간주하고 오퍼레이션들을 실행하여 병합한다. 반대로, 클라이언트(300)에서는 스냅샷의 경우 클라이언트(300)가 가진 기존 데이터는 무시하고 새로운 스냅샷으로 덮어쓰지만, 병합 오퍼레이션은 클라이언트(300)가 기존에 가진 내용 위에 병합 오퍼레이션을 실행하는 방식으로 동작한다.The difference between the merge operation and the snapshot in the server 150 is to execute operations based on the existing snapshot to create a new snapshot, while the merge operation regards the content of the data type as empty and executes the operations. Merge. Conversely, in the case of a snapshot, the client 300 ignores the existing data of the client 300 and overwrites it with a new snapshot, but the merge operation works by executing the merge operation on the existing contents of the client 300. do.

도 8을 참조하면, 서버(150)는 데이터 타입이 카운터(counter)에 해당되는 경우 실수의 증감 오퍼레이션의 경우 교환 법칙이 성립하므로 증감 수치를 모두 합산하여 최종 결과 값을 병합 오퍼레이션으로 생성하여 클라이언트(300)로 전송할 수 있다. 예를 들어, 카운터의 변경 이력이 +3, -2, +1인 경우 서버(150)에서 누적된 카운터 값들을 직접 합산하여 합산 결과 2(=3-2+1)를 최종 변경 값으로 하는 병합 오퍼레이션을 생성할 수 있다.Referring to FIG. 8, when the data type corresponds to a counter, the server 150 generates an exchange rule in the case of a real increase/decrease operation, so sums all the increase/decrease values and generates a final result value as a merge operation to generate a client ( 300). For example, when the change history of the counter is +3, -2, +1, the server 150 directly sums the accumulated counter values and merges the result 2 (=3-2+1) as the final change value. You can create an operation.

서버(150)는 데이터 타입이 변하는 값을 나타내는 변수(variable)에 해당되는 경우 오퍼레이션의 우선순위(precedence)에 따라 병합 오퍼레이션으로 생성하여 클라이언트(300)로 전송할 수 있다. 예를 들어, 변수가 x, y, z 순의 값을 취하는 경우 가장 최근 값인 z를 최종 변경 값으로 하는 병합 오퍼레이션을 생성할 수 있다.When the data type corresponds to a variable representing a value in which the data type changes, the server 150 may generate it as a merge operation according to the operation precedence and transmit it to the client 300. For example, when a variable takes the order of x, y, and z, a merge operation can be created with the most recent value z as the final change value.

서버(150)는 데이터 타입이 데이터 집합을 나타내는 배열(array)에 해당되는 경우 변수와 마찬가지로 각 요소 별로 가장 최근에 취하게 된 값을 병합 오퍼레이션으로 생성하여 클라이언트(300)로 전송할 수 있다. 예를 들어, 배열 3→x, 1→y, 3→z에 대해 각 요소 별 가장 최근 값을 포함하는 집합 [1,y], [3,z]를 하나의 병합 오퍼레이션으로 생성할 수 있다.When the data type corresponds to an array representing a data set, the server 150 may generate a value that is most recently taken for each element as a merge operation and transmit it to the client 300, like a variable. For example, for arrays 3→x, 1→y, and 3→z, sets [1,y], [3,z] containing the most recent values for each element can be generated as one merge operation.

서버(150)는 데이터 타입이 컴퓨팅에서 키를 값에 매핑할 수 있는 구조인 해시맵(hashmap or hashtable)에 해당되는 경우 각 키를 실행하여 해당 키 별로 실제 실행된 값을 병합 오퍼레이션으로 생성하여 클라이언트(300)로 전송할 수 있다. 예를 들어, K1이 V1, V1', V1"의 순으로 변경되고, K2가 삭제되고, K3가 V3, V3'의 순으로 변경된 이력이 있는 경우 각 키 별로 서버(150)에서의 실제 실행 값이 V1", 삭제, V3'라고 가정할 때 K1→V1", K2→삭제, K3→V3'를 하나의 병합 오퍼레이션으로 생성할 수 있다.When the data type corresponds to a hashmap (hashmap or hashtable), which is a structure in which a data type can map a key to a value in computing, the server 150 executes each key to generate an actual executed value for each key as a merge operation to create a client 300. For example, if K1 is changed in the order of V1, V1', V1", K2 is deleted, and K3 has a history changed in the order of V3, V3', the actual execution value in the server 150 for each key Assuming that V1", delete, and V3', K1→V1", K2→delete, and K3→V3' can be generated as one merge operation.

변수와 같이 하나의 값이 계속 업데이트되는 데이터 타입은 서버(150)에서 실제로 해당 데이터 타입에 대한 업데이트를 실행하여 최종적으로 업데이트가 반영된 값을 병합 오퍼레이션으로 만들어 클라이언트(300)로 전달할 수 있다.The data type in which one value is continuously updated, such as a variable, may actually be executed by the server 150 to update the data type, and finally, a value reflecting the update may be converted into a merge operation and delivered to the client 300.

배열이나 해시맵 등과 같은 데이터 타입에 대해서는 같은 부분에 대한 업데이트 값을 서버(150)에서의 실행을 통해 병합하여 최종적인 변경 값을 클라이언트(300)로 전달할 수 있다. 클라이언트(300)는 하나의 데이터 타입에 대해 병합된 오퍼레이션을 받아서 기존 가지고 있는 데이터 타입 상태에 오퍼레이션의 실행 규칙에 따라 실행하게 된다.For data types such as an array or a hashmap, the update values for the same part may be merged through execution in the server 150 to deliver the final change value to the client 300. The client 300 receives the merged operation for one data type and executes it according to the execution rule of the operation in the existing data type state.

따라서, 서버(150)는 데이터 타입의 변경 이력에 대응되는 오퍼레이션들을 모두 전달하는 것이 아니라, 해당 데이터 타입에 대해 누적된 오퍼레이션들을 서버(150)에서 병합하여 최종적인 변경 값을 나타내는 하나의 오퍼레이션만을 클라이언트로 전송함으로써 데이터 동기화를 위한 네트워크 트래픽을 효과적으로 줄일 수 있다.Therefore, the server 150 does not transmit all operations corresponding to the change history of the data type, but merges the operations accumulated for the data type in the server 150 and only one operation representing the final change value is client By transmitting to the network traffic for data synchronization can be effectively reduced.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The device described above may be implemented with hardware components, software components, and/or combinations of hardware components and software components. For example, the devices and components described in the embodiments include a processor, controller, arithmetic logic unit (ALU), digital signal processor (micro signal processor), microcomputer, field programmable gate array (FPGA), programmable It may be implemented using one or more general purpose computers or special purpose computers, such as a logic unit, microprocessor, or any other device capable of executing and responding to instructions. The processing device may perform an operating system (OS) and one or more software applications running on the operating system. In addition, the processing device may access, store, manipulate, process, and generate data in response to the execution of the software. For convenience of understanding, a processing device may be described as one being used, but a person having ordinary skill in the art, the processing device may include a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that may include. For example, the processing device may include a plurality of processors or a processor and a controller. In addition, other processing configurations, such as parallel processors, are possible.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instruction, or a combination of one or more of these, and configure the processing device to operate as desired, or process independently or collectively You can command the device. Software and/or data may be embodied in any type of machine, component, physical device, computer storage medium, or device in order to be interpreted by the processing device or to provide instructions or data to the processing device. have. The software may be distributed on networked computer systems, and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer-readable medium. In this case, the medium may continuously store a program executable on a computer or may be temporarily stored for execution or download. In addition, the medium may be various recording means or storage means in the form of a single or several hardware combinations, and is not limited to a medium directly connected to a computer system, but may be distributed on a network. Examples of the medium include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical recording media such as CD-ROMs and DVDs, and magneto-optical media such as floptical disks, And program instructions including ROM, RAM, flash memory, and the like. Also, examples of other media include an application store for distributing applications, a site for distributing or distributing various software, and a recording medium or storage medium managed by a server.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described by a limited embodiment and drawings, those skilled in the art can make various modifications and variations from the above description. For example, the described techniques are performed in a different order than the described method, and/or the components of the described system, structure, device, circuit, etc. are combined or combined in a different form from the described method, or other components Alternatively, even if replaced or substituted by equivalents, appropriate results can be achieved.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (17)

컴퓨터로 구현되는 서버에서의 데이터 동기화 방법에 있어서,
멀티 디바이스 환경에서 데이터 타입(data type)을 공유하는 복수의 클라이언트에 대해 상기 데이터 타입의 오퍼레이션(operation)을 기반으로 데이터 동기화를 수행하는 단계
를 포함하고,
상기 데이터 동기화를 수행하는 단계는,
상기 데이터 타입의 변경 사항으로서 상기 데이터 타입에 대해 누적된 오퍼레이션들을 병합하여 병합 오퍼레이션(merged operation)을 상기 클라이언트로 전송하는 단계
를 포함하고,
상기 전송하는 단계는,
상기 누적된 오퍼레이션들을 상기 데이터 타입의 최종 변화 값을 나타내는 하나의 오퍼레이션으로 병합하여 상기 클라이언트로 전송하는 것으로,
상기 데이터 타입에 대해 상기 누적된 오퍼레이션들을 데이터 타입의 내용이 빈 것으로 간주되어 데이터 타입이 오퍼레이션을 실행하는 규칙에 따라 실행하고 실행 결과를 상기 병합 오퍼레이션으로 생성하여 상기 클라이언트로 전송하고,
상기 데이터 동기화를 수행하는 단계는,
상기 데이터 타입의 오퍼레이션을 오퍼레이션 생성에 따른 논리적인 시간과 함께 상기 서버에서 증가하는 물리적인 시간을 반영하여 관리하는 단계; 및
상기 데이터 타입의 오퍼레이션에 대해 상기 물리적인 시간을 고려하여 오퍼레이션의 우선 순위를 결정하는 단계
를 포함하는 데이터 동기화 방법.
A method for synchronizing data in a computer-implemented server,
Performing data synchronization based on an operation of the data type for a plurality of clients sharing a data type in a multi-device environment.
Including,
The step of performing the data synchronization is,
Transmitting merged operations to the client by merging operations accumulated for the data type as changes in the data type
Including,
The transmitting step,
By merging the accumulated operations into one operation representing the final change value of the data type, and transmitting it to the client,
For the data type, the accumulated operations are regarded as empty in the content of the data type, and the data type is executed according to a rule for executing the operation, and an execution result is generated as the merge operation and transmitted to the client,
The step of performing the data synchronization,
Managing the operation of the data type by reflecting the physical time increasing in the server together with the logical time according to the operation creation; And
Determining the priority of the operation in consideration of the physical time for the operation of the data type
Data synchronization method comprising a.
삭제delete 제1항에 있어서,
상기 전송하는 단계는,
상기 데이터 타입에 대응되는 병합 방식으로 상기 누적된 오퍼레이션들을 병합하여 상기 클라이언트로 전송하는 것
을 특징으로 하는 데이터 동기화 방법.
According to claim 1,
The transmitting step,
Merging the accumulated operations in a merge method corresponding to the data type and transmitting them to the client
Data synchronization method characterized in that.
제1항에 있어서,
상기 전송하는 단계는,
상기 데이터 타입에 대해 변경된 값들을 합산한 결과 값을 상기 병합 오퍼레이션으로 생성하여 상기 클라이언트로 전송하는 것
을 특징으로 하는 데이터 동기화 방법.
According to claim 1,
The transmitting step,
The result of summing the changed values for the data type is generated by the merge operation and transmitted to the client.
Data synchronization method characterized in that.
삭제delete 제1항에 있어서,
상기 병합 오퍼레이션은 상기 데이터 타입의 각 요소 별로 구분되어 생성되는 것
을 특징으로 하는 데이터 동기화 방법.
According to claim 1,
The merge operation is generated separately for each element of the data type
Data synchronization method characterized in that.
제1항에 있어서,
상기 병합 오퍼레이션은 상기 클라이언트에서 가지고 있는 데이터 타입의 상태에 실행되는 것
을 특징으로 하는 데이터 동기화 방법.
According to claim 1,
The merge operation is executed in the state of the data type that the client has.
Data synchronization method characterized in that.
제1항에 있어서,
상기 데이터 동기화를 수행하는 단계는,
상기 복수의 클라이언트 중 적어도 하나의 클라이언트에서 상기 데이터 타입에 대해 생성된 오퍼레이션을 푸시(push)하면 상기 푸시된 오퍼레이션을 풀(pull)하여 상기 복수의 클라이언트가 같은 데이터 타입의 상태를 유지하도록 해당 데이터 타입을 상기 풀된 오퍼레이션과 동기화하는 단계
를 포함하는 데이터 동기화 방법.
According to claim 1,
The step of performing the data synchronization is,
When at least one of the plurality of clients pushes the operation generated for the data type, the data type is pulled to pull the pushed operation so that the plurality of clients maintain the state of the same data type. Synchronizing with the pulled operation
Data synchronization method comprising a.
삭제delete 제1항, 제3항, 제4항, 제6항 내지 제8항 중 어느 한 항의 데이터 동기화 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 비-일시적인 컴퓨터 판독가능한 기록 매체.A non-transitory computer-readable recording medium in which a program for executing a data synchronization method of any one of claims 1, 3, 4, 6 to 8 is recorded on a computer. 컴퓨터로 구현되는 서버의 데이터 동기화 시스템에 있어서,
메모리; 및
상기 메모리와 연결되고, 상기 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서
를 포함하고,
상기 적어도 하나의 프로세서는,
멀티 디바이스 환경에서 데이터 타입을 공유하는 복수의 클라이언트에 대해 상기 데이터 타입의 오퍼레이션을 기반으로 데이터 동기화를 수행하는 과정
을 처리하고,
상기 데이터 동기화를 수행하는 과정은,
상기 데이터 타입의 변경 사항으로서 상기 데이터 타입에 대해 누적된 오퍼레이션들을 병합하여 병합 오퍼레이션을 상기 클라이언트로 전송하는 과정
을 포함하고,
상기 전송하는 과정은,
상기 누적된 오퍼레이션들을 상기 데이터 타입의 최종 변화 값을 나타내는 하나의 오퍼레이션으로 병합하여 상기 클라이언트로 전송하는 것으로,
상기 데이터 타입에 대해 상기 누적된 오퍼레이션들을 데이터 타입의 내용이 빈 것으로 간주되어 데이터 타입이 오퍼레이션을 실행하는 규칙에 따라 실행하고 실행 결과를 상기 병합 오퍼레이션으로 생성하여 상기 클라이언트로 전송하고,
상기 데이터 동기화를 수행하는 과정은,
상기 데이터 타입의 오퍼레이션을 오퍼레이션 생성에 따른 논리적인 시간과 함께 상기 서버에서 증가하는 물리적인 시간을 반영하여 관리하는 과정; 및
상기 데이터 타입의 오퍼레이션에 대해 상기 물리적인 시간을 고려하여 오퍼레이션의 우선 순위를 결정하는 과정
을 포함하는 데이터 동기화 시스템.
In the computer-implemented server data synchronization system,
Memory; And
At least one processor coupled to the memory and configured to execute computer readable instructions contained in the memory
Including,
The at least one processor,
A process of performing data synchronization on a plurality of clients sharing a data type in a multi-device environment based on the operation of the data type
And,
The process of performing the data synchronization is,
A process of merging operations accumulated for the data type as a change in the data type and transmitting the merge operation to the client
Including,
The transmitting process,
By merging the accumulated operations into one operation representing the final change value of the data type, and transmitting it to the client,
For the data type, the accumulated operations are regarded as empty in the content of the data type, and the data type is executed according to the rules for executing the operation.
The process of performing the data synchronization is,
Managing the operation of the data type by reflecting the physical time increasing in the server together with the logical time according to operation creation; And
The process of determining the priority of the operation in consideration of the physical time for the operation of the data type
Data synchronization system comprising a.
삭제delete 제11항에 있어서,
상기 전송하는 과정은,
상기 데이터 타입에 대응되는 병합 방식으로 상기 누적된 오퍼레이션들을 병합하여 상기 클라이언트로 전송하는 것
을 특징으로 하는 데이터 동기화 시스템.
The method of claim 11,
The transmitting process,
Merging the accumulated operations in a merge method corresponding to the data type and transmitting them to the client
Data synchronization system, characterized by.
제11항에 있어서,
상기 전송하는 과정은,
상기 데이터 타입에 대해 변경된 값들을 합산한 결과 값을 상기 병합 오퍼레이션으로 생성하여 상기 클라이언트로 전송하는 것
을 특징으로 하는 데이터 동기화 시스템.
The method of claim 11,
The transmitting process,
The result of summing the changed values for the data type is generated by the merge operation and transmitted to the client.
Data synchronization system, characterized by.
삭제delete 제11항에 있어서,
상기 병합 오퍼레이션은 상기 데이터 타입의 각 요소 별로 구분되어 생성되는 것
을 특징으로 하는 데이터 동기화 시스템.
The method of claim 11,
The merge operation is generated separately for each element of the data type
Data synchronization system, characterized by.
제11항에 있어서,
상기 병합 오퍼레이션은 상기 클라이언트에서 가지고 있는 데이터 타입의 상태에 실행되는 것
을 특징으로 하는 데이터 동기화 시스템.
The method of claim 11,
The merge operation is executed in the state of the data type that the client has.
Data synchronization system, characterized by.
KR1020180088662A 2018-07-30 2018-07-30 Method and system for minimizing data synchronization traffic KR102133925B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180088662A KR102133925B1 (en) 2018-07-30 2018-07-30 Method and system for minimizing data synchronization traffic

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180088662A KR102133925B1 (en) 2018-07-30 2018-07-30 Method and system for minimizing data synchronization traffic

Publications (2)

Publication Number Publication Date
KR20200013448A KR20200013448A (en) 2020-02-07
KR102133925B1 true KR102133925B1 (en) 2020-07-14

Family

ID=69570226

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180088662A KR102133925B1 (en) 2018-07-30 2018-07-30 Method and system for minimizing data synchronization traffic

Country Status (1)

Country Link
KR (1) KR102133925B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113362220B (en) * 2021-05-26 2023-08-18 稿定(厦门)科技有限公司 Multi-equipment matting drawing method

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
CN102404338B (en) * 2011-12-13 2014-08-20 华为技术有限公司 File synchronization method and device
WO2014133489A1 (en) * 2013-02-27 2014-09-04 Hewlett-Packard Development Company, L.P. Data synchronization
KR101800721B1 (en) * 2015-10-29 2017-11-23 삼성에스디에스 주식회사 Method for identifying synchronization history of contents and Apparatus thereof

Also Published As

Publication number Publication date
KR20200013448A (en) 2020-02-07

Similar Documents

Publication Publication Date Title
JP7009456B2 (en) Graph generation for distributed event processing systems
US11170002B2 (en) Integrating Kafka data-in-motion with data-at-rest tables
CN112463311B (en) Transaction processing method and device, computer equipment and storage medium
Zaharia et al. Discretized streams: Fault-tolerant streaming computation at scale
CN109074362B (en) Splitting and range of motion in distributed systems
US9740582B2 (en) System and method of failover recovery
EP2988220B1 (en) Computer system, computer-system management method, and program
CN104346426B (en) The method and system of shared data deduplication
CN113704361B (en) Transaction execution method and device, computing equipment and storage medium
KR102133925B1 (en) Method and system for minimizing data synchronization traffic
US11106644B2 (en) Property-based deletion of digital data
WO2023244491A1 (en) Techniques for replication checkpointing during disaster recovery
CN115113989B (en) Transaction execution method, device, computing equipment and storage medium
KR102084014B1 (en) Method and system for data type based multi-device synchronization
KR101929948B1 (en) Method and system for data type based multi-device synchronization
CN117643015A (en) Snapshot-based client-side key modification of log records manages keys across a series of nodes
US11314700B1 (en) Non-native transactional support for distributed computing environments
US20230409535A1 (en) Techniques for resource utilization in replication pipeline processing
US12001404B2 (en) Techniques for replication checkpointing during disaster recovery
US20240061814A1 (en) Techniques for maintaining snapshot key consistency involving garbage collection during file system cross-region replication
US20240134828A1 (en) Techniques for efficient encryption and decryption during file system cross-region replication
US20240104062A1 (en) Techniques for resolving snapshot key inter-dependency during file system cross-region replication
Liarokapis Event-driven architectures using Apache Kafka
WO2023244446A1 (en) Scalable and secure cross-region and optimized file system replication for cloud scale
WO2023244449A1 (en) Hierarchical key management for cross-region replication

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant