KR20180095004A - 고 쓰루풋, 고 신뢰성의 데이터 처리 시스템 - Google Patents
고 쓰루풋, 고 신뢰성의 데이터 처리 시스템 Download PDFInfo
- Publication number
- KR20180095004A KR20180095004A KR1020187020207A KR20187020207A KR20180095004A KR 20180095004 A KR20180095004 A KR 20180095004A KR 1020187020207 A KR1020187020207 A KR 1020187020207A KR 20187020207 A KR20187020207 A KR 20187020207A KR 20180095004 A KR20180095004 A KR 20180095004A
- Authority
- KR
- South Korea
- Prior art keywords
- computing device
- data
- data entity
- volatile memory
- copy
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2071—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
- G06F11/2079—Bidirectional techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
- G06F11/1662—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2082—Data synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/855—Details of asynchronous mirroring using a journal to transfer not-yet-mirrored changes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
Abstract
다수의 상이한 컴퓨팅 장치의 휘발성 메모리에 복수의 데이터 엔티티를 저장하도록 구성된 데이터 처리 시스템. 데이터 처리 시스템은 제1 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치; 및 상기 제1 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치를 포함한다. 제1 컴퓨팅 장치는 제1 데이터 엔티티를 업데이트하라는 표시를 수신하고; 표시를 수신한 후에, 제1 휘발성 메모리에서 제1 데이터 엔티티를 업데이트하고, 제2 컴퓨팅 장치에 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 제공하고; 제1 데이터 엔티티의 사본이 제2 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 제2 컴퓨팅 장치로부터 수신한 후에, 제1 데이터 엔티티가 업데이트되었다는 표시를 제공하는 것을 수행하도록 구성된다.
Description
관련 출원에 대한 상호 참조
이 출원은 35 U.S.C. 119(e) 하에 “THROUGHPUT HIGH RELIABILITY DATA PROCESSING SYSTEM"라는 발명의 명칭으로, 2015년 12월 16일에 출원되었으며, 그 전체가 참조로서 본원에 포함된 미국 가출원 제62/268,090호의 혜택을 주장한다.
데이터 처리 시스템은 다수의 장치를 사용하여 데이터를 저장할 수 있다. 데이터 처리 시스템의 하나의 장치 상에 저장된 데이터의 사본은 데이터 처리 시스템의 하나 이상의 다른 장치 상에 저장될 수 있어서, 예를 들어 전력 공급 중단 또는 네트워크 문제로 인해 하나의 장치가 이용 가능하지 않게 되면, 데이터는 여전히 하나 이상의 다른 장치를 통해 액세스될 수 있다. 따라서, 데이터 처리 시스템은 데이터 엔티티를 다수의 장치에 걸쳐 복제할 수 있고, 복제된 데이터 엔티티가 동기화되도록 유지하여 임의의 하나의 장치에 저장된 데이터 엔티티의 백업 사본이 다른 장치에서 이용 가능하게 할 수 있다. 이러한 복제는 데이터 처리 시스템의 어느 하나의 장치가 이용 가능하지 않게 될 경우 액세스 불가능성 또는 데이터의 손실을 방지한다.
데이터 처리 시스템은 하나의 장치에 저장된 데이터 엔티티가 업데이트되고, 따라서 다른 장치에 저장된 임의의 사본이 업데이트되는 것을 보장함으로써 데이터 엔티티의 여러 사본을 동기화된 상태로 유지할 수 있다. 일부 데이터 처리 시스템은 데이터 엔티티 자체가 업데이트된 후 데이터 엔티티의 사본이 업데이트되도록 데이터 엔티티 및 그 사본의 변경이 이루어지는 소위 "지연 전파(lazy propagation)" 기술을 사용하여 데이터를 동기화한다. 지연 전파 기술의 일 예는 데이터 엔티티에 대한 변경이 로그에 기록되고, 데이터 엔티티의 사본에 대한 액세스가 필요할 경우 로그 내의 정보가 데이터 엔티티의 사본을 업데이트하는 데 사용되는 소위 "저널링(journaling)" 기술이다. 예를 들어, 서버 A에 저장된 특정 데이터 엔티티에 대한 다수의 변경은 서버 B에 저장된 데이터 엔티티의 사본을 업데이트하지 않고 로그에 기록될 수 있다. 나중에, 서버 A가 액세스 불가능하게 되는 경우, 서버 B를 통해 데이터 엔티티의 최신 버전이 액세스될 수 있도록 서버 B 상의 데이터 엔티티 사본은 로그 내의 정보에 기초하여 업데이트될 수 있다.
지연 전파 기술은 데이터 엔티티의 모든 사본이 업데이트될 때까지 업데이트가 대기할 필요가 없으므로 데이터 엔티티의 빠른 업데이트를 가능하게 한다. 반면에, 지연 전파 기술은 느린 대체 작동을 초래하는데, 데이터 엔티티 세트를 저장하는 서버가 액세스 불가능하게 될 경우, 다른 서버 또는 서버들을 통해 이들에 대한 액세스가 제공되기 전에 (예를 들어, 로그 내의 정보에 기초하여) 이들 데이터 엔티티의 사본이 먼저 업데이트되어야 하기 때문이다.
일부 데이터 처리 시스템은 소위 "무결한 이중화(eager replication)" 기술을 사용하여 데이터를 동기화한다. 데이터 엔티티가 업데이트된 후에만 데이터 엔티티의 사본에 대한 변경이 이루어지는 지연 전파와는 달리, 무결한 이중화는 데이터 엔티티 자체를 업데이트하기 전에 데이터 엔티티의 사본을 업데이트하는 것을 수반한다. 예를 들어, 서버 A(예를 들어, 데이터 엔티티를 액세스 및/또는 업데이트하기 위한 모든 요청이 주 서버에 제공되는, 데이터 엔티티에 대한 "주" 서버로 지정된 서버) 상에 저장된 데이터 엔티티를 변경하기 전에, 데이터 엔티티의 사본이 먼저 업데이트되고, 후속하여 서버 A 상에 저장된 데이터 엔티티에 대한 변경이 이루어진다.
종래의 무결한 이중화를 사용하여 데이터 엔티티를 업데이트하는 것은 일반적으로 무결한 이중화는 데이터 엔티티 자체를 업데이트하기 전에 데이터 엔티티의 사본을 업데이트하는 것을 수반하기 때문에 지연 전파를 사용하는 경우보다 더 많은 시간이 걸린다. 반면에, 데이터 엔티티의 모든 사본은 동기화된 상태로 유지되기 때문에, 열성적인 전파(eager propagation)는 일반적으로 게으른 전파를 사용하는 경우보다 빠른 대체 작동을 할 수 있게 한다.
일부 실시예는 다수의 컴퓨팅 장치의 휘발성 메모리에 복수의 데이터 엔티티를 저장하도록 구성된 데이터 처리 시스템을 제공한다. 데이터 처리 시스템은 제1 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치로서, 제1 데이터 엔티티는 제1 식별자와 연관되는, 제1 컴퓨팅 장치; 및 제1 컴퓨팅 장치와 상이하고 제1 컴퓨팅 장치에 통신 가능하게 결합되며, 제2 식별자와 연관된 제1 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치를 포함하고, 여기서 제1 컴퓨팅 장치는 제1 데이터 엔티티를 업데이트하라는 표시를 수신하고; 표시를 수신한 후에, 제1 휘발성 메모리에서 제1 데이터 엔티티를 업데이트하고, 제2 컴퓨팅 장치에 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 제공하고; 제1 데이터 엔티티의 사본이 제2 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 제2 컴퓨팅 장치로부터 수신한 후에, 제1 데이터 엔티티가 업데이트되었다는 표시를 제공하는 것을 수행하도록 구성된다.
일부 실시예는 제1 컴퓨팅 장치는 제1 식별자와 연관된 제1 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치에 의해 수행되는 방법을 제공하며, 제1 컴퓨팅 장치는 제2 식별자와 연관된 제1 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치에 통신 가능하게 결합되고, 제2 컴퓨팅 장치는 제1 컴퓨팅 장치와 상이하다. 방법은 제1 데이터 엔티티를 업데이트하라는 표시를 수신하는 단계; 표시를 수신한 후에, 제1 휘발성 메모리에서 제1 데이터 엔티티를 업데이트하고, 제2 컴퓨팅 장치에 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 제공하는 단계; 및 제1 데이터 엔티티의 사본이 제2 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 제2 컴퓨팅 장치로부터 수신한 후에, 제1 데이터 엔티티가 업데이트되었다는 표시를 제공하는 단계를 포함한다.
일부 실시예는 프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체를 제공하며, 그 명령은, 제1 식별자와 연관된 제1 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치에 의해 실행되는 경우, 제1 컴퓨팅 장치로 하여금 방법을 수행하게 하고, 제1 컴퓨팅 장치는 제2 식별자와 연관된 제1 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치에 통신 가능하게 결합되고, 제1 컴퓨팅 장치는 제2 컴퓨팅 장치와 상이하다. 방법은 제1 데이터 엔티티를 업데이트하라는 표시를 수신하는 단계; 표시를 수신한 후에, 제1 휘발성 메모리에서 제1 데이터 엔티티를 업데이트하고, 제2 컴퓨팅 장치에 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 제공하는 단계; 및 제1 데이터 엔티티의 사본이 제2 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 제2 컴퓨팅 장치로부터 수신한 후에, 제1 데이터 엔티티가 업데이트되었다는 표시를 제공하는 단계를 포함한다.
일부 실시예는 제1 식별자와 연관된 제1 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치에 의한 실행을 위한 프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체를 제공하며, 제1 컴퓨팅 장치는 제2 식별자와 연관된 제1 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치에 통신 가능하게 결합되고, 프로세서 실행 가능 명령은: 제1 데이터 엔티티를 업데이트하라는 표시를 수신하는 수단; 표시를 수신한 후에, 제1 휘발성 메모리에서 제1 데이터 엔티티를 업데이트하고, 제2 컴퓨팅 장치에 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 제공하는 수단; 및 제1 데이터 엔티티의 사본이 제2 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 제2 컴퓨팅 장치로부터 수신한 후에, 제1 데이터 엔티티가 업데이트되었다는 표시를 제공하는 수단을 포함한다.
일부 실시예는 다수의 컴퓨팅 장치의 휘발성 메모리에 데이터 엔티티를 저장하도록 구성된 데이터 처리 시스템을 제공한다. 데이터 처리 시스템은 복수의 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치로서, 복수의 데이터 엔티티는 제1 각각의 식별자와 연관되는, 제1 컴퓨팅 장치; 및 제1 컴퓨팅 장치와 상이하고 제1 컴퓨팅 장치에 통신 가능하게 결합되며, 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치로서, 사본은 제2 각각의 식별자와 연관되는, 제2 컴퓨팅 장치를 포함하고, 여기서 제1 컴퓨팅 장치는 재동기화를 수행하라는 표시를 수신하고; 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 제2 컴퓨팅 장치에 제공하고; 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 식별하는 정보를 제2 컴퓨팅 장치로부터 수신하고; 정보를 수신한 것에 응답하여, 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 제2 컴퓨팅 장치에 제공하는 것을 수행하도록 구성된다.
일부 실시예는 제1 각각의 식별자와 연관된 복수의 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치에 의해 수행되는 방법을 제공하며, 제1 컴퓨팅 장치는 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치와 상이하고 제2 컴퓨팅 장치에 통신 가능하게 결합되고, 사본은 제2 각각의 식별자와 연관된다. 방법은 재동기화를 수행하라는 표시를 수신하는 단계; 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 제2 컴퓨팅 장치에 제공하는 단계; 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 식별하는 정보를 제2 컴퓨팅 장치로부터 수신하는 단계; 및 정보를 수신한 것에 응답하여, 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 제2 컴퓨팅 장치에 제공하는 단계를 포함한다.
일부 실시예는 프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체를 제공하며, 그 명령은, 제1 각각의 식별자와 연관된 복수의 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치에 의해 실행되는 경우, 제1 컴퓨팅 장치로 하여금 방법을 수행하게 하고, 제1 컴퓨팅 장치는 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치와 상이하고 제2 컴퓨팅 장치에 통신 가능하게 결합되고, 사본은 제2 각각의 식별자와 연관된다. 방법은 재동기화를 수행하라는 표시를 수신하는 단계; 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 제2 컴퓨팅 장치에 제공하는 단계; 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 식별하는 정보를 제2 컴퓨팅 장치로부터 수신하는 단계; 및 정보를 수신한 것에 응답하여, 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 제2 컴퓨팅 장치에 제공하는 단계를 포함한다.
일부 실시예는 다수의 상이한 컴퓨팅 장치의 휘발성 메모리에 데이터 엔티티를 저장하도록 구성된 데이터 처리 시스템을 제공한다. 메모리에 저장된 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치로서, 사본은 제2 각각의 식별자와 연관되는, 제2 컴퓨팅 장치를 포함하고, 제2 컴퓨팅 장치는 재동기화를 수행하라는 표시를 제1 컴퓨팅 장치에 제공하고; 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 제1 컴퓨팅 장치로부터 수신하고; 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 식별하는 정보를 제1 컴퓨팅 장치에 제공하고; 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 제1 컴퓨팅 장치로부터 수신하는 것을 수행하도록 구성된다.
일부 실시예는 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치에 의해 수행되는 방법을 제공하며, 복수의 데이터 엔티티는 제2 컴퓨팅 장치와 상이하고 제2 컴퓨팅 장치에 통신 가능하게 결합된 제1 컴퓨팅 장치의 제1 휘발성 메모리에 저장된다. 방법은 재동기화를 수행하라는 표시를 제1 컴퓨팅 장치에 제공하는 단계; 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 제1 컴퓨팅 장치로부터 수신하는 단계; 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 식별하는 정보를 제1 컴퓨팅 장치에 제공하는 단계; 및 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 제1 컴퓨팅 장치로부터 수신하는 단계를 포함한다.
일부 실시예는 프로세서 실행 가능 명령을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체를 제공하며, 그 명령은, 제2 컴퓨팅 장치에 의해 실행되는 경우, 제2 컴퓨팅 장치로 하여금 방법을 실행하게 하고, 제2 컴퓨팅 장치는 제2 컴퓨팅 장치와는 상이하고 제2 컴퓨팅 장치에 통신 가능하게 결합된 제1 컴퓨팅 장치의 제1 휘발성 메모리에 저장된 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 포함한다. 방법은 재동기화를 수행하라는 표시를 제1 컴퓨팅 장치에 제공하는 단계; 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 제1 컴퓨팅 장치로부터 수신하는 단계; 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 식별하는 정보를 제1 컴퓨팅 장치에 제공하는 단계; 및 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 제1 컴퓨팅 장치로부터 수신하는 단계를 포함한다.
전술한 내용은 본 발명의 비제한적인 요약이며, 본 발명은 첨부된 청구 범위에 의해 한정된다.
다양한 양태 및 실시예가 다음의 도면을 참조하여 설명될 것이다. 도면은 반드시 일정한 비율로 그려진 것은 아님이 이해될 것이다. 다수의 도면에 나타나는 항목은 이들이 나타나는 모든 도면에서 동일하거나 유사한 참조 번호로 나타내어진다.
도 1a는 본 명세서에 설명된 기술의 일부 실시예가 동작할 수 있는 예시적인 데이터 처리 시스템의 블록도이다.
도 1b는 본 명세서에 설명된 기술의 일부 실시예에 따른, 도 1a의 데이터 처리 시스템이 다수의 장치에 걸쳐 데이터 엔티티 및 각각의 사본을 관리할 수 있는지의 일 예를 도시한다.
도 1c는 본 명세서에 설명된 기술의 일부 실시예에 따른, 도 1a의 데이터 처리 시스템이 다수의 장치에 걸쳐 데이터 엔티티 및 각각의 사본을 관리할 수 있는지의 일 예를 도시한다.
도 1d는 본 명세서에 설명된 기술의 일부 실시예에 따른, 데이터 처리 시스템에서 장치에 의해 저장된 정보의 일 예를 도시한다.
도 2는 본 명세서에 설명된 기술의 일부 실시예에 따른, 장치 상에 저장된 데이터 엔티티 및 하나 이상의 다른 장치에 저장된 그 사본 중 하나 이상을 업데이트하기 위한 예시적인 프로세스의 흐름도이다.
도 3a, 도 3b, 및 도 3c는 본 명세서에 설명된 기술의 일부 실시예에 따른, 매니페스트 기반 재동기화를 도시한다.
도 4a, 도 4b, 도 4c, 도 4d, 도 4e, 및 도 4f는 본 명세서에 설명된 기술의 일부 실시예에 따른, 매니페스트 기반 재동기화의 예시적인 예를 도시한다.
도 5는 본 명세서에 설명된 기술의 일부 실시예에 따른, 데이터 엔티티 세트에 대한 매니페스트 기반 재동기화를 수행하기 위해, 데이터 엔티티 세트에 대한 주 장치로서 동작하는 컴퓨팅 장치에 의해 수행되는 예시적인 프로세스의 흐름도이다.
도 6은 본 명세서에 설명된 기술의 일부 실시예에 따른, 데이터 엔티티 세트에 대한 매니페스트 기반 재동기화를 수행하기 위해, 데이터 엔티티 세트에 대한 백업 장치로서 동작하는 컴퓨팅 장치에 의해 수행되는 예시적인 프로세스의 흐름도이다.
도 7은 본 명세서에 설명된 기술의 일부 실시예를 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 시스템 환경의 블록도이다.
도 1a는 본 명세서에 설명된 기술의 일부 실시예가 동작할 수 있는 예시적인 데이터 처리 시스템의 블록도이다.
도 1b는 본 명세서에 설명된 기술의 일부 실시예에 따른, 도 1a의 데이터 처리 시스템이 다수의 장치에 걸쳐 데이터 엔티티 및 각각의 사본을 관리할 수 있는지의 일 예를 도시한다.
도 1c는 본 명세서에 설명된 기술의 일부 실시예에 따른, 도 1a의 데이터 처리 시스템이 다수의 장치에 걸쳐 데이터 엔티티 및 각각의 사본을 관리할 수 있는지의 일 예를 도시한다.
도 1d는 본 명세서에 설명된 기술의 일부 실시예에 따른, 데이터 처리 시스템에서 장치에 의해 저장된 정보의 일 예를 도시한다.
도 2는 본 명세서에 설명된 기술의 일부 실시예에 따른, 장치 상에 저장된 데이터 엔티티 및 하나 이상의 다른 장치에 저장된 그 사본 중 하나 이상을 업데이트하기 위한 예시적인 프로세스의 흐름도이다.
도 3a, 도 3b, 및 도 3c는 본 명세서에 설명된 기술의 일부 실시예에 따른, 매니페스트 기반 재동기화를 도시한다.
도 4a, 도 4b, 도 4c, 도 4d, 도 4e, 및 도 4f는 본 명세서에 설명된 기술의 일부 실시예에 따른, 매니페스트 기반 재동기화의 예시적인 예를 도시한다.
도 5는 본 명세서에 설명된 기술의 일부 실시예에 따른, 데이터 엔티티 세트에 대한 매니페스트 기반 재동기화를 수행하기 위해, 데이터 엔티티 세트에 대한 주 장치로서 동작하는 컴퓨팅 장치에 의해 수행되는 예시적인 프로세스의 흐름도이다.
도 6은 본 명세서에 설명된 기술의 일부 실시예에 따른, 데이터 엔티티 세트에 대한 매니페스트 기반 재동기화를 수행하기 위해, 데이터 엔티티 세트에 대한 백업 장치로서 동작하는 컴퓨팅 장치에 의해 수행되는 예시적인 프로세스의 흐름도이다.
도 7은 본 명세서에 설명된 기술의 일부 실시예를 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 시스템 환경의 블록도이다.
본 발명자들은 속도 및 네트워크 대역폭 사용을 포함하는 데이터 처리 시스템의 동작 특성이 개선된 데이터 복제 프로세스로 개선될 수 있음을 인식하고 이해했다. 이러한 복제 프로세스는 처리 및 네트워킹 리소스를 효율적으로 사용하면서 데이터 처리 시스템에서 빠른 데이터 액세스, 빠른 데이터 업데이트, 및 빠른 데이터 복구를 가능하게 할 수 있다. 대조적으로, 종래의 데이터 복제 기술은 빠른 데이터 액세스, 업데이트, 및 복구를 동시에 지원하지 않는다. 예를 들어, 데이터 엔티티의 주 사본이 업데이트될 때까지 데이터 엔티티의 백업 사본이 업데이트되지 않기 때문에 종래의 지연 전파 기술은 빠른 데이터 업데이트를 할 수 있게 하지만, 저널링의 사용으로 인해 데이터 복구가 느리다. 그 결과, 데이터의 백업 사본을 이용 가능하고 신속하게 액세스될 수 있는 "높은 신뢰성" 설정과 같이 빠른 대체 작동이 요구되는 경우 종래의 지연 전파 기술은 적합하지 않다. 다른 예로서, 종래의 무결한 이중화 기술은 빠른 데이터 복구를 가능하게 하지만, 데이터 엔티티의 백업 사본이 각각의 주 사본 전에 업데이트되어 지연을 초래하기 때문에 데이터 업데이트가 느리다. 그 결과, 종래의 열망 복제 기술은 비실용적이며, 다수의 데이터 엔티티(예를 들어, 수백만 또는 수십억의 은행 거래(transaction))가 짧은 시간 기간 내에 업데이트될 수 있는 "높은 쓰루풋(high-throughput)" 설정에서는 사용되지 않는다.
따라서, 일부 실시예는 휘발성 메모리를 사용하여 데이터를 저장함으로써 데이터의 빠른 업데이트, 액세스, 및 복구를 할 수 있게 하는 개선된 데이터 복제 프로세스를 제공한다. 휘발성 저장 장치의 사용으로 인해 발생하는 데이터 무결성에 대한 더 큰 위험에도 불구하고, 본 발명자들에 의해 개발된 복제 프로세스는 다수의 장치의 휘발성 메모리에 걸쳐 데이터 처리 시스템에 의해 데이터가 신뢰성 있게 유지되고, 이들 장치에 걸쳐 데이터가 동기화되는 것을 보장한다. 복제 프로세스는 예를 들어 네트워크 중단 또는 전력 공급 중단으로 인해 비동기화된 임의의 데이터를 재동기화하기 위해 저 대역폭 기술을 사용함으로써 적어도 부분적으로 시스템의 네트워크 리소스를 효율적으로 사용한다.
따라서, 일부 실시예는 시스템의 다수의 장치의 휘발성 메모리 내의 데이터를 관리하도록 구성된 메모리 내 데이터 처리 시스템을 제공한다. 데이터를 관리하는 것은 예를 들어, 데이터 저장, 저장된 데이터 삭제, (예를 들어, 저장 장치에 있어서) 새로운 데이터 수신, 데이터 처리, 이미 저장된 데이터에 대한 전자적 액세스 제공, 및/또는 (예를 들어, 저장된 데이터에서 하나 이상의 값을 변경함으로써) 저장된 데이터 업데이트와 같은 기능을 포함한다. 메모리 내 데이터 처리 시스템에 의해 관리되는 데이터는 본 발명자들에 의해 개발된 복제 기술을 사용하여 다수의 휘발성 메모리에 걸쳐 복제된 다수의 데이터 엔티티를 포함할 수 있다. 데이터 엔티티는 레코드 및 변수와 같은 하나 이상의 데이터 아이템을 포함할 수 있다. 휘발성 메모리는 그 안에 저장된 정보를 유지하기 위해 전력을 사용하는 임의의 컴퓨터 메모리, 예를 들어 랜덤 액세스 메모리(random access memory, RAM) 수 있다; 휘발성 메모리는 전원이 켜졌을 때에는 그 안에 저장된 데이터를 유지하지만, 전원이 꺼지면 저장된 데이터를 잃어 버린다. 메모리 내 데이터 처리 시스템은 데이터 엔티티의 사본을 업데이트하기 위해 예를 들어 하드 디스크와 같은 비휘발성 메모리에 시간을 소모하는 판독 및 기입을 필요로 하지 않으며, 이는 데이터 엔티티의 사본을 업데이트하는 데 사용되는 시간의 양을 감소시키고, 높은 신뢰성과 높은 쓰루풋 설정에서 그 사용이 실현 가능할 때까지 무결한 이중화 기술을 더 빠르게 한다.
일부 실시예에서, 메모리 내 데이터 처리 시스템에 의해 관리되는 데이터 엔티티는 그룹화되고, 데이터 엔티티의 각각의 그룹은 그룹 내의 데이터 엔티티가 액세스 및/또는 업데이트될 수 있는 각각의 주 장치(예를 들어, 주 서버)와 연관된다. 그룹 내의 데이터 엔티티는 또한 데이터 엔티티의 사본을 저장하는 하나 이상의 각각의 백업 장치(예를 들어, 하나 이상의 백업 서버)와 연관된다. 주 장치의 휘발성 메모리에 저장된 데이터 엔티티는 본 명세서에서 데이터 엔티티의 주 사본으로 지칭되고, 그 사본은 본 명세서에서 백업 사본으로 지칭된다.
일부 실시예에서, 데이터 처리 시스템 내의 장치는 그 휘발성 메모리의 온 힙(on-heap) 부분에 장치가 주 장치의 역할을 하는 임의의 데이터 엔티티를 저장할 수 있다. 장치는 휘발성 메모리의 오프 힙(off-heap) 부분에 백업 장치의 역할을 하는 임의의 데이터 엔티티를 저장할 수 있다. 오프 힙 휘발성 메모리 내의 메모리는 연속적인 메모리 블록을 사용하고 자동 가비지(garbage) 수집을 사용하지 않고 관리될 수 있으며, 또한 거기에 저장된 임의의 데이터를 관리하는 효율성을 증가시킬 수 있다. 많은 경우에, 메모리 내 데이터 처리 시스템이 데이터 엔티티의 주 사본보다 더 많은 백업을 관리할 수 있으므로, 예를 들어, 각각의 데이터 엔티티가 두 번을 초과하여 복제될 경우, 오프 힙 메모리를 사용하여 백업 사본을 관리하는 효율을 증가시키는 것은 본 발명자들에 의해 개발된 복제 기술의 성능을 더욱 향상시키는 역할을 한다.
일부 실시예에서, 데이터 엔티티의 그룹에 대한 주 장치는 (예를 들어, 전력 공급 중단 또는 네트워크 중단으로 인해) 액세스 불가능하게 될 수 있고, 백업 장치는 그룹 내의 데이터 엔티티 중 하나 이상에 대한 주 장치로서 동작하기 시작할 수 있다. 이러한 상황에서, 백업 장치가 이제 그룹 내의 데이터 엔티티 중 하나 이상에 대한 주 장치일지라도, 백업 엔티티는 데이터 엔티티에 대한 액세스가 요청될 때까지 이들 데이터 엔티티를 오프 힙 메모리에 계속 저장할 수 있으며, 데이터 엔티티에 대한 액세스가 요청되는 시점에 데이터 엔티티는 백업 장치의 온 힙 메모리로 이동된다. 이러한 방식으로, 대체 작동은 데이터 엔티티의 모든 백업 사본이 그에 대한 액세스가 요구되기 전에 백업 장치의 오프 힙 휘발성 메모리에서 온 힙 휘발성 메모리로 사전에 이동될 것을 요구하지 않으면서 매우 신속하게 수행될 수 있다.
일부 경우에서는, 데이터 처리 시스템에서 관리되는 데이터 엔티티의 사본이 네트워크 중단 및 전력 공급 중단과 같은 이벤트로 인해 비동기화될 수 있다. 예를 들어, 네트워크 및/또는 전력 공급 중단은 액세스 불가능한 기간 동안 하나 이상의 다른 장치 상에서 업데이트될 수 있는 데이터 엔티티를 저장하는 장치를 액세스 불가능하게 할 수 있다. 전력 공급 중단은 장치의 전력 손실이 해당 장치의 휘발성 메모리에만 저장된 모든 데이터의 손실을 초래하므로 휘발성 메모리의 면에서 고유한 위험이 있다. 데이터 처리 시스템은 대량의 데이터(예를 들어, 은행 또는 신용 카드 거래와 같은 수백만 또는 수십억의 데이터 엔티티)를 관리 할 수 있기 때문에, 단위 시간당 다수의 거래(예를 들어, 초당 수백만 거래)를 신뢰 가능하게 처리할 수 있는 고 쓰루풋 데이터 처리 시스템을 달성하기 위해서는 재동기화를 위한 저 대역폭 기술이 필요하다.
따라서, 본 발명자들은 메모리 내 데이터 처리 시스템에서 장치에 의해 저장된 데이터 엔티티를 효율적으로 재동기화하는 저 대역폭 재동기화 기술을 개발했다. 저 대역폭 기술은 데이터 엔티티와 연관된 버전 번호에 적어도 부분적으로 기초하여 데이터 처리 시스템에 의해 관리되는 데이터 엔티티를 동기화하는 매니페스트 기반 재동기화 기술이다.
일부 실시예에서, 데이터 처리 시스템의 각각의 장치는 장치의 휘발성 메모리에 저장된 각각의 데이터 엔티티에 대한 각각의 로컬 버전 번호를 유지할 수 있다. 재동기화를 수행하라는 표시에 응답하여, 데이터 엔티티의 그룹에 대한 주 장치는 그룹 내의 데이터 엔티티 각각에 대한 버전 번호를 포함하는 매니페스트를 그룹 내의 데이터 엔티티의 대응하는 백업 사본을 저장하는 하나 이상의 백업 장치에 제공할 수 있다. 각각의 백업 장치는 매니페스트의 버전 번호를 휘발성 메모리에 저장된 데이터 엔티티의 백업 사본의 로컬 버전 번호와 비교하고, 비교의 결과에 기초하여, 동기화되지 않은("out-of-synch") 데이터 엔티티를 식별하고, 주 장치로부터 이러한 데이터 엔티티를 요청할 수 있다. 따라서, 매니페스트를 전송하는 것에 응답하여, 주 장치는 하나 이상의 백업 장치로부터 데이터 엔티티에 대한 요청을 수신할 수 있고, 요청된 데이터 엔티티를 요청하는 백업 장치에 제공할 수 있다.
본 명세서에 설명된 기술의 일부 실시예는 종래의 데이터 복제 기술의 전술한 단점 중 일부를 다룬다. 그러나, 모든 실시예가 이러한 단점들 모두를 다루는 것은 아니며, 일부 실시예는 이들 중 어느 것도 다루지 않을 수 있다. 그에 따라, 본 명세서에서 설명된 기술의 양태는 종래의 데이터 복제 기술의 전술한 단점 전부 또는 임의의 것을 다루는 것으로 제한되지 않음을 이해해야 한다.
본 명세서에 설명된 실시예는 임의의 다양한 방식으로 구현될 수 있음을 이해해야 한다. 특정 구현의 예는 단지 예시적인 목적으로 아래에 제공된다. 제공된 이러한 실시예 및 특징/기능은 개별적으로, 모두 함께, 또는 둘 이상의 임의의 조합으로 사용될 수 있다는 것을 이해해야 하며, 본 명세서에서 설명된 기술의 양태는 이러한 점에 제한되지 않는다.
도 1a는 다수의 컴퓨팅 장치의 휘발성 메모리 내의 데이터 엔티티를 관리하도록 구성된 예시적인 데이터 처리 시스템(100)의 블록도이다. 도시된 바와 같이, 예시적인 데이터 처리 시스템(100)은 컴퓨팅 장치(108, 110, 및 112)의 휘발성 메모리 내의 데이터 엔티티(106)를 관리하도록 구성된다. 데이터 엔티티(106)는 이 비제한적인 예에서 15개의 데이터 엔티티를 포함한다. 데이터 처리 시스템(100)은 3개의 컴퓨팅 장치의 휘발성 메모리 내의 15개의 데이터 엔티티를 관리하는 것으로 도시되어 있지만, 이것은 단지 설명의 명료성을 위한 것이며 제한적인 것이 아니다. 데이터 처리 시스템은 임의의 적절한 수의 컴퓨팅 장치(예를 들어, 적어도 10개, 적어도 1,000개, 적어도 10,000개, 10개 내지 10,000개 등) 의 휘발성 메모리에 임의의 적절한 수의 데이터 엔티티(예를 들어, 수천, 수백만, 수십억, 또는 수조의 데이터 엔티티)를 저장할 수 있으며, 본 명세서에 설명된 기술의 양태가 이러한 점에 제한되지 않는다.
일부 실시예에서, 데이터 엔티티는 하나 이상의 레코드 및/또는 하나 이상의 변수와 같은 하나 이상의 데이터 아이템을 포함할 수 있다. 데이터 아이템의 예는 신용 카드 거래 기록, 전화 통화 기록, 은행 거래 기록을 포함하나, 이로 제한되지는 않는다. 데이터 엔티티는 임의의 적절한 양의 데이터를 포함할 수 있다. 예를 들어, 데이터 엔티티는 1바이트 또는 다수 바이트의 데이터, 적어도 1킬로바이트의 데이터, 적어도 10킬로바이트의 데이터, 적어도 1메가바이트의 데이터 등을 포함할 수 있다.
데이터 처리 시스템(100)은 하나 이상의 컴퓨터 프로그램이 시스템에 새로운 데이터 엔티티를 제공하고, 시스템에 의해 관리되는 데이터 엔티티를 삭제하고, 시스템에 의해 관리되는 액세스 데이터 엔티티에 액세스하고, 및/또는 시스템에 의해 관리되는 데이터 엔티티 내의 정보를 업데이트하는 것을 할 수 있도록 구성될 수 있다. 이러한 컴퓨터 프로그램은 데이터 처리 시스템(100)의 일부 또는 외부의 것일 수 있다. 하나 이상의 사용자(예를 들어, 사용자(102))는 적어도 부분적으로 (예를 들어, 컴퓨팅 장치(104)의) 컴퓨팅 장치 부분에서 실행되고/되거나 데이터 처리 시스템(100)과 통신하도록 구성된 하나 이상의 컴퓨터 프로그램을 통해 데이터 처리 시스템(100)에 의해 저장된 데이터 엔티티 중 하나 이상에 액세스할 수 있다.
일부 실시예에서, 데이터 처리 시스템(100)에 의해 관리되는 데이터 엔티티는 데이터 엔티티의 다수의 그룹으로 분할될 수 있다. 데이터 엔티티의 그룹은 (1) 그룹 내의 데이터 엔티티의 주 사본을 저장하도록 구성된 주 컴퓨팅 장치(예를 들어, 주 서버); 및 (2) 그룹 내에 하나 이상의 데이터 엔티티의 백업 사본을 저장하도록 각각 구성된 하나 이상의 백업 컴퓨팅 장치(예를 들어, 하나 이상의 백업 서버)를 포함하는 다수의 컴퓨팅 장치와 연관될 수 있다. 그룹 내의 데이터 엔티티는 그룹과 연관된 주 컴퓨팅 장치를 통해(그리고 일부 실시예에서는 오직 이를 통해서만) 액세스 및/또는 업데이트될 수 있다.
도 1a에 도시된 바와 같이, 예를 들어, 데이터 엔티티(106)는 데이터 엔티티(D1-D5), 데이터 엔티티(D6-D10), 및 데이터 엔티티(D11-D15)의 3개의 엔티티 그룹으로 분할된다. 컴퓨팅 장치(108)는 데이터 엔티티(D1-D5)의 그룹에 대한 주 컴퓨팅 장치이고, 데이터 엔티티의 하나 이상의 다른 그룹에 대한 백업 컴퓨팅 장치의 역할을 할 수 있다. 따라서, 컴퓨팅 장치(108)는 데이터 엔티티(D1-D5)의 주 사본을 저장하고, 데이터 엔티티(D6-D15) 중 하나 이상의 백업 사본을 저장할 수 있다. 컴퓨팅 장치(110)는 데이터 엔티티(D6-D10)의 그룹에 대한 주 컴퓨팅 장치이고, 데이터 엔티티의 하나 이상의 다른 그룹에 대한 백업 컴퓨팅 장치의 역할을 할 수 있다. 따라서, 컴퓨팅 장치(110)는 데이터 엔티티(D6-D10)의 주 사본을 저장하고, 데이터 엔티티(D1-D5 및 D11-D15) 중 하나 이상의 백업 사본을 저장할 수 있다. 컴퓨팅 장치(112)는 데이터 엔티티(D11-D15)의 그룹에 대한 주 컴퓨팅 장치이고, 데이터 엔티티의 하나 이상의 다른 그룹에 대한 백업 컴퓨팅 장치의 역할을 할 수 있다. 따라서, 컴퓨팅 장치(112)는 데이터 엔티티(D11-D15)의 주 사본을 저장하고, 데이터 엔티티(D1-D10) 중 하나 이상의 백업 사본을 저장할 수 있다.
데이터 엔티티는 명시적으로 또는 암시적으로 다수의 그룹으로 분할될 수 있음을 이해해야 한다. 일부 실시예에서, 데이터 엔티티는 그룹으로 명시적으로 분할될 수 있고, 결과적인 그룹 각각은 각각의 주 컴퓨팅 장치와 연관될 수 있다. 예를 들어, 데이터 엔티티(106)는 3개의 그룹(예를 들어, 엔티티 D1-D5를 포함하는 제1 그룹, 엔티티 D6-D10을 포함하는 제2 그룹, 및 D11-D15를 포함하는 제3 그룹)으로 명시적으로 분할될 수 있고, 이들 그룹 각각은 각각의 주 컴퓨팅 장치(예를 들어, 컴퓨팅 장치(108, 110, 및 112))와 연관될 수 있다.
일부 실시예에서, 데이터 처리 시스템에 의해 관리되는 데이터 엔티티 각각은 주 컴퓨팅 장치와 연관될 수 있으며, 이러한 연관은 데이터 엔티티의 그룹화를 의미한다 - 동일한 주 컴퓨팅 장치와 연관된 모든 데이터 엔티티는 그룹으로 간주될 수 있다. 예를 들어, 데이터 엔티티(D1-D5) 각각은 이들 데이터 엔티티에 대한 주 컴퓨팅 장치인 컴퓨팅 장치(108)에 할당될 수 있고, 동일한 컴퓨팅 장치와의 공통 연관으로 인해 데이터 엔티티의 그룹을 구성하는 것으로 간주될 수 있다. 데이터 엔티티는 임의의 적절한 방식으로 주 컴퓨팅 장치와 연관될 수 있으며, 예를 들어, (예를 들어, 데이터 엔티티 내의 데이터, 데이터 엔티티의 식별자, 및/또는 데이터 엔티티와 연관된 임의의 다른 정보에 기초하여) 데이터 엔티티를 특정 주 컴퓨팅 장치에 매핑하는 결정론적 매핑을 통해 주 컴퓨팅 장치와 연관될 수 있다.
데이터 처리 시스템에 의해 관리되는 데이터 엔티티는 적절한 방식으로 임의의 적절한 수 그룹으로 분할될 수 있다는 것을 이해해야 한다. 예를 들어, 도 1a에 도시된 바와 같이, 데이터 엔티티는 동일하거나 유사한 수의 데이터 엔티티를 갖는 그룹으로 분할될 수 있지만, 이는 본 명세서에서 설명된 기술의 제한이 아니며, 일부 실시예에서, 데이터 엔티티는 상이한 수의 데이터 엔티티를 갖는 그룹으로 분할될 수 있다. 또한, 도 1a의 도시된 예에서, 데이터 엔티티는 그들의 숫자 식별자에 기초하여 순차적으로 그룹화되지만, 이것도 본 명세서에 설명된 기술의 제한이 아니며 단지 설명의 명료성을 위해 행해진다.
컴퓨팅 장치(104, 108, 110, 및 112) 각각은 고정식 또는 휴대형의 임의의 적절한 유형의 컴퓨팅 장치일 수 있으며, 본 명세서에서 설명된 기술의 양태는 이러한 점에 제한되지 않는다. 또한, 컴퓨팅 장치(104, 108, 110, 및 112)은 동일한 유형의 컴퓨팅 장치일 필요는 없다. 컴퓨팅 장치(104, 108, 110, 및 112)는 네트워크(114) 및 접속(116a, 116b, 116c 및 116d)을 통해 서로 통신하도록 구성된다. 네트워크(114)는 인터넷, 인트라넷, 광역 통신망, 근거리 통신망과 같은 임의의 적절한 유형의 네트워크, 및/또는 임의의 다른 적절한 유형의 네트워크일 수 있다. 접속(116a, 116b, 116c, 및 116d) 각각은 유선, 무선, 및/또는 임의의 다른 적절한 유형의 접속일 수 있다.
데이터 처리 시스템(100)의 일부인 컴퓨팅 장치는 데이터 처리 시스템(100)에 의해 관리되는 데이터 엔티티를 저장하기 위한 메모리를 포함한다. 데이터 엔티티를 저장하도록 구성된 데이터 처리 시스템(100)에서의 컴퓨팅 장치는 휘발성 메모리(예를 들어, 랜덤 액세스 메모리, CPU 캐시 메모리 등), 및 임의로, 비휘발성 메모리(예를 들어, 판독 전용 메모리(read only memory, ROM), 플래시 메모리, 솔리드 스테이트 메모리, 디스크 메모리 등)를 포함한다. 휘발성 메모리는 온 힙 부분 및 오프 힙 부분을 포함할 수 있다.
예를 들어, 도 1b에 도시된 바와 같이, 컴퓨팅 장치(108)는 온 힙 메모리(108a) 및 오프 힙 휘발성 메모리(108b)를 포함하는 휘발성 메모리, 및 디스크 메모리(108c)를 포함하는 비휘발성 메모리를 갖는다. 컴퓨팅 장치(110)는 온 힙 메모리(110a) 및 오프 힙 휘발성 메모리(110b)를 포함하는 휘발성 메모리, 및 디스크 메모리(110c)를 포함하는 비휘발성 메모리를 갖는다. 컴퓨팅 장치(112)는 온 힙 메모리(112a) 및 오프 힙 휘발성 메모리(112b)를 포함하는 휘발성 메모리, 및 디스크 메모리(112c)를 포함하는 비휘발성 메모리를 갖는다. 데이터 처리 시스템(100)의 컴퓨팅 장치 부분의 각각은 휘발성 메모리 및 비휘발성 메모리 양자 모두 포함하지만, 데이터 처리 시스템(100)의 하나 이상의 컴퓨팅 장치 부분은 휘발성 메모리만을 가질 수 있으며, 본 명세서에서 설명된 기술의 양태는 이러한 점에 제한되지 않는다.
일부 실시예에서, 데이터 처리 시스템(100) 내의 장치는 휘발성 메모리의 온 힙 부분에 장치가 주 장치인 데이터 엔티티를 저장할 수 있다. 예를 들어, 도 1b에 도시된 바와 같이, 컴퓨팅 장치(108)는 데이터 엔티티(D1-D5)에 대한 주 컴퓨팅 장치이고, 온 힙 휘발성 메모리(108a)에 데이터 엔티티(D1-D5)의 주 사본인 데이터 엔티티(120a)를 저장한다. 컴퓨팅 장치(110)는 데이터 엔티티(D6-D10)에 대한 주 컴퓨팅 장치이고, 온 힙 휘발성 메모리(110a)에 데이터 엔티티(D6-D10)의 주 사본인 데이터 엔티티(122a)를 저장한다. 컴퓨팅 장치(112)는 데이터 엔티티(D11-D15)에 대한 주 컴퓨팅 장치이고, 온 힙 휘발성 메모리(112a)에 데이터 엔티티(D11-D15)의 주 사본인 데이터 엔티티(124a)를 저장한다.
또한, 일부 실시예에서, 데이터 처리 시스템(100) 내의 장치는 휘발성 메모리의 온 힙 부분에 장치가 백업 장치인 데이터 엔티티를 저장할 수 있다. 예를 들어, 도 1b에 도시된 바와 같이, 컴퓨팅 장치(108)는 데이터 아이템(D6-D15)에 대한 백업 컴퓨팅 장치이고, 오프 힙 휘발성 메모리(108b)에 각각 데이터 엔티티(D6-D10 및 D11-D15)의 백업 사본인 데이터 엔티티(122b 및 124b)를 저장한다. 컴퓨팅 장치(110)는 데이터 아이템(D1-D5 및 D11-D15)에 대한 백업 컴퓨팅 장치이고, 오프 힙 휘발성 메모리(110b)에 각각 데이터 엔티티(D6-D10 및 D11-D15)의 백업 사본인 데이터 엔티티(120b 및 124c)를 저장한다. 컴퓨팅 장치(112)는 데이터 아이템(D1-D10)에 대한 백업 컴퓨팅 장치이고, 오프 힙 휘발성 메모리(112b)에 각각 데이터 엔티티(D1-D5 및 D6-D10)의 백업 사본인 데이터 엔티티(120c 및 122c)를 저장한다.
일부 실시예에서, 데이터 처리 시스템 내의 장치는 데이터 엔티티 및 저장된 데이터 엔티티와 연관된 정보를 저장할 수 있다. 예를 들어, 장치는 장치의 휘발성 메모리에 저장된 데이터 엔티티의 적어도 하나의 서브 세트의 각각의 서브 세트에 대한 버전 번호를 저장할 수 있다. 추가적으로 또는 대안적으로, 장치는 데이터 엔티티의 적어도 하나의 서브 세트의 각각의 서브 세트에 대한 식별자를 저장할 수 있다. 후술하는 바와 같이, 이들 식별자 및 버전 번호는 데이터 처리 시스템의 다수의 장치에 걸쳐 데이터 엔티티의 재동기화를 위해 사용될 수 있다. 예를 들어, 도 1d에 도시된 바와 같이, 힙 메모리(108a)는 데이터 엔티티(D1-D5)의 내용, 이들 데이터 엔티티(D1-D5) 각각에 대한 식별자, 및 이들 데이터 엔티티 각각에 대한 버전 번호를 저장한다. 이 정보는 표의 일부로 도시되지만, 이는 단지 설명을 위한 것일 뿐이고, 데이터 엔티티 및 그와 연관된 임의의 정보(예를 들어, 버전 번호 및/또는 식별자)는 임의의 적절한 데이터 구조(들)를 사용하여 임의의 적절한 포맷으로 저장될 수 있으며, 본 명세서에서 설명된 기술의 양태는 이러한 점에 제한되지 않는다.
일부 실시예에서, 상이한 장치는 동일한 식별자를 사용하여 동일한 데이터 엔티티의 주 사본 및 백업 사본을 참조할 수 있다. 예를 들어, 데이터 엔티티의 그룹에 대한 주 장치 및 데이터 엔티티의 그룹에 대한 백업 장치(들)는 데이터 엔티티 및 그 사본에 대해 동일한 식별자를 저장할 수 있다. 다른 실시예에서는, 그러나, 상이한 장치는 상이한 식별자를 사용하여 동일한 데이터 엔티티의 주 사본 및 백업 사본을 참조할 수 있다. 예를 들어, 데이터 엔티티의 그룹에 대한 주 장치는 데이터 엔티티의 그룹에 대해 하나의 식별자 집합을 사용할 수 있고, 백업 장치(들)는 데이터 엔티티의 그룹에 대해 상이한 식별자 세트를 사용할 수 있다. 이러한 실시예에서, 주 및/또는 백업 장치(들)는 상이한 식별자 세트를 서로 매핑하도록 프로그래밍될 수 있다.
데이터 처리 시스템(100)의 동작 중에, 데이터 엔티티의 주 사본은 그들의 백업 사본보다 더 자주 액세스될 수 있다. 따라서, 온 힙 휘발성 메모리가 데이터 엔티티의 주 사본을 저장하는 데 사용되고, 오프 힙 휘발성 메모리가 데이터 엔티티의 백업 사본을 저장하는 데 사용되는 실시예에서, 데이터 처리 시스템(100)은 온 힙 휘발성 메모리에 저장된 데이터 및 오프 힙 휘발성 메모리에 저장된 데이터를 상이한 방식으로 관리하여 시스템의 전반적인 응답성을 개선시키도록 구성될 수 있다. 예를 들어, 데이터 처리 시스템(100)은 자동 가비지 수집을 사용하지 않으면서 오프 힙 휘발성 메모리 내의 데이터를 관리할 수 있고, 자동 가비지 수집을 사용하여 온 힙 휘발성 메모리 내의 데이터를 관리할 수 있다. 다른 예로서, 데이터 처리 시스템(100)은 큰 연속적인 메모리 블록에서 데이터를 액세스 및/또는 기입함으로써 오프 힙 휘발성 메모리의 데이터를 관리할 수 있지만, 그러한 연속적인 블록이 온 힙 메모리에서 사용될 필요는 없다. 이러한 방식으로, 데이터 처리 시스템(100)은 자신이 관리하는 데이터 엔티티의 주 사본에 대한 액세스 요청을 보다 신속하게 핸들링할 수 있으며, 이는 높은 쓰루풋 애플리케이션에서 중요하다.
도 1b에 도시된, 데이터 처리 시스템(100)이 데이터 엔티티 및 다수의 장치에 걸친 그들 각각의 사본을 어떻게 관리하는 지에 대한 예시적인 예에서, 컴퓨팅 장치(108, 110 및 112) 각각은 데이터 처리 시스템에 의해 관리되는 각각의 데이터 엔티티의 수 사본 또는 백업 사본을 저장한다. 예를 들어, 데이터 엔티티(D1-D5)의 주 사본은 컴퓨팅 장치(108)의 온 힙 메모리에 저장되고, 이들 데이터 엔티티의 2차 사본은 컴퓨팅 장치(110 및 112) 양자 모두의 오프 힙 메모리에 저장된다. 그러나, 데이터 처리 시스템은 데이터 처리 시스템 내의 각각의 컴퓨팅 장치 상에 각각의 데이터 엔티티의 사본을 저장할 필요가 없으며, 본 명세서에서 설명된 기술의 양태는 이러한 점에 제한되지 않는다.
도 1c의 예시적인 예에 도시된 바와 같이, 예를 들어, 데이터 처리 시스템(100)은 데이터 처리 시스템 내에서 백업 장치로서 동작하도록 구성된(즉, 데이터 엔티티의 백업 사본을 저장하도록 구성된) 컴퓨팅 장치 중 일부 상에만 일부 데이터 엔티티의 백업 사본을 저장할 수 있다. 예를 들어, 데이터 처리 시스템(100)은 컴퓨팅 장치(108)의 온 힙 메모리(108a)에 데이터 엔티티(130a)로서 데이터 엔티티(D1-D5)의 주 사본을 저장하고, 컴퓨팅 장치(110)의 오프 힙 메모리에 데이터 엔티티(130b)로서 이들 데이터 엔티티의 백업 사본을 저장하도록 구성될 수 있다. 이 구성에서, 컴퓨팅 장치(112)는 데이터 엔티티(D1-D5)의 임의의 백업 사본을 저장하지 않는다. 다른 데이터 엔티티는 모든 컴퓨팅 장치 상에 주 사본 또는 백업 사본으로서 저장될 수 있다. 예를 들어, 도 1c에 도시된 바와 같이, 데이터 엔티티(D11-D15)의 주 사본은 컴퓨팅 장치(112) 상에 데이터 엔티티(134a)로서 저장될 수 있고, 이들 데이터 엔티티의 백업 사본(134b, 134c)은 각각 컴퓨팅 장치(108 및 110)에 저장될 수 있다.
일부 실시예에서, 데이터 처리 시스템(100)은 데이터 엔티티의 백업 사본을 저장하기 위해 어떤 장치(들)를 사용할지를 결정하도록 구성될 수 있다. 이는 적절한 방식으로 행해질 수 있다. 예를 들어, 데이터 처리 시스템(100)은 각각의 데이터 엔티티에 대해, 해당 데이터 엔티티의 백업 사본을 저장하기 위해 어떤 장치(들)를 사용할지를 결정하도록 구성될 수 있다. 데이터 엔티티 레벨에서 이러한 결정을 내리는 것은 데이터 엔티티가 그 주 사본은 동일한 컴퓨팅 장치 상에 저장되나, 그 백업 사본은 상이한 장치 상에 저장되게 할 수 있다. 예를 들어, 도 1c에 도시된 바와 같이, 데이터 엔티티(D6-D10)의 주 사본은 컴퓨팅 장치(110)의 온 힙 메모리(110a)에 데이터 엔티티(132a)로서 저장되고, 데이터 엔티티(D6-D8)의 백업 사본은 컴퓨팅 장치(108)의 오프 힙 메모리(108b)에 데이터 엔티티(132b)로서 저장되고, 데이터 엔티티(D9-D10)의 백업 사본은 컴퓨팅 장치(112)의 오프 힙 메모리(112c)에 데이터 엔티티(132c)로서 저장된다. 이 예에서, 컴퓨팅 장치(108)는 데이터 엔티티(D9-D10)의 백업 사본을 저장하지 않고, 컴퓨팅 장치(112)는 데이터 엔티티(D6-D8)의 백업 사본을 저장하지 않는다. 다른 예로서, 데이터 처리 시스템은 주 장치를 공유하는 데이터 엔티티의 각각의 그룹에 대해, 그룹 내의 모든 엔티티의 백업 사본을 저장하기 위해 어떤 장치(들)를 사용할지를 결정하도록 구성될 수 있다. 이 구성에서, 그룹의 임의의 데이터 엔티티의 백업 사본을 저장하는 각각의 백업 장치는 그룹 내의 다른 모든 데이터 엔티티의 백업 사본도 저장할 것이다.
일부 실시예에서, 데이터 처리 시스템(100)에 의해 유지되는 데이터 엔티티는 업데이트될 수 있다. 예를 들어, 하나 이상의 새로운 데이터 엔티티가 시스템에 의해 관리되는 데이터 엔티티 세트에 추가될 수 있다. 다른 예로서, 데이터 처리 시스템에 의해 관리되는 하나 이상의 데이터 엔티티가 삭제될 수 있다. 또 다른 예로서, 데이터 처리 시스템에 의해 관리되는 데이터 엔티티 중 하나 이상의 내용이 변경될 수 있다. 또 다른 예로서, 데이터 처리 시스템에 의해 관리되는 데이터 엔티티 중 하나 이상의 내용이 대체될 수 있다. 일부 실시예에서, 데이터 처리 시스템(100)은 본 발명자들에 의해 개발되고 도 2를 참조하여 하기에서 설명되는 복제 프로세스를 사용하여 자신이 관리하는 데이터 엔티티 중 하나 이상을 업데이트할 수 있다.
도 2는 본 명세서에 설명된 기술의 일부 실시예에 따른, 장치 상에 저장된 데이터 엔티티 및 하나 이상의 다른 장치 상에 저장된 그 사본 중 하나 이상을 업데이트하기 위한 예시적인 프로세스(200)의 흐름도이다. 프로세스(200)는 임의의 적절한 데이터 처리 시스템에 의해 수행될 수 있고, 예를 들어, 전술된 데이터 처리 시스템(100)에 의해 수행될 수 있다.
프로세스(200)는 데이터 처리 시스템 내의 컴퓨팅 장치가 데이터 엔티티를 업데이트하라는 표시를 수신하는 액션(202)에서 시작한다. 표시는 데이터 처리 시스템에 의해 관리되는 것에 새로운 데이터 엔티티를 추가하라는 표시, 데이터 처리 시스템에 의해 관리되는 데이터 엔티티를 삭제하라는 표시, 또는 데이터 처리 시스템에 의해 관리되는 데이터 엔티티 내의 데이터를 변경하라는 표시일 수 있다. 비 제한적 예로서, 데이터 처리 시스템(100)에 의해 관리되는 데이터 엔티티(106)를 참조하여, 표시는 데이터 엔티티(106)에 새로운 데이터 엔티티(D16)를 추가하거나, 데이터 엔티티(106)로부터 데이터 엔티티(D9)를 삭제하거나, 데이터 엔티티(106)의 데이터 엔티티(D3) 내의 데이터 값을 변경하라는 표시일 수 있다. 표시는 예를 들어 데이터 처리 시스템 외부의 장치, 데이터 처리 시스템의 다른 장치 부분으로부터의 장치, 데이터 처리 시스템의 다른 장치 부분을 포함하는 임의의 적절한 소스로부터 수신될 수 있거나, 표시를 수신하는 컴퓨팅 장치 상에서 실행되는 소프트웨어에 의해(자동으로 또는 사용자 입력에 응답하여) 생성될 수 있다. 일부 예에서, 표시는 데이터 엔티티가 업데이트되어야 한다는 표시를 제공하는 데이터 처리 시스템의 사용자에 응답하여 수신될 수 있다.
일부 실시예에서, 액션(202)에서 수신된 표시는 업데이트될 데이터 엔티티를 식별하는 정보를 포함할 수 있다. 표시가 데이터 엔티티 내의 데이터 값이 변경되어야 한다는 표시인 경우, 표시는 새로운 데이터 값을 포함할 수 있다. 표시가 새로운 데이터 엔티티가 추가되어야 한다는 표시인 경우, 표시는 새로운 데이터 엔티티의 일부가 될 데이터의 적어도 일부(예를 들어, 모두)를 포함할 수 있다. 표시는 임의의 적절한 형식일 수 있으며, 본 기술의 양태는 이러한 점에 제한되지 않는다.
다음으로, 프로세스(200)는 결정 블록(204)으로 진행하며, 여기서 데이터 엔티티를 업데이트하라는 표시를 수신한 컴퓨팅 장치가 데이터 엔티티에 대한 주 장치인지 여부가 결정된다. 즉, 결정 블록(204)에서, 컴퓨팅 장치가 업데이트될 데이터 엔티티의 주 사본을 저장하는지(또는 새로운 데이터 엔티티가 추가되는 경우 저장할지) 여부에 대한 결정이 이루어진다. 이 결정은 적절한 방식으로 이루어질 수 있다. 예를 들어, 일부 실시예에서, 데이터 엔티티를 업데이트하라는 표시는 데이터 엔티티를 식별하는 정보를 포함할 수 있고, 이 정보는 데이터 엔티티에 대한 주 장치를 (예를 들어, 룩업 테이블, 매핑을 통해, 또는 임의의 다른 적절한 방식으로) 식별하고, 그 표시를 수신한 컴퓨팅 장치가 식별된 주 장치인지 여부를 결정하는 데 사용될 수 있다.
결정 블록(204)에서, 데이터 엔티티를 업데이트하라는 표시를 수신한 컴퓨팅 장치가 데이터 엔티티에 대한 주 장치가 아니라고 결정되는 경우, 프로세스(200)는 표시가 데이터 엔티티에 대한 주 장치로 포워딩되는 액션(206)으로 진행된다. 예를 들어, 컴퓨팅 장치(108)가 주 사본이 컴퓨팅 장치(110)의 휘발성 메모리에 저장되어 있는 데이터 엔티티(D6)를 업데이트하라는 표시를 수신했으면, 컴퓨팅 장치(108)는 결정 블록(204)에서 컴퓨팅 장치(110)가 데이터 엔티티(D6)에 대한 주요 장치라고 결정할 수 있고, 액션(206)에서 그 표시를 컴퓨팅 장치(110)에 포워딩할 수 있다.
반면에, 결정 블록(204), 데이터 엔티티를 업데이트하라는 표시를 수신한 컴퓨팅 장치가 데이터 엔티티에 대한 주 장치라고 결정되는 경우, 프로세스(200)는 데이터 엔티티의 주 사본이 주 장치 상에서 업데이트되는 액션(208)으로 진행된다.
데이터 엔티티의 주 사본이 주 장치 상에서 업데이트된 후, 프로세스(200)는 데이터 엔티티의 백업 사본을 저장하는 장치(들)가 식별되는 액션(210)으로 진행된다. 데이터 엔티티를 식별하는 정보는 예를 들어 룩업 테이블, 매핑을 통해, 또는 임의의 다른 적절한 방식으로 데이터 엔티티에 대한 백업 장치(들)를 결정하는 데 사용될 수 있다. 예를 들어, 컴퓨팅 장치(108)가 데이터 엔티티(D3)를 업데이트하라는 표시를 수신했으면, 데이터 처리 시스템은 액션(210)에서, 컴퓨팅 장치(110 및 112) 각각이 데이터 엔티티(D3)의 사본을 저장하는지를 결정할 수 있다.
백업 장치(들)가 식별된 후에, 주 장치는 액션(212)에서, 데이터 엔티티를 업데이트하라는 표시를 액션(210)에서 식별된 백업 장치(들)에 제공한다.
다음으로, 프로세스(200)는 데이터 엔티티가 액션(210)에서 식별된 백업 장치(들) 상에서 업데이트되었는지 여부가 결정되는 결정 블록(214)으로 진행된다. 이 결정은 적절한 방식으로 이루어질 수 있다. 예를 들어, 주 장치가 데이터 엔티티의 각각의 사본이 업데이트되었음을 나타내는 이들 백업 장치(들) 각각으로부터의 확인 응답을 수신한 경우, 데이터 엔티티가 액션(210)에서 식별된 백업 장치(들) 상에서 업데이트되었다고 결정될 수 있다. 다른 예로서, 액션(210)에서 식별된 백업 장치의 서브 세트만이 (예를 들어, 네트워크 접속성 또는 전력 문제로 인해) 액세스 가능한 경우, 주 장치가 데이터 엔티티의 각각의 사본이 업데이트되었음을 나타내는 액세스 가능한 백업 장치(들) 각각으로부터의 확인 응답을 수신한 경우, 데이터 엔티티가 액션(210)에서 식별된 백업 장치(들) 상에서 업데이트되었다고 결정될 수 있다. 그러한 경우에, 데이터 처리 시스템은 액세스 불가능한 백업 장치 상의 데이터 엔티티의 사본을 그러한 장치가 액세스 가능한 추후의 시간에 업데이트하기 위한 임의의 필요한 정보를 (예를 들어, 주 장치 상에) 저장할 수 있다.
결정 블록(214)에서, 데이터 엔티티가 액션(210)에서 식별된 백업 장치(들)상에서 업데이트되었다고 결정될 때까지, 프로세스(200)는 업데이트(들)가 완료될 때까지 대기한다. 반면에, 결정 블록(214)에서, 데이터 엔티티의 사본이 백업 장치(들) 상에서 업데이트되었다고 결정되는 경우, 프로세스(200)는 데이터 엔티티가 업데이트되었다는 표시가 제공되는 액션(216)으로 진행된다. 표시는 데이터 엔티티에 대한 업데이트를 요청한 사용자 또는 컴퓨터 프로그램에 제공되는 것일 수 있다. 추가적으로 또는 대안적으로, 표시를 제공하는 것은 데이터 엔티티가 업데이트되었음을 나타내는 정보를 (예를 들어, 로그에) 저장하는 것을 포함할 수 있다. 액션(216) 후에, 프로세스(200)는 완료된다.
프로세스(200)는 예시적인 것이고, 프로세스(200)의 변형이 가능하다는 것을 이해해야 한다. 예를 들어, 일부 실시예에서, 프로세스(200)에서의 하나 이상의 액션의 순서는 변경될 수 있다. 특정 예로서, 액션(208, 210, 및 212)은 임의의 적절한 순서로 수행될 수 있다. 다른 특정 예로서, 일부 실시예에서, 결정 블록(214)에서, 데이터 엔티티의 사본이 업데이트되었다고 결정된 후에만 데이터 엔티티의 주 사본이 업데이트될 수 있다.
전술한 바와 같이, 메모리 내 데이터 처리 시스템에 의해 관리되는 데이터 엔티티의 사본은 네트워크 중단 및/또는 전력 공급 중단과 같은 이벤트로 인해 비동기화될 수 있다. 본 발명자들은 데이터 엔티티와 연관된 버전 번호에 적어도 부분적으로 기초하여 데이터 처리 시스템에 의해 관리되는 데이터 엔티티를 효율적으로 동기화하기 위해 저 대역폭 매니페스트 기반 재동기화 기술을 개발했다. 하기에서 더 자세히 설명되는 바와 같이, 그 기술은 데이터 처리 시스템에 의해 관리되는 데이터 엔티티의 각각의 사본에 대한 버전 번호를 유지하고, 이러한 버전 번호를 사용하여 동기화되지 않은 데이터 엔티티를 식별하여 효율적으로 재동기화하는 것을 수반한다.
도 3a, 도 3b, 및 도 3c는 본 명세서에 설명된 기술의 일부 실시예에 따른, 데이터 처리 시스템(300)에서의 매니페스트 기반 재동기화를 도시한다. 데이터 처리 시스템(300)은 컴퓨팅 장치(302, 304a, 304b, 및 304c)를 포함하며, 이들 각각은 임의의 적절한 유형의 컴퓨팅 장치일 수 있다. 컴퓨팅 장치(302)는 데이터 엔티티의 그룹에 대한 주 장치이고, 이들 데이터 엔티티의 주 사본을 휘발성 메모리에 저장한다. 그룹 내의 데이터 엔티티의 백업 사본은 컴퓨팅 장치(304a, 304b, 및 304c)의 휘발성 메모리에 저장된다. 컴퓨팅 장치(302, 304a, 304b, 및 304c) 각각은 휘발성 메모리에 저장된 각각의 데이터 엔티티에 대한 각각의 로컬 버전 번호를 저장한다.
도 3a에 도시된 바와 같이, 재동기화를 수행하라는 표시에 응답하여, 컴퓨팅 장치(302)는 (1) 컴퓨팅 장치(302)가 주 장치인 데이터 엔티티를 식별하는 정보 및 그들의 각각의 버전 번호를 포함하는 매니페스트(304)를 생성하고; (2) 컴퓨팅 장치(302)가 주 장치인 임의의 데이터 엔티티의 백업 사본을 저장하는 임의의 컴퓨팅 장치(들)에 생성된 매니페스트를 제공한다. 도 3a의 예시적인 실시예에서, 컴퓨팅 장치(304a, 304b, 및 304c) 각각은 주 사본이 컴퓨팅 장치(302) 상에 저장되는 데이터 엔티티의 하나 이상의 백업 사본을 저장한다. 따라서, 컴퓨팅 장치(302)는 컴퓨팅 장치(304a, 304b, 및 304c)에 매니페스트(304)를 제공한다.
다음으로, 컴퓨팅 장치(304a, 304b, 및 304c) 각각은 매니페스트(304) 내의 버전 번호를 그들의 각각의 휘발성 메모리에 저장된 데이터 엔티티의 백업 사본의 로컬 버전 번호와 비교할 수 있다. 이들 비교의 결과에 기초하여, 컴퓨팅 장치(304a, 304b, 및 304c) 각각은 그들의 주 사본과 동기화되지 않은 데이터 엔티티를 식별할 수 있다. 예를 들어, 매니페스트(304)에 표시된 바와 같은 해당 데이터 엔티티의 버전 번호가 해당 특정 데이터 엔티티에 대한 컴퓨팅 장치(304a)에 의해 유지된 로컬 버전 번호와 상이한 경우(예를 들어, 그보다 높은 경우), 컴퓨팅 장치(304a)는 컴퓨팅 장치(304a)에 저장된 데이터 엔티티의 백업 사본이 컴퓨팅 장치(302)에 저장된 주 사본과 동기화되지 않았다고 결정할 수 있다. 도 3b에 도시된 바와 같이, 동기화되지 않은 데이터 엔티티를 식별한 후에, 컴퓨팅 장치(304a, 304b, 및 304c) 각각은 동기화되지 않은 데이터 엔티티의 업데이트된 사본에 대한 각각의 요청(308a, 308b, 및 308c)을 컴퓨팅 장치(302)에 전송한다. 이러한 요청에 응답하여, 컴퓨팅 장치(302)는 요청된 데이터 엔티티를 컴퓨팅 장치(304a, 304b, 및 304c) 각각에 전송한다. 도 3c에 도시된 바와 같이, 예를 들어, 컴퓨팅 장치(302)는 요청(308a)에서 요청한 데이터 엔티티(310a)를 컴퓨팅 장치(304a)로 전송한다. 유사하게, 컴퓨팅 장치(302)는 요청(308b)에서 요청한 데이터 엔티티(310b)를 컴퓨팅 장치(304b)로 전송하고, 요청(308c)에서 요청한 데이터 엔티티(310c)를 컴퓨팅 장치(304c)로 전송한다.
도 3a, 도 3b, 및 도 3c에 도시된 바와 같이, 본 발명자들에 의해 개발된 매니페스트 기반 재동기화 기술은 컴퓨팅 장치(302) 상에 저장된 모든 데이터 엔티티의 내용이 컴퓨팅 장치(304a, 304b, 및 304c)로 송신될 것을 필요로 하지 않는다. 대신, 데이터 엔티티 및 그 버전을 식별하는 정보만이 송신된다. 데이터 엔티티를 식별하는 정보가 데이터 엔티티 자체보다 상당히 작은 양의 데이터(예를 들어, 열배 적은 데이터, 백배 적은 데이터, 천배 적은 데이터, 만배 적은 데이터, 백만배 적은 데이터 등)를 구성할 수 있기 때문에, 데이터 엔티티 자체 대신에 그러한 식별 정보를 송신하는 것은 데이터 처리 시스템의 네트워크 상에서 재동기화하는 통신 부담을 감소시켜, 그 결과 전반적인 동작 효율의 개선을 가져온다. 또한, 동기화되지 않은 데이터 엔티티만을 송신하는 것은 통신 부하를 추가로 감소시킨다.
도 4a, 도 4b, 도 4c, 도 4d, 도 4e, 및 도 4f는 본 명세서에 설명된 기술의 일부 실시예에 따른, 데이터 처리 시스템(400)에서의 매니페스트 기반 재동기화의 보다 상세한 예시적인 예를 도시한다. 도 4a에 도시된 바와 같이, 데이터 처리 시스템(400)은 컴퓨팅 장치(402, 404, 및 406)를 포함한다. 컴퓨팅 장치(402, 404, 및 406) 각각은 고정식 장치 또는 휴대용 장치와 같은 임의의 적절한 유형의 컴퓨팅 장치일 수 있다. 예를 들어, 컴퓨팅 장치(402, 404, 및 406) 각각은 서버일 수 있다. 컴퓨팅 장치(402, 404, 및 406)는 (예를 들어, 도 1a에 도시된 네트워크(114)를 참조하여) 예를 들어 본 명세서에서 제공되는 임의의 적절한 유형의 네트워크일 수 있는 네트워크(408)를 통해 통신 가능하게 결합된다.
컴퓨팅 장치(402)는 온 힙 휘발성 메모리(402a), 오프 힙 휘발성 메모리(402b), 및 비휘발성 메모리(402c)를 포함한다. 컴퓨팅 장치(402)는 온 힙 휘발성 메모리(402a)에 데이터 엔티티(D1-D5)의 주 사본(410a)을, 오프 힙 휘발성 메모리(402b)에 데이터 엔티티(D6-D10)의 백업 사본(412b)을, 그리고 오프 힙 휘발성 메모리(402b)에 데이터 엔티티(D11-D15)의 백업 사본(414c)을 저장한다. 컴퓨팅 장치(402)는 데이터 엔티티(D1-D5)의 주 사본 각각에 대한 로컬 버전 번호를 저장한다. 데이터 엔티티(D1, D2, D3, D4, 및 D5)의 버전 번호는 각각 10, 3, 1, 1, 및 4이다. 도 4a에 명시적으로 도시되지는 않았지만, 컴퓨팅 장치(402)는 또한 데이터 엔티티(D6-D15)의 백업 사본(412b 및 414c)의 각각에 대한 로컬 버전 번호를 저장한다.
컴퓨팅 장치(404)는 온 힙 휘발성 메모리(404a), 오프 힙 휘발성 메모리(404b), 및 비휘발성 메모리(404c)를 포함한다. 컴퓨팅 장치(404)는 온 힙 휘발성 메모리(404a)에 데이터 엔티티(D6-D10)의 주 사본(412a)을, 오프 힙 휘발성 메모리(404b)에 데이터 엔티티(D1-D5)의 백업 사본(410b)을, 그리고 오프 힙 휘발성 메모리(404b)에 데이터 엔티티(D11-D15)의 백업 사본(414b)을 저장한다. 컴퓨팅 장치(404)는 데이터 엔티티(D1-D5)의 백업 사본 각각에 대한 로컬 버전 번호를 저장한다. 데이터 엔티티(D1, D2, D3, D4, 및 D5)의 백업 사본의 버전 번호는 각각 10, 3, 1, 1, 및 4이다. 도 4a에 명시적으로 도시되지는 않았지만, 컴퓨팅 장치(404)는 또한 데이터 엔티티(D6-D10)의 주 사본(412a) 각각 및 데이터 엔티티(D11-D15)의 백업 사본(414b) 각각에 대한 로컬 버전 번호를 저장한다.
컴퓨팅 장치(406)는 온 힙 휘발성 메모리(406a), 오프 힙 휘발성 메모리(406b), 및 비휘발성 메모리(406c)를 포함한다. 컴퓨팅 장치(406)는 온 힙 휘발성 메모리(406a)에 데이터 엔티티(D11-D15)의 주 사본(414a)을, 오프 힙 휘발성 메모리(406b)에 데이터 엔티티(D1-D5)의 백업 사본(410c)을, 그리고 오프 힙 휘발성 메모리(406b)에 데이터 엔티티(D6-D10)의 백업 사본(412c)을 저장한다. 컴퓨팅 장치(406)는 데이터 엔티티(D1-D5)의 백업 사본 각각에 대한 로컬 버전 번호를 저장한다. 데이터 엔티티(D1, D2, D3, D4, 및 D5)의 백업 사본의 버전 번호는 각각 10, 3, 1, 1, 및 4이다. 도 4a에 명시적으로 도시되지는 않았지만, 컴퓨팅 장치(406)는 또한 데이터 엔티티(D11-D15)의 주 사본(414a) 각각 및 데이터 엔티티(D6-D10)의 백업 사본(412c) 각각에 대한 로컬 버전 번호를 저장한다.
도 4a에 도시된 데이터 엔티티(D1-D5)의 로컬 버전 번호를 비교하는 것으로부터 알 수 있는 바와 같이, 데이터 엔티티(D1-D5)는 컴퓨팅 장치(402, 404, 및 406)에 걸쳐 동기화된다. 대조적으로, 도 4b는 데이터 엔티티(D1-D5)의 다양한 사본이 이들 컴퓨팅 장치에 걸쳐 더 이상 동기화되지 않는 상황을 도시한다. 도 4b에 도시된 바와 같이, 데이터 엔티티(D2)의 주 사본(420a)은 업데이트되었고, 그 버전 번호(420b)는 3에서 4로 증가되었다. 또한, 엔트리(422a 및 422b)에서 알 수 있는 바와 같이, 데이터 엔티티(D5)의 주 사본은 삭제되었다. 이러한 변경(즉, 데이터 엔티티(D2)의 업데이트 및 데이터 엔티티(D5)의 삭제)은 컴퓨팅 장치(404)에 전파되며, 컴퓨팅 장치(404)는 데이터 엔티티(D2)의 주 사본(420a)의 버전 번호와 동일한 버전 번호(420d)(즉, 4)를 갖는 데이터 엔티티(D2)의 백업 사본(420c)을 저장한다. 또한, 엔트리(422c 및 422d)에서 알 수 있는 바와 같이, 데이터 엔티티(D5)의 백업 사본은 컴퓨팅 장치(404)로부터 삭제되었다. 그러나, 데이터 엔티티(D2 및 D5)에 대한 변경은 (예를 들어, 업데이트가 일어나는 동안 컴퓨팅 장치(406)가 액세스 가능하지 않기 때문에) 컴퓨팅 장치(406)로 전파되지 않았다. 도 4b에 도시된 바와 같이, 컴퓨팅 장치(406)는 주 사본과 같은 4가 아닌 3의 버전 번호(420f)를 갖는 데이터 엔티티(D2)의 백업 사본(420e)을 저장한다. 또한, 엔트리(422e 및 422f)에서 알 수 있는 바와 같이, 데이터 엔티티(D5)의 백업 사본은 컴퓨팅 장치(406)로부터 삭제되지 않았다.
도 4c-4f는 본 발명자들에 의해 개발된 매니페스트 기반 재동기화 기술이 컴퓨팅 장치(402, 404, 및 406)에 걸쳐 데이터 엔티티(D1-D5)를 재동기화하는 데 어떻게 사용될 수 있는지를 도시한다. 먼저, 도 4c에 도시된 바와 같이, 컴퓨팅 장치(402)는 매니페스트(440 및 442)를 각각 컴퓨팅 장치(404 및 406)에 송신한다. 매니페스트(440 및 442) 각각은 컴퓨팅 장치(402)가 주 사본 및 그들의 각각의 버전 번호를 저장하는 데이터 엔티티를 식별하는 정보를 포함한다. 매니페스트(440 및 442)는 컴퓨팅 장치(402)가 데이터 엔티티(D5)의 주 사본이 삭제되었으므로 그것을 더 이상 저장하지 않기 때문에 데이터 엔티티(D5)를 식별하는 임의의 정보를 포함하지 않는다.
다음으로, 컴퓨팅 장치(404 및 406)는 매니페스트(440 및 442) 내의 버전 번호를 이들 장치들에 의해 저장된 로컬 버전 번호와 각각 비교한다. 도 4d에 도시된 바와 같이, 데이터 엔티티의 로컬 버전 번호가 매니페스트(440) 내의 그들의 각각의 대응하는 것과 일치하기 때문에, 컴퓨팅 장치(404)는 데이터 엔티티의 모든 사본(D1-D4)이 그들의 주 사본과 동기화되었다고 결정했다. 반면에, 버전 번호(420f)(즉, 3)가 매니페스트(442) 내의 그 각각의 대응하는 것(즉, 4)과 일치하지 않았기 때문에, 컴퓨팅 장치(406)는 데이터 엔티티(D2)의 백업 사본(420e)이 엔티티(D2)의 주 사본과 동기화되지 않았다고 결정했다. 따라서, 컴퓨팅 장치(406)는 데이터 엔티티(D2)의 업데이트된 버전을 획득하기 위해 컴퓨팅 장치(402)에 요청(444)을 전송했다.
도 4e에 도시된 바와 같이, 요청(444)을 수신한 것에 응답하여, 컴퓨팅 장치(402)는 메시지(446)에서 데이터 엔티티(D2)의 최신 버전을 송신한다. 차례로, 도 4f에 도시된 바와 같이, 컴퓨팅 장치(406)는 데이터 엔티티(D2)의 사본을 업데이트하고, 이 데이터 엔티티의 주 사본(420a)의 버전 번호(420b)와 일치하는 버전 번호(420h)(즉, 4)를 갖는 데이터 엔티티(D2)의 백업 사본(420g)를 저장한다. 또한, 엔트리(422g 및 422h)로부터 알 수 있는 바와 같이, 매니페스트(442)가 데이터 엔티티(D5)의 주 사본이 컴퓨팅 장치(402)로부터 삭제되었다는 표시를 제공하는, 데이터 엔티티(D5)에 관한 임의의 정보를 포함하지 않기 때문에, 컴퓨팅 장치(406)는 데이터 엔티티(D5)의 로컬 사본을 삭제한다.
따라서, 매니페스트 기반 재동기화 기술의 완료 시에, 데이터 엔티티(D1-D5)의 사본은 도 4f에 도시된 바와 같이 컴퓨팅 장치(402, 404, 및 406)에 걸쳐 다시 한번 동기화된다.
도 5는 본 명세서에 설명된 기술의 일부 실시예에 따른, 데이터 엔티티 세트에 대한 매니페스트 기반 재동기화를 수행하기 위해, 데이터 처리 시스템에 의해 관리되는 데이터 엔티티 세트에 대한 주 장치로서 동작하는 컴퓨팅 장치에 의해 수행되는 예시적인 프로세스(500)의 흐름도이다. 프로세스(500)는 임의의 적절한 컴퓨팅 장치에 의해 수행될 수 있고, 예를 들어, 데이터 엔티티(D1-D5)에 대해 컴퓨팅 장치(108)에 의해, 데이터 엔티티(D6-D10)에 대해 컴퓨팅 장치(110)에 의해, 그리고 데이터 엔티티(D11-D15)에 대해 컴퓨팅 장치(112)에 의해 수행될 수 있다.
프로세스(500)는 프로세스(500)를 수행하는 주 장치가 재동기화를 수행하라는 표시를 수신하는 액션(502)에서 시작한다. 이 표시는 임의의 적절한 소스로부터 수신될 수 있다. 예를 들어, 데이터 처리 시스템은 재동기화가 수행되어야 함을 나타내는 사용자로부터의 입력을 수신한 것에 응답하여 주 장치에 표시를 제공할 수 있다. 다른 예로서, 데이터 처리 시스템은 사용자 입력없이, 재동기화가 수행되어야 한다고 자동으로 결정할 수 있다. 일부 실시예에서, 이러한 결정은 네트워크 중단, 전력 공급 중단, 및/또는 데이터 처리 시스템에 의해 관리되는 데이터 엔티티가 비동기화되는 것을 야기할 수 있는 임의의 다른 이벤트를 검출하는 것에 응답하여 데이터 처리 시스템에 의해 자동으로 이루어질 수 있다. 다른 실시예에서, 데이터 처리 시스템은 이벤트 주도 방식이 아니라 미리 결정된 스케줄에 따라 관리하는 데이터 엔티티를 재동기화할 수 있다.
재동기화를 수행하라는 표시를 수신한 것에 응답하여, 주 장치 실행 프로세스(500)는 액션(504)에서, 주 사본이 주 장치에 의해 저장된 데이터 엔티티 및 주 장치가 유지하는 그들의 각각의 버전 정보를 식별하는 정보를 갖는 매니페스트를 생성한다. 그 다음에, 주 장치는 액션(506)에서, 생성된 매니페스트를 주 사본이 주 장치 상에 저장된 하나 이상의 데이터 엔티티의 백업 사본을 저장하는 임의의 백업 장치(들)로 송신한다.
다음으로, 액션(508)에서, 주 장치는 액션(506)에서 매니페스트가 제공된 백업 장치 중 하나 이상으로부터 하나 이상의 데이터 엔티티의 업데이트된 버전에 대한 요청을 수신한다. 요청(들)을 수신에 응답하여, 주 장치는 액션(510)에서, 요청하는 백업 장치에 업데이트된 데이터 엔티티를 제공하고, 프로세스(500)는 완료된다.
프로세스(500)가 데이터 처리 시스템의 단일 컴퓨팅 장치 부분을 참조하여 설명되었지만, 프로세스는 데이터 처리 시스템 내의 다수의 장치에 의해 수행될 수 있다. 예를 들어, 일부 실시예에서, 프로세스(500)는 데이터 처리 시스템에 의해 관리되는 임의의 데이터 엔티티에 대해 주 장치의 역할을 하는 다수(예를 들어, 모든) 컴퓨팅 장치에 의해 수행될 수 있다.
도 6은 본 명세서에 설명된 기술의 일부 실시예에 따른, 데이터 엔티티 세트에 대한 매니페스트 기반 재동기화를 수행하기 위해, 데이터 엔티티 세트에 대한 백업 장치로서 동작하는 컴퓨팅 장치에 의해 수행되는 예시적인 프로세스(600)의 흐름도이다. 프로세스(600)는 임의의 적절한 컴퓨팅 장치에 의해 수행될 수 있고, 예를 들어, 데이터 엔티티(D6-D11)에 대해 컴퓨팅 장치(108)에 의해, 데이터 엔티티(D1-D5)에 대해 컴퓨팅 장치(110)에 의해, 그리고 데이터 엔티티(D1-D10)에 대해 컴퓨팅 장치(112)에 의해 수행될 수 있다.
프로세스(600)는 백업 장치 실행 프로세스(600)가 하나 이상의 데이터 엔티티의 주 사본을 저장하는 주 장치로부터 매니페스트를 수신하는 액션(602)에서 시작한다. 매니페스트는 주 사본이 주 장치에 저장된 데이터 엔티티 각각 및 그들의 각각의 버전 번호를 식별하는 정보를 포함한다.
다음으로, 액션(604)에서, 백업 장치 실행 프로세스(600)는 주 장치에 저장된 그들의 각각의 주 사본과 동기화되지 않은, 백업 장치 상에 저장된 데이터 엔티티를 식별한다. 이는 백업 장치에 의해 유지되는 데이터 엔티티의 로컬 버전 번호를 주 장치에 의해 제공되는 매니페스트 내의 버전 번호와 비교하는 것과 같은 임의의 적절한 방식으로 행해질 수 있다.
다음으로, 액션(606)에서, 백업 장치는 액션(604)에서 식별된 임의의 동기화되지 않은 데이터 엔티티를 주 장치로부터 요청한다. 액션(608)에서, 백업 장치는 요청된 데이터 엔티티를 주 장치로부터 수신한다. 마지막으로, 액션(610)에서, 백업 장치는 주 사본이 주 장치로부터 삭제되고, 액션(602)에서 주 장치에 의해 제공된 매니페스트에서 식별되지 않는 데이터 엔티티인 임의의 "고아(orphan)" 데이터 엔티티를 제거할 수 있다. 액션(610)에서 고아가 제거된 후에, 프로세스(600)는 완료된다.
도 7은 본 명세서에 설명된 기술이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(700)의 예를 도시한다. 컴퓨팅 시스템 환경(700)은 적절한 컴퓨팅 환경의 일 예일 뿐이며, 본 명세서에 설명된 기술의 사용 또는 기능의 범위에 대한 임의의 제한을 제안하려는 것은 아니다. 또한, 컴퓨팅 환경(700)은 예시적인 동작 환경(700)에 도시된 구성 요소 중 임의의 하나 또는 조합과 관련된 임의의 의존성 또는 요구 사항을 갖는 것으로 해석되어서는 안된다.
본 명세서에 설명된 기술은 수많은 다른 일반 목적 또는 특수 목적 컴퓨팅 시스템 환경 또는 구성으로 동작한다. 본 명세서에서 설명된 기술과 사용하기에 적절한 공지된 컴퓨팅 시스템, 환경, 및/또는 구성의 예는 개인용 컴퓨터, 서버 컴퓨터, 핸드 헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로 프로세서 기반 시스템, 셋톱 박스, 프로그래밍 가능한 소비자 전자 제품, 네트워크 PC, 미니 컴퓨터, 메인 프레임 컴퓨터, 위의 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하지만, 이에 제한되지는 않는다.
컴퓨팅 환경은 프로그램 모듈과 같은 컴퓨터 실행 가능 명령을 실행할 수 있다. 일반적으로 프로그램 모듈은 특정 작업을 수행하거나 특정 추상적인 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성 요소, 데이터 구조 등을 포함한다. 본 명세서에 설명된 기술은 또한 통신 네트워크를 통해 링크된 원격 처리 장치에 의해 작업이 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 양자 모두에 위치될 수 있다.
도 7을 참조하면, 본 명세서에 설명된 기술을 구현하기 위한 예시적인 시스템은 컴퓨터(710) 형태의 일반 목적용 컴퓨팅 장치를 포함한다. 컴퓨터(710)의 구성 요소는 처리 유닛(720), 시스템 메모리(730), 및 시스템 메모리를 포함하는 다양한 시스템 구성 요소를 처리 유닛(720)에 결합시키는 시스템 버스(721)를 포함할 수 있지만, 이에 제한되지는 것은 아니다. 시스템 버스(721)는 다양한 버스 구조 중 임의의 것을 사용하는, 메모리 버스 또는 메모리 제어기, 주변 버스, 및 로컬 버스를 포함하는 여러 유형의 버스 구조 중 임의의 것일 수 있다. 제한이 아닌 예로서, 이러한 아키텍처는 산업 표준 구조(Industry Standard Architecture, ISA) 버스, 마이크로 채널 구조(Micro Channel Architecture, MCA) 버스, 강화된 ISA(Enhanced ISA, EISA) 버스, 비디오 전자공학 표준 위원회(Video Electronics Standards Association, VESA) 로컬 버스, 및 Mezzanine 버스라고도 알려진 주변 구성 요소 상호 접속(Peripheral Component Interconnect, PCI) 버스를 포함한다.
컴퓨터(710)는 통상적으로 다양한 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터(710)에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있고, 휘발성 및 비휘발성 매체, 제거 가능한 및 제거 가능하지 않은 매체를 모두를 포함한다. 제한이 아닌 예로서, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 제거 가능한 및 제거 가능하지 않은 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(digital versatile disk, DVD) 또는 다른 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨터(710)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호로 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하고, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호에 정보를 인코딩하는 방식으로 설정되거나 변경된 특성 세트 중 하나 이상을 갖는 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음향, RF, 적외선, 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기 중 임의의 것의 조합 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(730)는 판독 전용 메모리(ROM)(731) 및 랜덤 액세스 메모리(RAM)(732)와 같은 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동 중일 때와 같이, 컴퓨터(710) 내의 구성 요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(basic input/output system, BIOS)(733)은 통상적으로 ROM(731)에 저장된다. RAM(732)은 통상적으로 처리 유닛(720)에 즉시 액세스 가능하고 및/또는 처리 유닛(720)에 의해 현재 동작되는 데이터 및/또는 프로그램 모듈을 포함한다. 제한이 아닌 예로서, 도 7은 운영 체제(734), 애플리케이션 프로그램(735), 다른 프로그램 모듈(736), 및 프로그램 데이터(737)를 도시한다.
컴퓨터(710)는 또한 다른 제거 가능한/제거 가능하지 않은, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예로서, 도 7은 제거 가능하지 않은 비휘발성 자기 매체로부터 판독하거나 그에 기입하는 하드 디스크 드라이브(741), 플래시 메모리와 같은 제거 가능한 비휘발성 메모리(752)로부터 판독하거나 그에 기입하는 플래시 드라이브(751), 및 CD ROM 또는 다른 광학 매체와 같은 제거 가능한 비휘발성 광학 디스크(756)로부터 판독하거나 그에 기입하는 광학 디스크 드라이브(755)를 도시한다. 예시적인 동작 환경에서 사용될 수 있는 다른 제거 가능한/제거 가능하지 않은, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다기능 디스크, 디지털 비디오 테이프, 솔리드 스테이트 RAM, 솔리드 스테이트 ROM 등을 포함하나, 이에 제한되지는 않는다. 하드 디스크 드라이브(741)는 통상적으로 인터페이스(740)와 같은 제거 가능하지 않은 메모리 인터페이스를 통해 시스템 버스(721)에 접속되고, 자기 디스크 드라이브(751) 및 광 디스크 드라이브(755)는 통상적으로 인터페이스(750)와 같은 제거 가능한 메모리 인터페이스에 의해 시스템 버스(721)에 접속된다.
위에서 논의되고 도 7에 도시된 드라이브 및 관련 컴퓨터 저장 매체는 컴퓨터(710)에 대한 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 및 다른 데이터의 저장을 제공한다. 도 7에서, 예를 들어, 하드 디스크 드라이브(741)는 운영 체제(744), 애플리케이션 프로그램(745), 다른 프로그램 모듈(746), 및 프로그램 데이터(747)를 저장하는 것으로 도시되어 있다. 이들 구성 요소는 운영 체제(734), 애플리케이션 프로그램(735), 다른 프로그램 모듈(736), 및 프로그램 데이터(737)와 동일하거나 상이할 수 있다. 운영 체제(744), 애플리케이션 프로그램(745), 다른 프로그램 모듈(746), 및 프로그램 데이터(747)는 최소한 이들이 상이한 사본인 것을 설명하기 위해 여기서 상이한 번호가 부여된다. 사용자는 키보드(762) 및 일반적으로 마우스, 트랙볼, 또는 터치 패드로 지칭되는 포인팅 장치(761)와 같은 입력 장치를 통해 컴퓨터(710)에 커맨드 및 정보를 입력할 수 있다. 다른 입력 장치(미도시)는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나(satellite dish), 스캐너 등을 포함할 수 있다. 이러한 입력 장치 및 다른 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(760)를 통해 처리 유닛(720)에 접속되지만, 병렬 포트, 게임 포트, 또는 범용 직렬 포트(universal serial bus, USB)와 같은 다른 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(791) 또는 다른 유형의 디스플레이 장치가 또한 비디오 인터페이스(790)와 같은 인터페이스를 통해 시스템 버스(721)에 접속된다. 모니터 외에, 컴퓨터는 출력 주변기기 인터페이스(795)를 통해 접속될 수 있는 스피커(797) 및 프린터(796)와 같은 다른 주변 출력 장치를 또한 포함할 수 있다.
컴퓨터(710)는 원격 컴퓨터(780)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(780)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있으며, 통상적으로 컴퓨터(710)에 대해 위에서 설명된 많은 요소 또는 모든 요소를 포함하지만, 메모리 저장 장치(781)만이 도 7에 도시되어 있다. 도 7에 도시된 논리적 접속은 근거리 통신망(LAN)(771) 및 광역 통신망(WAN)(773)을 포함하지만, 또한 다른 네트워크를 포함할 수 있다. 이러한 네트워킹 환경은 사무실, 기업 전체의 컴퓨터 네트워크, 인트라넷, 및 인터넷에서 일반적이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(710)는 네트워크 인터페이스 또는 어댑터(770)를 통해 LAN(771)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(710)는 통상적으로 모뎀(772) 또는 인터넷과 같은 WAN(773)을 통한 통신을 확립하기 위한 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(772)은 사용자 입력 인터페이스(760) 또는 다른 적절한 메커니즘을 통해 시스템 버스(721)에 접속될 수 있다. 네트워킹된 환경에서, 컴퓨터(710) 또는 그 일부와 관련하여 도시된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 제한이 아닌 예로서, 도 7은 메모리 장치(781) 상에 상주하는 원격 애플리케이션 프로그램(785)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 확립하는 다른 수단이 사용될 수 있다는 것을 이해할 것이다.
본 발명의 적어도 하나의 실시예에 대한 몇몇 양태를 설명하였으므로, 다양한 변경, 수정 및 개선이 본 기술분야의 통상의 기술자에게 용이하게 발생할 것임을 이해할 것이다.
이러한 변경, 수정, 및 개선은 본 개시의 일부로서 의도되며, 본 발명의 사상 및 범위 내에 있는 것으로 의도된다. 또한, 본 발명의 이점이 나타내어졌지만, 본 명세서에 설명된 기술의 모든 실시예가 모든 설명된 이점을 포함하는 것은 아님을 이해해야 한다. 일부 실시예는 본 명세서에서 유리한 것으로 설명된 임의의 특징을 구현하지 않을 수 있고, 일부 경우에, 설명된 특징 중 하나 이상은 다른 실시예를 달성하도록 구현될 수 있다. 따라서, 전술한 설명 및 도면은 단지 예일 뿐이다.
본 명세서에 설명된 기술의 전술한 실시예는 임의의 다양한 방식으로 구현될 수 있다. 예를 들어, 실시예는 하드웨어, 소프트웨어, 또는 이들의 조합을 사용하여 구현될 수 있다. 소프트웨어로 구현되는 경우, 소프트웨어 코드는 단일 컴퓨터에서 제공되든 또는 다수의 컴퓨터 사이에 배포되든 관계없이 적절한 프로세서 또는 프로세서 모음 상에서 실행될 수 있다. 그러한 프로세서는 CPU 칩, GPU 칩, 마이크로 프로세서, 마이크로 제어기, 또는 코-프로세서와 같은 이름으로 본 기술분야에 공지된 상업적으로 이용 가능한 집적 회로 구성 요소를 포함하는 집적 회로 구성 요소에 하나 이상의 프로세서를 갖는 집적 회로로서 구현될 수 있다. 대안적으로, 프로세서는 ASIC과 같은 맞춤형 회로 또는 프로그래밍 가능한 논리 장치를 구성함으로써 나오는 반 맞춤형 회로로 구현될 수 있다. 또 다른 대안으로서, 프로세서는 상업적으로 이용 가능하거나, 반 맞춤식이거나, 맞춤식인 대형 회로 또는 반도체 장치의 일부일 수 있다. 특정 예로서, 일부 상업적으로 이용 가능한 마이크로 프로세서는 하나 또는 다수의 코어를 가져, 이들 코어 중 하나 또는 서브 세트가 프로세서를 구성할 수 있다. 그러나, 프로세서는 임의의 적절한 포맷의 회로를 사용하여 구현될 수 있다.
또한, 컴퓨터는 랙 장착 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 또는 태블릿 컴퓨터와 같은 다수의 형태 중 임의의 형태로 구현될 수 있음을 이해해야 한다. 또한, 컴퓨터는 개인용 휴대 정보 단말기(Personal Digital Assistant, PDA), 스마트 폰, 또는 임의의 다른 휴대용 또는 고정식 전자 장치를 포함하여, 일반적으로 컴퓨터로 여겨지지는 않지만, 적절한 처리 기능을 갖춘 장치에 내장될 수 있다.
또한, 컴퓨터는 하나 이상의 입력 및 출력 장치를 가질 수 있다. 이러한 장치는 무엇보다도 사용자 인터페이스를 제공하는 데 사용될 수 있다. 사용자 인터페이스를 제공하기 위해 사용될 수 있는 출력 장치의 예는 출력의 시각적 표현을 위한 프린터 또는 디스플레이 스크린, 및 출력의 청각적 표현을 위한 스피커 또는 다른 사운드 생성 장치를 포함한다. 사용자 인터페이스에 사용될 수 있는 입력 장치의 예는 키보드, 및 마우스, 터치 패드와 같은 포인팅 장치, 및 디지털 태블릿을 포함한다. 다른 예로서, 컴퓨터는 음성 인식을 통해 또는 다른 청취 가능한 포맷으로 입력 정보를 수신할 수 있다.
이러한 컴퓨터는 근거리 통신망 또는 엔터프라이즈 네트워크나 인터넷과 같은 광역 통신망을 포함하는 임의의 적절한 형태의 하나 이상의 네트워크에 의해 상호 접속될 수 있다. 그러한 네트워크는 임의의 적절한 기술에 기초할 수 있으며, 임의의 적절한 프로토콜에 따라 동작할 수 있고, 무선 네트워크, 유선 네트워크, 또는 광섬유 네트워크를 포함할 수 있다.
또한, 본 명세서에 개략적으로 설명된 다양한 방법 또는 프로세스는 다양한 운영 체제 또는 플랫폼 중 임의의 하나를 이용하는 하나 이상의 프로세서 상에서 실행 가능한 소프트웨어로서 코딩될 수 있다. 또한, 그러한 소프트웨어는 다수의 적절한 프로그래밍 언어 및/또는 프로그래밍 또는 스크립팅 툴 중 임의의 것을 사용하여 작성될 수 있으며, 또한 프레임 워크 또는 가상 머신 상에서 실행되는 실행 가능 머신 언어 코드 또는 중간 코드로서 컴파일될 수 있다.
이 점에서, 본 발명은 하나 이상의 컴퓨터 또는 프로세서 상에서 실행되는 경우, 전술한 본 발명의 다양한 실시예를 구현하는 방법을 수행하는 하나 이상의 프로그램이 인코딩된 컴퓨터 판독 가능 매체(또는 다수의 컴퓨터 판독 가능 매체)(예를 들어, 컴퓨터 메모리, 하나 이상의 플로피 디스크, 콤팩트 디스크(CD), 광학 디스크, 디지털 비디오 디스크(DVD), 자기 테이프, 플래시 메모리, 필드 프로그래밍 가능한 게이트 어레이(Field Programmable Gate Array) 또는 다른 반도체 장치의 회로 구성 또는 다른 유형의 컴퓨터 저장 매체)로서 구체화될 수 있다. 전술한 예로부터 명백한 바와 같이, 컴퓨터 판독 가능 저장 매체는 컴퓨터 실행 가능 명령을 비일시적 형태로 제공하기에 충분한 시간 동안 정보를 보유할 수 있다. 그러한 컴퓨터 판독 가능 저장 매체 또는 매체들은 이송 가능할 수 있어, 그 위에 저장된 프로그램 또는 프로그램들이 전술한 바와 같이 본 발명의 다양한 양태를 구현하기 위해 하나 이상의 상이한 컴퓨터 또는 다른 프로세서 상에 로딩될 수 있다. 본 명세서에서 사용되는 바와 같은 "컴퓨터 판독 가능 저장 매체"라는 용어는 제조물(즉, 제조 물품) 또는 머신으로 간주될 수 있는 비일시적 컴퓨터 판독 가능 매체만을 포함한다. 대안적으로 또는 추가적으로, 본 발명은 전파 신호와 같이, 컴퓨터 판독 가능 저장 매체 이외의 컴퓨터 판독 가능 매체로서 구체화될 수 있다.
"프로그램" 또는 "소프트웨어"라는 용어는 전술한 바와 같은 본 발명의 다양한 양태를 구현하도록 컴퓨터 또는 다른 프로세서를 프로그래밍하기 위해 이용될 수 있는 임의의 유형의 컴퓨터 코드 또는 컴퓨터 실행 가능 명령 세트를 지칭하기 위해 본 명세서에서 일반적인 의미로 사용된다. 추가적으로, 이 실시예의 일 양태에 따르면, 실행되는 경우 본 발명의 방법을 수행하는 하나 이상의 컴퓨터 프로그램은 단일 컴퓨터 또는 프로세서 상에 상주할 필요가 없고, 본 발명의 다양한 양태를 구현하기 위해 다수의 상이한 컴퓨터 또는 프로세서 사이에서 모듈 방식으로 분산될 수 있음을 이해해야 한다.
컴퓨터 실행 가능 명령은 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는 프로그램 모듈과 같은 많은 형태일 수 있다. 일반적으로 프로그램 모듈은 특정 작업을 수행하거나 특정 추상적인 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성 요소, 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈의 기능은 다양한 실시예에서 원하는 바에 따라 결합되거나 분산될 수 있다.
또한, 데이터 구조는 임의의 적절한 형태로 컴퓨터 판독 가능 매체에 저장될 수 있다. 예시의 단순화를 위해, 데이터 구조는 데이터 구조 내의 위치를 통해 관련된 필드를 갖는 것으로 도시될 수 있다. 이러한 관계는 필드들 간의 관계를 전달하는 컴퓨터 판독 가능 매체에 위치를 갖는 필드에 대해 저장 장치를 할당함으로써 유사하게 달성될 수 있다. 그러나, 포인터, 태그 또는 데이터 요소들 간의 관계를 확립하는 다른 메커니즘의 사용을 포함하여, 데이터 구조의 필드 내의 정보 간의 관계를 확립하기 위해 임의의 적절한 메커니즘이 사용될 수 있다.
본 발명의 다양한 양태는 단독으로, 조합하여, 또는 전술한 실시예에서 구체적으로 논의되지 않은 다양한 배열로 사용될 수 있으며, 따라서 그 적용에 있어서 전술한 설명에서 제시되거나 도면에 도시된 구성 요소의 세부 사항 및 배열에 제한되지 않는다. 예를 들어, 일 실시예에서 설명된 양태는 다른 실시예에서 설명된 양태와 임의의 방식으로 결합될 수 있다.
또한, 본 발명은 방법으로서 구체화될 수 있으며, 방법의 예는 제공되었다. 방법의 일부로 수행되는 액션은 적절한 방식으로 순서화될 수 있다. 따라서, 비록 예시적인 실시예에서 순차적인 액션으로 도시되어 있지만, 액션이 예시된 것과 상이한 순서로 수행되는 실시예가 구성될 수 있으며, 이는 일부 액션을 동시에 수행하는 것을 포함할 수 있다.
또한, 일부 액션은 "사용자"에 의해 취해지는 것으로 설명된다. "사용자"는 단일 개인 일 필요는 없고, 일부 실시예에서, "사용자"에 기인하는 액션은 컴퓨터 보조 툴 또는 다른 메커니즘과 조합하여 개인의 팀 및/또는 개인에 의해 수행될 수 있음을 이해해야 한다.
청구 요소를 변경하기 위해 청구 범위에서 "제1", "제2", "제3" 등과 같은 서수 용어를 사용하는 것은 임의의 우선 순위, 우선 순위, 또는 하나의 청구 요소의 다른 청구 요소에 대한 순서, 또는 방법의 액션이 수행되는 시간적 순서를 내포하지 않고, 단지 청구 요소들을 구별하기 위해 특정 명칭을 갖는 하나의 청구 요소를 동일한 명칭(그러나 서수 용어를 사용함)을 갖는 다른 요소와 구별하기 위한 라벨로서 사용된다.
또한, 본 명세서에서 사용된 어구 및 용어는 설명의 목적을 위한 것이며, 제한적인 것으로 간주되어서는 안된다. 본 명세서에서 "포함하는(including)", "포함하는(comprising)", 또는 "갖는(having)", "포함하는(containing)", "수반하는(involving)", 및 그 변형은 그 이후에 열거된 항목 및 그 등가물뿐만 아니라 추가 항목을 포함하고자 한다.
Claims (32)
- 다수의 컴퓨팅 장치의 휘발성 메모리에 복수의 데이터 엔티티를 저장하도록 구성된 데이터 처리 시스템으로서,
제1 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치로서, 상기 제1 데이터 엔티티는 제1 식별자와 연관되는, 제1 컴퓨팅 장치; 및
상기 제1 컴퓨팅 장치와 상이하고 상기 제1 컴퓨팅 장치에 통신 가능하게 결합되며, 제2 식별자와 연관된 상기 제1 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치를 포함하고,
상기 제1 컴퓨팅 장치는
상기 제1 데이터 엔티티를 업데이트하라는 표시를 수신하고;
상기 표시를 수신한 후에,
상기 제1 휘발성 메모리에서 상기 제1 데이터 엔티티를 업데이트하고,
상기 제2 컴퓨팅 장치에 상기 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 제공하고;
상기 제1 데이터 엔티티의 사본이 상기 제2 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 상기 제2 컴퓨팅 장치로부터 수신한 후에, 상기 제1 데이터 엔티티가 업데이트되었다는 표시를 제공하는 것을 수행하도록 구성되는, 데이터 처리 시스템. - 제1항에 있어서,
상기 제1 휘발성 메모리는 제1 온 힙 메모리 및 제1 오프 힙 메모리를 포함하고, 상기 제1 컴퓨팅 장치는 상기 제1 온 힙 메모리에 상기 제1 데이터 엔티티를 저장하도록 구성되는, 데이터 처리 시스템. - 제2항에 있어서,
상기 제2 휘발성 메모리는 제2 온 힙 메모리 및 제2 오프 힙 메모리를 포함하고, 상기 제2 컴퓨팅 장치는 상기 제2 오프 힙 메모리에 상기 제1 데이터 엔티티의 사본을 저장하도록 구성되는, 데이터 처리 시스템. - 제3항에 있어서,
상기 제1 컴퓨팅 장치는 제3 휘발성 메모리를 갖는 제3 컴퓨팅 장치에 통신 가능하게 결합되고, 상기 제3 휘발성 메모리는 상기 제1 데이터 엔티티의 다른 사본을 저장하도록 구성된 제3 오프 힙 메모리를 포함하고,
상기 제1 컴퓨팅 장치는
상기 수신에 응답하여, 상기 제3 컴퓨팅 장치에 상기 제1 데이터 엔티티의 다른 사본을 업데이트하라는 표시를 제공하고;
상기 제1 데이터 엔티티의 다른 사본이 상기 제3 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 상기 제3 컴퓨팅 장치로부터 수신한 후에만, 상기 제1 데이터 엔티티가 업데이트되었음을 나타내는 표시를 제공하는 것을 수행하도록 더 구성되는, 데이터 처리 시스템. - 제1항에 있어서,
상기 제1 컴퓨팅 장치는, 상기 제1 데이터 엔티티의 사본을 내부에 저장하도록 구성된 각각의 휘발성 메모리를 갖는 다수의 컴퓨팅 장치에 통신 가능하게 결합되고, 상기 다수의 컴퓨팅 장치는 상기 제2 컴퓨팅 장치를 포함하고,
상기 제1 컴퓨팅 장치는
상기 수신에 응답하여, 상기 다수의 컴퓨팅 장치에 상기 제1 데이터 엔티티의 각각의 사본을 업데이트하라는 표시를 제공하고;
상기 제1 데이터 엔티티의 각각의 사본이 업데이트되었음을 나타내는 정보를 상기 다수의 컴퓨팅 장치 각각으로부터 수신한 후에만, 상기 제1 데이터 엔티티가 업데이트되었음을 나타내는 표시를 제공하는 것을 수행하도록 더 구성되는, 데이터 처리 시스템. - 제5항에 있어서,
복수의 컴퓨팅 장치를 더 포함하고, 상기 복수의 컴퓨팅 장치는 상기 제1 데이터 엔티티의 사본을 내부에 저장하도록 구성된 상기 다수의 컴퓨팅 장치를 포함하고,
상기 제1 컴퓨팅 장치는
상기 제1 데이터 엔티티에 기초하여, 상기 복수의 컴퓨팅 장치 중에서 상기 다수의 컴퓨팅 장치를 식별하는 것을 수행하도록 더 구성되는, 데이터 처리 시스템. - 제1항에 있어서,
상기 제1 휘발성 메모리에서 상기 제1 데이터 엔티티를 업데이트하는 것은 상기 제2 컴퓨팅 장치에 상기 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 제공하기 전에 수행되는, 데이터 처리 시스템. - 제1항에 있어서,
상기 제1 휘발성 메모리는 상기 제1 데이터 엔티티를 포함하는 복수의 데이터 엔티티를 저장하도록 구성되고, 상기 제2 컴퓨팅 장치는 상기 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성되고,
상기 제1 컴퓨팅 장치는
재동기화를 수행하라는 표시를 수신하고;
상기 재동기화를 수행하라는 표시를 수신한 것에 응답하여, 상기 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 상기 제2 컴퓨팅 장치에 제공하고;
상기 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 상기 제1 휘발성 메모리 내의 적어도 하나의 데이터 엔티티를 식별하는 정보를 상기 제2 컴퓨팅 장치로부터 수신하고;
상기 적어도 하나의 데이터 엔티티를 식별하는 정보를 수신한 것에 응답하여, 상기 제1 휘발성 메모리에 저장된 상기 적어도 하나의 데이터 엔티티를 상기 제2 컴퓨팅 장치에 제공하는 것을 수행하도록 더 구성되는, 데이터 처리 시스템. - 제8항에 있어서,
상기 적어도 하나의 데이터 엔티티를 식별하는 정보는 제1 정보량으로 구성되고, 상기 적어도 하나의 데이터 엔티티는 상기 제1 정보량보다 적어도 만배 큰 제2 정보량으로 구성되는, 데이터 처리 시스템. - 제1항에 있어서,
상기 데이터 처리 시스템은 적어도 천만 개의 데이터 엔티티의 세트를 관리하도록 구성되고, 각각의 데이터 엔티티는 적어도 1 킬로바이트의 데이터를 포함하고;
상기 복수의 데이터 엔티티는 적어도 천만 개의 데이터 엔티티의 세트를 포함하는, 데이터 처리 시스템. - 제1항에 있어서,
상기 제1 식별자 및 상기 제2 식별자는 동일한 식별자인, 데이터 처리 시스템. - 제1 식별자와 연관된 제1 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치에 의해 수행되는 방법으로서,
상기 제1 컴퓨팅 장치는 제2 식별자와 연관된 상기 제1 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치에 통신 가능하게 결합되고, 상기 제2 컴퓨팅 장치는 상기 제1 컴퓨팅 장치와 상이하고,
상기 방법은
상기 제1 데이터 엔티티를 업데이트하라는 표시를 수신하는 단계;
상기 표시를 수신한 후에,
상기 제1 휘발성 메모리에서 상기 제1 데이터 엔티티를 업데이트하고,
상기 제2 컴퓨팅 장치에 상기 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 제공하는 단계; 및
상기 제1 데이터 엔티티의 사본이 상기 제2 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 상기 제2 컴퓨팅 장치로부터 수신한 후에, 상기 제1 데이터 엔티티가 업데이트되었다는 표시를 제공하는 단계를 포함하는, 제1 컴퓨팅 장치에 의해 수행되는 방법. - 제12항에 있어서,
상기 제1 컴퓨팅 장치는 상기 제1 데이터 엔티티의 사본을 내부에 저장하도록 구성된 각각의 휘발성 메모리를 갖는 다수의 컴퓨팅 장치에 통신 가능하게 결합되고, 상기 다수의 컴퓨팅 장치는 상기 제2 컴퓨팅 장치를 포함하고,
상기 방법은
상기 수신에 응답하여, 상기 다수의 컴퓨팅 장치에 상기 제1 데이터 엔티티의 각각의 사본을 업데이트하라는 표시를 제공하는 단계; 및
상기 제1 데이터 엔티티의 각각의 사본이 업데이트되었음을 나타내는 정보를 상기 다수의 컴퓨팅 장치 각각으로부터 수신한 후에만, 상기 제1 데이터 엔티티가 업데이트되었음을 나타내는 표시를 제공하는 단계를 더 포함하는, 제1 컴퓨팅 장치에 의해 수행되는 방법. - 제13항에 있어서,
상기 제1 데이터 엔티티에 기초하여, 복수의 컴퓨팅 장치 중에서 상기 다수의 컴퓨팅 장치를 식별하는 단계를 더 포함하는, 제1 컴퓨팅 장치에 의해 수행되는 방법. - 제12항에 있어서,
상기 제1 휘발성 메모리에서 상기 제1 데이터 엔티티를 업데이트하는 것은 상기 제2 컴퓨팅 장치에 상기 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 제공하기 전에 수행되는, 제1 컴퓨팅 장치에 의해 수행되는 방법. - 제12항에 있어서,
상기 제1 휘발성 메모리는 상기 제1 데이터 엔티티를 포함하는 복수의 데이터 엔티티를 저장하도록 구성되고, 상기 제2 컴퓨팅 장치는 상기 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성되고,
상기 방법은
재동기화를 수행하라는 표시를 수신하는 단계;
상기 재동기화를 수행하라는 표시를 수신한 것에 응답하여, 상기 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 상기 제2 컴퓨팅 장치에 제공하는 단계;
상기 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 상기 제1 휘발성 메모리 내의 적어도 하나의 데이터 엔티티를 식별하는 정보를 상기 제2 컴퓨팅 장치로부터 수신하는 단계; 및
상기 적어도 하나의 데이터 엔티티를 식별하는 정보를 수신한 것에 응답하여, 상기 제1 휘발성 메모리에 저장된 상기 적어도 하나의 데이터 엔티티를 상기 제2 컴퓨팅 장치에 제공하는 단계를 더 포함하는, 제1 컴퓨팅 장치에 의해 수행되는 방법. - 프로세서 실행 가능 명령이 저장된 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체로서,
상기 명령은, 제1 식별자와 연관된 제1 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치에 의해 실행되는 경우, 상기 제1 컴퓨팅 장치로 하여금 방법을 수행하게 하고, 상기 제1 컴퓨팅 장치는 제2 식별자와 연관된 상기 제1 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치에 통신 가능하게 결합되고, 상기 제1 컴퓨팅 장치는 상기 제2 컴퓨팅 장치와 상이하고,
상기 방법은
상기 제1 데이터 엔티티를 업데이트하라는 표시를 수신하는 단계;
상기 표시를 수신한 후에,
상기 제1 휘발성 메모리에서 상기 제1 데이터 엔티티를 업데이트하고,
상기 제2 컴퓨팅 장치에 상기 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 제공하는 단계; 및
상기 제1 데이터 엔티티의 사본이 상기 제2 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 상기 제2 컴퓨팅 장치로부터 수신한 후에, 상기 제1 데이터 엔티티가 업데이트되었다는 표시를 제공하는 단계를 포함하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체. - 제1 식별자와 연관된 제1 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치에 의한 실행을 위한 프로세서 실행 가능 명령이 저장된 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체로서,
상기 제1 컴퓨팅 장치는 제2 식별자와 연관된 상기 제1 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치에 통신 가능하게 결합되고,
상기 프로세서 실행 가능 명령은
상기 제1 데이터 엔티티를 업데이트하라는 표시를 수신하는 수단;
상기 표시를 수신한 후에, 상기 제1 휘발성 메모리에서 상기 제1 데이터 엔티티를 업데이트하고, 상기 제2 컴퓨팅 장치에 상기 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 제공하는 수단; 및
상기 제1 데이터 엔티티의 사본이 상기 제2 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 상기 제2 컴퓨팅 장치로부터 수신한 후에, 상기 제1 데이터 엔티티가 업데이트되었다는 표시를 제공하는 수단을 포함하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체. - 다수의 컴퓨팅 장치의 휘발성 메모리 내에 데이터 엔티티를 저장하도록 구성된 데이터 처리 시스템으로서,
복수의 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치로서, 상기 복수의 데이터 엔티티는 제1 각각의 식별자와 연관되는, 제1 컴퓨팅 장치; 및
상기 제1 컴퓨팅 장치와 상이하고 상기 제1 컴퓨팅 장치에 통신 가능하게 결합되며, 상기 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치로서, 상기 사본은 제2 각각의 식별자와 연관되는, 제2 컴퓨팅 장치를 포함하고,
상기 제1 컴퓨팅 장치는
재동기화를 수행하라는 표시를 수신하고;
상기 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 상기 제2 컴퓨팅 장치에 제공하고;
상기 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 상기 제1 휘발성 메모리 내에 저장된 적어도 하나의 데이터 엔티티를 식별하는 정보를 상기 제2 컴퓨팅 장치로부터 수신하고;
상기 정보를 수신한 것에 응답하여, 상기 제1 휘발성 메모리에 저장된 상기 적어도 하나의 데이터 엔티티를 상기 제2 컴퓨팅 장치에 제공하는 것을 수행하도록 구성되는, 데이터 처리 시스템. - 제19항에 있어서,
상기 제1 휘발성 메모리는 제1 온 힙 메모리 및 제1 오프 힙 메모리를 포함하고, 상기 제1 컴퓨팅 장치는 상기 제1 온 힙 메모리에 상기 복수의 데이터 엔티티를 저장하도록 구성되는, 데이터 처리 시스템. - 제19항에 있어서,
상기 제2 휘발성 메모리는 제2 온 힙 메모리 및 제2 오프 힙 메모리를 포함하고, 상기 제2 컴퓨팅 장치는 상기 제2 오프 힙 메모리에 상기 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성되는, 데이터 처리 시스템. - 제19항에 있어서,
상기 제2 휘발성 메모리는 상기 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본에 대한 로컬 버전 번호를 저장하고,
상기 제2 컴퓨팅 장치는
상기 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 수신하고;
수신된 정보 내의 버전 번호 및 상기 로컬 버전 번호에 적어도 부분적으로 기초하여, 상기 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 상기 제1 휘발성 메모리에 저장된 상기 적어도 하나의 데이터 엔티티를 식별하고;
상기 적어도 하나의 데이터 엔티티를 식별하는 정보를 상기 제1 컴퓨팅 장치에 제공하는 것을 수행하도록 구성되는, 데이터 처리 시스템. - 제19항에 있어서,
상기 제1 휘발성 메모리는 상기 복수의 데이터 엔티티 중에서의 제1 데이터 엔티티에 대한 제1 버전 번호를 포함하는 복수의 데이터 엔티티 각각에 대한 버전 번호를 저장하도록 구성되고,
상기 제1 컴퓨팅 장치는
상기 제1 데이터 엔티티를 업데이트하는 것에 응답하여 상기 제1 버전 번호를 증가시키도록 구성되는, 데이터 처리 시스템. - 제19항에 있어서,
상기 제2 휘발성 메모리는 상기 제1 데이터 엔티티의 제1 사본을 저장하도록 구성되고,
상기 제1 컴퓨팅 장치는
상기 제1 데이터 엔티티를 업데이트하라는 표시를 수신하고;
상기 표시를 수신한 것에 응답하여,
상기 제1 휘발성 메모리에서 상기 제1 데이터 엔티티를 업데이트하고,
상기 제2 휘발성 메모리에 저장된 상기 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 상기 제2 컴퓨팅 장치에 제공하고;
상기 제1 데이터 엔티티의 사본이 상기 제2 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 상기 제2 컴퓨팅 장치로부터 수신한 후에, 상기 제1 데이터 엔티티가 업데이트되었다는 표시를 제공하는 것을 수행하도록 구성되는, 데이터 처리 시스템. - 제19항에 있어서,
상기 제1 각각의 식별자 및 상기 제2 각각의 식별자는 동일한, 데이터 처리 시스템. - 제1 각각의 식별자와 연관된 복수의 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치에 의해 수행되는 방법으로서,
상기 제1 컴퓨팅 장치는 상기 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치와 상이하고 상기 제2 컴퓨팅 장치에 통신 가능하게 결합되고, 상기 사본은 제2 각각의 식별자와 연관되고,
상기 방법은
재동기화를 수행하라는 표시를 수신하는 단계;
상기 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 상기 제2 컴퓨팅 장치에 제공하는 단계;
상기 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 상기 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 식별하는 정보를 상기 제2 컴퓨팅 장치로부터 수신하는 단계; 및
상기 정보를 수신한 것에 응답하여, 상기 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 상기 제2 컴퓨팅 장치에 제공하는 단계를 포함하는, 제1 컴퓨팅 장치에 의해 수행되는 방법. - 제26항에 있어서,
상기 제1 휘발성 메모리는 상기 복수의 데이터 엔티티 중에서의 제1 데이터 엔티티에 대한 제1 버전 번호를 포함하는 복수의 데이터 엔티티 각각에 대한 버전 번호를 저장하도록 구성되고,
상기 제1 컴퓨팅 장치는
상기 제1 데이터 엔티티를 업데이트하는 것에 응답하여 상기 제1 버전 번호를 증가시키도록 구성되는, 제1 컴퓨팅 장치에 의해 수행되는 방법. - 제26항에 있어서,
상기 제2 휘발성 메모리는 상기 제1 데이터 엔티티의 제1 사본을 저장하도록 구성되고,
상기 제1 컴퓨팅 장치는
상기 제1 데이터 엔티티를 업데이트하라는 표시를 수신하고;
상기 표시를 수신한 것에 응답하여,
상기 제1 휘발성 메모리에서 상기 제1 데이터 엔티티를 업데이트하고,
상기 제2 휘발성 메모리에 저장된 상기 제1 데이터 엔티티의 사본을 업데이트하라는 표시를 상기 제2 컴퓨팅 장치에 제공하고;
상기 제1 데이터 엔티티의 사본이 상기 제2 휘발성 메모리에서 업데이트되었음을 나타내는 정보를 상기 제2 컴퓨팅 장치로부터 수신한 후에, 상기 제1 데이터 엔티티가 업데이트되었다는 표시를 제공하는 것을 수행하도록 구성되는, 제1 컴퓨팅 장치에 의해 수행되는 방법. - 제26항에 있어서,
상기 제1 각각의 식별자 및 상기 제2 각각의 식별자는 동일한, 제1 컴퓨팅 장치에 의해 수행되는 방법. - 프로세서 실행 가능 명령이 저장된 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체로서,
상기 명령은, 제1 각각의 식별자와 연관된 복수의 데이터 엔티티를 저장하도록 구성된 제1 휘발성 메모리를 갖는 제1 컴퓨팅 장치에 의해 실행되는 경우, 상기 제1 컴퓨팅 장치로 하여금 방법을 수행하게 하고, 상기 제1 컴퓨팅 장치는 상기 복수의 데이터 엔티티 중에서의 데이터 엔티티의 사본을 저장하도록 구성된 제2 휘발성 메모리를 갖는 제2 컴퓨팅 장치와 상이하고 상기 제2 컴퓨팅 장치에 통신 가능하게 결합되고, 상기 사본은 제2 각각의 식별자와 연관되고,
상기 방법은
재동기화를 수행하라는 표시를 수신하는 단계;
상기 복수의 데이터 엔티티 각각에 대한 식별자 및 버전 번호를 포함하는 정보를 상기 제2 컴퓨팅 장치에 제공하는 단계;
상기 제2 휘발성 메모리 내의 각각의 적어도 하나의 사본과 동기화되지 않은, 상기 제1 휘발성 메모리에 저장된 적어도 하나의 데이터 엔티티를 식별하는 정보를 상기 제2 컴퓨팅 장치로부터 수신하는 단계; 및
상기 정보를 수신한 것에 응답하여, 상기 제1 휘발성 메모리에 저장된 상기 적어도 하나의 데이터 엔티티를 상기 제2 컴퓨팅 장치에 제공하는 단계를 포함하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체. - 제1항 내지 제11항 중 어느 한 항의 제1 컴퓨팅 장치로서 사용하도록 구성된 컴퓨팅 장치.
- 제19항 내지 제25항 중 어느 한 항의 제1 컴퓨팅 장치로서 사용하도록 구성된 컴퓨팅 장치.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562268090P | 2015-12-16 | 2015-12-16 | |
US62/268,090 | 2015-12-16 | ||
US15/019,003 US10025680B2 (en) | 2015-12-16 | 2016-02-09 | High throughput, high reliability data processing system |
PCT/US2016/017108 WO2017105529A1 (en) | 2015-12-16 | 2016-02-09 | High throughput, high reliability data processing system |
US15/019,003 | 2016-02-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180095004A true KR20180095004A (ko) | 2018-08-24 |
KR102105478B1 KR102105478B1 (ko) | 2020-04-28 |
Family
ID=55456900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187020207A KR102105478B1 (ko) | 2015-12-16 | 2016-02-09 | 고 쓰루풋, 고 신뢰성의 데이터 처리 시스템 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10025680B2 (ko) |
JP (1) | JP6626976B2 (ko) |
KR (1) | KR102105478B1 (ko) |
AU (1) | AU2016373662B2 (ko) |
CA (1) | CA3008830C (ko) |
SG (1) | SG11201805106QA (ko) |
WO (1) | WO2017105529A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017105529A1 (en) * | 2015-12-16 | 2017-06-22 | Ab Initio Technology Llc | High throughput, high reliability data processing system |
CN107948750B (zh) * | 2017-12-15 | 2019-11-01 | 中广热点云科技有限公司 | 机顶盒自动更新节目列表的方法及其*** |
US11892985B2 (en) | 2019-09-16 | 2024-02-06 | Aveva Software, Llc | Computerized systems and methods for bi-directional file sharing and synchronization on and over a network |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007120904A2 (en) * | 2006-04-14 | 2007-10-25 | Fuzzmed, Inc. | System, method, and device for personal medical care, intelligent analysis, and diagnosis |
JP2012516503A (ja) * | 2009-01-30 | 2012-07-19 | イーストマン コダック カンパニー | 分散された資産とメタデータを管理するシステム |
JP2014515524A (ja) * | 2011-05-23 | 2014-06-30 | マイクロソフト コーポレーション | 分散記憶環境における同期複製 |
JP2015162216A (ja) * | 2014-02-28 | 2015-09-07 | 日本電信電話株式会社 | 分散処理システム |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6343299B1 (en) | 1998-11-16 | 2002-01-29 | International Business Machines Corporation | Method and apparatus for random update synchronization among multiple computing devices |
US6823355B1 (en) | 2000-05-31 | 2004-11-23 | International Business Machines Corporation | Synchronous replication of transactions in a distributed system |
US6941410B1 (en) * | 2000-06-02 | 2005-09-06 | Sun Microsystems, Inc. | Virtual heap for a virtual machine |
US6934755B1 (en) * | 2000-06-02 | 2005-08-23 | Sun Microsystems, Inc. | System and method for migrating processes on a network |
US7571215B2 (en) | 2001-07-16 | 2009-08-04 | Bea Systems, Inc. | Data replication protocol |
US6917951B2 (en) * | 2001-07-26 | 2005-07-12 | Microsoft Corporation | System and method for replicating data in resource sets |
US7149761B2 (en) | 2001-11-13 | 2006-12-12 | Tadpole Technology Plc | System and method for managing the synchronization of replicated version-managed databases |
US6990603B2 (en) * | 2002-01-02 | 2006-01-24 | Exanet Inc. | Method and apparatus for securing volatile data in power failure in systems having redundancy |
US7606881B2 (en) | 2002-04-25 | 2009-10-20 | Oracle International Corporation | System and method for synchronization of version annotated objects |
US7284107B2 (en) * | 2004-04-30 | 2007-10-16 | Microsoft Corporation | Special-use heaps |
US7680839B1 (en) | 2004-09-30 | 2010-03-16 | Symantec Operating Corporation | System and method for resynchronizing mirrored volumes |
US7707165B1 (en) | 2004-12-09 | 2010-04-27 | Netapp, Inc. | System and method for managing data versions in a file system |
US20070067359A1 (en) | 2005-09-21 | 2007-03-22 | Lenovo (Singapore) Pte. Ltd. | Centralized system for versioned data synchronization |
US8997048B1 (en) * | 2007-02-14 | 2015-03-31 | Oracle America, Inc. | Method and apparatus for profiling a virtual machine |
EP2208148B1 (en) | 2007-09-28 | 2014-06-25 | Apertio Limited | System and method for replication and synchronisation |
JP4951652B2 (ja) * | 2009-06-24 | 2012-06-13 | 株式会社日立製作所 | コンピュータシステムのリモートコピー方法及びコンピュータシステム |
US8055615B2 (en) | 2009-08-25 | 2011-11-08 | Yahoo! Inc. | Method for efficient storage node replacement |
US8074107B2 (en) | 2009-10-26 | 2011-12-06 | Amazon Technologies, Inc. | Failover and recovery for replicated data instances |
JP5380695B2 (ja) * | 2010-02-23 | 2014-01-08 | 株式会社日立製作所 | メモリ管理方法、計算機システム及びメモリ管理プログラム |
US8832674B2 (en) * | 2011-02-24 | 2014-09-09 | Software Ag Usa, Inc. | Off-heap direct-memory data stores, methods of creating and/or managing off-heap direct-memory data stores, and/or systems including off-heap direct-memory data store |
US10817390B2 (en) * | 2011-09-14 | 2020-10-27 | Hewlett Packard Enterprise Development Lp | Imparting durability to a transactional memory system |
US9449014B2 (en) | 2011-11-29 | 2016-09-20 | Dell Products L.P. | Resynchronization of replicated data |
US9286162B2 (en) * | 2012-02-02 | 2016-03-15 | Netapp, Inc. | System and method for guaranteeing consistent data synchronization from a volatile data source |
US9501546B2 (en) | 2012-06-18 | 2016-11-22 | Actifio, Inc. | System and method for quick-linking user interface jobs across services based on system implementation information |
US9021050B2 (en) * | 2012-08-31 | 2015-04-28 | Yume, Inc. | Network service system and method with off-heap caching |
US9135164B2 (en) * | 2013-03-15 | 2015-09-15 | Virident Systems Inc. | Synchronous mirroring in non-volatile memory systems |
US9575844B2 (en) * | 2013-03-15 | 2017-02-21 | Skyera, Llc | Mass storage device and method of operating the same to back up data stored in volatile memory |
US9436559B2 (en) * | 2014-01-17 | 2016-09-06 | Hitachi, Ltd. | Storage apparatus and method for controlling cache of storage apparatus |
US20160041917A1 (en) * | 2014-08-05 | 2016-02-11 | Diablo Technologies, Inc. | System and method for mirroring a volatile memory of a computer system |
WO2017105529A1 (en) * | 2015-12-16 | 2017-06-22 | Ab Initio Technology Llc | High throughput, high reliability data processing system |
-
2016
- 2016-02-09 WO PCT/US2016/017108 patent/WO2017105529A1/en active Application Filing
- 2016-02-09 JP JP2018531450A patent/JP6626976B2/ja active Active
- 2016-02-09 CA CA3008830A patent/CA3008830C/en active Active
- 2016-02-09 SG SG11201805106QA patent/SG11201805106QA/en unknown
- 2016-02-09 US US15/019,003 patent/US10025680B2/en active Active
- 2016-02-09 KR KR1020187020207A patent/KR102105478B1/ko active IP Right Grant
- 2016-02-09 AU AU2016373662A patent/AU2016373662B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007120904A2 (en) * | 2006-04-14 | 2007-10-25 | Fuzzmed, Inc. | System, method, and device for personal medical care, intelligent analysis, and diagnosis |
JP2012516503A (ja) * | 2009-01-30 | 2012-07-19 | イーストマン コダック カンパニー | 分散された資産とメタデータを管理するシステム |
JP2014515524A (ja) * | 2011-05-23 | 2014-06-30 | マイクロソフト コーポレーション | 分散記憶環境における同期複製 |
JP2015162216A (ja) * | 2014-02-28 | 2015-09-07 | 日本電信電話株式会社 | 分散処理システム |
Also Published As
Publication number | Publication date |
---|---|
JP6626976B2 (ja) | 2019-12-25 |
US10025680B2 (en) | 2018-07-17 |
US20170180473A1 (en) | 2017-06-22 |
JP2019504401A (ja) | 2019-02-14 |
AU2016373662A1 (en) | 2018-07-05 |
CA3008830A1 (en) | 2017-06-22 |
KR102105478B1 (ko) | 2020-04-28 |
CA3008830C (en) | 2020-09-22 |
SG11201805106QA (en) | 2018-07-30 |
WO2017105529A1 (en) | 2017-06-22 |
AU2016373662B2 (en) | 2019-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106663047B (zh) | 用于优化的签名比较和数据复制的***和方法 | |
US20200081879A1 (en) | Persistent data storage techniques | |
WO2019154394A1 (zh) | 分布式数据库集群***、数据同步方法及存储介质 | |
TW409215B (en) | Parallel file system and method for multiple node file access | |
US9705730B1 (en) | Cloud storage using Merkle trees | |
US9189536B2 (en) | Maintaining a relationship between two different items of data | |
Fritchie | Chain replication in theory and in practice | |
US20160110261A1 (en) | Cloud storage using merkle trees | |
JP4291060B2 (ja) | トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム | |
US10310904B2 (en) | Distributed technique for allocating long-lived jobs among worker processes | |
CN112084258A (zh) | 一种数据同步方法和装置 | |
TW201717074A (zh) | 一種基於日誌解析的資料庫複製方法及裝置 | |
US11728976B1 (en) | Systems and methods for efficiently serving blockchain requests using an optimized cache | |
US20150286671A1 (en) | Transaction system | |
WO2022048358A1 (zh) | 数据处理方法、装置及存储介质 | |
AU2016373662B2 (en) | High throughput, high reliability data processing system | |
EP1197876A2 (en) | Persistent data storage techniques | |
CN104951475B (zh) | 分布式文件***和实现方法 | |
KR102598619B1 (ko) | 데이터베이스 관리 서비스 제공 시스템 | |
CN110362590A (zh) | 数据管理方法、装置、***、电子设备及计算机可读介质 | |
WO2023274409A1 (zh) | 在区块链***中执行交易的方法和区块链节点 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
EP3391223B1 (en) | High throughput, high reliability data processing system | |
CN114661818A (zh) | 图数据库中集群间数据实时同步的方法、***和介质 | |
CN112182094A (zh) | 一种语音数据文字文本形式的大数据分布式存储方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |