KR102060198B1 - 고-중첩 추정에 민감한 스케치들 생성 - Google Patents
고-중첩 추정에 민감한 스케치들 생성 Download PDFInfo
- Publication number
- KR102060198B1 KR102060198B1 KR1020120145388A KR20120145388A KR102060198B1 KR 102060198 B1 KR102060198 B1 KR 102060198B1 KR 1020120145388 A KR1020120145388 A KR 1020120145388A KR 20120145388 A KR20120145388 A KR 20120145388A KR 102060198 B1 KR102060198 B1 KR 102060198B1
- Authority
- KR
- South Korea
- Prior art keywords
- sketch
- vector
- data
- data objects
- overlap
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
버저닝 시스템(versioning system)은 데이터 객체들의 제 1 및 제 2 컬렉션들이 중첩하는 양을 결정한다. 상기 시스템은 상기 데이터 객체들의 제 1 컬렉션을 평균 사이즈 s의 m개의 가능한 중첩하는 그룹으로 분할하고 각 그룹에 대해 하나의 결합된 해시 결과를 컴퓨팅한다. 그 후, 상기 시스템은 상기 결합된 해시 결과들에 기초하여 n개의 요소들을 갖는 제 1 스케치 벡터를 구성한다. 상기 제 1 스케치 벡터의 각각의 요소는 선택 함수를 이용하여, 상기 요소들의 인덱스에 대응하는 상기 해시 함수로 컴퓨팅된 상기 결합된 해시 결과들로부터 선택된다. 그 다음, 상기 시스템은 상기 데이터 객체들의 제 2 컬렉션에 대한 제 2 스케치 벡터를 수신하고, 상기 제 1 및 제 2 스케치 벡터들 간의 스케치-벡터 중첩을 결정한다. 그 후, 상기 시스템은 상기 스케치-벡터 중첩에 기초하여 상기 데이터 객체들의 제 1 및 제 2 컬렉션들 간의 데이터 객체 중첩을 컴퓨팅한다.
Description
본 발명은 일반적으로 데이터 동기화에 관한 것이다. 더 구체적으로, 본 발명은 데이터의 컬렉션을 나타내는 해시 함수 값들("스케치")의 벡터를 생성하는 것에 관한 것이다.
일 실시예는 데이터 객체들의 제 1 컬렉션 및 제 2 컬렉션이 중첩하는 양을 결정하는 시스템을 제공한다. 상기 시스템은 상기 데이터 객체들의 제 1 컬렉션을 평균 또는 일정한 사이즈 s의 m개의 가능한 중첩하는 그룹들로 분할하고 각각의 그룹에 대해 하나의 결합된 해시 결과를 컴퓨팅한다. 그 후, 상기 시스템은 상기 결합된 해시 결과들을 원래 데이터 객체들의 해시들인 것처럼 이용한다. 즉, 상기 시스템은 상기 결합된 해시 결과들에 기초하여 n개의 요소들을 갖는 제 1 스케치 벡터를 구성한다. 상기 제 1 스케치 벡터의 각각의 요소는, 선택 함수(예를 들어, 최소 값의 결합된 해시 결과를 선택하는)를 이용하여, 상기 요소들의 인덱스에 대응하는 상기 해시 함수로 컴퓨팅된 상기 결합된 해시 결과들로부터 선택된다. 다음에, 상기 시스템은 데이터 객체들의 제 2 컬렉션에 대한 제 2 스케치 벡터를 수신하고, 상기 제 1 및 제 2 스케치 벡터들 간의 스케치-벡터 중첩을 결정한다. 그 후, 상기 시스템은 상기 스케치-벡터 중첩에 기초하여 상기 데이터 객체들의 제 1 및 제 2 컬렉션들 간의 데이터-객체 중첩을 컴퓨팅한다.
몇몇 실시예들에서, 상기 시스템은 상기 스케치-벡터 중첩을 변환 함수:
데이터-객체 중첩 = (스케치-벡터 중첩)1/s
에 대입함으로써 상기 데이터-객체 중첩을 컴퓨팅한다.
상기 변수 s는 그룹당 데이터 객체들의 평균 수를 나타낸다.
몇몇 실시예들에서, 상기 시스템은 해시 함수를 이용하여 상기 데이터 객체들의 제 1 컬렉션을 분할하여 상기 데이터 객체들의 제 1 컬렉션의 각각의 원소를 m개의 그룹들 중 하나로 맵핑한다.
몇몇 실시예들에서, 상기 시스템은 그룹에 대응하는 상기 데이터 객체들 각각에 대한 해시 결과를 컴퓨팅하고, 상기 해시 결과들에 기초하여 상기 그룹에 대한 결합된 해시 결과를 컴퓨팅함으로써, 상기 그룹에 대한 결합된 해시 결과를 컴퓨팅한다.
몇몇 실시예들에서, 상기 제 1 스케치 벡터 및 상기 제 2 스케치 벡터는 매칭 길이를 갖는다.
몇몇 실시예들에서, 상기 시스템은 매칭 값을 갖는 상기 제 1 및 제 2 스케치 벡터들 간의 대응하는 벡터 요소들의 부분을 결정함으로써 상기 스케치-벡터 중첩을 결정한다.
본 발명은 두 개의 분산된 데이터 저장소들이 중첩하는 추정된 양을 결정하는 문제를 해결하여, 상기 두 개의 데이터 저장소들이 거의 동일할 때 상기 중첩 추정에 대한 정확도가 최적화되는 방법을 제공한다.
도 1은 일 실시예에 따른 예시적인 분산 컴퓨팅 시스템을 도시하는 도면.
도 2는 일 실시예에 따라 로컬 및 원격 데이터 저장소 간의 중첩을 추정하기 위한 프로세스를 도시하는 흐름도.
도 3은 일 실시예에 따라 스케치 벡터를 생성하기 위한 프로세스를 도시하는 흐름도.
도 4는 일 실시예에 따라 스케치 벡터 요소를 생성하는 데이터 흐름도.
도 5는 본 발명의 일 실시예에 따라 메모리 풀에 대한 메모리 할당을 최적화하는 것을 용이하게 하는 예시적인 장치를 도시한 도면.
도 6은 본 발명의 일 실시예에 따라 메모리 풀에 대한 메모리 할당을 최적화하는 것을 용이하게 하는 예시적인 컴퓨터 시스템을 도시한 도면.
도 2는 일 실시예에 따라 로컬 및 원격 데이터 저장소 간의 중첩을 추정하기 위한 프로세스를 도시하는 흐름도.
도 3은 일 실시예에 따라 스케치 벡터를 생성하기 위한 프로세스를 도시하는 흐름도.
도 4는 일 실시예에 따라 스케치 벡터 요소를 생성하는 데이터 흐름도.
도 5는 본 발명의 일 실시예에 따라 메모리 풀에 대한 메모리 할당을 최적화하는 것을 용이하게 하는 예시적인 장치를 도시한 도면.
도 6은 본 발명의 일 실시예에 따라 메모리 풀에 대한 메모리 할당을 최적화하는 것을 용이하게 하는 예시적인 컴퓨터 시스템을 도시한 도면.
본 발명의 실시예들은 두 개의 분산된 데이터 저장소들이 중첩하는 추정된 양을 결정하는 문제를 해결하여, 상기 두 개의 데이터 저장소들이 거의 동일할 때 상기 중첩 추정에 대한 정확도가 최적화된다. 예를 들어, 컴퓨터 시스템은 로컬 데이터 저장소와 원격 컴퓨터 시스템 상의 백업 데이터 저장소 간의 중첩 추정을 상기 백업 데이터 저장소를 나타내는 스케치 벡터를 수신하고, 이후 상기 원격 스케치 벡터를 상기 로컬 데이터 저장소에 대한 로컬 스케치 벡터와 비교함으로써 결정할 수 있다.
상기 스케치 벡터는 평균 사이즈 s의 m개의 가능한 중첩 그룹들로 상기 데이터 저장소의 객체들을 그룹화하고 상기 m개의 그룹들 각각의 결합된 해시 결과들을 컴퓨팅함으로써 생성된 해시 결과들의 세트를 포함한다. 상기 스케치 벡터의 길이는 합의된 해시 함수들의 수에 의존하지만, 그룹들의 수와 상기 데이터 저장소의 크기에 의존하지 않는다는 것을 주의한다. 따라서, 두 개의 컴퓨터 시스템들이 많은 양의 데이터를 교환하지 않고 그들의 완전한 데이터 저장소들을 나타내는 스케치 벡터들을 교환할 수 있다.
또한, 상기 로컬 및 원격 저장소들이 거의 동일할 때, 상기 로컬 및 원격 스케치 벡터들로부터 두 개의 대응하는 스케치 벡터 엔트리들이 매칭 그룹들(예를 들어, 매칭 데이터 객체들을 포함하는 그룹들)에 기초하여 컴퓨팅될 것이다. 따라서, 이들 두 개의 대응하는 스케치 벡터 엔트리들은 상기 그룹들의 상기 데이터 객체들이 상기 로컬 및 원격 저장소들에서 동일할 때 매칭 값들을 가질 수 있고, 상기 그룹의 적어도 하나의 데이터 객체가 다르거나 상기 로컬 및 원격 저장소에서 손실될 때 상이한 값들을 가질 수 있다. 따라서, 상기 시스템이 데이터 객체들을 그룹화함으로써 상기 스케치 벡터를 생성하기 때문에, 상기 시스템은 상기 로컬 및 원격 데이터 저장소들이 거의 동일할 때 매우 정확한 중첩 추정을 결정하는 것을 계속 용이하게 하면서 낮은 통신 오버헤드를 소비하는 원격 디바이스로 스케치 벡터를 전송할 수 있다.
도 1은 일 실시예에 따른 예시적인 분산 컴퓨팅 시스템(100)을 도시한다. 컴퓨팅 시스템(100)은 저장 디바이스(106)에 결합된 컴퓨팅 디바이스(104), 및 저장 디바이스(114)에 결합된 컴퓨팅 디바이스(112)를 포함할 수 있다. 저장 디바이스들(106 및 114)의 각각은 파일, 고정-크기 블록, 데이터베이스 객체, 데이터 아카이브, 및/또는 임의의 데이터 입도의 다른 데이터 객체들과 같은 다양한 유형들의 데이터 객체들을 저장할 수 있다.
몇몇 실시예들에서, 컴퓨팅 디바이스(104)는 컴퓨팅 디바이스(112)의 저장 디바이스(114)로부터의 데이터 객체들의 적어도 하나의 서브세트를 저장하기 위해 저장 디바이스(106)를 사용할 수 있다. 예를 들어, 컴퓨팅 디바이스(104)는 휴대형 컴퓨팅 디바이스(예를 들어, 스마트 폰, 태블릿 컴퓨터, 또는 랩탑), 데스크탑 컴퓨터, 또는 서버 컴퓨터를 포함할 수 있고, 사용자(110)와 관련되는 데이터 객체들(108.1-108.a)을 저장하기 위해 저장 디바이스(106)를 사용할 수 있다. 또한, 컴퓨팅 디바이스(112)는 사용자(110)에 대한 데이터 객체들(108.1-108.a)의 백업 카피를 저장하기 위해 저장 디바이스(114)를 사용하는 데스크탑 컴퓨터 또는 서버 컴퓨터를 포함할 수 있다.
사용자(110)는 저장 디바이스(106)의 상기 데이터와 컴퓨팅 디바이스(112)의 데이터를 주기적으로 동기화하도록 컴퓨팅 디바이스(104)를 구성할 수 있다. 따라서, 컴퓨팅 디바이스(104)는 상기 데이터 객체들의 컬렉션이 저장 디바이스(106) 및/또는 저장 디바이스(114)에서 변경되는지 여부를 결정하기 위해 컴퓨팅 디바이스(112)로부터의 스케치 벡터(118)를 주기적으로 요청할 수 있다. 예를 들어, 사용자(110)는 저장 디바이스(106) 상의 데이터 객체를 생성, 수정, 또는 삭제할 수 있다. 다른 예로서, 컴퓨팅 디바이스(112)는 상이한 컴퓨팅 디바이스(예를 들어, 사용자(110)에 기인하는 다른 클라이언트 디바이스)와의 이전의 동기화 동작에 응답하여 저장 디바이스(114)에서 데이터 객체를 생성, 수정, 또는 삭제할 수 있다. 따라서, 컴퓨팅 디바이스(104)가 네트워크(102)를 통해 컴퓨팅 디바이스(112)로부터 스케치 벡터(118)를 수신할 때, 컴퓨팅 디바이스(104)는 상기 파일들이 컴퓨팅 디바이스들(104 및 112) 사이에서 동기화되었는지 여부를 결정하기 위해 데이터 객체들(108.1-108.a)에 대한 스케치 벡터와 스케치 벡터(118)를 비교할 수 있다.
도 2는 일 실시예에 따라 로컬 및 원격 데이터 저장소 간의 중첩을 추정하기 위한 프로세스를 도시하는 흐름도이다. 동작 동안, 상기 로컬 디바이스는 원격 디바이스로 스케치 벡터에 대한 요청을 전송할 수 있다(동작 202). 그 후, 상기 로컬 디바이스는 상기 원격 디바이스로부터 원격 스케치 벡터를 수신하고(동작 204), 데이터 객체들의 로컬 컬렉션에 대한 로컬 스케치 벡터를 생성한다(동작 206). 몇몇 실시예들에서, 상기 로컬 디바이스는 상기 원격 디바이스와 유사한 방식으로 상기 로컬 스케치 벡터를 생성한다. 예를 들어, 상기 로컬 디바이스는 상기 원격 디바이스와 동일한 그룹화 함수 및 쌍-방식의 동일한 독립 해시 함수들을 사용할 수 있다. 이들 함수들은 미리 결정(예를 들어, 구성 파일로부터 선택 또는 특정 표준 또는 프로토콜에 기초하여 결정)되거나, 상기 로컬 및 원격 디바이스들에 의해 협의될 수 있다.
몇몇 실시예들에서, 상기 로컬 디바이스로부터의 요청은 상기 스케치 벡터를 생성하는데 사용되어야 하는 상기 그룹화 함수 및 상기 쌍을 이룬 독립 해시 함수들을 나타낼 수 있다. 몇몇 실시예들에서, 상기 요청은 상기 요청된 스케치 벡터(예를 들어, 다수의 스케치 벡터 엔트리들)에 대한 크기를 나타낼 수 있고, 상기 원격 디바이스는 상기 스케치 벡터의 크기에 기초하여 상기 쌍을 이룬 독립 해시 함수들의 컬렉션을 생성할 수 있다. 상기 요청은 또한 상기 스케치 벡터를 생성하는데 사용되어야 하는 상기 원격 디바이스에서 파일들의 서브세트를 나타낼 수 있다. 예를 들어, 상기 요청은 상기 원격 디바이스에서 파일 시스템의 하나 이상의 디렉토리들을 나타낼 수 있다. 다른 예로서, 상기 요청은 상기 원격 디바이스에서 데이터베이스의 하나 이상의 표들을 나타낼 수 있거나, 데이터 객체들의 컬렉션을 선택하는데 사용되어야 하는 데이터베이스 쿼리를 나타낼 수 있고, 선택된 컬렉션으로부터 상기 스케치 벡터를 생성한다.
일단 상기 로컬 디바이스가 상기 원격 스케치 벡터를 수신하면, 상기 로컬 디바이스는 상기 로컬 및 원격 스케치 벡터 간의 중첩을 나타내는 스케치-벡터 중첩을 결정한다(동작 208). 예를 들어, 컴퓨팅 디바이스들(104 및 112)(도 2 참조)은 각각 본원에서 데이터 저장소 "A" 및 "B"로 각각 표기된 데이터 저장소를 저장할 수 있다. 또한, 컴퓨팅 디바이스들(104 및 112)은 각각 본원에서 스케치 벡터 "A" 및 "B"로 각각 표기된 그들의 대응하는 데이터 저장소에 대한 스케치 벡터를 생성할 수 있다. 스케치 벡터 SA는 컴퓨팅 디바이스(104)에서 데이터 객체들(108.1-108.a)에 대응할 수 있고, 스케치 벡터 SB는 컴퓨팅 디바이스(112)에서 데이터 객체들(106.1-106.b)에 대응할 수 있다. 몇몇 실시예들에서, 상기 스케치 벡터들(SA 및 SB)은 매칭 길이를 갖도록 구성된다. 또한, 상기 스케치-벡터 중첩은 매칭 값들을 갖는 상기 제 1 및 제 2 스케치 벡터들 간의 대응하는 벡터 요소들의 부분으로서 컴퓨팅된다. 따라서, 상기 스케치-벡터 중첩은 표현 를 사용하여 컴퓨팅될 수 있다.
그 후, 상기 로컬 디바이스는 상기 데이터 객체들의 로컬 및 원격 컬렉션들 간의 중첩량을 나타내는 데이터-객체 중첩을 컴퓨팅할 수 있다(동작 210). 몇몇 실시예들에서, 상기 시스템은 상기 스케치-벡터 중첩을 변환 함수:
데이터-객체 중첩 = (스케치-벡터 중첩)1/s
에 대입함으로써 데이터-객체 중첩을 컴퓨팅한다. 상기 변수 s는 m개의 그룹들 각각의 데이터 객체들의 평균 수를 나타낸다. 상기 그룹들의 수 m은 원래 데이터 객체들의 수와 비슷하거나 작을 수 있다. 그룹의 평균 크기, s는 예상된 데이터-객체 중첩 정도에 의존한다. 예를 들어, s = 10일 때, 0.90의 스케치-벡터 중첩은 약 0.99의 데이터-객체 중첩에 대응하고, 0.95의 스케치-벡터 중첩은 약 0.995의 데이터-객체 중첩에 대응한다. 따라서, s = 10은 0.99와 1.0 간의 데이터-객체 중첩에 높은 민감도(sensitivity)를 제공한다. 데이터-객체 중첩이 0.999와 1.0 사이에 있는 것으로 예상되면, 더 큰 값의 s, 즉 s = 100이 보장될 수 있다. 높은 데이터-객체 중첩에 대한 증가된 민감도는 낮은 중첩의 덜 정밀한 추정을 희생으로 발생하여, s = 10을 사용하는 시스템이 0.3과 0.4 중첩 간의 차이에 반응하지 않을 수 있다. 예상된 중첩이 알려지지 않거나 광범위하게 변하면, 넓은 범위의 중첩 값들에 걸쳐 민감도를 제공하기 위해, 상기 시스템은 다양한 s값들, 예를 들어, s = 1, 10, 100, ...에 대한 스케치들을 컴퓨팅 및 저장할 수 있다.
몇몇 실시예들에서, 컴퓨팅 디바이스들(104 및 112)은 또한 동작(208 및 210) 동안 커버리지 추정을 컴퓨팅하기 위해 스케치 벡터들(SA 및 SB)을 사용할 수 있다. 예를 들어, vi(A) 및 vi(B)는 각각 스케치 벡터들(SA 및 SB)에 대한 위치 i에서 스케치 벡터 요소들을 나타낸다고 하자. 그러면, vi(A) < vi(B)는 |A\B|/(|A\B|+|B\A|)일 가능성이 있고, 여기서 연산자 "\"는 세트 차이를 나타낸다. 따라서, 컴퓨팅 디바이스는 vi(A) < vi(B)인 SA 및 SB의 스케치 벡터 요소들의 부분으로서 상기 스케치-벡터 커버리지를 컴퓨팅함으로써 데이터 저장소(A)에 대한 데이터 저장소(B)의 커버리지 추정(예를 들어, 데이터 저장소(B)에도 존재하는 데이터 저장소(A)의 데이터 객체들의 부분)을 컴퓨팅할 수 있다. 또한, 상기 컴퓨팅 디바이스는 vi(B) < vi(A)인 SA 및 SB의 스케치 벡터 요소들의 부분으로서 상기 스케치-벡터 커버리지를 컴퓨팅함으로써 데이터 저장소(B)에 대한 데이터 저장소(A)의 커버리지 추정을 컴퓨팅할 수 있다. 그 후, 상기 컴퓨팅 디바이스는 상기 스케치-벡터 커버리지에 기초하여 상기 변환 함수:
데이터-객체 중첩 = (스케치-벡터 중첩)1/s
를 사용하여 원하는 데이터-객체 커버리지를 컴퓨팅할 수 있다.
이후 상기 로컬 디바이스는 상기 데이터-객체 중첩 또는 데이터-객체 커버리지에 기초하여 상기 원격 디바이스와 데이터 객체들을 동기화할 수 있다(동작 212). 예를 들어, 컴퓨팅 디바이스들(104 및 112)은 컴퓨팅 디바이스들(104 및 112) 간의 상기 데이터 객체들을 동기화하는 방법(예를 들어, 어느 컴퓨팅 디바이스가 새로운 콘텐트를 다른 디바이스로 송신하고, 컴퓨팅 디바이스에서 새로운 콘텐트를 발견하기 위해 어떤 프로토콜을 사용할지 등)을 결정하기 위해 상기 데이터-객체 중첩을 사용할 수 있다. 상기 중첩 추정이 낮으면(예를 들어, 0.75보다 작으면), 더 적은 양의 콘텐트를 갖는 상기 컴퓨팅 디바이스는 완전한 데이터 저장소를 다른 컴퓨팅 디바이스로 전송할 수 있다(예를 들어, 네트워크(102) 상의 데이터 전송(120)을 통해). 그러나, 상기 중첩 추정이 높으면(예를 들어, 적어도 0.75), 컴퓨팅 디바이스들(104 및 112)은 각각 다른 컴퓨팅 디바이스로 전달될 새로운 데이터 객체들을 결정하기 위해 이진 검색(binary search)을 수행할 수 있다.
다양한 예시적인 애플리케이션들에서, 종종 추정이 저-중첩 데이터 세트들에 대한 것보다 고-중첩 데이터 세트들에 대해 정확해지는 것이 더 중요하다. 예를 들어, 데이터 저장소들(A 및 B)이 같은 것을 의미하면, 상기 중첩 추정 |A∩B|/|A∪B|가 충분히 큰 A 및 B에 대해 0.99 이상으로 유지할 것이다. 또한, 상기 데이터 저장소(A)가 상기 데이터 저장소(B)의 서브세트인 것을 의미하면, 상기 커버리지 추정 |A∩B|/|A|가 0.99 이상으로 유지할 것이다.
도 3은 일 실시예에 따라 스케치 벡터를 생성하기 위한 프로세스를 도시하는 흐름도를 나타낸다. 동작 동안, 상기 디바이스는 데이터 객체들의 컬렉션을 m개의 가능한 중첩 그룹들로 분할할 수 있다(동작 302). 몇몇 실시예들에서, 상기 디바이스는 상기 데이터 저장소 A의 요소들을 1과 m사이의 정수들로 맵핑하는 그룹화 함수 g를 사용함으로써 객체 그룹들을 생성할 수 있다. 예를 들어, 그룹화 함수 g 10는 각각 정확하게 10개의 데이터 객체들을 갖거나 평균 10개의 데이터 객체들을 갖는 m개의 객체 그룹들을 생성할 수 있다. 따라서, 객체 그룹(A j )는 데이터 저장소(A)의 서브세트여서, 이다. 몇몇 실시예들에서, 그룹들은 미리 결정된 해시 함수들에 의해 결정되어, 어떤 미리 결정된 해시 함수 하의 동일한 해시 결과들을 갖는 모든 데이터 객체들이 한 그룹을 형성한다. 파일 또는 객체에 대한 그룹 수는 파일 또는 객체에 대한 속성(예를 들어, 이름, 생성 시간 또는 날짜 등)에 기초하거나 상기 파일 또는 객체의 콘텐트에 기초할 수 있다.
그 다음, 상기 디바이스는 n개의 쌍-방식의 독립된 해시 함수들의 컬렉션을 결정할 수 있다(동작 304). 상기 디바이스는 대응하는 스케치 벡터 요소 v i 에 대한 결합된 해시 결과들을 생성하기 위해 각각의 해시 함수 h i 를 사용하여, n개의 해시 함수들의 컬렉션은 독립된 쌍-방식이어야 해서 동일한 입력이 제공될 때 어떠한 컬렉션에서의 두 개의 해시 함수들은 결코 동일한 결과를 생성하지 않는다. 몇몇 실시예들에서, 상기 쌍-방식의 독립 해시 함수들은 또한 독립적인 최소-방식(min-wise)일 수 있고, 입력 객체들의 컬렉션에 대해, 동등하게 상기 컬렉션의 임의의 입력 객체는 최소-방식의 독립 해시 함수들의 컬렉션에 대입될 때 최소 값을 생성할 것이다.
그 후 상기 디바이스는 쌍-방식의 독립된 해시 함수들의 컬렉션으로부터 대응하는 해시 함수를 선택함으로써 스케치 벡터 요소를 컴퓨팅하고(동작 306), 각각의 객체 그룹을 프로세스하기 위해 상기 선택된 해시 함수들을 사용함으로써 복수의 결합된 해시 결과들을 생성한다(동작 308). 예를 들어, 상기 디바이스가 동작(302)에서 m 개의 객체 그룹들을 생성하면, 상기 디바이스는 동작(306)에서 상기 디바이스가 선택한 상기 해시 함수에 대한 입력으로서 각각의 객체 그룹을 사용함으로써 동작(308)에서 m개의 결합된 해시 결과들의 대응하는 세트를 생성할 수 있다.
몇몇 실시예들에서, 상기 디바이스는 상기 그룹 요소들에 대해 개별적인 해시 결과들을 추가함으로써 그룹에 대한 결합된 해시 결과를 생성한다. 따라서, 스케치 벡터 요소 i에 대해, 상기 디바이스는 그룹 A j 에 대한 결합된 해시를 생성한다: . 다른 실시예들에서, 상기 디바이스는 상기 그룹 요소들에 대한 개별적인 해시 결과들의 배타적 논리합(exclusive-or)을 컴퓨팅함으로써 상기 그룹에 대한 결합된 해시 결과를 생성한다. 따라서, 상기 스케치 벡터 요소 i에 대해, 상기 디바이스는 그룹 A j 에 대해 결합된 해시를 다음과 같이 생성한다: .
그 후, 상기 디바이스는 선택 함수(예를 들어, 최소-값 선택 함수)를 사용하여 상기 스케치 벡터 요소에 대한 결합된 해시 결과를 선택하고(동작 310), 상기 스케치 벡터의 대응하는 위치에서 상기 선택된 결합된 해시 결과를 저장한다(동작 312). 그 다음 상기 디바이스는 다른 스케치 벡터 요소를 생성할 필요가 있는지 결정하고(동작 314), 만약 그렇다면, 상기 디바이스는 동작 306으로 돌아간다. 따라서, 프로세스 300을 수행함으로써, 상기 디바이스는 데이터 저장소 A에 대한 상기 스케치 벡터 SA를 다음과 같이 구성한다:
몇몇 실시예들에서, 상기 디바이스는 구성 파일에 기초하여 또는 분산 컴퓨터 시스템의 디바이스들에 공통인 특정 표준 또는 프로토콜에 기초하여 (동작 302를 위한) 그룹화 함수 및/또는 (동작 306을 위한) 쌍-방식의 독립 해시 함수를 결정할 수 있다.예를 들어, 상기 그룹화 함수가 제 1 입력으로서 원하는 수의 그룹들을 취하고 제 2 입력으로서 객체 파일을 취하고, 출력으로서 그룹 수를 생성하는 미리 결정된 함수일 수 있다. 유사하게, 상기 쌍-방식의 독립 해시 함수들은 입력으로서 스케치 벡터 엔트리 수 및 객체 그룹(예를 들어, 그룹에서 데이터 객체들의 순서화된 컬렉션)을 취하고, 상기 객체 그룹에 대한 결합된 해시 결과를 생성하는 해시 함수를 사용하여 구현될 수 있다.
도 4는 일 실시예에 따라 스케치 벡터 요소(414.2)에 대한 결합된 해시를 생성하는 데이터 흐름 그래프를 나타낸다. 동작(302) 동안, 컴퓨팅 디바이스는 데이터 객체들의 컬렉션(402)으로부터 객체 그룹들(406)을 생성하기 위해 그룹화 함수(404)를 사용할 수 있다. 예로서, 그룹화 함수(404)는 데이터 객체들(402.4, 402.6, 402.8, 402.12, 및 402.17)을 그룹(406.2)으로 맵핑할 수 있다.
그 다음 상기 디바이스는 (예를 들어, 동작(308) 동안) 객체 그룹들(406)에 대해 결합된 해시 결과들(410)을 생성하기 위해 대응하는 해시 함수를 먼저 사용함으로써(예를 들어, 해시 함수 408.2를 사용) 스케치 벡터 요소(414.2)를 생성할 수 있다. 그 후, 상기 디바이스는 (예를 들어, 동작(310) 동안) 결합된 해시 결과들(410)로부터 선택 함수(412)에 기초하여 스케치 벡터 요소(414.2)에 저장할 값을 선택한다. 몇몇 실시예들에서, 선택 함수(412)는 최소 값을 선택하는 함수에 기초하여 결합된 해시 결과들(410) 중 하나를 선택할 수 있다. 다른 실시예들에서, 선택 함수(412)는 최대-값 또는 중간-값 선택 함수와 같은, 임의의 다른 선택 함수에 기초하여 결합된 해시 결과들(410) 중 하나를 선택할 수 있다. 또한, 선택 함수(412)는 결정가능한 수에 가장 가까운 값을 갖는 결합된 해시 결과를 선택할 수 있다.
도 5는 본 발명의 일 실시예에 따라 메모리 풀에 대한 메모리 할당을 최적화하는 것을 용이하게 하는 예시적인 장치(500)를 도시한다. 장치(500)는 유선 또는 무선 통신 채널을 통해 서로 통신할 수 있는 복수의 모듈들을 포함할 수 있다. 장치(500)는 하나 이상의 집적 회로들을 사용하여 실현될 수 있고, 도 5에 도시된 것보다 적거나 많은 모듈들을 포함할 수 있다. 또한, 장치(500)는 컴퓨터 시스템에 집적되거나, 다른 컴퓨터 시스템들 및/또는 디바이스들과 통신할 수 있는 개별 디바이스로서 실현될 수 있다. 구체적으로, 장치(500)는 통신 모듈(502), 데이터-그룹화 모듈(504), 해싱 모듈(506), 스케치-생성 모듈(508), 비교 모듈(510), 및 컴퓨팅 모듈(512)을 포함할 수 있다.
몇몇 실시예들에서, 통신 모듈(502)은 원격 디바이스로 로컬 스케치 벡터를 전송할 수 있고 및/또는 상기 원격 디바이스에서 데이터 객체들의 원격 컬렉션을 나타내는 원격 스케치 벡터를 수신할 수 있다. 데이터-그룹화 모듈(504)은 데이터 객체들의 로컬 컬렉션을 그룹들로 분할할 수 있고, 해싱 모듈(506)은 각각의 그룹의 모든 원소들에 대한 결합된 해시 결과를 컴퓨팅할 수 있다. 스케치-생성 모듈(508)은 상기 결합된 해시 결과들에 기초하여 상기 로컬 스케치 벡터를 생성할 수 있다. 비교 모듈(510)은 상기 로컬 및 원격 스케치 벡터들 간의 스케치-벡터 중첩을 결정할 수 있고, 컴퓨팅 모듈(512)은 상기 스케치-벡터 중첩에 기초하여 데이터 객체들의 상기 제 1 및 제 2 컬렉션들 간의 데이터-객체 중첩을 컴퓨팅할 수 있다.
도 6은 본 발명의 일 실시예에 따라 메모리 풀에 대한 메모리 할당을 최적화하는 것을 용이하게 하는 예시적인 컴퓨터 시스템(602)을 도시한다. 컴퓨터 시스템(602)은 프로세서(604), 메모리(606), 및 저장 디바이스(608)를 포함한다. 또한, 컴퓨터 시스템(602)은 디스플레이 디바이스(610), 키보드(612), 및 포인팅 디바이스(614)에 결합될 수 있다. 저장 디바이스(608)는 운영 체제(616), 데이터 동기화 시스템(618), 및 데이터(632)를 저장할 수 있다.
데이터 동기화 시스템(618)은 컴퓨터 시스템(602)에 의해 실행될 때, 컴퓨터 시스템(602)으로 하여금 본원에 기술된 방법들 및/또는 프로세스들을 수행하도록 할 수 있는 명령들을 포함할 수 있다. 구체적으로, 데이터 동기화 시스템(618)은 로컬 스케치 벡터를 원격 디바이스로 전송 및/또는 상기 원격 디바이스(통신 모듈 (620))에서 데이터 객체들의 원격 컬렉션을 나타내는 원격 스케치 벡터를 수신하기 위한 명령들을 포함할 수 있다.
또한, 데이터 동기화 시스템(618)은 데이터 객체들의 로컬 컬렉션을 그룹들로 분할하기 위한 명령들(데이터-그룹화 모듈(622)), 및 각각의 그룹의 모든 원소들에 대한 결합된 해시 결과를 컴퓨팅하기 위한 명령들(해싱 모듈(624))을 포함할 수 있다. 데이터 동기화 시스템(618)은 또한 상기 결합된 해시 결과들에 기초하여 상기 로컬 스케치 벡터를 생성하기 위한 명령들(스케치-생성 모듈(626))을 포함할 수 있다. 데이터 동기화 시스템(618)은 상기 로컬 및 원격 스케치 벡터들 간의 스케치-벡터 중첩을 결정하기 위한 명령들(비교 모듈(628)), 및 상기 스케치-벡터 중첩에 기초하여 상기 데이터 객체들의 제 1 및 제 2 컬렉션들 간의 데이터-객체 중첩을 컴퓨팅하기 위한 명령들(컴퓨팅 모듈(630))을 포함할 수 있다.
데이터(632)는 본원에 기술된 방법들 및/또는 프로세스들에 의해 입력으로서 요구되거나 출력으로서 생성된 임의의 데이터를 포함할 수 있다. 구체적으로, 데이터(632)는 적어도 데이터 객체들의 컬렉션, 쌍-방식의 독립 해시 함수들의 컬렉션, 결합된 해시 결과들의 컬렉션, 데이터 객체들의 저장된 컬렉션들에 대응하는 로컬 스케치 벡터, 및 원격 디바이스에서 데이터 객체들에 대응하는 원격 스케치 벡터를 저장할 수 있다.
본 발명의 실시예들의 상기 설명들은 단지 도시와 설명의 목적을 위해 제시되었다. 이들은 본 발명을 개시된 형태들로 완전하게 되거나 제한하는 것으로 의도되지 않는다. 따라서, 많은 변형들 및 변경들이 당업자들에게 명백할 것이다. 추가로, 상기 내용은 본 발명을 제한하는 것으로 의도되지 않는다. 본 발명의 범위는 첨부된 청구범위에 의해서 규정된다.
100 : 분산 컴퓨팅 시스템 104, 112 : 컴퓨팅 디바이스
106, 114 : 저장 디바이스 502 : 통신 모듈
504 : 데이터-그룹화 모듈 506 : 해싱 모듈
508 : 스케치-생성 모듈 510 : 비교 모듈
106, 114 : 저장 디바이스 502 : 통신 모듈
504 : 데이터-그룹화 모듈 506 : 해싱 모듈
508 : 스케치-생성 모듈 510 : 비교 모듈
Claims (10)
- 명령을 저장하는 비-일시적인 컴퓨터-판독가능 저장 매체에 있어서,
상기 명령들은, 컴퓨터에 의해 실행될 때, 상기 컴퓨터가:
데이터 객체들의 제 1 컬렉션을 평균 사이즈 s의 m개의 그룹들로 분할하는 단계로서, 상기 제 1 컬렉션의 데이터 객체는 하나 이상의 m개의 그룹들로 할당되는, 상기 분할 단계;
n개의 쌍-방식의 독립 해시 함수들의 각각의 해시 함수에 대해, 각각의 그룹의 모든 원소들에 대한 결합된 해시 결과를 컴퓨팅하는 단계;
n개의 요소들을 갖는 제 1 스케치 벡터(sketch vector)를 구성하는 단계로서, 각각의 요소는 선택 함수를 이용하여, 상기 요소들의 인덱스에 대응하는 상기 해시 함수로 컴퓨팅된 상기 결합된 해시 결과들로부터 선택되는, 상기 구성 단계;
데이터 객체들의 제 2 컬렉션에 대한 제 2 스케치 벡터를 수신하는 단계;
상기 제 1 및 제 2 스케치 벡터들 간에 스케치-벡터 중첩을 결정하는 단계; 및
상기 스케치-벡터 중첩에 기초하여 데이터 객체들의 상기 제 1 및 제 2 컬렉션들 간의 데이터-객체 중첩을 컴퓨팅하는 단계를 포함하는, 방법을 수행하도록 하는, 비-일시적인 컴퓨터-판독가능 저장 매체. - 제 1 항에 있어서,
상기 데이터-객체 중첩을 컴퓨팅하는 단계는 상기 스케치-벡터 중첩을 변환 함수:
데이터-객체 중첩 = (스케치-벡터 중첩)1/s
에 대입하는 단계를 포함하고,
상기 s는 그룹당 데이터 객체들의 평균 수를 나타내는, 비-일시적인 컴퓨터-판독가능 저장 매체. - 제 1 항에 있어서,
상기 데이터 객체들의 제 1 컬렉션을 분할하는 단계는 해시 함수를 이용하여 상기 데이터 객체들의 제 1 컬렉션의 각각을 m개의 그룹들 중 하나로 맵핑하는 단계를 포함하는, 비-일시적인 컴퓨터-판독가능 저장 매체. - 제 1 항에 있어서,
그룹에 대해 결합된 해시 결과를 컴퓨팅하는 단계는:
상기 그룹에 대응하는 각각의 상기 데이터 객체들에 대해 해시 결과를 컴퓨팅하는 단계; 및
상기 해시 결과들에 기초하여 상기 그룹에 대한 결합된 해시 결과를 컴퓨팅하는 단계를 포함하는, 비-일시적인 컴퓨터-판독가능 저장 매체. - 장치에 있어서,
데이터 객체들의 제 1 컬렉션을 평균 사이즈 s의 m개의 그룹들로 분할하기 위한 데이터-그룹화 메커니즘으로서, 상기 제 1 컬렉션의 데이터 객체는 상기 m개의 그룹들 중 하나 이상으로 할당되는, 상기 데이터-그룹화 메커니즘;
n개의 쌍-방식의 독립 해시 함수들의 각각의 해시 함수에 대해, 각각의 그룹의 모든 원소들에 대한 결합된 해시 결과를 컴퓨팅하기 위한 해싱 메커니즘;
n개의 요소들을 갖는 제 1 스케치 벡터를 구성하기 위한 스케치-생성 메커니즘으로서, 각각의 요소는 선택 함수를 이용하여, 상기 요소들의 인덱스에 대응하는 상기 해시 함수로 컴퓨팅된 상기 결합된 해시 결과들로부터 선택되는, 상기 스케치-생성 메커니즘;
데이터 객체들의 제 2 컬렉션에 대한 제 2 스케치 벡터를 수신하기 위한 통신 메커니즘;
상기 제 1 및 제 2 스케치 벡터들 간에 스케치-벡터 중첩을 결정하기 위한 비교 메커니즘; 및
상기 스케치-벡터 중첩에 기초하여 상기 데이터 객체들의 상기 제 1 및 제 2 컬렉션들 간의 데이터-객체 중첩을 컴퓨팅하기 위한 컴퓨팅 메커니즘을 포함하는, 장치. - 제 5 항에 있어서,
상기 데이터-객체 중첩을 컴퓨팅하는 동안, 상기 컴퓨팅 메커니즘은 또한 상기 스케치-벡터 중첩을 변환 함수:
데이터-객체 중첩 = (스케치-벡터 중첩)1/s
에 대입하도록 구성되고,
상기 s는 그룹당 데이터 객체들의 평균 수를 나타내는, 장치. - 제 5 항에 있어서,
상기 데이터 객체들의 제 1 컬렉션을 분할하는 동안, 상기 데이터-그룹화 메커니즘은 또한 상기 데이터 객체들의 제 1 컬렉션의 각각을 m개의 그룹들 중 하나로 맵핑하기 위해 해시 함수를 이용하도록 구성되는, 장치. - 제 5 항에 있어서,
그룹에 대해 결합된 해시 결과를 컴퓨팅하는 동안, 상기 해싱 메커니즘은 또한:
상기 그룹에 대응하는 상기 데이터 객체들의 각각에 대해 해시 결과를 컴퓨팅하고,
상기 해시 결과들에 기초하여 상기 그룹에 대한 결합된 해시 결과를 컴퓨팅하도록 구성되는, 장치. - 제 5 항에 있어서,
상기 제 1 스케치 벡터 및 상기 제 2 스케치 벡터는 매칭 길이를 갖는, 장치. - 제 9 항에 있어서,
상기 스케치-벡터 중첩을 결정하는 동안, 상기 비교 메커니즘은 또한 매칭 값을 갖는 상기 제 1 및 제 2 스케치 벡터들 간의 대응하는 벡터 요소들의 부분을 결정하도록 구성되는, 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/328,901 | 2011-12-16 | ||
US13/328,901 US8572092B2 (en) | 2011-12-16 | 2011-12-16 | Generating sketches sensitive to high-overlap estimation |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130069456A KR20130069456A (ko) | 2013-06-26 |
KR102060198B1 true KR102060198B1 (ko) | 2019-12-27 |
Family
ID=47683443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120145388A KR102060198B1 (ko) | 2011-12-16 | 2012-12-13 | 고-중첩 추정에 민감한 스케치들 생성 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8572092B2 (ko) |
EP (1) | EP2605159B1 (ko) |
KR (1) | KR102060198B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799890B2 (en) * | 2009-11-30 | 2014-08-05 | Red Hat, Inc. | Generating a version identifier for a computing system based on software packages installed on the computing system |
US10402414B2 (en) * | 2015-01-30 | 2019-09-03 | Nec Corporation | Scalable system and method for weighted similarity estimation in massive datasets revealed in a streaming fashion |
US10552413B2 (en) | 2016-05-09 | 2020-02-04 | Sap Se | Database workload capture and replay |
US10698892B2 (en) * | 2018-04-10 | 2020-06-30 | Sap Se | Order-independent multi-record hash generation and data filtering |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511190A (en) * | 1995-01-20 | 1996-04-23 | Tandem Computers, Inc. | Hash-based database grouping system and method |
GB9604522D0 (en) * | 1996-03-02 | 1996-05-01 | Univ Strathclyde | Databases |
US6725223B2 (en) * | 2000-12-22 | 2004-04-20 | International Business Machines Corporation | Storage format for encoded vector indexes |
US6751628B2 (en) * | 2001-01-11 | 2004-06-15 | Dolphin Search | Process and system for sparse vector and matrix representation of document indexing and retrieval |
US20030005306A1 (en) | 2001-06-29 | 2003-01-02 | Hunt Preston J. | Message digest based data synchronization |
US7508985B2 (en) * | 2003-12-10 | 2009-03-24 | International Business Machines Corporation | Pattern-matching system |
US7650320B2 (en) * | 2005-02-24 | 2010-01-19 | Nahava Inc. | Method and system for efficient indexed storage for unstructured content |
US20070005556A1 (en) * | 2005-06-30 | 2007-01-04 | Microsoft Corporation | Probabilistic techniques for detecting duplicate tuples |
US8259806B2 (en) * | 2006-11-30 | 2012-09-04 | Dolby Laboratories Licensing Corporation | Extracting features of video and audio signal content to provide reliable identification of the signals |
US8468244B2 (en) * | 2007-01-05 | 2013-06-18 | Digital Doors, Inc. | Digital information infrastructure and method for security designated data and with granular data stores |
US7680067B2 (en) | 2007-03-09 | 2010-03-16 | Palm, Inc. | Peer-to-peer data synchronization architecture |
-
2011
- 2011-12-16 US US13/328,901 patent/US8572092B2/en active Active
-
2012
- 2012-12-13 KR KR1020120145388A patent/KR102060198B1/ko active IP Right Grant
- 2012-12-14 EP EP12197317.6A patent/EP2605159B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20130069456A (ko) | 2013-06-26 |
EP2605159A1 (en) | 2013-06-19 |
EP2605159B1 (en) | 2018-05-02 |
US20130159352A1 (en) | 2013-06-20 |
US8572092B2 (en) | 2013-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11068441B2 (en) | Caseless file lookup in a distributed file system | |
CN110347651B (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
US10210186B2 (en) | Data processing method and system and client | |
WO2018010491A1 (zh) | 一种生成业务路径的方法和装置 | |
KR102060198B1 (ko) | 고-중첩 추정에 민감한 스케치들 생성 | |
CN108536808B (zh) | 一种基于Spark计算框架的数据获取方法和装置 | |
WO2013155417A2 (en) | Data coreset compression | |
JP6911877B2 (ja) | 情報管理装置、情報管理方法及び情報管理プログラム | |
US9092499B2 (en) | Synchronizing endpoint data stores having disparate schemas | |
US10241963B2 (en) | Hash-based synchronization of geospatial vector features | |
JP6129290B1 (ja) | 分散計算におけるアプリケーションパラメータ設定およびシステム仕様設定を推奨する方法およびシステム | |
WO2019160133A1 (ja) | 情報管理装置、情報管理方法及び情報管理プログラム | |
CN106095579B (zh) | 容器资源分配方法及装置 | |
CN109597903A (zh) | 图像文件处理装置和方法、文件存储***及存储介质 | |
WO2014117729A1 (en) | Scalable data deduplication | |
US20060209717A1 (en) | Distributed storing of network position information for nodes | |
CN112035413B (zh) | 元数据信息查询方法、装置及存储介质 | |
US10649968B2 (en) | Smaller proximate search index | |
WO2018225314A1 (ja) | データベース管理システムおよびデータベース管理方法 | |
US20160234299A1 (en) | Management server and operation method thereof and server system | |
CN105550765B (zh) | 一种路网距离计算中的代表元选取方法 | |
CN114328558B (zh) | 一种榜单更新方法、装置、设备及存储介质 | |
US20140129565A1 (en) | Information processing device | |
US11971856B2 (en) | Efficient database query evaluation | |
US11960449B2 (en) | Computer-readable recording medium storing information processing program, information processing method, and information processing apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |