KR20210023795A - 대규모 데이터 분석 최적화 - Google Patents
대규모 데이터 분석 최적화 Download PDFInfo
- Publication number
- KR20210023795A KR20210023795A KR1020207022602A KR20207022602A KR20210023795A KR 20210023795 A KR20210023795 A KR 20210023795A KR 1020207022602 A KR1020207022602 A KR 1020207022602A KR 20207022602 A KR20207022602 A KR 20207022602A KR 20210023795 A KR20210023795 A KR 20210023795A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- register
- registers
- hashed parameter
- dataset
- 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/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3404—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3442—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
- G06Q30/0251—Targeted advertisements
- G06Q30/0269—Targeted advertisements based on user profile or attribute
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Business, Economics & Management (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Entrepreneurship & Innovation (AREA)
- Game Theory and Decision Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
대규모 데이터세트의 자원 및 공간 효율적인 분석을 용이하게 하는 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램을 포함하는 방법, 시스템 및 장치가 개시된다. 방법은 데이터세트의 객체에 대한 활동 데이터를 획득하는 방법을 포함한다. 데이터세트의 각 데이터 아이템에 대해 이진 표현을 갖는 해시된 파라미터는 객체의 식별자를 사용하여 생성된다. 레지스터는 해시된 파라미터를 기반으로 레지스터들의 세트 중에서 식별된다. 객체에 대한 해시된 파라미터가 데이터세트에서 객체의 발생 횟수를 특정하는 집계량에 기여한다는 결정이 내려진다. 이 결정에 기초하여, 레지스터에 저장된 집계량이 업데이트된다. 레지스터들의 세트에 저장된 집계량을 기반으로, 객체들의 활동 데이터를 기반으로 데이터세트의 객체의 집계 분포를 제공하는 리포팅 출력이 생성된다.
Description
본 명세서는 일반적으로 대규모 데이터 세트의 자원 및 공간 효율적인 저장 및 분석을 위한 컴퓨팅 프로세스에 관한 것이다.
디지털 환경에서 다양한 객체(예: 온라인 상호 작용, 컴폰넌트, 자원 등)에 대한 데이터를 수집하고 분석하면 콘텐츠, 제품 및/또는 서비스의 공급자에게 유리할 수 있다. 경우에 따라 공급자는 예를 들어 공급자의 서비스를 개선하거나 사용자의 온라인 경험을 향상시키기 위해 수많은(예: 수백만 또는 수십억) 객체에 대한 데이터를 집계할 수 있다. 예를 들어 공급자는 서버 팜의 컴포넌트 또는 자원(리소스)에 대한 데이터를 집계하여 서버 팜의 컴포넌트가 얼마나 자주 실패하는지(또는특정 방식으로 작동하는지) 확인할 수 있다. 다른 예로서, 공급자(제공자)는 특정 컨텐츠와 상호 작용하는 일부 장치에 관한 데이터를 수집하여 이들 장치가 얼마나 자주 컨텐츠와 상호 작용 하는지를 결정할 수 있다. 이러한 유형의 동작은, 특히 대규모 데이터 세트에서 수행되는 경우 데이터를 효율적으로 처리, 쿼리 및 저장하는 데 중요한 기술적 문제가 발생할 수 있으며 정확한 결과를 얻으려면 시스템 대기 시간이 크게 길어질 수 있다.
일반적으로, 본 명세서에 기술된 요지의 하나의 혁신적인 양태는 동작들을 포함하는 방법으로 구현될 수 있으며, 동작들은, 데이터세트에서 복수의 객체에 대한 활동(액티비티) 데이터를 획득하는 단계 -상기 데이터세트 내의 각각의 객체는 디지털 환경에서 활동을 수행하고, 상기 활동 데이터는 상기 활동을 나타냄-; 데이터세트의 각 데이터 아이템에 대해: 데이터 아이템에 지정된 객체에 대한 식별자를 사용하여 객체에 대한 해시된 파라미터를 생성하는 단계 -해시된 파라미터는 이진 표현을 가짐-; 해시된 파라미터의 이진 표현에 기초하여 레지스터들의 세트 중에서 레지스터를 식별하는 단계 -상기 레지스터들의 세트 내의 각각의 레지스터는 상기 데이터세트 내의 객체에 관한 데이터를 저장하는데 사용됨-; 해시된 파라미터의 이진 표현에 기초하여, 객체에 대한 해시된 파라미터가 데이터세트에서 객체의 발생 횟수를 특정(지정)하는 집계량(aggregation amount)에 기여하는지를 결정하는 단계; 객체에 대한 해시된 파라미터가 집계량에 기여한다는 결정에 응답하여, 레지스터에 저장된 집계량을 갱신하는 단계; 그리고 레지스터들의 세트에 저장된 총량(aggregate amounts)에 기초하여, 데이터 아이템들의 세트를 나타내는 리포팅 출력을 생성하는 단계를 포함하며, 각각의 데이터 아이템은 디지털 환경에서 특정 집계량으로 활동을 수행한 데이터세트의 추정된 수의 객체를 식별한다. 이 양태의 다른 실시 예는 방법의 동작을 수행하도록 구성된 해당 시스템, 디바이스, 장치 및 컴퓨터 프로그램을 포함한다. 컴퓨터 프로그램(예를 들어, 명령어)은 컴퓨터 저장 장치에서 인코딩될 수 있다. 이들 및 다른 실시 형태는 각각 다음 특징 중 하나 이상을 임의로 포함할 수 있다.
일부 구현들에서, 각각의 객체는 사용자를 나타내고; 집계량은 빈도 값을 나타낸다.
일부 구현에서, 해시된 파라미터의 이진 표현에 기초하여 레지스터들의 세트 중에서 레지스터를 식별하는 단계는, 해시된 파라미터의 이진 표현의 제1 부분을 식별하는 단계; 그리고 해시된 파라미터의 이진 표현의 제1 부분을 사용하여 레지스터를 식별하는 단계를 포함한다.
일부 구현에서, 레지스터들의 세트 내의 각각의 레지스터는 수신된 해시된 파라미터에 관한 데이터를 저장하는 데이터 구조를 포함하고, 상기 데이터 구조는: 상기 수신된 해시된 파라미터의 제2 부분에서 다수의 리딩 제로를 특정하는 데이터를 저장하기 위한 제1 필드; 수신된 해시된 파라미터의 제2 부분에서 트레일링 비트를 특정하는 데이터를 저장하기 위한 제2 필드; 그리고 (i) 제1 필드의 기존 데이터 값이 다수의 리딩 제로와 일치(매칭)하고 (ii) 제2 필드의 기존 데이터 값이 트레일링 비트와 일치(매칭)할 때 발생 횟수를 나타내는 집계량을 특정하는 데이터를 저장하기 위한 제3 필드를 포함한다.
일부 구현들에서, 해시된 파라미터의 이진 표현에 기초하여, 객체에 대한 해시된 파라미터가 집계량에 기여하는지를 결정하는 단계는, 해시된 파라미터의 이진 표현의 제2 부분으로부터 다수의 리딩 제로를 결정하는 단계; 해시된 파라미터의 이진 표현의 제 2 부분으로부터 트레일링 비트를 결정하는 단계; 그리고 다수의 리딩 제로 및 트레일링 비트에 기초하여, 해시된 파라미터가 레지스터의 데이터 구조의 제3 필드에 저장된 기존의 데이터 값에 영향을 미치는지를 결정하는 단계를 포함한다.
일부 구현에서, 다수의 리딩 제로 및 트레일링 비트의 최대 수에 기초하여, 해시된 파라미터가 레지스터의 데이터 구조의 제3 필드에 저장된 기존의 데이터 값에 영향을 미치는지를 결정하는 단계는 레지스터의 데이터 구조의 제1 필드에 저장된 기존의 데이터 값이 리딩 제로의 수와 동일하다고 결정하는 단계; 그리고 레지스터의 데이터 구조의 제2 필드에 저장된 기존의 데이터 값이 트레일링 비트의 최대 수와 동일한지를 결정하는 단계를 포함한다.
일부 구현들에서, 레지스터에 저장된 집계량을 갱신(업데이트)하는 단계는 레지스터의 데이터 구조의 제3 필드에 저장된 기존 데이터 값을 1씩 증가시키는 단계를 포함한다.
일부 구현에서, 레지스터들의 세트에 저장된 총량에 기초하여, 데이터 아이템들의 세트를 나타내는 리포팅 출력을 생성 -각각의 데이터 아이템은 디지털 환경에서 특정 집계량으로 활동을 수행한 데이터세트의 객체의 추정된 수를 식별함- ㅎ하는 단계는, 상기 레지스터들의 세트에 저장된 집계량에 기초하여 고유한 집계량의 세트를 식별하는 단계; 집계형의 세트의 각 특정 집계량에 대해, 특정 집계량으로 활동을 수행한 데이터세트의 추정된 객체 수를 결정하는 단계를 포함하며, 추정된 객체 수를 결정하는 단계는, 상기 특정 집계량과 매칭하는 집계량을 저장하는 다수의 레지스터를 결정하는 단계; 해시 충돌 정정 팩터에 기초하여 특정 집계량과 매칭하는 집계량을 저장하는 상기 다수의 레지스터를 조정하는 단계; 상기 레지스터들의 세트의 각 레지스터에 저장된 평균 객체 수를 결정하는 단계; 그리고 조정된 레지스터 수를 평균 객체 수로 스케일링하는 단계를 포함한다.
본 명세서에 기술된 요지의 특정 실시 예는, 객체에 대한 활동 데이터(이하에 추가로 설명됨)를 활동 데이터에 기초하여 데이터세트 내의 객체의 분포를 효율적으로 결정할 수 있게 하는 공간 효율적인 방식으로 저장함으로써, HLL(HyperLogLog)와 같은 확률적 데이터 구조를 향상시키기 위해 구현될 수 있다. 종래의 방법은 본 명세서에 기술된 기술 및/또는 시스템에 의해 요구되는 것보다 실질적으로 더 많은 컴퓨팅 및 저장 자원을 필요로 하며, 이는 특히 대규모 데이터세트에서 이러한 동작을 수행할 때에 그러하다. 대조적으로,
본 명세서의 기술 및/또는 시스템은 실질적으로 적은 저장소(스토리지)를 필요로 하고, 객체의 활동 데이터에 기초하여 데이터 세트 내의 객체의 빈도 분포를 결정하기 위해 대규모 데이터세트의 더 많은 시간 및 자원을 효율적으로 처리할 수 있다.
본 명세서에서 설명된 요지의 하나 이상의 실시 예들의 세부사항들은 첨부 도면들 및 아래의 설명에서 설명된다. 본 요지의 다른 특징, 양태 및 장점은 상세한 설명, 도면 및 청구 범위로부터 명백해질 것이다.
도 1은 데이터세트에 대한 정보를 계산하기 위한 예시적인 컴퓨팅 시스템의 블록도이다.
도 2는 데이터세트 내의 객체에 대한 활동 데이터에 기초하여 집계 분포를 계산하기 위한 예시적인 프로세스의 흐름도이다.
도 3은 본 명세서에서 설명된 방법과 관련하여 사용될 수 있는 컴퓨팅 시스템의 블록도이다.
다양한 도면에서 유사한 참조 번호 및 명칭은 유사한 요소를 나타낸다.
도 2는 데이터세트 내의 객체에 대한 활동 데이터에 기초하여 집계 분포를 계산하기 위한 예시적인 프로세스의 흐름도이다.
도 3은 본 명세서에서 설명된 방법과 관련하여 사용될 수 있는 컴퓨팅 시스템의 블록도이다.
다양한 도면에서 유사한 참조 번호 및 명칭은 유사한 요소를 나타낸다.
본 명세서는 객체에 대한 활동 데이터에 기초하여 상이한 집계 값(예를 들어, 빈도)에 걸쳐 데이터세트 내의 객체의 분포를 제공하기 위해 HLL(HyperLogLog) 데이터 구조와 같은 확률론적 카디널리티 추정기(cardinality estimator)를 사용하는 기술을 설명한다. 본 명세서에 기술된 기술은 종래의 HLL 데이터 구조를 사용하여 불가능한 이러한 집계(예를 들어, 빈도) 분포를 계산할 수 있는 방식으로 종래의 HLL 데이터 구조를 향상시킨다. 다른 유형의 확률론적 데이터 구조가 또한 본 명세서에서 설명된 기술을 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
객체는 엔터티, 자원(리소스) 또는 컴포넌트(예: 사용자, 스팸 이벤트, 시스템 컴폰너트, 디지털 자산 등)일 수 있다. 데이터세트의 각 객체는 디지털 환경에서 특정 활동과 연관되거나 이를 수행하며, 데이터세트의 활동 데이터는 객체(오브젝트)의 활동을 나타낸다. 예를 들어, 사용자가 특정 디지털 캠페인의 컨텐츠를 클릭하거나 보거나 다른 방식으로 상호 작용하는 등의 특정 디지털 자산(예: 컨텐츠의 일부)과의 장치 상호 작용을 설명하는 데이터가 포함될 수 있다. 다른 예로서, 활동 데이터는 네트워크 환경에서의 하드웨어/컴포넌트 이벤트(예를 들어, 고장, 리셋, 정전, 네트워크 호출, 메모리 액세스 또는 다른 이벤트)에 관한 로그 데이터를 포함할 수 있다.
맥락에서, 종래의 HLL 데이터 구조는 대규모 데이터세트(즉, 데이터세트의 카디널리티)에서 고유한 객체의 수를 측정하거나 추정하는데 사용될 수 있다. 그러나, 종래의 HLL 데이터 구조는 객체의 활동 데이터에 기초하여 객체의 집계 분포를 결정할 수 없다. 예를 들어, 기존의 HLL 데이터 구조를 사용하여 특정 디지털 컨텐츠와 상호작용한 데이터세트의 사용자 수를 결정할 수 있지만, 이 데이터 구조는 특정 빈도(예: 1회, 2회, 3회 등)로 컨텐츠를 본 사용자의 수의 분포를 결정하는 데 사용될 수 없다.
아래에 그리고 본 명세서 전반에 걸쳐보다 상세하게 설명되는 바와 같이, 본 명세서에 기술된 기술은 디지털 환경에서 이들 객체에 대한 활동 데이터에 기초하여 데이터세트에서 객체의 집계(예를 들어, 빈도) 분포를 결정할 수 있도록 종래의 HLL 데이터 구조를 향상시킨다. HLL 데이터 구조의 HLL 레지스터들은 세 개의 필드를 포함하도록 향상될 수 있으며, 세 개의 필드는 최상위 넌-제로(non-zero) 비트(표준 HLL 레지스터에 이미 저장되어 있음)의 비트 위치도 나타내는, 데이터세트에서 객체의 다수의 리딩 제로를 저장하는 제1 필드; 해당 객체의 트레일링 비트를 저장하는 제2 필드(예를 들어, p 비트로 구성된 객체에 대한 별도의 해시 값과 같은 객체의 다른 안정적인 식별자); 동일한 키를 가진 모든 객체에 대한 정보를 저장하는, 교환적(commutative) 감소 함수(f(S_t,I) = S_[t+1])의 결과를 기반으로 하는 집계 카운터를 저장하는 제3 필드를 포함한다. 이러한 예시적인 집계 카운터는, (1) 데이터세트에서 객체의 발생 횟수를 카운팅하는 빈도 카운터, (2) 특정 이벤트가 기록된 가장 최근의 타임스탬프를 카운팅하는 카운터, (3) 각 오류 로깅 레벨에서 오류 코드가 관찰된 횟수를 카운팅하는 카운터를 포함할 수 있다.
HLL 데이터 엔진은 데이터세트의 객체(오브젝트)를 M 레지스터들의 세트에 할당한다. 객체에 대한 데이터가 수신되면, 객체의 고유 식별자(아래에 설명됨)는 해시 함수를 사용하여 해시되어 이진 표현이 있는 해시된 파라미터(아래에 설명됨)를 생성한다. HLL 데이터 엔진은 해시된 파라미터의 특정 수의 비트(예를 들어, 처음 4 비트)를 사용하여 M 레지스터들 중 하나에 객체를 할당한다.
HLL 데이터 엔진은 객체가 특정 활동과 연관되거나 수행된 집계 횟수를 결정한다. 아래에 설명되고 본 명세서 전반에 걸쳐 더 상세하게 설명된 바와 같이, HLL 데이터 엔진은 해시된 파라미터의 나머지 비트(즉, 레지스터를 식별하는 데 사용된 비트 이외의 비트)가 예를 들어 데이터세트에서 객체의 발생 횟수를 지정(특정)하는 집계량에 기여하는지 여부를 평가함으로써 이를 달성한다.
HLL 데이터 엔진은 해시된 파라미터의 나머지 비트에 대한 리딩 제로의 수(이는 최상위 넌-제로 비트의 비트 위치를 나타냄)를 결정한다. 리딩 제로(leading zero)의 수가 레지스터의 제1 필드에 저장된 값과 동일하면, HLL 데이터 엔진은 이전에 결정된 최상위 비트(또는 전술한 바와 같은 다른 적절한 안정(stable) 식별자)에 대한 트레일링(trailing) 비트의 세트를 결정한다. 결정된 트레일링 비트가 레지스터의 트레일링 p 비트 필드에 저장된 값과 동일하면, HLL 데이터 엔진은 현재 객체(오브젝트)가 레지스터에 데이터가 이미 저장된 객체와 동일하다고 결정한다. 결과적으로, HLL 데이터 엔진은 예를 들어, 그 필드에 저장된 값을 1씩 증가 시키거나 다른 적절한 교환적 감소 연산을 수행함으로써 레지스터의 집계 카운터 필드를 갱신(업데이트)한다.
HLL 데이터 엔진은 데이터세트에서 특정 집계 값(예: 빈도) 이상에서 발생한 객체 수를 결정할 수 있다. HLL 데이터 엔진은 집계 카운터가 특정 집계 값으로 설정된 레지스터의 수를 레지스터당 평균 객체 수로 스케일링하여(예: 해시 충돌을 처리하도록 조정) 이 값을 계산한다.
본 명세서 전체에 대한 설명 외에도, 본 명세서에 기술된 시스템, 프로그램, 또는 특징들이 정보(예: 사용자의 소셜 네트워크, 소셜 활동 또는 활동, 직업, 사용자 선호도 또는 사용자의 현재 위치에 대한 정보)의 수집을 가능하게 할 수 있는지, 그리고 사용자가 서버로부터 컨텐츠 또는 통신을 전송 받았는지 여부에 대해 사용자가 선택을 할 수 있게 하는 제어가 사용자에게 제공될 수 있다. 또한, 특정 데이터는 개인 식별 정보가 제거되도록 저장 또는 사용하기 전에 하나 이상의 방식으로 처리될 수 있다. 예를 들어, 사용자의 신원정보는 사용자에 대한 개인 식별 정보가 결정되지 않도록 처리될 수 있거나, 사용자의 지리적 위치가 도시, 우편 번호 또는 주 수준과 같은 위치 정보가 획득되는 곳에서 일반화될 수 있으며, 사용자의 특정 위치를 확인할 수 없도록 처리될 수 있다. 따라서, 사용자는 사용자에 대해 어떤 정보가 수집되는지, 그 정보가 어떻게 사용되는지, 그리고 어떤 정보가 사용자에게 제공되는지를 제어할 수 있다.
도 1은 데이터세트에 대한 정보를 계산하기 위한 예시적인 컴퓨팅 시스템(100)의 블록도이다. 시스템(100)은 일반적으로 컴퓨팅 서버(102), HLL 데이터 엔진(104), 데이터 저장 장치(130) 및 데이터 수집 엔진(140)을 포함한다. 아래에서 더 상세히 설명되는 바와 같이, 시스템(100)은 객체에 대한 활동 데이터에 기초하여 데이터세트 내의 객체의 총 분포(aggregate distribution)를 측정 또는 추정하는 특정 계산 규칙을 실행하도록 구성된 특수 목적 하드웨어 회로를 포함한다. 이러한 기술은 다양한 응용 분야에 적용될 수 있다. 예를 들어, 본 명세서에 설명된 기술은 디지털 캠페인 도달 범위 평가에 사용될 수 있으며, 이는 다양한 빈도(예를 들어 한 번, 두 번, 세 번 등 디지털 컨텐츠와 상호작용한(예: 조회, 클릭 등) 고유한 사용자의 수)로 특정 캠페인과 상호작용한 사용자 분포를 설명하는 데이터를 생성하는 것을 포함한다. 다른 예로서, 본 명세서에 기술된 기술은 대규모 네트워크 환경에서 하드웨어/컴포넌트 장애(실패)를 분석하는데 사용될 수 있으며, 이는 네트워크 환경에서 특정 컴포넌트 또는 컴퓨팅 장치가 얼마나 자주 실패하는지에 대한 통계를 생성하는 것을 포함한다. 본 명세서에서 설명된 기술들은 다른 응용들에서도 사용될 수 있음을 이해할 것이다.
도 1에 도시된 바와 같이, 시스템(100)은 컴퓨팅 서버(102)를 포함하고, 이는 그들의 활동 레벨에 기초하여 데이터세트 내의 객체들의 총 분포를 결정하기 위해 HLL(HyperLogLog) 데이터 엔진(104)을 사용하도록 구성된다. 본 명세서에서 사용되는 용어인 엔진은 일련의 태스크를 수행하는 데이터 처리 장치를 의미한다.
HLL 데이터 엔진(104)은 하나 이상의 프로세서 마이크로칩을 포함하는 하드웨어 회로(예를 들어, 특수 목적 회로)의 서브시스템으로서 컴퓨팅 서버(102) 내에 포함된다. 일반적으로, 컴퓨팅 서버(102)는 컴퓨팅 서버(102)의 컴퓨터 시스템을 집합적으로 형성하는 데이터 저장 장치(106), 프로세서(예를 들어, 중앙 또는 그래픽 프로세싱 유닛), 메모리를 포함할 수 있다. 이들 컴퓨터 시스템의 프로세서는 시스템(100)의 예시적인 디스플레이 모니터에서 출력하기 위한 그래픽 정보를 디스플레이하기 위해 메모리 또는 데이터세트 저장 장치(106)에 저장된 명령(명령어)을 포함하는, 서버(102)에 의한 실행을 위한 명령어를 처리한다.
일부 구현들에서, 저장된 명령어들의 실행은 본 명세서에서 설명된 동작들 중 하나 이상이 컴퓨팅 서버(102) 또는 HLL 데이터 엔진(104)에 의해 수행되게 한다. 일부 구현들에서, 다수의 프로세서 및 다수의 메모리와 함께, 적절하게 다수의 프로세서가 사용될 수 있다. 예를 들어, 컴퓨팅 서버(102)는 다수의 다른 컴퓨팅 장치와 연결될 수 있으며, 각 장치(예: 서버 뱅크, 서버 그룹, 모듈 또는 다중 프로세서 시스템)는 본 명세서에서 설명된 액션, 동작 또는 논리 흐름의 일부를 수행한다.
시스템(100)은 데이터 수집 엔진(140)을 통해 디지털 환경에서 복수의 객체에 대한 활동 데이터를 포함하는 데이터세트를 수신할 수 있다. 수신된 데이터세트는 컴퓨팅 서버(102)의 HLL 데이터 엔진(104)에 제공된다.
도 2를 참조하여 아래에 더 설명되는 바와 같이, HLL 데이터 엔진(104)은 해싱 로직(108), 리딩 제로 로직(110) 및 레지스터 ID 로직(112)을 포함하는 로직 엔진(116)을 사용하여 데이터세트의 데이터를 메모리(106)의 M 레지스터(125)의 세트에 저장한다.
데이터 수집 엔진(140)은 또한 특정 빈도로 디지털 환경에서 활동과 관련되거나 달리 수행되는 데이터세트 내의 객체의 수에 관한 데이터를 요청하는 쿼리(queries)를 수신한다. 예를 들어, 쿼리(150)는 특정 횟수(예를 들어, 1회, 2회, 3회 등)로 컨텐츠를 보거나 액세스하거나 다른 방식으로 상호작용한 데이터세트 내의 고유 사용자의 수에 관한 데이터를 요청할 수 있다. 데이터 수집 엔진(140)은 쿼리(150)를 컴퓨팅 서버(102)로 전송하고, 이는 HLL 데이터 엔진(104)(특히, 리포팅 로직(114))을 사용하여 데이터세트 내의 개별 사용자의 수 및 그들의 활동 데이터에 기초하여 상이한 빈도에 걸친 그들의 분포를 결정한다. 그 후, HLL 데이터 엔진(104)은 단독으로 또는 컴퓨팅 서버(102)의 프론트 엔드 엔진과의 조합으로 상기 결정된 분포 데이터를 리포팅 출력(180)으로서 제공한다. 위의 예에서, 리포팅 출력(180)은 상이한 빈도로, 예를 들어, 1회, 2회 등 특정 활동과 관련되거나 달리 수행된 사용자의 수를 나타내는 텍스트 또는 시각적 표현(예: 히스토그램, 원형 차트 등) 형태의 통계일 수 있다. 대안적으로 또는 추가로, 리포팅(reporting) 출력(180)은 컴퓨팅 서버(102) 또는 다른 컴퓨팅 장치에 의해 처리될 수 있는 데이터 구조의 형태일 수 있다.
이러한 통계를 생성하는데 사용되는 HLL 데이터 엔진(104)(도 1에 도시됨)의 컴포넌트 및 이들 컴포넌트의 각각의 동작은 아래의 도 2를 참조하여 추가로 설명된다.
도 2는 데이터세트 내의 객체에 대한 활동 데이터에 기초하여 총 분포(aggregate distributions)를 계산하기 위한 예시적인 프로세스(200)의 흐름도이다. 프로세스(200)는 시스템(100)의 컴퓨팅 자원, 특히 전술한 HLL 데이터 엔진(104)을 사용하여 구현되거나 실행될 수 있다. 프로세스(200)의 동작은 단지 예시의 목적으로 설명된다. 프로세스(200)의 동작은 임의의 적절한 장치 또는 시스템, 예를 들어 임의의 적절한 데이터 처리 장치에 의해 수행될 수 있다. 프로세스(200)의 동작은 또한 비-일시적 컴퓨터 판독 가능 매체(예컨대, 도 1을 참조하여 설명된 메모리 및/또는 데이터 저장 장치(130))에 저장되고 그리고 컴퓨팅 서버(102)의 적어도 하나의 프로세서에 의해 실행되는 프로그램된 명령으로 구현될 수 있다.
데이터 수집 엔진(140)은 데이터세트 내의 복수의 객체들에 대한 활동 데이터를 획득한다(202). 일부 구현들에서, 데이터 수집 엔진(140)은 데이터세트 내의 객체에 대한 디지털 환경에서 활동 데이터를 특정하는 데이터 로그를 수신한다(각 개체는 데이터세트에서 한 번 이상 발생할 수 있다). 데이터 로그는 객체에 대한 객체 식별자 및 객체에 대한 해당 활동 데이터에 대응하는 개별 필드(또는 다른 데이터 아이템을 나타내는 데 사용할 수 있는 구분기호(delimiters))를 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, 객체 식별자는 데이터세트에서 특정 객체를 고유하게 식별하는 값(예를 들어, 숫자, 영숫자 문자열, 데이터 구조)이다. 일부 구현에서, 객체 식별자는 바이트(예를 들어, 8비트)인 반면, 다른 구현에서 객체 식별자는 예를 들어 12비트, 16비트, 32비트 또는 64 비트에 의해 형성된 데이터 워드이다. 일부 경우에, 가변 비트 수는 64 비트 초과 또는 64 비트 미만과 같은 객체 식별자를 형성하는데 사용될 수 있다.
데이터 수집 엔진(140)은 수신된 데이터세트를 컴퓨팅 서버(102)의 HLL 데이터 엔진(104)으로 전송한다. 데이터세트 내의 각각의 데이터 아이템에 대해, 프로세스(200)는 이후에 더 설명되는 동작(204, 206, 208 및 210)을 수행한다. 이러한 동작을 수행한 결과, 프로세스(200)는 이들 객체와 관련되거나 수행된 활동 데이터에 기초하여 데이터세트에 객체의 총 분포(aggregate distribution)를 누적한다.
HLL 데이터 엔진(104)은 해싱 로직(hashing logic)(108)을 사용하여 객체에 대한 해시된 파라미터(hashed parameter)(128)를 생성한다(204). 일부 구현들에서, 해싱 로직(108)은 해시된 파라미터(해시, 해시 코드 또는 해시 값이라고도 함)를 생성하기 위해 객체에 대한 객체 식별자에 하나 이상의 해시 함수(기존의 해시 함수를 포함할 수 있음)를 적용한다. 해시된 파리미터는 길이가 해시 함수 자체 또는 해시 함수의 파라미터(매개변수)에 따라 달라지는 2진 표현을 갖는다. 객체에 대한 객체 식별자의 해시는 도 1과 같이 해시된 파라미터(128)로 표시된다.
HLL 데이터 엔진(104)은 객체에 관한 데이터를 저장하는 데 사용될 수 있는 레지스터들의 세트 중 레지스터를 식별한다(206). 일부 구현들에서, 데이터세트에 대한 데이터는 M 레지스터들(M개의 레지스터들)(125)의 세트에 저장될 수 있다. 객체의 해시된 파라미터(128)의 제1 부분(예를 들어, 첫 4 비트)을 사용하여, 레지스터 ID 로직(112)은 객체에 관한 데이터를 저장하는데 사용될 수 있는 M 레지스터들 중 하나를 식별한다. 예를 들어, 해시된 파라미터(128)(0001 0101 0100)에 대해, 레지스터 ID 로직(112)은 M 레지스터들 중 하나를 식별하기 위해 처음 4비트(0001)를 사용할 수 있다. 레지스터(125)의 수는 데이터세트 내의 데이터 아이템의 수보다 적다는 것이 이해될 것이다.
HLL 데이터 엔진(104)은 해시된 파라미터가 빈도량(frequency amount)에 기여하는지 여부를 결정한다(208). 일부 구현들에서, 해싱 로직(108)은 해시 파라미터(128)의 제2 부분을 식별하는데, 이는 적절한 레지스터를 식별하는 데 사용되는 첫 번째 비트 세트가 없는 해시된 파라미터의 비트를 포함한다(단계 206에서 상술한 바와 같이). 해시된 파라미터(128)(0001 0101 0100)의 경우, 비트(0101 0100)는 (이전 단락에서 설명된 바와 같이) 적절한 레지스터를 식별하기 위해 레지스터 ID 로직(112)에 의해 사용되는 처음 4 개의 비트를 포함하지 않는다.
리딩 제로 로직(110)은 제2 부분 또는 비트 세트에서 리딩 제로의 수 (최상위 넌-제로(non-zero) 비트의 비트 위치를 나타냄)를 결정한다. 일부 구현에서, 리딩 제로 로직(110)은 제2 비트 세트에서 첫(제1) "1"의 비트 위치가 식별될 때까지 제2 비트 세트에서 왼쪽에서 오른쪽으로 제로의 수를 카운트함으로써 리딩 제로의 수를 결정한다. 예를 들어, 해시된 파라미터(128)의 제2 비트 세트(0101 0100)에 대한 리딩 제로의 수는 1이며, 왼쪽에서 오른쪽으로 카운트할 때 첫 번째 "1"이 만나기 전에 하나의 0이 식별되기 때문이다.
HLL 데이터 엔진(104)은 이전 단락에서 식별된 바와 같이, 제2 비트 세트에서 최상위 비트에 대한 트레일링 비트의 수를 결정한다. 일부 구현에서, HLL 데이터 엔진(110)은 최상위 비트 이후의 제2 비트 세트의 모든 비트를 식별함으로써 트레일링 비트를 결정하는데, (이전 단락에서 설명한 바와 같이) 이는 왼쪽에서 오른쪽으로 카운트할 때 첫 "1"이 식별되는 위치이다. 예를 들어, 제2(두 번째) 비트 세트(0101 0100)의 트레일링 비트는 "010100"이며, 이는 제2(두 번째) 비트 세트의 리딩 제로를 카운팅할 때 식별된 첫(제1) "1"뒤에 오는 비트이기 때문이다.
도 1에 도시된 바와 같이, M 레지스터들의 세트(125)의 각각의 레지스터는 3 개의 필드를 갖는 데이터 구조(120)를 포함하며, 3개의 필드는 최상위 비트(MSB)(122)에 대한 필드, 트레일링 p 비트들(124)에 대한 필드, 및 집계 카운터(빈도 카운터)126)에 대한 필드를 포함한다. 일부 구현에서, 트레일링 p 비트를 저장하는 대신에, 필드(124)는 제2 비트 세트에서 최상위 비트에 대한 임의의 수의 트레일링 비트를 저장하거나, 또는 대안적으로 p 비트로 구성된 개별 해시 값과 같은 객체에 대한 SI(stable identifier)를 저장한다.
전체적으로, 각 레지스터에 저장된 총 정보량은 2바이트(또는 16비트)일 수있다. 대조적으로, 각 레지스터에 리딩 제로의 수만 저장하는 표준 HLL 알고리즘에는 일반적으로 6 비트의 데이터가 필요하다. 다시 말해 표준 HLL 알고리즘과 관련하여, 본 명세서에 설명된 HLL 레지스터는 레지스터 당 저장(스토리지) 요구량의 미미한(marginal) 증가만으로 데이터세트의 객체에 대한 추가 데이터를 저장할 수 있다(데이터세트에 객체(오브젝트)에 대한 전체 활동 데이터를 저장하는 것과 비교하여 2바이트 이상의 저장 공간이 필요함).
일부 구현들에서, 집계 카운터 필드(126)는 데이터세트에서 객체의 발생 횟수를 지정하는 빈도량(frequency amount)을 저장한다. 이하에서 더 설명한 바와 같이, 객체의 해시된 파라미터는 각각 (206 동작에서 식별된) 레지스터의 데이터 구조(120)의 최상위 비트 필드(122) 및 트레일링 p 비트 필드(124)에 저장된 값을 갖는 (HLL 데이터 엔진(104)에 의해 결정된 바와 같이) 해시된 파라미터의 트레일링 비트 및 리딩 제로의 수의 비교에 기초하여 집계량에 기여한다. 일부 구현들에서, 각각의 객체에 대한 빈도 카운트를 저장하는 대신에, 집계 카운터 필드(126)는 동일한 키를 갖는 객체에 관한 정보를 집계할 수 있다(예: 특정 이벤트가 기록된 가장 최근의 타임스탬프를 카운팅, 각 오류 로깅 레벨에서 오류 코드가 관찰된 횟수를 카운팅 등).
리딩 제로 로직(110)에 의해 결정된 리딩 제로의 수가 필드(122)에 저장된 값보다 작은 경우, 리딩 제로 로직(110)은 데이터 구조(120)를 업데이트(갱신)하지 않는다. 다시 말해, 필드(122, 124 및 126)의 기존 값이 유지된다. 이 동작으로 인해 집계 카운터 필드(126)가 업데이트되지 않기 때문에, 객체의 해시된 파라미터는 집계(예: 빈도)량에 영향을 미치지 않는다.
리딩 제로 로직(110)에 의해 결정된 리딩 제로의 수가 필드(122)에 저장된 값을 초과하면, 리딩 제로 로직(110)은 리딩 제로 로직(110)에 의해 결정된 최상위 비트의 값으로 필드(122)를 업데이트한다. 그러한 경우에, HLL 데이터 엔진(104)은 또한 (1) HLL 데이터 엔진(104)에 의해 계산된 트레일링 비트 값으로 필드(124)에 저장된 값을 업데이트하고, (2) 필드(126)에 저장된 값을 제로(0)로 리셋한다.
리딩 제로 로직(110)에 의해 결정된 리딩 제로의 수가 필드(122)에 저장된 값과 동일할 때, 리딩 제로 로직(110)은 필드(122)에 저장된 값을 업데이트하지 않는다. 그러한 경우에, HLL 데이터 엔진(104)은 또한 필드(124 및 126)에 저장된 값을 업데이트 할지를 결정하며, 후술하는 바와 같이, HLL 데이터 엔진(104)에 의해 결정된 트레일링 비트를 데이터 구조(120)의 트레일링 p 비트 필드(124)에 저장된 값과 비교함으로써 이루어진다.
HLL 데이터 엔진(104)에 의해 결정된 트레일링 비트의 값이 데이터 구조(120)의 트레일링 p 비트 필드(124)에 저장된 값보다 큰 경우, HLL 데이터 엔진(104)은 (1)HLL 데이터 엔진(104)에 의해 결정된 트레일링 비트의 값으로 필드(124)를 업데이트하고, (2)집계 카운터 필드(126)의 값을 제로(0)로 리셋한다.
HLL 데이터 엔진(104)에 의해 결정된 트레일링 비트의 값이 데이터 구조(120)의 트레일링 p 비트 필드(124)에 저장된 값보다 작은 경우, HLL 데이터 엔진(104)은 필드(122, 124 및 126)에 저장된 값을 유지(즉, 업데이트하지 않음)한다.
그러나, HLL 데이터 엔진(104)에 의해 결정된 트레일링 비트의 값이 데이터 구조(120)의 트레일링 p 비트 필드(124)에 저장된 값과 동일한 경우, HLL 데이터 엔진(104)은 현재 객체가 데이터 구조(120)에 데이터가 이미 저장된 객체와 동일하다고 결정한다. 그러한 경우, HLL 데이터 엔진(104)은 (1) 트레일링 p 비트 필드(124)에 이미 저장된 값을 업데이트하지 않고, (2)필드의 현재 값 및 객체를 포함하는 교환적 감소 함수에 기초하여 집계 카운터 필드(126)에 저장된 값을 업데이트한다(210). 집계 카운터 필드(126)가 빈도 카운터인 구현에서, HLL 데이터 엔진은 이 필드(126)에 저장된 값을 1씩 증가시킴으로써 이 필드의 값을 업데이트한다(예를 들어, 집계 카운터 필드(106)에 저장된 값이 2인 경우, HLL 데이터 엔진(104)은 그 값을 1 씩 증가시켜서 3의 값을 초래한다). 빈도 이외의 집계 분포가 결정될 때, HLL 데이터 엔진(104)은 필드(126)의 값을 적절한 스케일(예를 들어, 곱하기, 나누기, 하나 이상 증가 등)로 교환적(commutative) 감소 함수를 사용한다는 것이 이해될 것이다.
전술한 동작은 집계 카운터 필드(126)를 업데이트하기 때문에, 객체의 해시된 파라미터는 집계량에 기여한다.
전술한 바와 같이, 일부 구현들에서, HLL 데이터 엔진(104)은 동작(204)에서 객체에 대해 생성된 단일 해시 표현에 기초하여 동작(206, 208 및 210)을 수행한다. 다른 구현에서, HLL 데이터 엔진(104)은 별도의 해시 표현을 사용하여 동작(206, 208 및 210)을 수행할 수 있다. 다시 말해, 해싱 로직(108)은 객체 식별자를 사용하여 개별 해시 표현을 생성할 수 있으며, 개별 해시 표현은 M 레지스터들의 세트(125)에서 적절한 레지스터를 식별하는데 사용될 수 있는 제1 해시 표현, 리딩 제로(leading zeros)의 수가 결정되는 제2 해시 표현 및 트레일링 비트가 결정되는 제3 해시 표현을 포함한다. 전술한 동작(206 내지 210)은 이러한 개별 해시 표현들을 사용하여 수행될 수 있다.
데이터 수집 엔진(140)은 상이한 빈도(frequencies)에서 디지털 환경에서 활동을 수행한 데이터세트 내의 객체의 수의 집계 분포를 요청하는 쿼리(150)를 수신한다(212). 예를 들어, 쿼리(150)는 상이한 빈도(1회, 2회, 3회 등)에서 특정 디지털 컨텐츠와 상호 작용하는 데이터세트 내의 사용자 수의 빈도 분포를 요청할 수 있다. 일부 구현들에서, 데이터 수집 엔진(140)은 쿼리(150)를 컴퓨팅 서버(102)로 전송하고, 이는 쿼리(150)를 로직 엔진(116)의 리포팅 로직(114)으로 라우팅한다.
쿼리(150)에 응답하여, 리포팅 로직(114)은 디지털 환경에서 이들 객체에 의해 수행된 활동 또는 관련된 활동에 기초하여 데이터세트 내의 객체의 총계(총) 분포(aggregate distribution)를 나타내는 리포팅 출력을 생성한다(212). 리포팅 로직(114)은 레지스터(125)에 저장된 집계(총계) 값에 기초하여 총계 분포를 추정한다. 리포팅 로직(114)은 다음 동작을 수행함으로써 이 리포팅 출력을 생성한다. 일부 구현들에서, 리포팅 로직(114)은 레지스터들의 세트(125)에서 집계 카운터 필드(126)에 저장된 고유한 총계(집계) 값들을 포함하는 값들의 세트를 식별함으로써 상이한 가능한 집계 값들을 결정한다. 일부 구현들에서, 쿼리(150)는 집계(총계) 값들을 식별할 수 있고, 이 경우 리포팅 로직(114)은 레지스터들의 필드(126)에 저장된 상이한 가능한 집계 값을 식별하는 동작을 생략할 수 있다. 일부 구현들에서,리포팅 로직(114)은 시스템의 관리자에 의해 지정된(그리고 데이터 저장 장치(130)에 저장된) 집계 값들의 세트에 액세스할 수 있으며, 이 경우 리포팅 로직(114)은 레지스터들에 저장된 상이한 가능한 집계 값들을 식별하는 동작을 생략(스킵)할 수 있다.
일부 구현에서, 식별된 각 집계 값에 대해, 리포팅 로직(114)은 식별된 집계 값과 동일한 값을 집계 카운터 필드(126)에 저장한 다수의 레지스터를 결정한다. 이러한 구현에서, 리포팅 로직(114)은 집계 카운터 필드(126)의 값이 식별된 집계 값과 동일한 모든 레지스터를 카운트한다. 다른 구현에서, 리포팅 로직(114)은 집계 카운터 필드(126)의 값이 식별된 집계 값과 동일하거나 큰 모든 레지스터를 카운트한다.
일부 경우에, 레지스터(125)의 데이터 구조(120)에 값을 저장 및 업데이트할 때 해시 충돌이 발생할 수 있다. 예를 들어, 해싱 로직(108)에 의해 해시될 때, 데이터세트에서 2개의 상이한 객체에 대한 2개의 객체 식별자는 동일한 레지스터를 업데이트할 수 있고, 동일한 수의 리딩 제로 및 동일한 트레일링 비트를 가질 수 있다. 빈도 카운터의 경우, 이 시나리오에서 이 필드의 값은 1씩만 증가해야하며; 그러나, 해시 충돌로 인해, 이 필드(126)의 값은 대신 2씩 잘못 증가된다. 다시 말해서, 예를 들어, 두 객체가 동일한 컨텐츠와 한 번만 상호작용했을 수 있지만, 집계 카운터 필드(126)는 단일 객체가 동일한 컨텐츠와 두 번 상호작용했음을 잘못 반영할 수 있다. 다른 집계(즉, 빈도 이외의)가 측정되는 일부 구현에서, 리포팅 로직(114)은 필드(126)의 값을 부울에 매핑하는 기능을 제공하고(예: 카운트에 포함하거나 포함하지 않음), (예: 한 리포팅 레벨에서 다른 리포팅 레벨보다 더 많은 오류가 있거나 두 범위(bounds) 사이의 값이 있는 경우) 쿼리에서 특정될 수 있는 일부 기준을 만족하는 모든 레지스터를 카운팅한다.
해시 충돌로 인해 발생하는 이러한 오류를 설명하기 위해, 리포팅 로직(114)은 집계 카운터 필드(126)의 값이 식별된 집계값과 동일하거나 큰 레지스터의 카운트를 획득한 후 이 카운트를 보정 계수에 의해 조정(예: 감소)한다. 보정 계수(해시 충돌 보정 계수라고도 함)(F)는 F(C, M, n)로 표시될 수 있으며, M 레지스터들의 세트(125)에 저장된 특정 활동을 수행했거나 특정 활동과 관련된 데이터세트의 다수의 개별 객체(C)에 대해 상기 식별된 집계값(n)에서 예상되는 해시 충돌 수를 추정한다. 특정 활동(즉, 데이터세트의 카디널리티(cardinality)(C))을 수행했거나 연관된 개별 요소의 수는 표준 HLL 알고리즘을 사용하여 결정된다. 일부 구현들에서, 보정 계수는 경험적으로 결정된 C, M 및 f에 의해 인덱스된 감소 값들의 룩업 테이블에 기초한다.
특정 집계 값에서 총 객체 수를 얻으려면, 리포팅 로직(114)은 특정 집계 값에서 조정된 레지스터 수(이전 단락에서 결정된)를 레지스터 당 평균 객체 수로 스케일링(예를 들어, 곱)한다. 레지스터 당 평균 객체 수는 데이터세트 C의 카디널리티를 레지스터 수(125)인 M으로 나눔으로써 결정(표준 HLL 알고리즘을 사용하여 결정)된다. 리포팅 로직(114)은 각각의 식별된 빈도에 대해 상기 동작을 반복한다. 따라서 특정 집계 값의 총 객체 수는 다음 수학식 1을 사용하여 나타낼 수 있다.
여기서, (1) Rn은 특정 집계 값 n의 객체 수이며, (2) Bn은 집계 카운터 필드가 n으로 설정된 버킷 수이며, (3) C는 데이터세트의 카디널리티이며, (4) M은 총 레지스터(125)의 수이며, (5) F(C, M, n)은 보정 계수이다.
일부 구현들에서, 리포팅 로직(114)은 식별된 빈도들 및 결정된 객체들의 해당 개수를 컴퓨팅 서버(102)의 프론트 엔드 엔진으로 전송하고, 이러한 값들을 사용하여 리포트(예를 들면, 쿼리(150)가 수신된 엔티티에 제공되는 리포트 출력(180))를 생성한다. 프론트 엔드 엔진은 리포팅 로직(114)에 의해 제공된 값을 사용하여 데이터 아이템들의 세트를 포함하는 통계를 생성할 수 있으며, 여기서 각 데이터 아이템은 특정 빈도로 디지털 환경에서 활동과 관련되거나 수행되는 데이터세트의 추정된 객체 수를 식별한다. 이러한 통계는 리포팅 출력(180)에서 텍스트 및/또는 시각적 형태(예: 히스토그램, 원형 차트 등)일 수 있고, 객체의 활동 데이터에 기초하여 상이한 빈도로 객체의 수의 분포를 보여준다.
도 3은 클라이언트 또는 서버 또는 복수의 서버로서 본 명세서에 기술된 시스템 및 방법을 구현하는데 사용될 수 있는 컴퓨팅 장치(300, 350)의 블록도이다. 컴퓨팅 장치(300)는 랩탑, 데스크탑, 워크 스테이션, 개인용 디지털 어시스턴트, 서버, 블레이드 서버, 메인 프레임 및 기타 적절한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터를 나타내도록 의도된다. 컴퓨팅 장치(350)는 개인용 디지털 어시스턴트, 셀룰러 전화기, 스마트 폰, 스마트 워치, 헤드-장착용 장치 및 다른 유사한 컴퓨팅 장치와 같은 다양한 형태의 모바일 장치를 나타내도록 의도된다. 여기에 도시된 컴포넌트, 그들의 연결 및 관계, 및 그 기능은 단지 예시적인 것으로 의도되며, 본 명세서에 기술되고 및/또는 청구된 구현을 제한하려는 것이 아니다.
컴퓨팅 장치(300)는 프로세서(302), 메모리(304), 저장 장치(306), 메모리(304)에 연결되는 고속 인터페이스(308), 및 고속 확장 포트(310) 및 저속 버스(314) 및 저장 장치(306)에 연결되는 저속 인터페이스(312)를 포함한다. 컴포넌트들(302, 304, 306, 308, 310, 및 312) 각각은 다양한 버스를 사용하여 상호 연결되며, 공통 마더보드 상에 또는 다른 방식으로 적절히 장착될 수 있다. 프로세서(302)는 메모리(304) 또는 저장 장치(306)에 저장된 명령어를 포함하여, 컴퓨팅 장치(300) 내에서의 실행을 위한 명령어를 처리하여 고속 인터페이스(308)에 연결된 디스플레이(316)와 같은 외부 입/출력 장치에 GUI에 대한 그래픽 정보를 표시 할 수 있다. 다른 구현들에서, 다수의 프로세서들 및/또는 다수의 버스들이 적절하게 다수의 메모리 및 메모리 유형과 함께 사용될 수 있다. 또한, 다수의 컴퓨팅 장치(300)가 연결될 수 있으며, 각각의 장치는 (예를 들어, 서버 뱅크, 블레이드 서버 그룹, 또는 다중 프로세서 시스템으로서) 필요한 동작의 일부를 제공한다.
메모리(304)는 컴퓨팅 장치(300) 내에 정보를 저장한다. 일 구현에서, 메모리(304)는 컴퓨터 판독 가능 매체이다. 일 구현에서, 메모리(304)는 휘발성 메모리 유닛(들)이다. 다른 구현에서, 메모리(304)는 비-휘발성 메모리 유닛(들)이다.
저장 장치(306)는 컴퓨팅 장치(300)에 대용량 저장 장치를 제공할 수 있다. 일 구현에서, 저장 장치(306)는 컴퓨터 판독 가능 매체이다. 다양한 상이한 구현들에서, 저장 장치(디바이스)(306)는 하드 디스크 디바이스, 광 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 스토리지 영역 네트워크 또는 다른 구성의 디바이스들을 포함하는 디바이스들의 어레이일 수 있다. 일 구현에서, 컴퓨터 프로그램 제품은 정보 매체에 유형적으로 구현된다. 컴퓨터 프로그램 제품은 실행될 때 전술한 바와 같은 하나 이상의 방법을 수행하는 명령어를 포함한다. 정보 캐리어는 메모리(304), 저장 장치(306), 또는 프로세서상의 메모리(302)와 같은 컴퓨터 또는 기계 판독 가능 매체이다.
고속 제어기(308)는 컴퓨팅 장치(300)에 대한 대역폭 집약적 동작을 관리하는 반면, 저속 제어기(312)는 보다 낮은 대역폭 집약적 동작을 관리한다. 이러한 임무 할당은 예시일뿐이다. 일 구현에서, 고속 제어기(308)는 (예를 들어, 그래픽 프로세서 또는 가속기를 통해) 메모리(304), 디스플레이(316) 및 다양한 확장 카드(도시되지 않음)를 수용할 수 있는 고속 확장 포트(310)에 연결된다. 구현에서, 저속 제어기(312)는 저장 장치(306) 및 저속 확장 포트(314)에 연결된다. 다양한 통신 포트(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)를 포함할 수 있는 저속 확장 포트는 키보드, 포인팅 장치, 스캐너와 같은 하나 이상의 입력/출력 장치 또는 스위치 또는 라우터와 같은 네트워킹 장치(예를 들어 네트워크 어댑터를 통해)에 연결될 수 있다.
컴퓨팅 장치(300)는 도면에 도시된 바와 같이 다수의 상이한 형태로 구현될 수 있다. 예를 들어, 표준 서버(320)로 구현되거나 이러한 서버 그룹에서 여러 번 구현될 수 있다. 또한 랙 서버 시스템(324)의 일부로서 구현될 수 있다. 또한, 랩톱 컴퓨터(322)와 같은 개인용 컴퓨터에서 구현될 수 있다. 대안적으로, 컴퓨팅 장치(300)로부터의 컴포넌트는 장치(350)와 같은 모바일 장치(도시되지 않음)의 다른 컴포넌트와 결합될 수 있다. 이러한 장치 각각은 하나 이상의 컴퓨팅 장치(300, 350)를 포함할 수 있고, 전체 시스템은 서로 통신하는 다수의 컴퓨팅 장치(300, 350)로 구성될 수 있다.
컴퓨팅 장치(350)는 프로세서(352), 메모리(364), 디스플레이(354)와 같은 입력/출력 장치, 통신 인터페이스(366) 및 트랜시버(송수신기)(368)를 포함한다. 장치(350)는 또한 추가적인 저장을 제공하기 위해 마이크로드라이브 또는 다른 장치와 같은 저장 장치를 제공받을 수 있다. 컴포넌트들(350, 352, 364, 354, 366, 368) 각각은 다양한 버스를 사용하여 상호연결되며, 컴포넌트들 중 일부는 공통 마더 보드 상에 또는 다른 방식으로 적절히 장착될 수 있다.
프로세서(352)는 메모리(362)에 저장된 명령어를 포함하는, 컴퓨팅 장치(350) 내에서의 실행을 위한 명령어를 처리할 수 있다. 프로세서는 또한 별도의 아날로그 및 디지털 프로세서를 포함할 수 있다. 프로세서는 예를 들어, 사용자 인터페이스의 제어, 장치(350)에 의해 실행되는 애플리케이션, 및 장치(350)에 의한 무선 통신과 같은 장치(350)의 다른 컴포넌트의 조정을 제공할 수 있다.
프로세서(352)는 제어 인터페이스(358) 및 디스플레이(354)에 연결된 디스플레이 인터페이스(356)를 통해 사용자와 통신할 수 있다. 디스플레이(354)는 예를 들어 TFT LCD 디스플레이 또는 OLED 디스플레이, 또는 다른 적절한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(356)는 그래픽 및 기타 정보를 사용자에게 제시하기 위해 디스플레이(354)를 구동하기 위한 적절한 회로를 포함할 수 있다. 제어 인터페이스(358)는 사용자로부터 명령을 수신하여 이를 프로세서(352)에 제출하기 위해 변환할 수 있다. 또한, 다른 인터페이스와 장치(350)의 근거리 통신을 가능하게 하기 위해, 프로세서(352)와 통신하는 외부 인터페이스(362)가 제공될 수 있다. 외부 인터페이스(362)는 예를 들어 유선 통신(예를 들어, 도킹 절차를 통해) 또는 무선 통신(예를 들어, 블루투스 또는 다른 그러한 기술을 통한)을 제공할 수 있다.
메모리(364)는 컴퓨팅 장치(350) 내에 정보를 저장한다. 일 구현에서, 메모리(364)는 컴퓨터 판독 가능 매체이다. 일 구현에서, 메모리(364)는 휘발성 메모리 유닛(들)이다. 다른 구현에서, 메모리(364)는 비-휘발성 메모리 유닛(들)이다. 확장 메모리(374)는 또한 예를 들어 SIMM 카드 인터페이스를 포함할 수 있는 확장 인터페이스(372)를 통해 장치(350)에 제공 및 연결될 수 있다. 이러한 확장 메모리(374)는 장치(350)를 위한 추가 저장 공간을 제공할 수 있거나, 장치(350)를 위한 애플리케이션 또는 다른 정보를 저장할 수도 있다. 구체적으로, 확장 메모리(374)는 전술한 프로세스를 수행 또는 보충하기 위한 명령어를 포함할 수 있고, 또한 보안 정보를 포함할 수 있다. 따라서, 예를 들어, 확장 메모리(374)는 장치(350)를 위한 보안 모듈로서 제공될 수 있고, 장치(350)의 안전한 사용을 허용하는 명령어로 프로그램될 수 있다. 또한, SIMM 카드를 통한 식별 정보를 해킹 불가능한 방식으로 배치하는 것과 같은 추가 정보와 함께 SIMM 카드를 통해 보안 애플리케이션이 제공될 수 있다.
메모리는 예를 들어, 후술하는 바와 같이 플래시 메모리 및/또는 MRAM 메모리를 포함할 수 있다. 일 구현에서, 컴퓨터 프로그램 제품은 정보 매체에 유형적으로 구현된다. 컴퓨터 프로그램 제품은 실행될 때 전술한 바와 같은 하나 이상의 방법을 수행하는 명령어를 포함한다. 정보 캐리어는 메모리(364), 확장 메모리(374) 또는 프로세서(352)의 메모리와 같은 컴퓨터 또는 기계 판독 가능 매체이다.
장치(350)는 필요한 경우 디지털 신호 처리 회로를 포함할 수 있는 통신 인터페이스(366)를 통해 무선으로 통신할 수 있다. 통신 인터페이스(366)는 GSM 음성 호출, SMS, EMS 또는 MMS 메시징, CDMA, TDMA, PDC, WCDMA, CDMA2000 또는 GPRS와 같은 다양한 모드 또는 프로토콜 하에서 통신을 제공할 수 있다. 이러한 통신은 예를 들어 무선 주파수 송수신기(368)를 통해 발생할 수 있다. 또한, 블루투스, WiFi 또는 다른 그러한 송수신기(도시되지 않음)를 사용하는 것과 같은 단거리 통신이 발생할 수 있다. 또한, GPS 수신기 모듈(370)은 장치(350)에서 실행되는 애플리케이션에 의해 적절하게 사용될 수 있는 추가 무선 데이터를 장치(350)에 제공할 수 있다.
장치(350)는 또한 오디오 코덱(360)을 사용하여 청각적으로 통신할 수 있으며, 이는 사용자로부터 음성 정보를 수신하고 이를 사용 가능한 디지털 정보로 변환할 수 있다. 오디오 코덱(360)은 마찬가지로 예를 들어 장치(350)의 핸드셋에서 스피커를 통해 사용자를 위한 가청 사운드를 생성할 수 있다. 이러한 사운드는 음성 전화 통화로부터의 사운드를 포함할 수 있고, 녹음된 사운드(예를 들어, 음성 메시지, 음악 파일 등) 및 또한 장치(350)에서 동작하는 애플리케이션에 의해 생성 된 사운드를 포함할 수 있다.
컴퓨팅 장치(350)는 도면에 도시된 바와 같이 다수의 상이한 형태로 구현될 수 있다. 예를 들어, 휴대폰(380)으로 구현될 수 있다. 스마트 폰(382), 개인용 디지털 어시스턴트 또는 다른 유사한 모바일 장치의 일부로서 구현될 수도 있다.
여기에 기술된 시스템 및 기술의 다양한 구현은 디지털 전자 회로, 집적 회로, 특별히 설계된 ASIC, 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합으로 실현될 수 있다. 이러한 다양한 구현은 저장 시스템, 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치로부터 데이터 및 명령어를 수신하고 그리고 저장 시스템, 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치에 데이터 및 명령어를 전송하기 위해 결합된 특수 또는 범용일 수 있는 적어도 하나의 프로그램 가능 프로세서를 포함하는 프로그램 가능 시스템에서 실행 및/또는 해석 가능한 하나 이상의 컴퓨터 프로그램에서의 구현을 포함할 수 있다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드라고도 하는 컴퓨터 프로그램은 프로그램 가능 프로세서를 위한 기계 명령어를 포함하며, 하이-레벨 절차 및/또는 객체 지향 프로그래밍 언어 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본 명세서에서 사용되는 용어 "기계 판독 가능 매체", "컴퓨터 판독 가능 매체"는 기계 명령어를 기계 판독 가능 신호로서 수신하는 기계 판독 가능 매체를 포함하는, 예를 들어, 자기 디스크, 광 디스크, 메모리, 프로그램 가능한 프로세서에 기계 명령어 및/또는 데이터를 제공하는 데 사용되는 PLC(Programmable Logic Devices)과 같은 컴퓨터 프로그램 제품, 디바이스 및/또는 장치를 지칭한다. "기계 판독 가능 신호"라는 용어는 기계 명령어 및/또는 데이터를 프로그램 가능 프로세서에 제공하는데 사용되는 임의의 신호를 지칭한다.
사용자와의 상호 작용을 제공하기 위해, 여기에 기술된 시스템 및 기술은 사용자에게 정보를 표시하기 위한 디스플레이 장치(예를 들어, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터), 사용자가 입력을 컴퓨터에 제공할 수 있는 마우스 또는 트랙볼과 같은 키보드 및 포인팅 장치를 갖는 컴퓨터 상에 구현될 수 있다. 사용자와의 상호 작용을 제공하기 위해 다른 종류의 장치가 사용될 수도 있으며, 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예를 들어 시각적 피드백, 청각 피드백 또는 촉각 피드백일 수 있으며; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
여기에 설명된 시스템 및 기술은 예를 들어 데이터 서버와 같은 백엔드 컴포넌트를 포함하거나 애플리케이션 서버와 같은 미들웨어 컴포넌트를 포함하거나 그래픽 사용자 인터페이스를 갖는 클라이언트 컴퓨터 또는 사용자가 여기에 설명된 시스템 및 기술의 구현과 상호 작용할 수 있는 웹 브라우저와 같은 프론트 엔드 컴포넌트를 포함하거나, 또는 이러한 백엔드, 미들웨어 또는 프론트 엔드 컴포넌트의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트는 통신 네트워크와 같은 디지털 데이터 통신의 매체 또는 임의의 형태에 의해 상호 연결될 수 있다. 통신 네트워크의 예는 근거리 통신망( "LAN"), 광역 통신망( "WAN") 및 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 각 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램으로 인해 발생한다.
본 명세서에서 사용되는 용어 "모듈", "엔진" 및 "컴포넌트"는 컴퓨터의 프로세싱 유닛(들)/장치(들)가 하나 의 기능을 실행하게 하는 프로그램 코드를 포함하는 하나 이상의 소프트웨어 프로그램을 실행하도록 구성된 하나 이상의 컴퓨터를 포함하지만 이에 제한되지는 않는다. "컴퓨터"라는 용어는 데스크탑 컴퓨터, 랩톱 컴퓨터, 메인프레임 컴퓨터, 개인 휴대 정보 단말기, 서버, 핸드 헬드 장치, 스마트 폰, 태블릿 컴퓨터, 전자 판독기 또는 데이터를 처리할 수 있는 다른 전자 장치와 같은 데이터 처리 또는 컴퓨팅 장치/시스템을 포함하는 것으로 의도된다.
많은 실시 예들이 설명되었다. 그렇지만, 본 발명의 사상 및 범위를 벗어나지 않고 다양한 변형이 이루어질 수 있음을 이해할 것이다. 따라서, 다른 실시 예는 다음의 청구 범위의 범위 내에 있다. 본 명세서는 많은 특정 구현 세부 사항을 포함하지만, 이들은 청구될 수 있는 범위의 제한으로서 해석되는 것이 아니라 특정 실시 예에 특정될 수 있는 특징의 설명으로 해석되어야 한다. 별도의 실시 예들과 관련하여 본 명세서에서 설명된 특정 특징들은 또한 단일 실시 예에서 조합하여 구현될 수 있다.
반대로, 단일 실시 예와 관련하여 설명된 다양한 특징들은 또한 다수의 실시 예에서 개별적으로 또는 임의의 적절한 하위조합으로 구현될 수 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 설명되고 심지어 초기에 그렇게 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징은 일부 경우에 조합으로부터 제외될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 특정 순서로 도면에 도시되어 있지만, 이는 바람직한 결과를 달성하기 위해 이러한 동작들이 도시된 특정 순서로 또는 순차적인 순서로 수행되거나 또는 모든 예시된 동작들이 수행되는 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서, 멀티 태스킹 및 병렬 처리가 유리할 수 있다. 또한, 전술한 실시 예에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시 예에서 이러한 분리를 요구하는 것으로 이해되어서는 안되며, 설명된 프로그램 컴포넌트 및 시스템은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품으로 패키지될 수 있음을 이해해야한다.
본 출원의 특정 실시 예들이 설명되었다. 다른 실시 예는 다음의 청구 범위의 범위 내에 있다. 예를 들어, 청구 범위에 기재된 동작은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 달성할 수 있다. 일례로서, 첨부 도면에 도시된 일부 프로세스는 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적 순서를 반드시 요구하지는 않는다.
Claims (24)
- 컴퓨터로 구현되는 방법으로서,
데이터세트에서 복수의 객체들에 대한 활동 데이터를 획득하는 단계 -상기 데이터세트 내의 각각의 객체는 디지털 환경에서 활동들을 수행하고 그리고 상기 활동 데이터는 상기 활동들을 나타냄-;
데이터세트의 각 데이터 아이템에 대해:
데이터 아이템에 특정된 객체에 대한 식별자를 사용하여, 객체에 대한 해시된 파라미터를 생성하는 단계 -상기 해시된 파라미터는 이진 표현을 가짐-;
해시된 파라미터의 이진 표현에 기초하여 레지스터들의 세트 중에서 레지스터를 식별하는 단계 -상기 레지스터들의 세트 내의 각각의 레지스터는 상기 데이터세트 내의 객체들에 관한 데이터를 저장하는데 사용됨-;
해시된 파라미터의 이진 표현에 기초하여, 객체에 대한 해시된 파라미터가 데이터세트에서 객체의 발생 횟수를 특정하는 집계량(aggregation amount)에 기여하는지를 결정하는 단계; 그리고
객체에 대한 해시된 파라미터가 집계량에 기여한다고 결정한 것에 응답하여, 레지스터에 저장된 집계량을 업데이트하는 단계; 그리고
레지스터들의 세트에 저장된 총량(aggregate amounts)에 기초하여, 데이터 아이템들의 세트를 나타내는 리포팅 출력을 생성하는 단계 -각각의 데이터 아이템은 디지털 환경에서 특정 집계량으로 활동들을 수행한 데이터세트의 객체들의 추정된 수를 식별함-를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제1항에 있어서, 각 객체는 사용자를 나타내며, 그리고
집계량은 빈도 값을 나타내는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제1항에 있어서, 상기 해시된 파라미터의 이진 표현에 기초하여 레지스터들의 세트 중에서 레지스터를 식별하는 단계는,
해시된 파라미터의 이진 표현의 제1 부분을 식별하는 단계; 그리고
해시된 파라미터의 이진 표현의 제1 부분을 사용하여 레지스터를 식별하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제1항에 있어서,
상기 레지스터들의 세트의 각 레지스터는 수신된 해시된 파라미터에 관한 데이터를 저장하는 데이터 구조를 포함하고, 상기 데이터 구조는,
상기 수신된 해시된 파라미터의 제2 부분에서 리딩 제로의 수를 특정하는 데이터를 저장하는 제1 필드;
수신된 해시된 파라미터의 제2 부분에서 트레일링 비트를 특정하는 데이터를 저장하기 위한 제2 필드; 그리고
(i) 제1 필드의 기존(existing) 데이터 값이 리딩 제로의 수와 매칭하고 그리고 (ii) 제2 필드의 기존 데이터 값이 트레일링 비트와 매칭할 때의 발생 횟수를 나타내는 집계량을 특정하는 데이터를 저장하기 위한 제3 필드를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제4항에 있어서,
해시된 파라미터의 이진 표현에 기초하여, 객체에 대한 해시된 파라미터가 집계량에 기여하는지를 결정하는 단계는,
해시된 파라미터의 이진 표현의 제2 부분으로부터 리딩 제로의 수를 결정하는 단계;
해시된 파라미터의 이진 표현의 제2 부분으로부터 트레일링 비트를 결정하는 단계; 그리고
리딩 제로의 수 및 트레일링 비트에 기초하여, 해시된 파라미터가 레지스터의 데이터 구조의 제3 필드에 저장된 기존 데이터 값에 영향을 주는지를 결정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제5항에 있어서, 리딩 제로의 수 및 트레일링 비트의 최대 수에 기초하여, 해시된 파라미터가 레지스터의 데이터 구조의 제3 필드에 저장된 기존 데이터 값에 영향을 주는지를 결정하는 단계는,
레지스터의 데이터 구조의 제1 필드에 저장된 기존 데이터 값이 리딩 제로의 수와 동일한지를 결정하는 단계; 그리고
레지스터의 데이터 구조의 제2 필드에 저장된 기존 데이터 값이 트레일링 비트의 최대 수와 동일한지를 결정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제5항에 있어서, 상기 레지스터에 저장된 상기 집계량을 업데이트하는 단계는 레지스터의 데이터 구조의 제3 필드에 저장된 기존 데이터 값을 1씩 증가시키는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
- 제4항에 있어서, 상기 레지스터들의 세트에 저장된 총량에 기초하여, 데이터 아이템들의 세트를 나타내는 리포팅 출력을 생성하는 단계 -각각의 데이터 아이템은 디지털 환경에서 특정 집계량으로 활동들을 수행한 데이터세트의 객체들의 추정된 수를 식별함-는,
상기 레지스터들의 세트에 저장된 집계량에 기초하여 고유한(unique) 총량의 세트를 식별하는 단계;
총량의 세트의 각 특정 집계량에 대해, 특정 집계량으로 활동들을 수행한 데이터세트의 객체들의 추정된 수를 결정하는 단계를 포함하며, 객체들의 추정된 수를 결정하는 단계는,
상기 특정 집계량과 매칭하는 집계량을 저장하는 레지스터들의 수를 결정하는 단계;
해시 충돌 보정 팩터에 기초하여 특정 집계량과 매칭하는 집계량을 저장하는 레지스터들의 수를 조정하는 단계;
상기 레지스터들의 세트의 각 레지스터에 저장된 객체의 평균 수를 결정하는 단계; 그리고
상기 레지스터들의 조정된 수를 객체들의 평균 수로 스케일링하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 시스템으로서,
명령어를 저장하는 하나 이상의 메모리 장치; 그리고
하나 이상의 메모리 장치와 상호 작용하도록 구성되고 명령어를 실행할 때 동작들을 수행하는 하나 이상의 데이터 처리 장치를 포함하며, 상기 동작들은,
데이터세트에서 복수의 객체들에 대한 활동 데이터를 획득하는 동작 -상기 데이터세트 내의 각각의 객체는 디지털 환경에서 활동들을 수행하고 그리고 상기 활동 데이터는 상기 활동들을 나타냄-;
데이터세트의 각 데이터 아이템에 대해:
데이터 아이템에 특정된 객체에 대한 식별자를 사용하여, 객체에 대한 해시된 파라미터를 생성하는 동작 -상기 해시된 파라미터는 이진 표현을 가짐-;
해시된 파라미터의 이진 표현에 기초하여 레지스터들의 세트 중에서 레지스터를 식별하는 동작 -상기 레지스터들의 세트 내의 각각의 레지스터는 상기 데이터세트 내의 객체들에 관한 데이터를 저장하는데 사용됨-;
해시된 파라미터의 이진 표현에 기초하여, 객체에 대한 해시된 파라미터가 데이터세트에서 객체의 발생 횟수를 특정하는 집계량(aggregation amount)에 기여하는지를 결정하는 동작; 그리고
객체에 대한 해시된 파라미터가 집계량에 기여한다고 결정한 것에 응답하여, 레지스터에 저장된 집계량을 업데이트하는 동작; 그리고
레지스터들의 세트에 저장된 총량(aggregate amounts)에 기초하여, 데이터 아이템들의 세트를 나타내는 리포팅 출력을 생성하는 동작 -각각의 데이터 아이템은 디지털 환경에서 특정 집계량으로 활동들을 수행한 데이터세트의 객체들의 추정된 수를 식별함-을 포함하는 것을 특징으로 하는 시스템. - 제9항에 있어서, 각 객체는 사용자를 나타내며, 그리고 집계량은 빈도 값을 나타내는 것을 특징으로 하는 시스템.
- 제9항에 있어서, 상기 해시된 파라미터의 이진 표현에 기초하여 레지스터들의 세트 중에서 레지스터를 식별하는 동작은,
해시된 파라미터의 이진 표현의 제1 부분을 식별하는 동작; 그리고
해시된 파라미터의 이진 표현의 제1 부분을 사용하여 레지스터를 식별하는 e동작을 포함하는 것을 특징으로 하는 시스템. - 제9항에 있어서,
상기 레지스터들의 세트의 각 레지스터는 수신된 해시된 파라미터에 관한 데이터를 저장하는 데이터 구조를 포함하고, 상기 데이터 구조는,
상기 수신된 해시된 파라미터의 제2 부분에서 리딩 제로의 수를 특정하는 데이터를 저장하는 제1 필드;
수신된 해시된 파라미터의 제2 부분에서 트레일링 비트를 특정하는 데이터를 저장하기 위한 제2 필드; 그리고
(i) 제1 필드의 기존(existing) 데이터 값이 리딩 제로의 수와 매칭하고 그리고 (ii) 제2 필드의 기존 데이터 값이 트레일링 비트와 매칭할 때의 발생 횟수를 나타내는 집계량을 특정하는 데이터를 저장하기 위한 제3 필드를 포함하는 것을 특징으로 하는 시스템. - 제12항에 있어서,
해시된 파라미터의 이진 표현에 기초하여, 객체에 대한 해시된 파라미터가 집계량에 기여하는지를 결정하는 동작은,
해시된 파라미터의 이진 표현의 제2 부분으로부터 리딩 제로의 수를 결정하는 동작;
해시된 파라미터의 이진 표현의 제2 부분으로부터 트레일링 비트를 결정하는 동작; 그리고
리딩 제로의 수 및 트레일링 비트에 기초하여, 해시된 파라미터가 레지스터의 데이터 구조의 제3 필드에 저장된 기존 데이터 값에 영향을 주는지를 결정하는 동작을 포함하는 것을 특징으로 하는 시스템. - 제13항에 있어서, 리딩 제로의 수 및 트레일링 비트의 최대 수에 기초하여, 해시된 파라미터가 레지스터의 데이터 구조의 제3 필드에 저장된 기존 데이터 값에 영향을 주는지를 결정하는 동작은,
레지스터의 데이터 구조의 제1 필드에 저장된 기존 데이터 값이 리딩 제로의 수와 동일한지를 결정하는 동작; 그리고
레지스터의 데이터 구조의 제2 필드에 저장된 기존 데이터 값이 트레일링 비트의 최대 수와 동일한지를 결정하는 동작을 포함하는 것을 특징으로 하는 시스템. - 제13항에 있어서, 상기 레지스터에 저장된 상기 집계량을 업데이트하는 동작은 레지스터의 데이터 구조의 제3 필드에 저장된 기존 데이터 값을 1씩 증가시키는 동작을 포함하는 것을 특징으로 하는 시스템.
- 제12항에 있어서, 상기 레지스터들의 세트에 저장된 총량에 기초하여, 데이터 아이템들의 세트를 나타내는 리포팅 출력을 생성하는 동작 -각각의 데이터 아이템은 디지털 환경에서 특정 집계량으로 활동들을 수행한 데이터세트의 객체들의 추정된 수를 식별함-은,
상기 레지스터들의 세트에 저장된 집계량에 기초하여 고유한(unique) 총량의 세트를 식별하는 동작;
총량의 세트의 각 특정 집계량에 대해, 특정 집계량으로 활동들을 수행한 데이터세트의 객체들의 추정된 수를 결정하는 동작을 포함하며, 객체들의 추정된 수를 결정하는 동작은,
상기 특정 집계량과 매칭하는 집계량을 저장하는 레지스터들의 수를 결정하는 동작;
해시 충돌 보정 팩터에 기초하여 특정 집계량과 매칭하는 집계량을 저장하는 레지스터들의 수를 조정하는 동작;
상기 레지스터들의 세트의 각 레지스터에 저장된 객체의 평균 수를 결정하는 동작; 그리고
상기 레지스터들의 조정된 수를 객체들의 평균 수로 스케일링하는 동작을 포함하는 것을 특징으로 하는 시스템. - 하나 이상의 데이터 처리 장치에 의해 실행될 때, 하나 이상의 데이터 처리 장치로 하여금 동작들을 수행하게 하는 명령어를 저장하는 비-일시적 컴퓨터 판독 가능 매체로서, 상기 동작들은,
데이터세트에서 복수의 객체들에 대한 활동 데이터를 획득하는 동작 -상기 데이터세트 내의 각각의 객체는 디지털 환경에서 활동들을 수행하고 그리고 상기 활동 데이터는 상기 활동들을 나타냄-;
데이터세트의 각 데이터 아이템에 대해:
데이터 아이템에 특정된 객체에 대한 식별자를 사용하여, 객체에 대한 해시된 파라미터를 생성하는 동작 -상기 해시된 파라미터는 이진 표현을 가짐-;
해시된 파라미터의 이진 표현에 기초하여 레지스터들의 세트 중에서 레지스터를 식별하는 동작 -상기 레지스터들의 세트 내의 각각의 레지스터는 상기 데이터세트 내의 객체들에 관한 데이터를 저장하는데 사용됨-;
해시된 파라미터의 이진 표현에 기초하여, 객체에 대한 해시된 파라미터가 데이터세트에서 객체의 발생 횟수를 특정하는 집계량(aggregation amount)에 기여하는지를 결정하는 동작; 그리고
객체에 대한 해시된 파라미터가 집계량에 기여한다고 결정한 것에 응답하여, 레지스터에 저장된 집계량을 업데이트하는 동작; 그리고
레지스터들의 세트에 저장된 총량(aggregate amounts)에 기초하여, 데이터 아이템들의 세트를 나타내는 리포팅 출력을 생성하는 동작 -각각의 데이터 아이템은 디지털 환경에서 특정 집계량으로 활동들을 수행한 데이터세트의 객체들의 추정된 수를 식별함-을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체. - 제17항에 있어서, 각 객체는 사용자를 나타내며, 그리고 집계량은 빈도 값을 나타내는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
- 제17항에 있어서, 상기 해시된 파라미터의 이진 표현에 기초하여 레지스터들의 세트 중에서 레지스터를 식별하는 동작은,
해시된 파라미터의 이진 표현의 제1 부분을 식별하는 동작; 그리고
해시된 파라미터의 이진 표현의 제1 부분을 사용하여 레지스터를 식별하는 동작을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체. - 제17항에 있어서,
상기 레지스터들의 세트의 각 레지스터는 수신된 해시된 파라미터에 관한 데이터를 저장하는 데이터 구조를 포함하고, 상기 데이터 구조는,
상기 수신된 해시된 파라미터의 제2 부분에서 리딩 제로의 수를 특정하는 데이터를 저장하는 제1 필드;
수신된 해시된 파라미터의 제2 부분에서 트레일링 비트를 특정하는 데이터를 저장하기 위한 제2 필드; 그리고
(i) 제1 필드의 기존(existing) 데이터 값이 리딩 제로의 수와 매칭하고 그리고 (ii) 제2 필드의 기존 데이터 값이 트레일링 비트와 매칭할 때 발생 횟수를 나타내는 집계량을 특정하는 데이터를 저장하기 위한 제3 필드를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체. - 제20항에 있어서,
해시된 파라미터의 이진 표현에 기초하여, 객체에 대한 해시된 파라미터가 집계량에 기여하는지를 결정하는 동작은,
해시된 파라미터의 이진 표현의 제2 부분으로부터 리딩 제로의 수를 결정하는 동작;
해시된 파라미터의 이진 표현의 제2 부분으로부터 트레일링 비트를 결정하는 동작; 그리고
리딩 제로의 수 및 트레일링 비트에 기초하여, 해시된 파라미터가 레지스터의 데이터 구조의 제3 필드에 저장된 기존 데이터 값에 영향을 주는지를 결정하는 동작을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체. - 제21항에 있어서, 리딩 제로의 수 및 트레일링 비트의 최대 수에 기초하여, 해시된 파라미터가 레지스터의 데이터 구조의 제3 필드에 저장된 기존 데이터 값에 영향을 주는지를 결정하는 동작은,
레지스터의 데이터 구조의 제1 필드에 저장된 기존 데이터 값이 리딩 제로의 수와 동일한지를 결정하는 동작; 그리고
레지스터의 데이터 구조의 제2 필드에 저장된 기존 데이터 값이 트레일링 비트의 최대 수와 동일한지를 결정하는 동작을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체. - 제21항에 있어서, 상기 레지스터에 저장된 상기 집계량을 업데이트하는 동작은 레지스터의 데이터 구조의 제3 필드에 저장된 기존 데이터 값을 1씩 증가시키는 동작을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
- 제20항에 있어서, 상기 레지스터들의 세트에 저장된 총량에 기초하여, 데이터 아이템들의 세트를 나타내는 리포팅 출력을 생성하는 동작 -각각의 데이터 아이템은 디지털 환경에서 특정 집계량으로 활동들을 수행한 데이터세트의 객체들의 추정된 수를 식별함-은,
상기 레지스터들의 세트에 저장된 집계량에 기초하여 고유한(unique) 총량의 세트를 식별하는 동작;
총량의 세트의 각 특정 집계량에 대해, 특정 집계량으로 활동들을 수행한 데이터세트의 객체들의 추정된 수를 결정하는 동작을 포함하며, 객체들의 추정된 수를 결정하는 동작은,
상기 특정 집계량과 매칭하는 집계량을 저장하는 레지스터들의 수를 결정하는 동작;
해시 충돌 보정 팩터에 기초하여 특정 집계량과 매칭하는 집계량을 저장하는 레지스터들의 수를 조정하는 동작;
상기 레지스터들의 세트의 각 레지스터에 저장된 객체의 평균 수를 결정하는 동작; 그리고
상기 레지스터들의 조정된 수를 객체들의 평균 수로 스케일링하는 동작을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2019/047393 WO2021034320A1 (en) | 2019-08-21 | 2019-08-21 | Optimizing large scale data analysis |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210023795A true KR20210023795A (ko) | 2021-03-04 |
Family
ID=67874522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207022602A KR20210023795A (ko) | 2019-08-21 | 2019-08-21 | 대규모 데이터 분석 최적화 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11768752B2 (ko) |
EP (1) | EP3799638A1 (ko) |
JP (1) | JP7098735B2 (ko) |
KR (1) | KR20210023795A (ko) |
CN (1) | CN112771512B (ko) |
WO (1) | WO2021034320A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12045203B2 (en) * | 2021-06-14 | 2024-07-23 | EMC IP Holding Company LLC | Systems and methods for physical capacity estimation of logical space units |
US11847119B2 (en) * | 2021-08-30 | 2023-12-19 | The Nielsen Company (Us), Llc | Method and system for estimating the cardinality of information |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030040263A (ko) | 2003-04-07 | 2003-05-22 | 주식회사 드림나우 | 인터넷 홈페이지 이용자의 행태 정보 획득 방법 및 그 장치 |
KR100798008B1 (ko) | 2005-09-07 | 2008-01-24 | 노키아 코포레이션 | 빈도수 카운팅을 위한 방법 및 장치 |
US7565349B2 (en) * | 2005-11-10 | 2009-07-21 | International Business Machines Corporation | Method for computing frequency distribution for many fields in one pass in parallel |
US8316064B2 (en) * | 2008-08-25 | 2012-11-20 | Emc Corporation | Method and apparatus for managing data objects of a data storage system |
US10198363B2 (en) * | 2015-10-23 | 2019-02-05 | Oracle International Corporation | Reducing data I/O using in-memory data structures |
US10055506B2 (en) * | 2014-03-18 | 2018-08-21 | Excalibur Ip, Llc | System and method for enhanced accuracy cardinality estimation |
US9886301B2 (en) * | 2015-05-04 | 2018-02-06 | Strato Scale Ltd. | Probabilistic deduplication-aware workload migration |
US10983976B2 (en) * | 2016-04-18 | 2021-04-20 | Verizon Media Inc. | Optimized full-spectrum cardinality estimation based on unified counting and ordering estimation techniques |
US10009239B2 (en) * | 2016-08-09 | 2018-06-26 | Airmagnet, Inc. | Method and apparatus of estimating conversation in a distributed netflow environment |
US10467433B2 (en) | 2017-03-17 | 2019-11-05 | Mediasift Limited | Event processing system |
US11074237B2 (en) * | 2017-04-14 | 2021-07-27 | Dynatrace Llc | Method and system to estimate the cardinality of sets and set operation results from single and multiple HyperLogLog sketches |
US10579827B2 (en) | 2017-07-24 | 2020-03-03 | Meltwater News International Holdings Gmbh | Event processing system to estimate unique user count |
-
2019
- 2019-08-21 WO PCT/US2019/047393 patent/WO2021034320A1/en unknown
- 2019-08-21 US US16/960,817 patent/US11768752B2/en active Active
- 2019-08-21 EP EP19765368.6A patent/EP3799638A1/en active Pending
- 2019-08-21 JP JP2020542129A patent/JP7098735B2/ja active Active
- 2019-08-21 CN CN201980011648.XA patent/CN112771512B/zh active Active
- 2019-08-21 KR KR1020207022602A patent/KR20210023795A/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN112771512B (zh) | 2024-06-25 |
US11768752B2 (en) | 2023-09-26 |
CN112771512A (zh) | 2021-05-07 |
EP3799638A1 (en) | 2021-04-07 |
JP7098735B2 (ja) | 2022-07-11 |
WO2021034320A1 (en) | 2021-02-25 |
JP2022500714A (ja) | 2022-01-04 |
US20220171693A1 (en) | 2022-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10394693B2 (en) | Quantization of data streams of instrumented software | |
US9927883B1 (en) | Mouse resolution estimation | |
JP6526907B2 (ja) | 分散型記憶システムの性能監視 | |
US10268750B2 (en) | Log event summarization for distributed server system | |
US11568447B2 (en) | Tunable statistical IDs | |
US9832259B2 (en) | Method and apparatus for cell configuration | |
US20160034504A1 (en) | Efficient aggregation, storage and querying of large volume metrics | |
CN110851465A (zh) | 数据查询方法及*** | |
CN112559271B (zh) | 分布式应用的接口性能监测方法、装置、设备及存储介质 | |
US20210365426A1 (en) | Generating Compact Data Structures for Monitoring Data Processing Performance Across High Scale Network Infrastructures | |
WO2021262868A1 (en) | Differentially private frequency deduplication | |
CN112771512B (zh) | 数据处理方法、数据处理***和计算机可读介质 | |
CN114840565A (zh) | 抽样查询方法、装置、电子设备及计算机可读存储介质 | |
US20150113090A1 (en) | Selecting a primary storage device | |
US20210056586A1 (en) | Optimizing large scale data analysis | |
US20230061914A1 (en) | Rule based machine learning for precise fraud detection | |
CN116894229A (zh) | 一种同类多数据源融合方法、装置、设备及存储介质 | |
CN115934553A (zh) | 一种软件资产质量验证的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X601 | Decision of rejection after re-examination |