KR20200029387A - 캐시 최적화 및 효율적인 프로세싱을 위한 데이터 집성 방법 - Google Patents
캐시 최적화 및 효율적인 프로세싱을 위한 데이터 집성 방법 Download PDFInfo
- Publication number
- KR20200029387A KR20200029387A KR1020197034449A KR20197034449A KR20200029387A KR 20200029387 A KR20200029387 A KR 20200029387A KR 1020197034449 A KR1020197034449 A KR 1020197034449A KR 20197034449 A KR20197034449 A KR 20197034449A KR 20200029387 A KR20200029387 A KR 20200029387A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- record
- memory
- processing
- data analysis
- Prior art date
Links
Images
Classifications
-
- 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
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Strategic Management (AREA)
- General Engineering & Computer Science (AREA)
- Educational Administration (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Operations Research (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Game Theory and Decision Science (AREA)
- Development Economics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
복수의 데이터 레코드들을 포함하는 데이터 스트림이 취출된다. 데이터 스트림의 부분들은 미리결정된 사이즈 용량의 복수의 레코드 패킷들을 형성하기 위해 집성된다. 복수의 레코드 패킷들의 각각은 복수의 데이터 레코드들로부터의 다수의 데이터 레코드들을 포함한다. 또한, 미리결정된 사이즈 용량은 데이터 프로세싱 장치와 연관된 캐시 메모리의 메모리 사이즈의 차수이다. 복수의 레코드 패킷들의 각각은 하나 이상의 프로세싱 동작들과 연관된 복수의 스레드들의 개개의 스레드들로 전송된다. 복수의 스레드들의 각각은 데이터 프로세싱 장치와 연관된 복수의 프로세서들 중 개개의 프로세서 상에서 독립적으로 실행한다.
Description
본 명세서는 일반적으로 다양한 병렬 프로세싱 컴퓨터 시스템들 (예를 들어, 멀티-코어 프로세서들) 에서 최적화된 캐싱 및 효율적인 프로세싱을 위해 데이터를 집성 (aggregating) 하기 위한 방법들 및 시스템들에 관한 것이다. 설명된 데이터 집성 기법들은 데이터 분석 플랫폼과 같은 데이터 프로세싱 환경에서 사용가능하다.
빅 데이터 분석 (Big Data Analytics) 과 같은 데이터 분석 플랫폼들의 성장은, 현금화되거나 다른 비즈니스 가치를 포함할 수 있는 정보를 추출하는 기회들로 대량의 데이터의 프로세싱을 레버리징하는데 사용된 툴로 데이터 프로세싱을 확장하였다. 따라서, 상이한 데이터 소스들로부터의 대규모 데이터 세트들을 액세스, 프로세싱 및 분석하는데 채용될 수 있는 효율적인 데이터 프로세싱 기법들이 필요할 수도 있다. 예를 들어, 소기업은 외부 데이터 제공자, 내부 데이터 소스 (예를 들어, 로컬 컴퓨터 상의 파일), 빅 데이터 스토어, 및 클라우드 기반 데이터 (예를 들어, 소셜 미디어 애플리케이션) 과 같은 다양한 소스로부터 방대한 양의 데이터를 게더링, 프로세싱 및 분석하는데 필요한 전용 컴퓨팅 및 인적 리소스를 채용하는 제 3 자 데이터 분석 환경을 활용할 수도 있다. 예를 들어, 비즈니스 영역에 추가로 적용될 수 있는 유용한 정량적 (예를 들어, 통계적, 예측) 및 정성적 정보를 추출하는 방식으로, 데이터 분석에서 사용된 바와 같이, 이러한 대규모 데이터 세트를 프로세싱하기 위해서는, 데이터 분석 (예를 들어, 액세스, 준비 및 프로세싱) 의 각각의 스테이지를 지원하는 강력한 컴퓨터 디바이스들 상에서 구현되는 복잡한 소프트웨어 툴들이 필요할 수도 있다.
상기 및 다른 쟁점들은 캐시 최적화 및 효율적인 프로세싱을 위해 데이터 집성을 사용하는 방법, 데이터 프로세싱 장치, 및 비일시적 컴퓨터 판독가능 메모리에 의해 해결된다. 방법의 실시형태는 데이터 프로세싱 장치에 의해 수행되고, 복수의 데이터 레코드 (record) 들을 포함하는 데이터 스트림을 취출하는 단계, 미리결정된 사이즈 용량의 복수의 레코드 패킷들을 형성하기 위해 데이터 스트림의 복수의 데이터 레코드들을 집성하는 단계로서, 미리결정된 사이즈 용량은 데이터 프로세싱 장치와 연관된 캐시 메모리의 메모리 사이즈에 응답하여 결정되는, 상기 복수의 데이터 레코드들을 집성하는 단계, 및 복수의 레코드 패킷들의 개개의 레코드 패킷들을 데이터 프로세싱 장치의 하나 이상의 프로세싱 동작들과 연관된 복수의 스레드들의 개개의 스레드들로 전송하는 단계를 포함한다.
데이터 프로세싱 장치의 실시형태는 실행가능한 컴퓨터 프로그램 코드를 저장하는 비일시적 메모리, 및 캐시 메모리를 갖고 메모리에 통신가능하게 커플링된 복수의 컴퓨터 프로세서들을 포함하고, 컴퓨터 프로세서들은 동작들을 수행하기 위해 컴퓨터 프로그램 코드를 실행한다. 동작들은 복수의 데이터 레코드들을 포함하는 데이터 스트림을 취출하는 것, 미리결정된 사이즈 용량의 복수의 레코드 패킷들을 형성하기 위해 데이터 스트림의 복수의 데이터 레코드들을 집성하는 것으로서, 미리결정된 사이즈 용량은 캐시 메모리의 메모리 사이즈에 응답하여 결정되는, 상기 복수의 데이터 레코드들을 집성하는 것, 및 복수의 레코드 패킷들의 개개의 레코드 패킷들을 복수의 프로세서들의 하나 이상의 프로세싱 동작들과 연관된 복수의 스레드들의 개개의 스레드들로 전송하는 것을 포함한다.
비일시적 컴퓨터 판독가능 메모리의 실시형태는 캐시 메모리를 갖는 복수의 컴퓨터 프로세서들을 사용하여 동작들을 수행하도록 실행가능한 컴퓨터 프로그램 코드를 저장한다. 동작들은 복수의 데이터 레코드들을 포함하는 데이터 스트림을 취출하는 것, 미리결정된 사이즈 용량의 복수의 레코드 패킷들을 형성하기 위해 데이터 스트림의 복수의 데이터 레코드들을 집성하는 것으로서, 미리결정된 사이즈 용량은 캐시 메모리의 메모리 사이즈에 응답하여 결정되는, 상기 복수의 데이터 레코드들을 집성하는 것, 및 복수의 레코드 패킷들의 개개의 레코드 패킷들을 복수의 프로세서들의 하나 이상의 프로세싱 동작들과 연관된 복수의 스레드들의 개개의 스레드들로 전송하는 것을 포함한다.
본 명세서에 설명된 청구물의 하나 이상의 구현들의 상세들이 첨부 도면들 및 하기의 설명에서 기술된다. 청구물의 다른 피처들, 양태들, 및 잠재적 이점들은 설명, 도면들, 및 청구항들로부터 명백해질 것이다.
도 1 은 최적화된 캐싱 및 효율적인 프로세싱을 위해 데이터 집성을 구현하기 위한 예시의 환경의 다이어그램이다.
도 2a 및 도 2b 는 최적화된 캐싱 및 효율적인 프로세싱을 위해 데이터 집성을 채용하는 데이터 분석 워크플로우의 예의 다이어그램들이다.
도 3 은 최적화된 캐싱 및 효율적인 프로세싱을 위해 데이터 집성을 구현하는 예시의 프로세스의 플로우 챠트이다.
도 4 는 본 명세서에 설명된 시스템들 및 방법들을 구현하는데 사용될 수도 있는 컴퓨팅 디바이스의 예의 다이어그램이다.
도 5 는 본 명세서에 설명된 시스템들 및 방법들을 구현하는데 사용될 수도 있는 소프트웨어 아키텍처를 포함하는 데이터 프로세싱 장치의 예의 다이어그램이다.
다양한 도면들에서 같은 참조 번호들 및 표기들은 같은 엘리먼트들을 표시한다.
도 2a 및 도 2b 는 최적화된 캐싱 및 효율적인 프로세싱을 위해 데이터 집성을 채용하는 데이터 분석 워크플로우의 예의 다이어그램들이다.
도 3 은 최적화된 캐싱 및 효율적인 프로세싱을 위해 데이터 집성을 구현하는 예시의 프로세스의 플로우 챠트이다.
도 4 는 본 명세서에 설명된 시스템들 및 방법들을 구현하는데 사용될 수도 있는 컴퓨팅 디바이스의 예의 다이어그램이다.
도 5 는 본 명세서에 설명된 시스템들 및 방법들을 구현하는데 사용될 수도 있는 소프트웨어 아키텍처를 포함하는 데이터 프로세싱 장치의 예의 다이어그램이다.
다양한 도면들에서 같은 참조 번호들 및 표기들은 같은 엘리먼트들을 표시한다.
기업, 회사 및 다른 조직에서, 비즈니스-관련 기능 (예를 들어, 고객 참여, 프로세스 성능, 및 전략적 의사 결정) 에 적절한 데이터를 획득하는데 관심이 있을 수도 있다. 어드밴스 데이터 분석 기법 (예를 들어, 텍스트 분석, 머신 학습, 예측 분석, 데이터 마이닝 및 스태틱스 (statics)) 은 그 후 기업에 의해, 예를 들어, 수집된 데이터를 추가로 분석하는데 사용될 수 있다. 또한, 기업과 고객 사이의 상품, 서비스 및 정보의 교환에, 인터넷과 같은 통신 네트워크 및 개인용 컴퓨터 디바이스의 통합 및 전자 상거래 (e-commerce) 의 성장으로, 대량의 비즈니스-관련 데이터가 전자 형태로 전송되고 저장된다. 비즈니스에 중요한 것일 수도 있는 방대한 양의 정보 (예를 들어, 금융 거래, 고객 프로파일 등) 는 네트워크-기반 통신을 사용하여 다중 데이터 소스들로부터 액세스 및 취출될 수 있다. 데이터 분석기에 대한 잠재적 관련성의 정보를 포함할 수도 있는 대량의 전자 데이터 및 이질적 데이터 소스로 인해, 데이터 분석 동작을 수행하는 것은 구조화된/구조화되지 않은 데이터, 스트리밍 또는 배치 데이터, 및 테라바이트에서 제타바이트까지 변화하는 상이한 사이즈의 데이터와 같은 상이한 데이터 타입을 포함하는 매우 크고, 다양한 데이터 세트를 프로세싱하는 것을 수반할 수 있다.
또한, 데이터 분석은 패턴을 인식하고, 상관 관계 및 다른 유용한 정보를 식별하기 위해 상이한 데이터 타입의 복잡하고 계산적으로 과중한 프로세싱을 필요로 할 수도 있다. 일부 데이터 분석 시스템은 데이터 웨어하우스와 같은 크고, 복잡하고 비용이 높은 컴퓨터 디바이스들, 및 메인프레임과 같은 고 성능 컴퓨터 (HPC) 들에 의해 제공된 기능성을 레버리지하여, 빅 데이터와 연관된 더 큰 스토리지 용량 및 프로세싱 요구를 핸들링한다. 일부 경우들에서, 이러한 방대한 양의 데이터를 수집하고 분석하는데 필요한 컴퓨팅 파워의 양은 소기업의 네트워크 상에서 이용가능한 전형적인 정보 기술 (IT) 어셋들 (예를 들어, 데스크탑 컴퓨터, 서버) 과 같은, 제한된 능력들로 리소스들을 갖는 환경에서 과제들을 제시할 수 있다. 예를 들어, 랩탑 컴퓨터는 수백 테라바이트의 데이터를 프로세싱하는 것과 연관된 요구를 지원하는데 필요한 하드웨어를 포함할 수 없을 수도 있다. 결과적으로, 빅 데이터 환경은 클러스터링된 컴퓨터 시스템에 걸쳐 큰 데이터 세트의 프로세싱을 지원하기 위해 수천 대의 서버들을 갖는 크고 비용이 높은 슈퍼컴퓨터 상에서 일반적으로 실행하는 상위-엔드 하드웨어 또는 고 성능 컴퓨팅 (HPC) 리소스를 채용할 수 있다. 데스크탑 컴퓨터와 같은 컴퓨터의 속도 및 프로세싱 파워가 증가되었지만, 그럼에도 불구하고 데이터 분석에서의 데이터 양과 사이즈도 또한 증가하여, 일부 현재 데이터 분석 기술에 대해 최적 미만의 (HPC 와 비교하여) 제한된 계산 능력을 갖는 전형적인 컴퓨터를 사용한다. 예로서, 단일 실행 스레드에서 한 번에 하나의 데이터 레코드을 프로세싱하는 계산-집약적 (compute-intensive) 데이터 분석 동작은 예를 들어, 데스크탑 컴퓨터 상에서 바람직하지 않게 긴 계산 시간을 초래할 수도 있고, 또한 일부 기존 컴퓨터 아키텍처에서 이용가능한 멀티-코어 중앙 프로세싱 유닛 (CPU) 의 병렬 프로세싱 능력을 이용할 수 없을 수도 있다. 그러나, 예를 들어 멀티-스레드형 설계를 사용하여, 효율적인 스케줄링 및 프로세서 및/또는 메모리 최적화를 제공하는, 현재 컴퓨터 하드웨어에서 사용가능한, 소프트웨어 아키텍처를 결합하면, 낮은 복잡도, 또는 전형적인 IT, 컴퓨터 어셋으로 효율적인 데이터 분석 프로세싱을 제공할 수 있다.
따라서, 본 명세서는 병렬 프로세싱을 활용하고, 우수한 스토리지 활용을 지원하며, 개선된 메모리 효율을 제공함으로써 컴퓨팅 리소스의 성능을 최적화할 수 있는 방식으로 데이터를 효율적으로 집성하는 것을 포함하는 데이터를 프로세싱하기 위한 기법들을 설명한다. 일 예의 방법은 복수의 데이터 레코드들을 포함하는 데이터 스트림을 취출하는 단계를 포함한다. 데이터 스트림의 부분들은 미리결정된 사이즈 용량의 복수의 레코드 패킷들을 형성하기 위해 집성된다. 복수의 레코드 패킷들의 각각은 복수의 데이터 레코드들로부터의 다수의 데이터 레코드들을 포함한다. 또한, 미리결정된 사이즈 용량은 데이터 프로세싱 장치와 연관된 캐시 메모리의 메모리 사이즈에 응답하여 결정된다. 일 실시형태에서, 미리결정된 사이즈 용량은 메모리 캐시 사이즈의 차수 (order of magnitude) 이다. 복수의 레코드 패킷들의 각각은 하나 이상의 프로세싱 동작들과 연관된 복수의 스레드들로 전송된다. 복수의 스레드들의 각각은 데이터 프로세싱 장치와 연관된 복수의 프로세서들 중 개개의 프로세서 상에서 독립적으로 실행한다.
본 개시에 따른 기법들을 사용하는 구현들은 몇 가지 잠재적인 이점들을 갖는다. 먼저, 본 기법들은 데이터 로컬성 (locality) 의 개선을 허용하거나, 또는 그렇지 않으면 프로세싱 동안 사용될 컴퓨팅 엘리먼트 (예를 들어, CPU, RAM 등) 에 쉽게 액세스가능한 메모리에 데이터를 유지하는 것을 허용할 수도 있다. 예를 들어, 본 기법들은 예를 들어, 데이터 분석 워크플로우에 포함된 프로세싱 동작이 단일 데이터 레코드보다 오히려 데이터 레코드들의 집성된 그룹을 동시에 프로세싱하는 것을 가능하게 할 수도 있다. 따라서, 프로세싱된 데이터 레코드들과 연관된 데이터는 예를 들어, 잠재적으로 후속 동작들에 의해 추가로 액세스될 필요가 있는 컴퓨터 디바이스의 캐시 메모리에서 이용가능할 것이라는 가능도가 증가된다. 개선된 레이터 로컬성의 결과로서, 이 기법들은 또한 데이터에 액세스하는데 있어서 경험될 수도 있는 레이턴시에서의 감소를 실현할 수 있다. 결과적으로, 개시된 기법들은 다르게는 병렬 프로세싱 기술들을 구현하는 컴퓨터 디바이스들 (예를 들어, 멀티-코어 CPU들, 멀티-스레딩 등) 상에서 열악하게 스케일링할 수도 있는, 일부 기존 데이터 분석 프로세싱 기법들, 예를 들어 선형 오더링에서 데이터를 프로세싱하는데 활용되는 캐시 메모리, CPU들, 등과 같은 컴퓨터 리소스들의 동작을 최적화할 수도 있다.
부가적으로, 기법들은 다중 데이터 레코드들의 집성된 그룹인, 레코드 패킷의 사이즈가 우수하게 최적화된 캐싱 거동을 가능하게 하는 방식으로 데이터를 집성하는데 사용될 수 있다. 예로서, 설명된 기법들은 데이터 레코드들을 캐시 메모리와 관련하여 특정 사이즈의 레코드 패킷으로 집성하는데 채용될 수 있다. 너무 크지 않은, 예를 들어 캐시의 스토리지 용량보다 큰, 프로세싱 레코드 패킷들은, 캐시로부터 최근에 플러시된 데이터에 빈번하게 액세스하는 것을 시도하는 프로세싱 동작과 같은, 최악의 경우 캐시 거동 시나리오를 방지할 수 있다. 또한, 이 기법들은 동일한 CPU 상에서 다중 코어들을 실행하는 독립적 스레드들과 같은, 병렬-프로세싱 컴퓨팅 환경들에서 데이터 프로세싱 효율을 증가시키는데 사용될 수 있다. 즉, 이 기법들은 다수의 CPU 코어들에 걸친 데이터 프로세싱의 분산을 달성하기 위해 특정 사이즈의 레코드 패킷들로 데이터 레코드들을 집성하도록 기능할 수 있고, 따라서 멀티-코어 프로세서들을 활용하는 컴퓨터들에서의 활용을 최적화할 수 있다. 바람직한 것으로서 데이터 프로세싱 동안 많은 가용 프로세서 코어들 만큼 채용하도록 사이징된 레코드 패킷들을 사용함으로써, 기법들은 더 적은 코어들 또는 단일 프로세서 코어만을 사용하는 방식으로 데이터를 집성하는 차선의 경우를 방지하는 것을 도울 수도 있다. 또한, 본 기법들은 멀티-스레딩 프로세싱 환경에서 스레드들 사이에서 데이터를 전달하는 것과 연관된 오버헤드를 감소시키기 위해서 데이터를 효율적으로 집성하는데 사용될 수 있다.
도 1 은 데이터 분석 플랫폼과 같은 데이터 프로세싱 환경에서 최적화된 캐싱 및 효율적인 프로세싱을 위해 데이터 집성을 구현하기 위한 예시의 환경 (100) 의 다이어그램이다. 나타낸 바와 같이, 환경 (100) 은 인터넷 (150) 에 추가로 접속되는, 데이터 분석 시스템 (140) 을 포함하는 내부 네트워크 (110) 를 포함한다. 인터넷 (150) 은 다중의 이질적 리소스 (예를 들어, 서버, 네트워크 등) 을 접속하는 공중 네트워크이다. 일부 경우들에서, 인터넷 (150) 은 내부 네트워크 (110) 외부의 임의의 공중 또는 사설 네트워크일 수도 있거나 또는 내부 네트워크 (110) 와 상이한 엔티티에 의해 동작될 수도 있다. 데이터는 인터넷 (150) 을 통해 예를 들어, 이더넷 (ETHERNET), 동기식 광학 네트워킹 (Synchronous Optical Networking; SONET), 비동기식 전송 모드 (Asynchronous Transfer Mode; ATM), 코드 분할 다중 액세스 (Code Division Multiple Access; CDMA), 롱텀 에볼루션 (Long Term Evolution; LTE), 인터넷 프로토콜 (Internet Protocol; IP), 하이퍼텍스트 전송 프로토콜 (Hypertext Transfer Protocol; HTTP), HTTP 보안 (HTTPS), 도메인 이름 시스템 (Domain Name System; DNS) 프로토콜, 송신 제어 프로토콜 (Transmission Control Protocol; TCP), 유니버설 데이터그램 프로토콜 (Universal Datagram Protocol; UDP) 또는 다른 기술들과 같은, 다양한 네트워크 기술들을 사용하여 인터넷에 접속된 컴퓨터들과 네트워크들 사이에서 전송될 수도 있다.
예로서, 내부 네트워크 (110) 는 스마트 폰 (130a) 및 랩탑 컴퓨터 (130b) 로서 도시된, 핸드헬드 컴퓨팅 디바이스들과 같은, 상이한 능력들을 갖는 복수의 클라이언트 디바이스들 (130) 을 접속하기 위한 로컬 영역 네트워크 (LAN) 이다. 내부 네트워크 (110) 에 접속된 것으로 도시된 클라이언트 디바이스 (130) 는 데스크탑 컴퓨터 (130c) 이다. 내부 네트워크 (110) 는 이더넷, WI-FI, CDMA, LTE, IP, HTTP, HTTPS, DNS, TCP, UDP 또는 다른 기술들을 포함하지만 이에 제한되지 않는 하나 이상의 네트워크 기술들을 활용하는 유선 또는 무선 네트워크일 수도 있다. 결과로서, 인터넷 (150) 은 예를 들어 네트워킹 기술들 (예를 들어, Wi-Fi) 및 적절한 프로토콜들 (예를 들어, TCP/IP) 을 사용함으로써, 네트워크에 통신가능하게 접속된 클라이언트 디바이스들 (130) 에 방대한 양의 네트워크 액세스 가능 콘텐츠에 대한 액세스를 제공할 수 있다. 내부 네트워크 (110) 는 데이터베이스 (135) 로 나타낸 로컬 스토리지 시스템에 대한 액세스를 지원할 수 있다. 예로서, 데이터베이스 (135) 는 내부 데이터, 또는 그렇지 않으면 내부 네트워크 (110) 리소스들에 로컬인 소스들로부터 획득된 데이터 (예를 들어, 클라이언트 디바이스들 (130) 을 사용하여 생성되고 송신된 파일들) 를 저장 및 유지하기 위해 채용될 수 있다.
도 1 에 나타낸 바와 같이, 인터넷 (150) 은 데이터베이스 (160), 서버 (170), 및 웹 서버 (180) 로 도시된, 내부 네트워크 (110) 로부터 외부에 위치된 다양한 데이터 소스들을 통신가능하게 접속할 수 있다. 인터넷 (150) 에 접속된 데이터 소스들의 각각은 데이터 분석 애플리케이션들과 같은 데이터 프로세싱 플랫폼에 의해 거기에 포함된 정보의 분석적 프로세싱을 위해, 데이터 레코드들과 같은 전자 데이터에 액세스하고 이를 취출하는데 사용될 수 있다. 데이터베이스들 (160) 은 데이터 분석 애플리케이션들 또는 다른 기존 데이터 프로세싱 애플리케이션들로의 입력으로서 작용하는 데이터를 컴파일하기 위해 후속하여 액세스될 수 있는, 대량의 데이터 또는 레코드들을 게더링, 저장 및 유지하는데 사용되는 복수의 대용량 스토리지 디바이스들을 포함할 수 있다. 예로서, 데이터베이스들 (160) 은 제 3 자 데이터 소스에 의해 관리되는 빅 데이터 스토리지 시스템에서 사용될 수 있다. 일부 경우들에서, 빅 데이터 스토리지 시스템과 같은 외부 스토리지 시스템은 프로세싱 능력을 위해 DAS (Direct-Attached Storage) 를 갖는, 서버 (170) 로서 도시된 물품 (commodity) 서버를 활용할 수 있다.
또한, 웹 서버 (180) 는 인터넷 (150) 을 통해 클라이언트 디바이스 (130) 의 사용자와 같은 사용자들에게 이용가능하게 하는 콘텐츠를 호스팅할 수 있다. 웹 서버 (180) 는 정적 콘텐츠를 갖는 개별 웹 페이지를 포함하는 정적 웹 사이트를 호스팅할 수 있다. 웹 서버 (180) 는 또한 서버 측 프로세싱, 예를 들어 PHP, 자바 서버 페이지 (Java Server Pages; JSP) 또는 ASP.NET 과 같은 서버 측 스크립트에 의존하는 동적 웹사이트를 위한 클라이언트 측 스크립트를 포함할 수 있다. HTTP 요청은 요청된 콘텐츠를 식별하는 URL (Uniform Resource Locator) 을 포함할 수도 있다. 웹 서버 (180) 는 "example.com" 과 같은 도메인 이름과 연관됨으로써 "www.example.com" 과 같은 주소를 사용하여 액세스될 수 있게 할 수도 있다. 일부 경우들에서, 웹 서버 (180) 는 비즈니스에 관심이 있을 수도 있는 다양한 형태의 데이터, 예를 들어 웹 사이트 및 소셜 네트워크 애플리케이션 상에서 액세스가능한 콘텐츠 및 컴퓨터 기반 상호작용 (예를 들어, 클릭 추적 데이터) 과 관련된 데이터를 제공함으로써 외부 데이터 소스로서 작용할 수 있다. 예로서, 클라이언트 디바이스 (130) 는 웹 서버 (180) 에 의해 호스팅된 웹 사이트와 같은 인터넷 (150) 상에서 이용가능한 콘텐츠를 요청할 수 있다. 그 후, 웹 서버 (180) 에 의해 호스팅되는 웹 사이트를 뷰잉하면서 사용자에 의해 이루어진, 다른 사이트, 콘텐츠 또는 광고에 대한 하이퍼텍스트 링크 상의 클릭이 모니터링되거나 또는 그렇지 않으면 추적되고, 후속 프로세싱을 위한 데이터 분석 플랫폼으로의 입력으로서 클라우드로부터 서버로 소싱될 수 있다. 예를 들어, 인터넷 (150) 을 통해 데이터 분석 플랫폼에 의해 액세스가능할 수 있는 외부 데이터 소스의 다른 예는, 외부 데이터 제공자, 데이터 웨어하우스, 제 3 자 데이터 제공자, 인터넷 서비스 제공자, 클라우드-기반 데이터 제공자, SaaS (Software as a Service) 플랫폼 등을 포함할 수 있지만 이에 제한되지 않는다.
데이터 분석 시스템 (140) 은 예를 들어 인터넷 (150) 을 통해, 다중 데이터 소스들로부터 수집, 게더링 또는 그렇지 않으면 액세스되는 대량의 데이터를 프로세싱 및 분석하기 위해 활용될 수 있는 컴퓨터 기반 시스템이다. 데이터 분석 시스템 (140) 은 광범위한 데이터 소스로부터 데이터를 액세스, 준비, 블렌딩 및 분석하는데 채용되는 스케일러블 소프트웨어 툴 및 하드웨어 리소스를 구현할 수 있다. 예를 들어, 데이터 분석 시스템 (140) 은 데이터 집약적 프로세스 및 워크플로우의 실행을 지원한다. 데이터 분석 시스템 (140) 은 설명된 데이터 집성 기법을 포함하는 데이터 분석 기능을 구현하는데 사용된 컴퓨팅 디바이스일 수 있다. 설명된 데이터 집성 기법은 데이터 분석 시스템 (140) 내에서 동작하는 더 큰 데이터 분석 소프트웨어 엔진의 일부인 모듈에 의해 구현될 수 있다. 모듈, 즉 최적화된 데이터 집성 모듈 (도 5 에 나타냄) 은, 일부 실시형태들에서 데이터 집성 기법들을 구현하는 소프트웨어 엔진 (및 연관된 하드웨어) 의 일부이다. 데이터 집성 모듈은 데이터 분석 애플리케이션 (145) 과 같은 시스템의 다른 양태들로 기능하는 통합 컴포넌트로서 동작하도록 설계된다. 따라서, 데이터 분석 애플리케이션 (145) 은 데이터 집성 모듈을 활용하여 그 동작을 수행하는데 필요한 레코드 패킷들을 생성하는 것과 같은 특정 태스크들을 수행할 수 있다. 데이터 분석 시스템 (140) 은 예를 들어, 도 3 을 참조하여 상세하게 논의된 바와 같이, 동일한 CPU 다이 상의 다중 프로세서 코어들을 사용하는 하드웨어 아키텍처를 포함할 수 있다. 일부 경우들에서, 데이터 분석 시스템 (140) 은 시스템에 의해 복잡한 분석의 일부 및 대규모 데이터를 지원하기 위해, 데이터 분석 서버 (120) 로서 나타낸, 전용 컴퓨터 디바이스 (예를 들어, 서버) 를 추가로 채용한다.
데이터 분석 서버 (120) 는 시스템의 일부 분석 기능들을 위한 서버 기반 플랫폼을 제공할 수 있다. 예를 들어, 데스크탑 컴퓨터 (130c) 와 같은 내부 네트워크 (110) 상에서 이용가능한 다른 컴퓨터 리소스들보다 더 큰 프로세싱 및 메모리 능력들을 가질 수도 있는 데이터 분석 서버 (120) 에 더욱 더 시간 소모적인 데이터 프로세싱이 오프로딩될 수 있다. 또한, 데이터 분석 서버 (120) 는 정보에 대한 중앙집중식 액세스를 지원함으로써, 사용자 액세싱 데이터 분석 시스템 (140) 사이의 공유 및 협업 능력들을 지원하도록 네트워크 기반 플랫폼을 제공할 수 있다. 예를 들어, 데이터 분석 서버 (120) 는 애플리케이션 및 애플리케이션 프로그램 인터페이스 (API) 를 생성, 공개 및 공유하고, 내부 네트워크 (110) 와 같은 분산 네트워킹 환경에서 컴퓨터들에 걸쳐 분석을 배치하는데 활용될 수 있다. 데이터 분석 서버 (120) 는 또한 다중 데이터 소스들로부터의 데이터를 사용하여 실행 데이터 분석 워크 플로우들 및 잡들 (job) 을 자동화 및 스케줄링하는 것과 같은, 소정의 데이터 분석 태스크들을 수행하는데 채용될 수 있다. 또한, 데이터 분석 서버 (120) 는 행정, 관리 및 제어 기능들을 가능하게 하는 분석 통치 능력들을 구현할 수 있다. 일부 경우들에서, 데이터 분석 서버 (120) 는 스케줄러 및 서비스 계층을 실행하도록 구성되어, 워크 플로우의 멀티 스레딩과 같은 다양한 병렬 프로세싱 능력들을 지원함으로써 다중의 데이터 집약적 프로세스들이 동시에 실행될 수 있도록 한다. 일부 경우들에서, 데이터 분석 서버 (120) 는 단일 컴퓨터 디바이스로서 구현된다. 다른 구현들에서, 데이터 분석 서버 (120) 의 능력은 예를 들어 프로세싱 성능 증가를 위해 플랫폼을 스케일링하도록, 복수의 서버들에 걸쳐 배치된다.
데이터 분석 시스템 (140) 은 데이터 분석 애플리케이션 (145) 으로서 도 2 에 도시된, 하나 이상의 소프트웨어 애플리케이션들을 지원하도록 구성될 수 있다. 데이터 분석 애플리케이션들 (145) 은 데이터 분석 플랫폼의 능력들을 가능하게 하는 소프트웨어 툴들을 구현한다. 일부 경우들에서, 데이터 분석 애플리케이션들 (145) 은 클라이언트들 (130) 과 같은 다중 엔드 사용자들에게 데이터 분석 툴 및 매크로에 대한 네트워크 또는 클라우드 기반 액세스를 지원하는 소프트웨어를 제공한다. 예로서, 데이터 분석 애플리케이션들 (145) 은 사용자들이 분석을 공유, 브라우징 및 소비할 수 있도록 한다. 분석 데이터, 매크로 및 워크 플로우는 데이터 분석 시스템 (140) 의 다른 사용자들에 의해 액세스될 수 있는, 더 작은 규모 및 맞춤가능한 (customizable) 분석 애플리케이션 (즉, 앱) 으로서 패키징되고 실행될 수 있다. 일부 경우들에서, 공개된 분석 앱들에 대한 액세스는, 즉 액세스를 승인 또는 철회하는, 데이터 분석 시스템 (140) 에 의해 관리됨으로써, 액세스 제어 및 보안 능력들을 제공할 수 있다. 데이터 분석 애플리케이션들 (145) 은 생성, 배치, 공개, 반복, 업데이트 등과 같은 분석 앱들과 연관된 기능들을 수행할 수 있다.
또한, 데이터 분석 애플리케이션들 (145) 은 분석 결과에 대한 액세스, 분석 결과를 준비, 블렌드, 분석 및 출력하는 능력과 같은, 데이터 분석에 수반되는 다양한 스테이지들에서 수행된 기능들을 지원할 수 있다. 일부 경우들에서, 데이터 분석 애플리케이션들 (145) 은 다양한 데이터 소스들에 액세스하여, 예를 들어 데이터의 스트림에서 원시 (raw) 데이터를 취출할 수 있다. 데이터 분석 애플리케이션들 (145) 에 의해 수집된 데이터 스트림들은 원시 데이터의 다중 데이터 레코드들을 포함할 수 있고, 원시 데이터는 상이한 포맷들 및 구조들이다. 적어도 하나의 데이터 스트림을 수신한 후, 데이터 분석 애플리케이션들 (145) 은 워크플로우와 같은 데이터 분석 동작으로의 입력으로서 사용될 데이터 레코드들을 생성하기 위해 대량의 데이터를 준비하는 동작들을 수행한다. 또한, 예측 분석 (예를 들어, 예측 모델링, 클러스터링, 데이터 조사) 과 같은, 데이터 레코드들의 통계적, 정성적 또는 정량적 프로세싱에 수반된 분석 기능들은 데이터 분석 애플리케이션들 (145) 에 의해 구현될 수 있다. 데이터 분석 애플리케이션들 (145) 은 또한 시각적 그래픽 사용자 인터페이스 (GUI) 를 통해, 반복가능한 데이터 분석 워크플로우를 설계 및 실행하기 위해 소프트웨어 툴을 지원할 수 있다. 예로서, 데이터 분석 애플리케이션들 (145) 과 연관된 GUI 는 데이터 블렌딩, 데이터 프로세싱 및 어드밴스드 데이터 분석을 위한 드래그 앤 드롭 (drag-and-drop) 워크 플로우 환경을 제공한다. 데이터 분석 시스템 (140) 내에 구현된 것으로 설명된 기술은, 데이터 스트림에서 취출된 데이터를, 병렬 프로세싱을 가능하게 하고 데이터 분석 애플리케이션들 (145) 의 전체 속도를 증가시키는 다중 데이터 레코드들의 그룹 또는 패킷으로 집성하는 솔루션을 제공한다 (예를 들어, 프로세싱되는 데이터 청크들의 사이즈를 증가시킴으로써 동기화 노력을 최소화함).
도 2a 는 최적화된 캐싱 및 효율적인 프로세싱을 위해 데이터 집성 기법들을 채용하는 데이터 분석 워크플로우의 예를 나타낸다. 일부 경우들에서, 데이터 분석 워크플로우 (200) 는 데이터 분석 시스템 (140)(도 1 에 나타냄) 의 GUI 에 의해 지원되는 시각적 워크플로우 환경을 사용하여 생성된다. 시각적 워크플로우 환경은 일부 기존 워크플로우 생성 기법들에서 수반될 수 있는 코딩 및 복잡한 공식들에 대한 필요성을 제거할 수 있는 드래그 앤 드롭 툴들의 세트를 가능하게 한다. 일부 경우들에서, 워크 플로우 (200) 는 XML (Extensible Markup Language) 문서와 같은, 해당 타입의 문서들의 구조 및 콘텐츠에 대한 제약들에 관하여 표현된 문서로서 생성될 수 있다. 데이터 분석 워크플로우 (200) 는 데이터 분석 시스템 (140) 의 컴퓨터 디바이스에 의해 실행될 수 있다. 일부 구현들에서, 데이터 분석 워크플로우 (200) 는 실행을 위해 데이터 분석 시스템 (140) 에 네트워크를 통해 통신가능하게 접속될 수 있는 다른 컴퓨터 디바이스에 배치될 수 있다.
데이터 분석 워크플로우 (200) 는 특정 프로세싱 동작들 또는 데이터 분석 기능을 수행하는 일련의 툴들을 포함할 수 있다. 일반적인 예로서, 워크플로우는 입력/출력; 준비; 공동; 예측적; 공간적; 조사; 및 파싱 및 변환 동작들을 포함하지만, 이에 제한되지 않는 다양한 데이터 분석 기능들을 구현하는 툴들을 포함할 수 있다. 워크플로우 (200) 를 구현하는 것은 데이터 분석 프로세스를 정의, 실행 및 자동화하는 것을 수반할 수 있으며, 여기서 데이터는 워크플로우에서 각각의 툴에 전달되고, 각 툴은 수신된 데이터에 대해 연관된 프로세싱 동작을 각각 수행한다. 데이터 집성 기법들에 따라, 개별 데이터 레코드들의 집성된 그룹을 포함하는 데이터 레코드은 워크플로우 (200) 의 툴들을 통해 전달될 수 있으며, 이는 개별 프로세싱 동작이 데이터에 대해 보다 효율적으로 동작하도록 할 수 있다. 설명된 데이터 집성 기법들은 대량의 데이터를 프로세싱하더라도, 워크플로우들을 개발하고 실행하는 속도를 증가시킬 수 있다. 워크플로우 (200) 는 특정된 툴들의 동작 시퀀스를 특정하는, 반복가능한 일련의 동작들을 정의 또는 그렇지 않으면 구조화할 수 있다. 일부 경우들에서, 워크플로우에 포함된 툴들은 선형 순서로 수행된다. 다른 경우들에서, 더 많은 툴들이 병렬로 실행되어, 예를 들어 워크플로우 (200) 의 하부 및 상부 부분들 양자 모두가 동시에 실행하는 것을 가능하게 할 수 있다.
도시된 바와 같이, 워크플로우 (200) 는 입력 툴들 (205, 206) 및 브라우즈 툴 (230) 로서 도시된 입력/출력 툴들을 포함할 수 있으며, 이 툴들은 상관적 데이터베이스, 클라우드 또는 제 3 자 시스템들에서, 로컬 데스크탑과 같은 특정 위치들로부터의 데이터 레코드들에의 데이터 레코드에 액세스하도록 기능하고, 그 후 그 데이터를 출력으로서 다양한 포맷들 및 소스들에 전달한다. 입력 툴들 (205, 206) 은 워크플로우 (200) 의 시작에서 수행된 개시 동작들로서 나타나 있다. 예로서, 입력 툴들 (205, 206) 은 선택된 파일로부터 데이터를 모듈로 가져오거나 데이터베이스에 접속하는데 사용되고 (선택적으로, 질의를 사용함) 이어서 워크플로우 (200) 의 나머지 툴들에 입력으로서 데이터 레코드들을 제공할 수 있다. 워크플로우 (200) 의 끝에 위치된 브라우즈 툴 (230) 은 워크플로우 (200) 로 진입하는 데이터 레코드들에 의해 전달되는 업스트림 툴들 각각의 실행으로부터 야기되는 출력을 수신할 수 있다. 일 예에 있어서, 브라우즈 툴 (230) 은 실행된 툴들 또는 프로세싱 동작들로부터의 결과들을 검증하기 위해 데이터 분석 워크플로우 (200) 의 끝에서와 같은, 데이터를 검토하고 검증하기 위해 데이터 스트림에서 하나 이상의 포인트들을 부가할 수 있다.
예를 계속하면, 워크플로우 (200) 는 분석 또는 다운스트림 프로세스들을 위한 입력 데이터 레코드들을 준비할 수 있는, 필터 툴 (210), 선택 툴 (211), 공식 툴 (215), 및 샘플 툴 (212) 로서 나타낸, 준비 툴들을 포함할 수 있다. 예를 들어, 필터 툴 (210) 은 표현식에 기초하여 레코드들에 질의하여 데이터를 2 개의 스트림들, 즉 참 (True)(즉, 표현식을 만족하는 레코드들) 및 거짓 (False)(즉, 표현식을 만족하지 않는 레코드들) 로 분할할 수 있다. 또한, 선택 툴 (211) 은 필드들을 선택, 선택해제, 재정렬 및 이름변경하고, 필드 타입 또는 사이즈를 변경하며, 디스크립션을 할당하는데 사용될 수 있다. 데이터 공식 툴 (215) 은 광범위한 산출들 및/또는 동작들을 수행하기 위해 하나 이상의 표현식들을 사용하여 필드들을 생성 또는 업데이트하는데 사용가능하다. 샘플 툴 (212) 은 데이터 레코드들의 수, 퍼센티지, 또는 랜덤 세트로 데이터 레코드들의 스트림을 제한하도록 동작할 수 있다.
워크플로우 (200) 는 또한 다수의 툴들을 통해 다중 데이터 소스들을 블렌딩하기 위해 사용될 수 있는 공동 툴 (220) 로서 나타낸, 공동 툴들을 포함할 수 있다. 일부 경우들에서, 공동 툴들은 데이터 구조 및 포맷들에 관계없이 다양한 소스들로부터의 데이터를 프로세싱할 수 있다. 공동 툴 (220) 은 공통 필드들 (또는 레코드 포지션) 에 기초하여 2 개의 데이터 스트림들을 결합하는 것을 수행할 수 있다. 워크플로우 (200) 에서 다운스트림 전달되는 공동 출력에 있어서, 각각의 로우 (row) 는 양자의 입력들로부터의 데이터를 포함할 것이다. 워크플로우 (200) 는 또한, 일반적으로 데이터를 재구조화하고 재형상화하는데 사용되는 툴들인, 요약 툴 (summarize tool)(225) 과 같은 파싱 및 변환 툴을 포함하여, 이들이 추가 분석을 위해 필요로 하는 포맷으로 데이터를 변경함으로써 데이터가 분석되는 것으로 나타나 있다. 요약 툴 (225) 은 그룹화, 합산, 카운팅, 공간 프로세싱, 스트링 연결 (concatenation) 에 의해 데이터의 요약을 수행할 수 있다. 요약 툴 (225) 로부터의 출력은 일부 경우들에서 산출(들)의 결과들만을 포함한다.
일부 경우들에서, 워크플로우 (200) 의 실행은 모든 레코드들이 프로세싱되고 공동 툴 (220) 에 도달할 때까지 레코드들이 필터 툴 (210) 및 공식 툴 (215) 을 통해 한번에 하나씩 이동하면서, 상부 입력 (205) 이 판독되게 할 것이다. 그 후, 하부 입력 (206) 은 선택 툴 (211) 및 샘플 툴 (212) 을 통해 한 번에 하나씩 레코드들을 전달할 것이고, 이어서 레코드들은 동일한 공동 툴로 전달된다. 워크플로우의 일부 개별 툴들은 마지막 데이터 블록을 프로세싱하거나 소트 (sort) 와 같은 컴퓨터 집약적 동작들을 다중 부분들로 나누면서 데이터 블록의 판독을 개시하는 것과 같은, 그 자신의 병렬 동작을 구현하는 능력을 소유할 수 있다.
도 2b 는 본 명세서에 설명된 데이터 집성 기법들을 사용하여 그룹화된 데이터 레코드을 포함하는 데이터 분석 워크 플로우 (200) 의 일부 (280) 의 예를 나타낸다. 도 2b 에 도시된 바와 같이, 데이터 스트림이 예를 들어 선택된 파일로부터 워크플로우의 상부 부분으로 데이터를 가져오기 위해 입력 툴 (205) 을 실행하는 것과 연관하여 다중 데이터 레코드들 (260) 을 포함하여 취출될 수 있다. 이어서, 데이터 스트림을 포함하는 데이터 레코드들 (260) 은 워크플로우의 상부 부분에 의해 정의된, 경로 또는 동작 시퀀스를 따라 데이터 분석 툴들에 제공될 수 있다. 실시형태들에 따라, 데이터 분석 시스템 (140) 은 데이터 스트림으로부터 다수의 데이터 레코드들 (260) 을 레코드 패킷 (265) 으로 그룹화함으로써, 데이터 스트림의 작은 부분들의 병렬 프로세싱을 달성할 수 있는 데이터 집성 기법을 제공할 수 있다. 후속하여, 각각의 레코드 패킷 (265) 은 워크플로우를 통해 전달되고, 툴이 다중 패킷들을 요구할 때까지 또는 레코드 패킷 (265) 이 횡단하는 경로를 따라 더 이상 툴이 없을 때까지 워크플로우에서 다중 툴들을 통해 선형 순서로 프로세싱된다. 일 구현에서, 데이터 스트림은 레코드 패킷 (265) 보다 큰 차수이고, 레코드 패킷 (265) 은 데이터 레코드 (260) 보다 큰 차수이다. 따라서, 전체 스트림에 포함된 데이터 레코드들의 합의 작은 부분인 다수의 다중 데이터 레코드들 (265) 이 단일 레코드 패킷 (265) 으로 집성될 수 있다. 예로서, 레코드 패킷 (265) 은 다중 집성된 데이터 레코드들 (260) 의 바이트 단위로 측정된 패킷의 총 길이를 포함하는 포맷을 갖도록 (예를 들어, 데이터가 잇따라서) 생성될 수 있다. 데이터 레코드 (260) 은 다중 필드들, 및 바이트에서의 레코드의 총 길이를 포함하는 포맷을 가질 수 있다. 그러나, 일부 경우들에서, 개별 데이터 레코드 (260) 은 레코드 패킷 (265) 에 대해 미리결정된 용량보다 비교적 큰 사이즈를 가질 수 있다. 따라서, 구현은 이러한 시나리오를 핸들링하고 실질적으로 큰 레코드들을 패킷화하기 위해 조정하는 메커니즘을 활용하는 것을 수반한다. 따라서, 설명된 데이터 집성 기법들은 데이터 레코드들 (260) 이 레코드 패킷들 (265) 에 대해 설계된 최대 사이즈를 초과할 수도 있는 경우들에서 채용될 수 있다.
도 2b 는 데이터 분석 워크 플로우 (200), 즉 필터 툴 (210) 에서 다음의 연속 프로세싱 동작으로 전달되는 레코드 패킷 (265) 을 나타낸다. 일부 경우들에서, 데이터 레코드들은 미리결정된 사이즈 용량의 다중 레코드 패킷들 (265) 로 집성된다. 데이터 집성은 일반적으로 툴이 데이터 소스로부터 데이터 스트림을 판독할 때 병렬로 수행되는 것으로 설명되지만, 일부 경우들에서, 데이터 집성은 입력 데이터가 전부 수신된 후 발생할 수 있다. 예로서, 소트 툴은 그 입력 스트림에 대한 레코드 패킷들의 각각을 수집하고, 그 후 소팅 기능을 수행할 수 있으며, 이는 수신된 레코드 패킷들의 집성 해제, 및 소트 기능의 결과로서 상이한 패킷들로의 데이터의 재집성 양자 모두를 수반할 수 있다. 다른 예로서, 공식 툴 (도 2a 에 나타냄) 은 입력으로서 수신하는 각각의 레코드 패킷에 대한 출력으로서 하나보다 많은 레코드 패킷을 생성할 수 있다. (예를 들어, 패킷에 다중 필드들을 부가하면 그 사이즈가 증가하여 용량 초과시 부가 패킷들을 요구할 수 있음).
일 실시형태에서, 레코드 패킷 (265) 의 최대 사이즈는 (도 1 나타낸) 데이터 분석 시스템 (140) 을 구현하는데 사용된 컴퓨터 시스템의 하드웨어에 의해 제약되거나, 그렇지 않으면 이와 관련된다. 다른 구현들은 서버의 로드와 같은, 시스템 성능 특징들에 의존하는 레코드 패킷 (265) 의 사이즈를 결정하는 것을 수반할 수 있다. 일 구현에서, 레코드 패킷들 (265) 에 대해 최적으로 사이징된 용량은 연관된 시스템 아키텍처에서 사용된 캐시 메모리의 사이즈에 대한 인수분해가능한 관계 (factorable relationship) 에 기초하여 (시동 또는 컴필레이션 (compliation) 시에) 미리결정될 수 있다. 일부 경우들에서, 패킷들은 캐시의 사이즈에 대해 0 차 차수 (즉, 100) 의 용량을 갖는 캐시 메모리와 직접적인 관계 (1 대 1 관계) 를 갖도록 설계된다. 예를 들어, 레코드 패킷들 (265) 은 각각의 패킷이 타겟 CPU 상에서 최대 캐시의 사이즈 (예를 들어, 스토리지 용량) 이하이도록 구성된다. 재표시된 (restated) 데이터 레코드 (260) 은 캐시 사이즈의 패킷들로 집성될 수 있다. 예로서, 데이터 분석 애플리케이션들 (145) 을 구현하기 위해 64MB 캐시를 갖는 컴퓨터 시스템을 활용하면 64MB 의 미리결정된 사이즈 용량을 갖는 레코드 패킷들 (265) 을 산출한다. 데이터 분석 시스템 (140) 의 캐시 사이즈 이하인 레코드 패킷을 생성함으로써, 레코드 패킷은 랜덤 액세스 메모리 (RAM) 또는 메모리 디스크에 저장된 경우보다 툴들에 의해 캐시에 유지되고 더 빠르게 액세스될 수 있다. 이로써, 캐시 사이즈 이하인 레코드 패킷을 생성하면 데이터 로컬성을 개선한다.
다른 구현들에서, 레코드 패킷들 (265) 에 대해 미리결정된 사이즈 용량은 캐시 메모리의 사이즈에 대한 수학적 관계로의 다른 계산적 변수들일 수도 있거나 수학적 관계로부터 도출될 수도 있으며, 그 결과 패킷들은 캐시보다 작거나 큰 최대 사이즈를 갖는다. 예를 들어, 레코드 패킷 (265) 의 용량은 캐시 메모리의 사이즈의 1/10 또는 -1 차수 (즉, 10-1) 일 수 있다. 설명된 데이터 집성 기법들에 사용된 레코드 패킷들 (265) 의 용량을 최적화하는 것은 (더 작은 사이즈의 패킷들을 활용하는 것과 연관된) 스레드들 사이의 증가된 동기화 노력과, (더 큰 사이즈의 패킷들을 활용하는 것과 연관된) 패킷 당 프로세싱에 있어서 잠재적으로 감소된 캐시 성능 또는 증가된 입도 (graularity)/레이턴시 사이의 트레이드오프를 수반한다. 일 예에서, 설명된 데이터 집성 기법들에 의해 채용된 레코드 패킷들 (265) 은 4MB 의 사이즈 용량을 갖도록 최적으로 설계된다. 설명된 기법들에 따라, 레코드 패킷 (265) 의 사이즈 용량은 -1 내지 1 의 범위의 임의의 팩터일 수 있다. 다른 구현들에서, 임의의 알고리즘, 산출, 또는 수학적 관계는 필요하거나 적절한 것으로 여겨지는 바와 같은, 캐시 메모리의 사이즈에 기초하여 레코드 패킷들 (265) 의 미리결정된 사이즈 용량을 결정하기 위해 적용될 수 있다.
일부 경우들에서, 레코드 패킷들 (265) 에 대한 사이즈 용량이 고정되어 있지만, 각각의 레코드 패킷 (265) 길이를 형성하기 위해 집성되는 데이터 레코드들의 수는 가변적이며 필요에 따라 또는 적절히 시스템에 의해 동적으로 조정된다. 본 명세서에 설명된 기법들에 따라, 레코드 패킷들 (265) 은 가변 사이즈들 또는 길이들을 사용하여 포맷되어, 미리결정된 최대 용량을 갖는 각각의 패킷으로 가능한 많은 레코드들을 최적으로 포함하는 것을 허용한다. 예를 들어, 제 1 레코드 패킷 (265) 은 2MB 의 사이즈로 패킷을 형성하기 위해 다수의 데이터 레코드들 (260) 을 포함하여, 실질적으로 대량의 데이터를 유지하도록 생성될 수 있다. 그 후, 제 2 레코드 패킷 (265) 은 준비된 것으로 여겨지지 마자 생성되고 툴로 전달될 수 있다. 예를 계속하면, 제 2 레코드 패킷 (265) 은 제 1 패킷보다 비교적 적은 수의 집성된 레코드들을 포함하여, 1KB 의 사이즈에 도달하지만, 워크 플로우에 의해 프로세싱되기 전에 데이터를 준비 및 패킷화하는 것과 연관된 시간 레이턴시를 잠재적으로 감소시킬 수 있다. 따라서, 일부 경우들에서, 다중 레코드 패킷들 (265) 은 미리결정된 용량에 의해 제한되고, 추가로 캐시 메모리의 사이즈를 초과하지 않는 다양한 사이즈를 갖는 시스템을 횡단한다. 구현에 있어서, 패킷에 대한 가변 사이즈를 최적화하는 것은 패킷 마다에 기초하여 생성되는 각각의 패킷에 대해 수행된다. 다른 구현들은 사용된 툴의 타입, 최소 레이턴시, 최대 데이터의 양 등을 포함하지만 이에 제한되지 않는 다양한 튜닝가능한 파라미터들에 기초하여 임의의 그룹 또는 임의의 수의 패킷들에 대해 최적의 사이즈를 결정할 수 있다. 따라서, 집성은 패킷의 결정된 가변 사이즈에 따라 레코드 패킷 (265) 에 배치될 최적의 데이터 레코드들 (260) 의 수를 결정하는 것을 더 포함할 수 있다.
일부 구현들에 따라, 대량의 데이터 레코드들 (260) 은 설명된 집성 기법들을 사용하여 형성된 레코드 패킷들 (265) 로서 데이터 분석 시스템 (140) 의 다양한 툴들 및 애플리케이션들을 통해 프로세싱, 분석 및 전달될 수 있으며, 이에 의해 데이터 프로세싱 속도 및 효율을 증가시킨다. 예를 들어, 필터 툴 (210) 은 복수의 레코드들 (260) 의 각각의 레코드를 개별적으로 프로세싱하는 것과 반대로, 수신된 레코드 패킷 (265) 으로 집성된 복수의 데이터 레코드들 (260) 의 프로세싱을 수행할 수 있다. 따라서, 플로우 (및 궁극적으로 시스템) 을 실행하는 속도는 개개의 툴들의 소프트웨어 재설계를 필요로 하지 않으면서, 다중 집성된 레코드들의 병렬 프로세싱을 가능하게 함으로써 설명된 기법들에 따라 증가된다. 부가적으로, 레코드들을 패킷들로 집성하면 동기화 오버헤드를 상환 (amortize) 할 수 있다. 예를 들어, 개별 레코드들을 프로세싱하는 것은 큰 동기화 비용 (예를 들어, 레코드 별 동기화) 을 야기할 수 있다. 대조적으로, 복수의 레코드들을 패킷으로 집성함으로써, 다중 레코드들의 각각과 연관된 동기화 비용이 단일 패킷을 동기화하는 것으로 (예를 들어, 패킷 별 동기화) 감소된다.
또한, 일부 경우들에서, 각각의 레코드 패킷 (265) 은 이용가능한 별도의 스레드에서의 프로세싱을 위해 스케줄링되어, 병렬 프로세싱 컴퓨터 시스템들에 대한 데이터 프로세싱 성능을 최적화한다. 예로서, 다중 CPU 코어들 상에서 독립적으로 실행되는 다중 스레드들을 활용하는 데이터 분석 시스템에 대해, 복수의 데이터 패킷들의 각각의 레코드 패킷 (265) 은 그의 대응하는 코어 상에서 개개의 스레드에 의한 프로세싱을 위해 분산될 수 있다. 멀티-스레딩은 단일 프로그램 내에서 동시에 실행되는 2 이상의 태스크들을 지칭한다. 스레드는 프로그램 내의 독립적인 실행 경로이다. 다중 스레드들은 내부에서 다양한 태스크들을 실행하기 위해 병렬로 다중 스레드들을 사용하는 데이터 프로세싱 동작과 같은, 프로그램 내에서 동시에 실행될 수 있다. 예를 들어, 데이터 분석 프로그램은 스레드를 초기화할 수 있으며, 이는 필요에 따라 추가 스레드들을 생성한다. 데이터 집성은 프로그램과 연관된 스레드들 각각에 대해 실행되는 툴 코드에 의해 수행될 수 있으며, 각각의 스레드는 그 개개의 코어 상에서 동작한다. 따라서, 설명된 데이터 집성 기법들은 컴퓨터 아키텍처 (예를 들어, 멀티 스레딩) 의 다양한 병렬 프로세싱 양태들을 레버리징하여 더 큰 CPU 코어들의 세트에 걸쳐 데이터 프로세싱을 실시함으로써, 프로세서 활용을 최적화할 수 있다.
또한, 일부 실시형태들에서, 2 이상의 레코드 패킷들과 연관된 레코드들은 워크플로우 (200) 의 프로세싱 동안 재집성된다. 이러한 실시형태에서, 데이터 분석 시스템 (140) 은 레코드 패킷 내에 포함되어야 하는 최소 수의 레코드들을 표시하는 미리 특정되거나 동적으로 결정된 최소 용량을 가질 수도 있다. 워크플로우 프로세싱 동안, 특정된 최소치 보다 적은 데이터 레코드들을 갖는 레코드 패킷이 생성되면, 데이터 분석 시스템 (140) 은 결과의 데이터 레코드들이 미리결정된 최대 용량을 초과하지 않는 한, 하나 이상의 다른 패킷들로 최소 레코드 패킷 미만으로부터의 레코드들을 배치함으로써, 데이터 레코드들을 재집성할 수도 있다. 2 개의 그러한 레코드 패킷들이 최소 수의 레코드들보다 적으면, 데이터 분석 시스템 (140) 은 패킷들을 부가 레코드 패킷으로 결합할 수도 있다. 이러한 재집성은 예를 들어, 소트 기능의 결과로서 소트 툴이 상이한 패킷들로 데이터를 재집성하는 것에 응답하여 발생할 수도 있다.
도 3 은 최적화된 캐싱 및 효율적인 프로세싱을 위해 데이터 집성을 구현하는 예시의 프로세스 (300) 의 플로우 챠트이다. 프로세스 (300) 는 도 1 과 관련하여 설명된 데이터 분석 시스템 컴포넌트들에 의해, 또는 컴포넌트들의 다른 구성들에 의해 구현될 수도 있다.
305 에서, 복수의 데이터 레코드들을 포함하는 데이터 스트림이 데이터 프로세싱 기능들을 위해 취출된다. 데이터 분석 플랫폼과 같은 일부 데이터 프로세싱 환경들에서, 데이터 스트림을 취출하는 것은 데이터 프로세싱 모듈로 입력될 다중 데이터 소스들로부터의 다중 레코드들로서 표현된 대량의 데이터를 게더링하는 것을 수반할 수 있다. 일부 경우들에서, 데이터 스트림 및 이와 유사하게 이 스트림을 포함하는 데이터 레코드들은 컴퓨터 디바이스 상에서 실행되는 데이터 분석 워크플로우와 연관된다. 부가적으로, 일부 경우들에서, 데이터 분석 워크플로우는 도 2a 를 참조하여 설명된 툴들과 같은 특정 데이터 분석 기능을 수행하기 위해 사용될 수 있는 하나 이상의 데이터 프로세싱 동작들을 포함한다. 데이터 분석 워크플로우를 실행하는 것은 워크플로우에 정의된 동작 시퀀스에 따라 하나 이상의 프로세싱 동작들을 실행하는 것을 더 수반할 수 있다.
310 에서, 각각의 부분이 데이터 레코드들의 그룹에 대응하는 데이터 스트림의 부분들은 미리결정된 사이즈 용량의 복수의 레코드 패킷들을 형성하기 위해 집성된다. 설명된 기법들에 따라, 각각의 레코드 패킷은 상이한 수의 데이터 레코드들을 포함할 수 있어서, 가변 사이즈들 또는 길이들을 갖는 패킷들이 생성되도록 할 수 있다. 따라서, 시스템에서 레코드 패킷들에 대한 사이즈 용량은 고정되지만 (즉, 각각의 레코드 패킷이 동일한 최대 길이를 가짐), 각각의 패킷 길이를 형성하기 위해 적절히 집성될 수 있는 데이터 레코드들의 수는 필요에 따라 또는 적절히 시스템에 의해 동적으로 조정되는 변수일 수 있다. 일부 경우들에서, 레코드 데이터를 형성하기 위해 집성될 데이터 레코드들의 수는 개개의 패킷들의 각각에 대해 결정된 최적화되고 가변적인 사이즈에 기초한다. 가변 사이즈를 사용하여 레코드 패킷들을 최적화하기 위한 상세들은 도 2b 를 참조하여 논의된다. 설명된 기법들에 따라, 미리결정된 사이즈 용량은 하드웨어 아키텍처에 대한 관계에 기초하여, 결정되거나 그렇지 않으면 산출되는 튜닝가능한 파라미터이다. 일부 경우들에서, 레코드 패킷에 대해 미리결정된 사이즈 용량은 워크플로우를 실행하는 프로세싱 장치와 연관된 캐시의 사이즈 (예를 들어, 스토리지 용량) 의 계산 변동이다. 다른 경우들에서, 레코드 패킷의 사이즈 용량은 타겟 CPU 상의 최대 캐시의 계산 변동일 수 있다. 일부 구현들에 따라, 시스템은 오퍼레이팅 시스템 (OS) 또는 CPU 의 IC 칩 (예를 들어, CPU ID 명령) 으로부터 캐시의 사이즈를 취출함으로써 시동 시 레코드 패킷들에 대한 사이즈 용량을 동적으로 결정하도록 구성된다. 다른 경우들에서, 미리결정된 사이즈 용량은 컴필레이션 시간에서 시스템에 대해 설계된 파라미터이다. 레코드 패킷들에 대해 미리결정된 사이즈 용량을 최적으로 튜닝하기 위한 추가 상세들은 도 2b 를 참조하여 논의된다.
315 에서, 복수의 레코드 패킷들의 각각은 하나 이상의 프로세싱 동작들을 실행하기 위한 복수의 스레드들의 개개의 스레드들로 전송된다. 일부 경우들에서, 데이터 프로세싱 장치는 복수의 프로세서들, 예를 들어 CPU 상에 구현된 다중 코어들을 갖는 것을 포함하는 다양한 병렬 프로세싱 기술들을 구현한다. 또한, 데이터 장치는 다중 스레드 설계를 구현할 수 있으며, 여기서 복수의 스레드의 각각은 예를 들어, 다중 코어 CPU 의 개개의 프로세서 코어 상에서 독립적으로 실행될 수 있다.
일부 경우들에서, 워크플로우의 실행은 워크플로우의 끝에 도달할 때까지 선형 순서 (예를 들어, 다음 툴의 실행을 시작하기 전에 이전 툴이 완료) 로 프로세싱될 워크플로우의 프로세싱 동작들, 또는 툴들의 각각에 레코드 패킷들을 전달하는 것을 수반한다. 따라서, 320 에서, 워크플로우에서 실행될 나머지 프로세싱 동작들이 있는지 여부에 관하여 결정이 이루어진다. 현재 실행중인 동작에 대해 다운스트림에서 아직 실행되지 않은 부가 프로세싱 동작들이 있는 경우 (즉, "예"), 레코드 패킷들은 순서대로, 워크플로우에서의 나머지 툴들 다음으로 전달되고 프로세스 (300) 는 단계 (315) 로 리턴한다. 일부 경우들에서, 다음 프로세싱 동작으로의 레코드 패킷의 검사 (320) 및 프로세싱, 그리고 그 연관된 스레드는 워크플로우가 완료할 때까지 반복적으로 수행된다. 실행된 프로세싱 동작이 프로세스에서 마지막 툴인 경우, 즉 데이터 분석 워크플로우인 경우, 프로세스의 실행은 325 에서 종료된다.
도 4 는 클라이언트 또는 서버 또는 복수의 서버들로서 본 명세서에 설명된 시스템들 및 방법들을 구현하는데 사용될 수도 있는 컴퓨팅 디바이스들 (400) 의 블록 다이어그램이다. 컴퓨팅 디바이스 (400) 는 랩탑, 데스크탑, 워크스테이션, 개인용 디지털 보조기, 서버, 블레이드 서버, 메인프레임 및 다른 적절한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터를 나타내도록 의도된다. 일부 경우들에서, 컴퓨팅 디바이스 (450) 는 개인용 디지털 보조기, 셀룰러 전화기, 스마트폰 및 다른 유사한 컴퓨팅 디바이스와 같은 다양한 형태의 모바일 디바이스를 나타내도록 의도된다. 부가적으로, 컴퓨팅 디바이스 (400) 는 유니버셜 시리얼 버스 (Universal Serial Bus; USB) 플래시 드라이브를 포함할 수 있다. USB 플래시 드라이브는 오퍼레이팅 시스템 및 다른 애플리케이션을 저장할 수도 있다. USB 플래시 드라이브는 다른 컴퓨팅 디바이스의 USB 포트에 삽입될 수도 있는 무선 송신기 또는 USB 커넥터와 같은 입력/출력 컴포넌트들을 포함할 수 있다. 여기에 나타낸 컴포넌트들, 그 접속들 및 관계들, 그리고 그 기능들은 예시적인 것으로 의미되고 본 문서에서 청구되고 및/또는 설명된 발명의 구현을 제한하는 것으로 의미되지 않는다.
컴퓨팅 디바이스 (400) 는 프로세서 (402), 메모리 (404), 스토리지 디바이스 (406), 메모리 (404) 및 고속 확장 포트들 (410) 에 접속하는 고속 인터페이스 (408), 및 저속 버스 (414) 및 스토리지 디바이스 (406) 에 접속하는 저속 인터페이스 (412) 를 포함한다. 실시형태들에 따라, 프로세서 (402) 는 병렬 프로세싱 기술들을 구현하는 설계를 갖는다. 도시된 바와 같이, 프로세서 (402) 는 동일한 마이크로프로세서 칩 또는 다이 상에 다중 프로세서 코어들 (402a) 을 포함하는 CPU 일 수 있다. 프로세서 (402) 는 4 개의 프로세싱 코어들 (402a) 을 갖는 것으로 나타나 있다. 일부 경우들에서, 프로세서 (402) 는 2-32 개의 코어들을 구현할 수 있다. 컴포넌트들 (402, 404, 406, 408, 410 및 412) 의 각각은 다양한 버스들을 사용하여 상호접속되고, 공통 마더 보드 상에 또는 다른 방식들로 적절히 장착될 수도 있다. 프로세서 (402) 는 고속 인터페이스 (408) 에 커플링된 디스플레이 (416) 와 같은, 외부 입력/출력 디바이스 상에 GUI 에 대한 그래픽 정보를 디스플레이하기 위해 스토리지 디바이스 (406) 상에 또는 메모리 (404) 에 저장된 명령들을 포함하는, 컴퓨팅 디바이스 (400) 내에서 실행을 위한 명령들을 프로세싱할 수 있다. 다른 구현들에서, 다중 프로세서들 및/또는 다중 버스들이 다중 메모리들 및 메모리의 타입들과 함께 적절히 사용될 수도 있다. 또한, 다중 컴퓨팅 디바이스들 (400) 이 접속될 수도 있으며, 각각의 디바이스는 (예를 들어, 서버 뱅크, 블레이드 서버들의 그룹, 또는 멀티-프로세서 시스템으로서) 필요한 동작들의 부분들을 제공한다.
메모리 (404) 는 컴퓨팅 디바이스 (400) 내에 정보를 저장한다. 일 구현에서, 메모리 (404) 는 휘발성 메모리 유닛 또는 유닛들이다. 다른 구현에서, 메모리 (404) 는 비휘발성 메모리 유닛 또는 유닛들이다. 메모리 (404) 는 또한 자기 또는 광학 디스크와 같은 다른 형태의 컴퓨터 판독가능 매체일 수도 있다. 컴퓨팅 디바이스 (40) 의 메모리는 또한 마이크로프로세서가 정규 RAM 에 액세스할 수 있는 것보다 빠르게 액세스할 수 있는 RAM 으로서 구현되는 캐시 메모리를 포함할 수 있다. 이 캐시 메모리는 CPU 칩과 직접 통합되고 및/또는 CPU 와 별도의 버스 상호접속을 갖는 별도의 칩 상에 배치될 수 있다.
스토리지 디바이스 (406) 는 컴퓨팅 디바이스 (400) 를 위한 대용량 스토리지를 제공한다. 일 구현에서, 스토리지 디바이스 (406) 는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 스토리지 영역 네트워크 또는 다른 구성들에서의 디바이스들을 포함하는 디바이스들의 어레이와 같은, 비일시적 컴퓨터 판독가능 매체이거나 이를 포함할 수도 있다. 컴퓨터 프로그램 제품은 또한 실행될 때, 상술한 바와 같은 하나 이상의 방법들을 수행하는 명령들을 포함할 수도 있다.
고속 제어기 (408) 는 컴퓨팅 디바이스 (400) 에 대한 대역폭 집약적 동작들을 관리하는 한편, 저속 제어기 (412) 는 더 낮은 대역폭 집약적 동작들을 관리한다. 이러한 기능들의 할당은 예시적이다. 일 구현에서, 고속 제어기 (408) 는 (예를 들어, 그래픽 프로세서 또는 가속기를 통해) 메모리 (404), 디스플레이 (416), 및 다양한 카드들 (미도시) 을 수용할 수도 있는 고속 확장 포트들 (410) 에 커플링된다. 구현에서, 저속 제어기 (412) 는 스토리지 디바이스 (406) 및 저속 확장 포트 (414) 에 커플링된다. 다양한 통신 포트들 (예를 들어, USB, 블루투스, 이더넷, 무선 이더넷) 을 포함할 수도 있는 저속 확장 포트는 키보드, 포인팅 디바이스, 스캐너와 같은 하나 이상의 입력/출력 디바이스들에, 또는 스위치 또는 라우터와 같은 네트워킹 디바이스에, 예를 들어 네트워크 어댑터를 통해 커플링될 수도 있다.
컴퓨팅 디바이스 (400) 는 도면에 나타낸 바와 같이, 다수의 상이한 형태들로 구현될 수도 있다. 예를 들어, 그것은 표준 서버 (420) 로서, 또는 이러한 서버들의 그룹에서 복수 회 구현될 수도 있다. 또한 그것은 랙 (rack) 서버 시스템 (424) 의 일부로서 구현될 수도 있다. 또한, 랩탑 컴퓨터 (422) 와 같은 개인용 컴퓨터에서 구현될 수도 있다. 대안으로, 컴퓨팅 디바이스 (400) 로부터의 컴포넌트들은 모바일 디바이스 (도 1 에 나타냄) 에서 다른 컴포넌트들과 결합될 수도 있다. 이러한 디바이스들의 각각은 컴퓨팅 디바이스 (400) 의 하나 이상을 포함할 수도 있고, 전체 시스템은 서로 통신하는 다중 컴퓨팅 디바이스들 (400) 로 구성될 수도 있다.
도 5 는 클라이언트 또는 서버로서 프로그래밍될 수 있는 데이터 프로세싱 장치 (500) 를 포함하는 데이터 프로세싱 시스템의 개략도이다. 데이터 프로세싱 장치 (500) 는 네트워크 (580) 를 통해 하나 이상의 컴퓨터들 (590) 과 접속된다. 도 5 에는 단지 하나의 컴퓨터만이 나타나 있지만, 데이터 프로세싱 장치 (500) 로서, 다중 컴퓨터들이 사용될 수 있다. 데이터 프로세싱 장치 (500) 는 다양한 소프트웨어 모듈들을 구현하는 데이터 분석 시스템 (140) 을 위한 소프트웨어 아키텍처를 포함하는 것으로 나타나 있으며, 이는 애플리케이션 계층과 데이터 프로세싱 커널 사이에 분산될 수 있다. 이들은 상술한 바와 같은, 데이터 분석 애플리케이션 (505) 의 툴들 및 서비스들을 포함하는, 실행가능 및/또는 해석가능한 소프트웨어 프로그램들 또는 라이브러리들을 포함할 수 있다. 사용된 소프트웨어 모듈들의 수는 구현마다 다를 수 있다. 또한, 소프트웨어 모듈들은 하나 이상의 컴퓨터 네트워크들 또는 다른 적절한 통신 네트워크들에 의해 접속된 하나 이상의 데이터 프로세싱 장치에 분산될 수 있다. 소프트웨어 아키텍처는 데이터 분석 엔진 (520) 을 구현하는 데이터 프로세싱 커널로서 설명된 계층을 포함한다. 도 5 에 도시된 바와 같이, 데이터 프로세싱 커널은 일부 기존 오퍼레이팅 시스템들과 관련되는 피처들을 포함하도록 구현될 수 있다. 예를 들어, 데이터 프로세싱 커널은 스케줄링, 할당 및 리소스 관리와 같은 다양한 기능들을 수행할 수 있다. 데이터 프로세싱 커널은 또한 데이터 프로세싱 장치 (500) 의 오퍼레이팅 시스템의 리소스들을 사용하도록 구성될 수 있다. 일부 구현들에서, 데이터 프로세싱 커널은 낭비된 용량 및 메모리 사용을 감소시키도록, 최적화된 데이터 집성 모듈 (525) 에 의해 이전에 생성된 레코드 패킷들로부터 데이터를 추가로 집성하는 능력을 갖는다. 예를 들어, 커널은 거의 비어있는 다중의 레코드 패킷들 (예를 들어, 용량보다 실질적으로 적은 데이터를 가짐) 로부터의 데이터가 최적화를 위해 단일 레코드 패킷으로 적절히 집성될 수 있다고 결정할 수 있다. 일부 경우들에서, 데이터 분석 엔진 (520) 은 데이터 분석 애플리케이션들 (505) 을 사용하여 개발된 워크플로우를 실행하는 소프트웨어 컴포넌트이다.
도 5 는 개시된 바와 같이, 데이터 분석 시스템의 데이터 집성 양태들을 구현하는 최적화된 데이터 집성 모듈 (525) 을 포함하는 것으로 데이터 분석 엔진 (520) 을 나타낸다. 예로서, 데이터 분석 엔진 (520) 은, 예를 들어 사용자 및 시스템 구성 (516) 설정들 (510) 을 기술하는 부가 파일들과 함께 워크플로우를 기술하는, XML 파일로서의 워크플로우 (515) 를 로딩할 수 있다. 그 후, 데이터 분석 엔진 (520) 은 워크플로우에 의해 설명된 툴들을 사용하여 워크플로우의 실행을 조정할 수 있다. 나타낸 소프트웨어 아키텍처, 특히 데이터 분석 엔진 (520) 및 최적화된 데이터 집성 모듈 (525) 은 다중 CPU 코어들, 많은 양의 메모리, 다중 스레드 설계, 및 어드밴스드 스토리지 메커니즘 (예를 들어, 고체 상태 드라이버들, 스토리지 영역 네트워크) 을 포함하는 유리하게 레버리지된 하드웨어 아키텍처들을 실현하도록 설계될 수 있다.
데이터 프로세싱 장치 (500) 는 또한 하나 이상의 프로세서들 (535), 하나 이상의 부가 디바이스들 (536), 컴퓨터 판독가능 매체 (537), 통신 인터페이스 (538) 및 하나 이상의 사용자 인터페이스 디바이스들 (539) 을 포함하는 하드웨어 또는 펌웨어 디바이스들을 포함한다. 각각의 프로세서 (535) 는 데이터 프로세싱 장치 (500) 내에서 실행을 위한 명령들을 프로세싱할 수 있다. 일부 구현들에서, 프로세서 (535) 는 단일 또는 멀티-스레드 프로세서이다. 각각의 프로세서 (535) 는 부가 디바이스들 (536) 중 하나와 같은 스토리지 디바이스 상에 또는 컴퓨터 판독가능 매체 (537) 상에 저장된 명령들을 프로세싱할 수 있다. 데이터 프로세싱 장치 (500) 는 예를 들어, 네트워크 (580) 를 통해 하나 이상의 컴퓨터들 (590) 과 통신하기 위해 그의 통신 인터페이스 (538) 를 사용한다. 사용자 인터페이스 디바이스들 (539) 의 예들은 디스플레이, 카메라, 스피커, 마이크로폰, 촉각 피드백 디바이스, 키보드 및 마우스를 포함한다. 데이터 프로세싱 장치 (500) 는 예를 들어, 컴퓨터 판독 가능 매체 (537) 또는 하나 이상의 부가 디바이스들 (536), 예를 들어 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 테이프 디바이스, 및 고체 상태 메모리 디바이스 중 하나 이상에, 상술한 모듈들과 연관된 동작들을 구현하는 명령들을 저장할 수 있다.
본 명세서에 설명된 청구물 및 기능 동작들의 실시형태들은 본 명세서에 개시된 구조들 및 그 구조의 등가물들을 포함하여, 디지털 전자 회로에서, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서, 또는 이들의 하나 이상의 조합에서 구현될 수 있다. 본 명세서에 설명된 청구물의 실시형태들은 데이터 프로세싱 장치에 의한 실행을 위해, 또는 이 장치의 동작을 제어하기 위해 컴퓨터 판독가능 매체 상에 인코딩된 컴퓨터 프로그램 명령들의 하나 이상의 모듈들을 사용하여 구현될 수 있다. 컴퓨터 판독가능 매체는 내장형 시스템, 또는 소매 채널들을 통해 판매된 광학 디스크 (disc) 또는 컴퓨터 시스템에서의 하드 드라이브와 같은 제조된 제품일 수 있다. 컴퓨터 판독가능 매체는 유선 또는 무선 네트워크를 통해 컴퓨터 프로그램 명령들의 하나 이상의 모듈들의 전달에 의해서와 같은, 컴퓨터 명령들의 하나 이상의 모듈들로 별도로 취득되고 나중에 인코딩될 수 있다. 컴퓨터 판독가능 매체는 머신 판독가능 스토리지 디바이스, 머신 판독가능 스토리지 기판, 메모리 디바이스, 또는 이들 중 하나 이상의 조합일 수 있다.
용어 "데이터 프로세싱 장치" 는 예시로서 프로그램가능 프로세서, 컴퓨터, 또는 다중 프로세서들 또는 컴퓨터들을 포함하여, 데이터를 프로세싱하기 위한 장치, 디바이스들, 및 머신들을 포괄한다. 장치는 하드웨어에 부가하여, 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어를 구성하는 코드, 프로토콜 스택, 데이터베이스 관리 시스템, 오퍼레이팅 시스템, 런타임 환경, 또는 이들의 하나 이상의 조합을 포함할 수 있다. 부가적으로, 장치는 웹 서비스, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 여러 상이한 컴퓨팅 모델 인프라구조를 채용할 수 있다.
컴퓨터 프로그램 (프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드로서 또한 알려짐) 은 컴파일되거나 해석된 언어, 선언적 또는 절차적 언어를 포함하는 임의의 형태의 프로그래밍 언어로 기입될 수 있고, 독립형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛으로서를 포함한 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램이 반드시 파일 시스템의 파일에 대응하지 않는다. 프로그램은 다른 프로그램 또는 데이터 (예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들) 를 유지하는 파일의 일부, 해당 프로그램에 전용된 단일 파일, 또는 다중 조정 파일들 (예를 들어, 하나 이상의 모듈들, 서브 프로그램들 또는 코드의 부분들을 저장하는 파일들) 에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 또는 하나의 사이트에 위치되거나 다중 사이트들에 걸쳐 분산되고 통신 네트워크에 의해 상호접속되는 다중 컴퓨터들 상에서 실행되도록 전개될 수 있다.
본 명세서에 설명된 프로세스들 및 로직 플로우들은 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그램가능 프로세서들에 의해 수행될 수 있다. 프로세스들 및 로직 플로우들은 또한 특수 목적 로직 회로, 예를 들어 FPGA (필드 프로그램가능 게이트 어레이) 또는 ASIC (애플리케이션 특정 집적 회로) 로서 구현될 수 있다.
여기에 설명된 기법 및 시스템의 다양한 구현은 디지털 전자 회로, 집적 회로, 특별히 설계된 ASIC (애플리케이션 특정 집적 회로), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합으로 실현될 수 있다. 이러한 다양한 구현은 특수 목적 또는 범용일 수도 있고, 스토리지 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고, 이들로 데이터 및 명령들을 송신하도록 커플링된, 적어도 하나의 프로그램가능 프로세서를 포함하는 프로그램가능 시스템 상에서 실행가능하고 및/또는 해석가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
이들 컴퓨터 프로그램 (프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드로서 또한 알려짐) 은 프로그램가능 프로세서를 위한 머신 명령들을 포함하고, 하이 레벨 절차적 및/또는 오브젝트 배향된 프로그래밍 언어, 및/또는 어셈블리/머신 언어에서 구현될 수 있다. 본 명세서에서 사용된 바와 같이, 용어 "머신 판독가능 매체" 및 "컴퓨터 판독가능 매체" 는 머신 판독가능 신호로서 머신 명령들을 수신하는 머신 판독가능 매체를 포함하여, 프로그램가능 프로세서에 머신 명령들 및/또는 데이터를 제공하는데 사용된 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스 (예를 들어, 자기 디스크, 광학 디스크, 메모리, 프로그램가능 로직 디바이스 (PLD)) 를 지칭한다. 용어 "머신 판독가능 신호" 는 프로그램가능 프로세서에 머신 명령들 및/또는 데이터를 제공하는데 사용된 임의의 신호를 지칭한다.
사용자와의 상호작용을 제공하기 위해, 여기에 설명된 시스템 및 기법은 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스 (예를 들어, 마우스 또는 트랙볼) 및 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스 (예를 들어, CRT (cathode ray tube) 또는 LCD (liquid crystal display) 를 갖는 컴퓨터 상에서 구현될 수 있다. 또한, 사용자와의 상호작용을 제공하기 위해 다른 종류의 디바이스들이 사용될 수 있다: 예를 들어, 사용자에게 제공되는 피드백이 임의의 형태의 감각 피드백 (예를 들어, 시각적 피드백, 청각적 피드백 또는 촉각적 피드백) 일 수 있고; 그리고 사용자로부터의 입력은 음향, 스피치 또는 촉각 입력을 포함하여 임의의 형태로 수신될 수 있다.
여기에 설명된 시스템들 및 기법들은 백-엔드 컴포넌트 (예를 들어, 데이터 서버로서) 를 포함하거나, 미들웨어 컴포넌트 (예를 들어, 애플리케이션 서버) 를 포함하거나, 프론트 엔드 컴포넌트 (예를 들어, 사용자가 여기서 설명된 기법 및 시스템의 구현과 상호작용할 수 있는 웹 브라우저 또는 그래픽 사용자 인터페이스를 갖는 클라이언트 디바이스 (130)) 를 포함하거나, 또는 이러한 백 엔드, 미들웨어 또는 프론트 엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 디지털 데이터 통신 (예를 들어, 통신 네트워크) 의 임의의 형태 또는 매체에 의해 상호접속될 수 있다. 통신 네트워크의 예는 로컬 영역 네트워크 ("LAN"), 광역 네트워크 ("WAN"), 피어 투 피어 네트워크 (애드-혹 또는 정적 멤버를 가짐), 그리드 컴퓨팅 인프라구조, 및 인터넷 (150) 을 포함한다.
컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 원격이고 통상적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 개개의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다.
몇몇 구현들이 위에서 상세히 설명되었지만, 다른 수정들이 가능하다. 또한, 도면에 도시된 로직 플로우는 바람직한 결과를 달성하기 위해 순차적 순서, 또는 나타낸 특정 순서를 요구하지 않는다. 다른 단계들이 제공될 수도 있고, 또는 단계들이 설명된 플로우로부터 제거될 수도 있으며, 다른 컴포넌트들이 설명된 시스템에 부가되거나 이로부터 제거될 수도 있다. 따라서, 다음의 청구항들의 범위 내에서 다른 구현들이 있다.
Claims (20)
- 데이터 프로세싱 장치에 의해 수행되는 방법으로서,
복수의 데이터 레코드들을 포함하는 데이터 스트림을 취출하는 단계;
미리결정된 사이즈 용량의 복수의 레코드 패킷들을 형성하기 위해 상기 데이터 스트림의 상기 복수의 데이터 레코드들을 집성하는 단계로서, 상기 미리결정된 사이즈 용량은 상기 데이터 프로세싱 장치와 연관된 캐시 메모리의 메모리 사이즈에 응답하여 결정되는, 상기 복수의 데이터 레코드들을 집성하는 단계; 및
상기 복수의 레코드 패킷들의 개개의 레코드 패킷들을 상기 데이터 프로세싱 장치의 하나 이상의 프로세싱 동작들과 연관된 복수의 스레드들의 개개의 스레드들로 전송하는 단계를 포함하는, 데이터 프로세싱 장치에 의해 수행되는 방법. - 제 1 항에 있어서,
상기 하나 이상의 프로세싱 동작들은 상기 데이터 프로세싱 장치 상에서 실행하는 데이터 분석 워크플로우와 연관되는, 데이터 프로세싱 장치에 의해 수행되는 방법. - 제 2 항에 있어서,
상기 복수의 레코드 패킷들에 대한 대응 데이터 분석 기능을 선형 순서로 수행하기 위해 상기 하나 이상의 프로세싱 동작들의 각각을 실행하는 단계를 더 포함하고, 상기 선형 순서는 상기 데이터 분석 워크플로우에서 설정된 동작 시퀀스에 따르는, 데이터 프로세싱 장치에 의해 수행되는 방법. - 제 3 항에 있어서,
상기 하나 이상의 프로세싱 동작들의 각각을 실행하는 단계는 상기 데이터 프로세싱 장치와 연관된 복수의 프로세서들 중 개개의 프로세서 상에서 각 개개의 스레드를 실행함으로써 수행되는 병렬 프로세싱을 포함하는, 데이터 프로세싱 장치에 의해 수행되는 방법. - 제 1 항에 있어서,
상기 데이터 프로세싱 장치와 연관된 상기 캐시 메모리의 메모리 사이즈는 상기 프로세싱 장치의 오퍼레이팅 시스템 또는 중앙 프로세싱 유닛 (CPU) 으로부터 동적으로 결정되는, 데이터 프로세싱 장치에 의해 수행되는 방법. - 제 1 항에 있어서,
상기 미리결정된 사이즈 용량은 상기 캐시 메모리의 메모리 사이즈의 차수인, 데이터 프로세싱 장치에 의해 수행되는 방법. - 제 1 항에 있어서,
레코드 패킷으로 집성된 데이터 레코드들의 수는 상기 복수의 레코드 패킷들의 각각에 대해 결정된 변수이고 상기 미리결정된 사이즈 용량을 초과하지 않는, 데이터 프로세싱 장치에 의해 수행되는 방법. - 제 1 항에 있어서,
상기 집성은 상기 데이터 스트림을 전부 취출하면 수행되는, 데이터 프로세싱 장치에 의해 수행되는 방법. - 제 1 항에 있어서,
상기 집성은 상기 데이터 스트림을 취출하는 것과 병렬로 수행되는, 데이터 프로세싱 장치에 의해 수행되는 방법. - 제 1 항에 있어서,
상기 복수의 레코드 패킷들의 2 이상의 레코드 패킷들과 연관된 데이터 레코드들을, 상기 2 이상의 레코드 패킷들이 미리결정된 최소 용량보다 적은 데이터 레코드들의 수를 갖는다고 결정하면, 부가 레코드 패킷으로 재집성하는 단계를 더 포함하는, 데이터 프로세싱 장치에 의해 수행되는 방법. - 데이터 프로세싱 장치로서,
실행가능한 컴퓨터 프로그램 코드를 저장하는 비일시적 메모리; 및
캐시 메모리를 갖고 상기 메모리에 통신가능하게 커플링된 복수의 컴퓨터 프로세서들을 포함하고,
상기 컴퓨터 프로세서들은,
복수의 데이터 레코드들을 포함하는 데이터 스트림을 취출하는 것;
미리결정된 사이즈 용량의 복수의 레코드 패킷들을 형성하기 위해 상기 데이터 스트림의 상기 복수의 데이터 레코드들을 집성하는 것으로서, 상기 미리결정된 사이즈 용량은 상기 캐시 메모리의 메모리 사이즈에 응답하여 결정되는, 상기 복수의 데이터 레코드들을 집성하는 것; 및
상기 복수의 레코드 패킷들의 개개의 레코드 패킷들을 상기 복수의 프로세서들의 하나 이상의 프로세싱 동작들과 연관된 복수의 스레드들의 개개의 스레드들로 전송하는 것
을 포함하는 동작들을 수행하도록 상기 컴퓨터 프로그램 코드를 실행하는, 데이터 프로세싱 장치. - 제 11 항에 있어서,
상기 하나 이상의 프로세싱 동작들은 상기 데이터 프로세싱 장치 상에서 실행하는 데이터 분석 워크플로우와 연관되는, 데이터 프로세싱 장치. - 제 12 항에 있어서,
상기 동작들은,
상기 복수의 레코드 패킷들에 대한 대응 데이터 분석 기능을 선형 순서로 수행하기 위해 상기 하나 이상의 프로세싱 동작들의 각각을 실행하는 것을 더 포함하고, 상기 선형 순서는 상기 데이터 분석 워크플로우에서 설정된 동작 시퀀스에 따르는, 데이터 프로세싱 장치. - 제 13 항에 있어서,
상기 하나 이상의 프로세싱 동작들의 각각을 실행하는 것은 상기 복수의 프로세서들 중 개개의 프로세서 상에서 각 개개의 스레드를 실행함으로써 수행되는 병렬 프로세싱을 포함하는, 데이터 프로세싱 장치. - 제 11 항에 있어서,
상기 미리결정된 사이즈 용량은 상기 캐시 메모리의 메모리 사이즈의 차수인, 데이터 프로세싱 장치. - 캐시 메모리를 갖는 복수의 컴퓨터 프로세서들을 사용하여 동작들을 수행하도록 실행가능한 컴퓨터 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 메모리로서,
상기 동작들은,
복수의 데이터 레코드들을 포함하는 데이터 스트림을 취출하는 것;
미리결정된 사이즈 용량의 복수의 레코드 패킷들을 형성하기 위해 상기 데이터 스트림의 상기 복수의 데이터 레코드들을 집성하는 것으로서, 상기 미리결정된 사이즈 용량은 상기 캐시 메모리의 메모리 사이즈에 응답하여 결정되는, 상기 복수의 데이터 레코드들을 집성하는 것; 및
상기 복수의 레코드 패킷들의 개개의 레코드 패킷들을 상기 복수의 프로세서들의 하나 이상의 프로세싱 동작들과 연관된 복수의 스레드들의 개개의 스레드들로 전송하는 것
을 포함하는, 비일시적 컴퓨터 판독가능 메모리. - 제 16 항에 있어서,
상기 하나 이상의 프로세싱 동작들은 상기 복수의 프로세서들 상에서 실행하는 데이터 분석 워크플로우와 연관되는, 비일시적 컴퓨터 판독가능 메모리. - 제 17 항에 있어서,
상기 동작들은,
상기 복수의 레코드 패킷들에 대한 대응 데이터 분석 기능을 선형 순서로 수행하기 위해 상기 하나 이상의 프로세싱 동작들의 각각을 실행하는 것을 더 포함하고, 상기 선형 순서는 상기 데이터 분석 워크플로우에서 설정된 동작 시퀀스에 따르는, 비일시적 컴퓨터 판독가능 메모리. - 제 18 항에 있어서,
상기 하나 이상의 프로세싱 동작들의 각각을 실행하는 것은 상기 복수의 프로세서들 중 개개의 프로세서 상에서 각 개개의 스레드를 실행함으로써 수행되는 병렬 프로세싱을 포함하는, 비일시적 컴퓨터 판독가능 메모리. - 제 16 항에 있어서,
상기 미리결정된 사이즈 용량은 상기 캐시 메모리의 메모리 사이즈의 차수인, 비일시적 컴퓨터 판독가능 메모리.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/595,880 | 2017-05-15 | ||
US15/595,880 US20180330288A1 (en) | 2017-05-15 | 2017-05-15 | Method of data aggregation for cache optimization and efficient processing |
PCT/US2018/032557 WO2018213184A1 (en) | 2017-05-15 | 2018-05-14 | Method of data aggregation for cache optimization and efficient processing |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200029387A true KR20200029387A (ko) | 2020-03-18 |
Family
ID=64097311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197034449A KR20200029387A (ko) | 2017-05-15 | 2018-05-14 | 캐시 최적화 및 효율적인 프로세싱을 위한 데이터 집성 방법 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20180330288A1 (ko) |
EP (1) | EP3625688A4 (ko) |
JP (1) | JP7038740B2 (ko) |
KR (1) | KR20200029387A (ko) |
CN (1) | CN110914812A (ko) |
AU (1) | AU2018268991B2 (ko) |
CA (1) | CA3063731A1 (ko) |
SG (1) | SG11201909732QA (ko) |
WO (1) | WO2018213184A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022124732A1 (ko) * | 2020-12-11 | 2022-06-16 | 삼성전자 주식회사 | 패킷을 처리하기 위한 upf의 전자 장치 및 그의 동작 방법 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831485B1 (en) * | 2017-09-01 | 2020-11-10 | Workday, Inc. | Flexible modular pipelined analytics |
US10649812B1 (en) | 2017-09-01 | 2020-05-12 | Workday, Inc. | Computation using tenant and commingling processors |
US10715459B2 (en) * | 2017-10-27 | 2020-07-14 | Salesforce.Com, Inc. | Orchestration in a multi-layer network |
GB2575292B (en) * | 2018-07-04 | 2020-07-08 | Graphcore Ltd | Code Compilation for Scaling Accelerators |
CN113114787A (zh) * | 2020-11-11 | 2021-07-13 | 周金华 | 基于数字化和云计算的业务资源共享方法及云服务器 |
CN113176911B (zh) * | 2021-04-29 | 2024-07-12 | 上海阵量智能科技有限公司 | 一种配置方法、数据处理方法、芯片和电子设备 |
US11762874B2 (en) * | 2021-07-28 | 2023-09-19 | Alteryx, Inc. | Interactive workflow for data analytics |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
US6564274B1 (en) * | 1999-12-17 | 2003-05-13 | Omnicluster Technologies, Inc. | Modular architecture for small computer networks |
US20080120592A1 (en) * | 2006-10-31 | 2008-05-22 | Tanguay Donald O | Middleware framework |
US9331919B2 (en) * | 2007-11-30 | 2016-05-03 | Solarwinds Worldwide, Llc | Method for summarizing flow information of network devices |
US9552299B2 (en) * | 2010-06-11 | 2017-01-24 | California Institute Of Technology | Systems and methods for rapid processing and storage of data |
US8762644B2 (en) * | 2010-10-15 | 2014-06-24 | Qualcomm Incorporated | Low-power audio decoding and playback using cached images |
EP2692092B1 (en) * | 2011-03-28 | 2014-12-17 | Citrix Systems Inc. | Systems and methods for tracking application layer flow via a multi-connection intermediary device |
US20130339473A1 (en) * | 2012-06-15 | 2013-12-19 | Zynga Inc. | Real time analytics via stream processing |
EP2946296A4 (en) * | 2013-01-17 | 2016-11-16 | Xockets Ip Llc | DELIBRATION PROCESSOR MODULES FOR CONNECTING TO A SYSTEM MEMORY |
US9600550B2 (en) * | 2013-03-15 | 2017-03-21 | Uda, Llc | Optimization for real-time, parallel execution of models for extracting high-value information from data streams |
JP2015052977A (ja) * | 2013-09-09 | 2015-03-19 | 日本電信電話株式会社 | 負荷分散装置、負荷分散方法および負荷分散プログラム |
US10635644B2 (en) * | 2013-11-11 | 2020-04-28 | Amazon Technologies, Inc. | Partition-based data stream processing framework |
US10069766B2 (en) * | 2015-07-07 | 2018-09-04 | TransferSoft, Inc. | Accelerated data transfer using thread pool for parallel operations |
US10198298B2 (en) * | 2015-09-16 | 2019-02-05 | Salesforce.Com, Inc. | Handling multiple task sequences in a stream processing framework |
-
2017
- 2017-05-15 US US15/595,880 patent/US20180330288A1/en not_active Abandoned
-
2018
- 2018-05-14 KR KR1020197034449A patent/KR20200029387A/ko not_active Application Discontinuation
- 2018-05-14 JP JP2019563891A patent/JP7038740B2/ja active Active
- 2018-05-14 CN CN201880032232.1A patent/CN110914812A/zh active Pending
- 2018-05-14 EP EP18803151.2A patent/EP3625688A4/en not_active Withdrawn
- 2018-05-14 SG SG11201909732Q patent/SG11201909732QA/en unknown
- 2018-05-14 WO PCT/US2018/032557 patent/WO2018213184A1/en unknown
- 2018-05-14 AU AU2018268991A patent/AU2018268991B2/en active Active
- 2018-05-14 CA CA3063731A patent/CA3063731A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022124732A1 (ko) * | 2020-12-11 | 2022-06-16 | 삼성전자 주식회사 | 패킷을 처리하기 위한 upf의 전자 장치 및 그의 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
AU2018268991A1 (en) | 2019-10-31 |
JP7038740B2 (ja) | 2022-03-18 |
JP2020521238A (ja) | 2020-07-16 |
AU2018268991B2 (en) | 2020-10-15 |
EP3625688A1 (en) | 2020-03-25 |
US20180330288A1 (en) | 2018-11-15 |
CN110914812A (zh) | 2020-03-24 |
EP3625688A4 (en) | 2020-12-30 |
WO2018213184A1 (en) | 2018-11-22 |
SG11201909732QA (en) | 2019-11-28 |
CA3063731A1 (en) | 2018-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2018268991B2 (en) | Method of data aggregation for cache optimization and efficient processing | |
US11334524B2 (en) | Performing hash joins using parallel processing | |
US10447772B2 (en) | Managed function execution for processing data streams in real time | |
US20150379425A1 (en) | Consistent filtering of machine learning data | |
CN111368520A (zh) | 一种电子表格的编辑方法及设备 | |
US20160196564A1 (en) | Systems and methods for analyzing consumer sentiment with social perspective insight | |
US9986018B2 (en) | Method and system for a scheduled map executor | |
US10326824B2 (en) | Method and system for iterative pipeline | |
US11042530B2 (en) | Data processing with nullable schema information | |
US10275488B1 (en) | Incremental covariance calculation for big data or streamed data using components | |
JP2023544904A (ja) | 機械学習パイプラインの分散型リソースアウェアトレーニング | |
US10394809B1 (en) | Incremental variance and/or standard deviation calculation for big data or streamed data using components | |
US20240176732A1 (en) | Advanced application of model operations in energy | |
US10282445B1 (en) | Incremental kurtosis calculation for big data or streamed data using components | |
US10339136B1 (en) | Incremental skewness calculation for big data or streamed data using components | |
Singh et al. | MCC and Big Data Integration for Various Technological Frameworks | |
Tang et al. | Network-based inference algorithm on hadoop | |
Selvi et al. | An improved Hadoop performance model with automated resource provisioning and scalable data chunk similarity compression within constrained deadline |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |