KR20200051836A - 순차적 데이터 블록들의 비동기적 프로세싱 - Google Patents

순차적 데이터 블록들의 비동기적 프로세싱 Download PDF

Info

Publication number
KR20200051836A
KR20200051836A KR1020207012711A KR20207012711A KR20200051836A KR 20200051836 A KR20200051836 A KR 20200051836A KR 1020207012711 A KR1020207012711 A KR 1020207012711A KR 20207012711 A KR20207012711 A KR 20207012711A KR 20200051836 A KR20200051836 A KR 20200051836A
Authority
KR
South Korea
Prior art keywords
data
block
data block
marker location
record
Prior art date
Application number
KR1020207012711A
Other languages
English (en)
Other versions
KR102211613B1 (ko
Inventor
에드워드 피 주니어 하딩
아담 디 라일리
크리스토퍼 에이치 킹슬리
Original Assignee
알테릭스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 알테릭스 인코포레이티드 filed Critical 알테릭스 인코포레이티드
Publication of KR20200051836A publication Critical patent/KR20200051836A/ko
Application granted granted Critical
Publication of KR102211613B1 publication Critical patent/KR102211613B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

데이터 분석 시스템은 복수의 순차적 데이터 블록들을 블록 캐시에 저장한다. 각각의 데이터 블록은 하나 이상의 데이터 레코드들을 포함한다. 데이터 레코드의 각각의 데이터 레코드는 하나 이상의 값들 및 데이터 레코드의 끝을 마킹하는 레코드 마커를 포함한다. 데이터 분석 시스템은 블록 캐시에서의 데이터 블록을 워커 스레드에 할당한다. 워커 스레드는, 데이터 블록 내에 포함된 하나 이상의 데이터 레코드들을 식별하기 위해 데이터 블록을 파싱한다. 데이터 분석 시스템은 데이터 블록이 정확하게 파싱되었는지 여부를 결정한다. 데이터 블록이 정확하게 파싱되었다고 결정하는 것에 응답하여, 데이터 분석 시스템은 데이터 블록 내에 포함된 하나 이상의 데이터 레코드들을 데이터 분석 워크플로우에 제공한다.

Description

순차적 데이터 블록들의 비동기적 프로세싱
기술 분야
설명되는 실시형태들은 일반적으로 컴퓨터 시스템에서 데이터를 프로세싱하는 것에 관한 것이고, 특히, 저장 디바이스로부터 취출된 데이터의 블록들을 비동기적으로 프로세싱하는 것에 관한 것이다.
관련 기술의 설명
데이터 분석은 큰 데이터 세트들로부터 비즈니스 값을 갖는 정보를 추출하는 것을 수반한다. 예를 들어, 소기업은 외부 데이터 제공자, 내부 데이터 소스 (예를 들어, 로컬 컴퓨터 상의 파일), 빅 데이터 스토어, 및 클라우드 기반 데이터 (예를 들어, 소셜 미디어 정보) 와 같은 다양한 소스로부터 방대한 양의 데이터를 게더링, 프로세싱 및 분석하기 위해 전용 컴퓨팅 및 인적 리소스를 채용하는 제 3 자 데이터 분석 환경을 활용할 수도 있다. 유용한 정량적 및 정성적 정보를 추출하는 방식으로, 데이터 분석에 사용되는 바와 같은, 이러한 대규모 데이터 세트들을 프로세싱하는 것은 통상적으로 강력한 컴퓨팅 플랫폼들 상에서 구현되는 복잡한 소프트웨어 툴들을 필요로 한다.
또한, 상이한 데이터 소스들로부터의 대규모 데이터 세트들을 액세스, 프로세싱 및 분석하기 위해 효율적인 데이터 프로세싱 기법들이 필요하다. 그렇지 않으면, 성능 병목 현상이 발생하여 데이터 분석 플랫폼의 기능을 방해하고 데이터의 프로세싱을 지연시키며, 데이터로부터 추출된 정보의 품질을 떨어뜨릴 수 있다. 예를 들어, 데이터 분석 시스템 내로의 입력을 위해 데이터 레코드들이 프로세싱되는 스루풋 (throughput) 은 중요한 고려사항이다. 데이터 레코드들이 느리게 프로세싱되는 경우에, 데이터 레코드들을 소비하는 데이터 분석 플랫폼의 부분들은 레코드들을 기다릴 필요가 있을 수도 있고, 이는 플랫폼의 스루풋의 지연들을 초래한다.
요약
상기 및 다른 문제점들은 데이터 분석 시스템에서 데이터 블록들을 프로세싱하기 위한 방법, 컴퓨터-구현되는 데이터 분석 시스템, 및 컴퓨터-판독가능 메모리에 의해 해결된다. 방법의 일 실시형태는 복수의 순차적 데이터 블록들 (sequential data blocks) 을 블록 캐시 (block cache) 에 저장하는 것을 포함한다. 각각의 데이터 블록은 하나 이상의 데이터 레코드들을 포함한다. 각각의 데이터 레코드는 하나 이상의 값들 및 데이터 레코드의 끝을 마킹하는 레코드 마커 (record marker) 를 포함한다. 방법은 추가로, 블록 캐시에서의 데이터 블록을 워커 스레드 (worker thread) 에 할당하는 것을 포함한다. 방법은 추가로, 워커 스레드에 의해, 데이터 블록 내에 포함된 하나 이상의 데이터 레코드들을 식별하기 위해 데이터 블록을 파싱 (parsing) 하는 것을 포함한다. 방법은 추가로, 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 것을 포함한다. 방법은 또한, 데이터 블록이 정확하게 파싱되었다고 결정하는 것에 응답하여, 데이터 블록 내에 포함된 하나 이상의 데이터 레코드들을 데이터 분석 시스템 상에서 실행되는 데이터 분석 워크플로우에 제공하는 것을 포함한다.
컴퓨터 구현되는 데이터 분석 시스템의 일 실시형태는 컴퓨터 프로그램 명령들을 실행하기 위한 컴퓨터 프로세서를 포함한다. 그 시스템은 또한, 동작들을 수행하도록 컴퓨터 프로세서에 의해 실행가능한 컴퓨터 프로그램 명령들을 저장하는 비일시적 (non-transitory) 컴퓨터 판독가능 메모리를 포함한다. 그 동작들은 복수의 순차적 데이터 블록들을 블록 캐시에 저장하는 것을 포함한다. 각각의 데이터 블록은 하나 이상의 데이터 레코드들을 포함한다. 각각의 데이터 레코드는 하나 이상의 값들 및 데이터 레코드의 끝을 마킹하는 레코드 마커를 포함한다. 그 동작들은 추가로, 블록 캐시에서의 데이터 블록을 워커 스레드에 할당하는 것을 포함한다. 동작들은 추가로, 워커 스레드에 의해, 데이터 블록 내에 포함된 하나 이상의 데이터 레코드들을 식별하기 위해 데이터 블록을 파싱하는 것을 포함한다. 동작들 추가로, 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 것을 포함한다. 동작들은 또한, 데이터 블록이 정확하게 파싱되었다고 결정하는 것에 응답하여, 데이터 블록 내에 포함된 하나 이상의 데이터 레코드들을 데이터 분석 시스템 상에서 실행되는 데이터 분석 워크플로우에 제공하는 것을 포함한다.
비일시적 컴퓨터 판독가능 메모리의 일 실시형태는 실행가능 컴퓨터 프로그램 명령들을 저장한다. 그 명령들은 동작들을 수행하도록 실행가능하다. 그 동작들은 복수의 순차적 데이터 블록들을 블록 캐시에 저장하는 것을 포함한다. 각각의 데이터 블록은 하나 이상의 데이터 레코드들을 포함한다. 각각의 데이터 레코드는 하나 이상의 값들 및 데이터 레코드의 끝을 마킹하는 레코드 마커를 포함한다. 그 동작들은 추가로, 블록 캐시에서의 데이터 블록을 워커 스레드에 할당하는 것을 포함한다. 동작들은 추가로, 워커 스레드에 의해, 데이터 블록 내에 포함된 하나 이상의 데이터 레코드들을 식별하기 위해 데이터 블록을 파싱하는 것을 포함한다. 동작들은 추가로, 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 것을 포함한다. 동작들은 또한, 데이터 블록이 정확하게 파싱되었다고 결정하는 것에 응답하여, 데이터 블록 내에 포함된 하나 이상의 데이터 레코드들을 데이터 분석 시스템 상에서 실행되는 데이터 분석 워크플로우에 제공하는 것을 포함한다.
도면들의 간단한 설명
도 1 은 하나의 실시형태에 따른, 데이터 분석 시스템을 포함하는 데이터 분석 환경을 나타내는 블록도이다.
도 2 는 하나의 실시형태들에 따른, 데이터를 프로세싱하기 위해 데이터 분석 시스템을 이용하여 형성된 워크플로우를 나타내는 블록도이다.
도 3 은 일 실시형태들에 따른, 도 1 의 데이터 분석 시스템으로서 사용하기 위한 통상적 컴퓨터 시스템의 기능도를 나타내는 하이-레벨 블록도이다.
도 4 는 하나의 실시형태에 따른, 데이터 분석 시스템의 데이터 분석 애플리케이션의 보다 상세한 모습을 나타내는 블록도이다.
도 5 는 하나의 실시형태에 따른, 데이터 분석 애플리케이션의 데이터 수신기 모듈의 보다 상세한 모습을 나타내는 블록도이다.
도 6 은 데이터 블록들과 데이터 레코드들 사이의 예시적인 관계를 나타내는 도이다.
도 7 은 하나의 실시형태에 따른, 데이터 소스로부터 수신된 데이터 블록들을 프로세싱하는 방법을 나타내는 플로우 차트이다.
도 8 은 하나의 실시형태에 따른, 데이터 블록들을 파싱하는 방법을 나타내는 플로우 차트이다.
도면들은 다양한 실시형태들을 오직 예시의 목적들을 위해 나타낸다. 당해 기술분야에서 통상의 지식을 가진 자 (이하, '통상의 기술자' 라 함) 는, 본 명세서에서 나타낸 구조들 및 방법들의 대안적인 실시형태들이 본 명세서에서 기술된 실시형태들의 원리들로부터 벗어남이 없이 채용될 수도 있음을 이하의 논의로부터 쉽게 인식할 것이다. 다양한 도면들에서 같은 참조 번호들 및 표기들은 같은 엘리먼트들을 나타낸다.
상세한 설명
도 1 은 하나의 실시형태에 따른, 데이터 분석 시스템 (110) 을 포함하는 데이터 분석 환경 (100) 을 나타내는 블록도이다. 환경 (100) 은 추가로, 네트워크 (130) 를 통해 데이터 분석 시스템 (110) 에 접속된 다수의 데이터 소스들 (120) 을 포함한다. 비록 도시된 환경 (100) 은 다수의 데이터 소스들 (120) 에 커플링된 오직 하나의 데이터 분석 시스템 (110) 을 포함하지만, 실시형태들은 다수의 데이터 분석 시스템들 및 단일의 데이터 소스를 가질 수 있다.
데이터 소스들 (120) 은 데이터 분석 시스템 (110) 에 전자 데이터를 제공한다. 데이터 소스 (120) 는 하드 디스크 드라이브 (HDD) 또는 솔리드-스테이트 드라이브 (SSD) 와 같은 저장 디바이스, 다수의 저장 디바이스들에 대한 액세스를 관리 및 제공하는 컴퓨터, 저장 영역 네트워크 (SAN), 데이터베이스, 또는 클라우드 저장 시스템일 수도 있다. 데이터 소스 (120) 는 또한, 다른 소스로부터 데이터를 취출 (retrieve) 할 수 있는 컴퓨터 시스템일 수도 있다. 데이터 소스들 (120) 은 데이터 분석 시스템 (110) 으로부터 원격일 수도 있고, 네트워크 (130) 를 통해 데이터를 제공할 수도 있다. 또한, 일부 또는 모든 데이터 소스들 (120) 은 데이터 분석 시스템에 직접 커플링될 수도 있고, 네트워크 (130) 를 통해 데이트를 패싱함이 없이 데이터를 제공할 수도 있다.
데이터 소스들 (120) 에 의해 제공된 데이터는 통상적으로 데이터 레코드들로 조직되고, 각각이 데이터 레코드는 하나 이상의 값들을 포함한다. 예를 들어, 데이터 소스 (120) 에 의해 제공된 데이터 레코드는 콤마-분리된 값들의 시리즈들을 포함할 수도 있다. 데이터는 데이터 분석 시스템을 이용하는 기업에 관한 정보를 기술한다. 예를 들어, 데이터 소스 (120) 로부터의 데이터는 웹사이트들 상에서 액세스가능한 콘텐츠와의 및/또는 소셜 미디어 애플리케이션들과의 컴퓨터-기반 상호작용들 (예컨대, 트래킹 데이터 클릭) 을 기술할 수 있다.
데이터 분석 시스템 (110) 은 대량의 데이터를 프로세싱 및 분석하기 위해 활용되는 컴퓨터-기반 시스템이다. 데이터는 네트워크 (130) 를 통해 다수의 데이터 소스들 (120) 로부터 수집되고, 게더링되고, 또는 그 외에 액세스된다. 데이터 분석 시스템 (110) 은 아주 다양한 데이터 소스들로부터 데이터를 액세스, 준비, 블렌딩 및 분석하는데 채용되는 스케일러블 (scalable) 소프트웨어 툴들 및 하드웨어 리소스들을 구현할 수 있다. 실례로, 데이터 분석 시스템 (110) 은 데이터 집약적 프로세스들 및 워크플로우들의 실행을 지원한다. 데이터 분석 시스템 (110) 은 본 명세서에 설명된 비동기적 데이터 프로세싱 기법들을 포함하는 데이터 분석 기능들을 구현하기 위해 사용되는 컴퓨팅 디바이스일 수 있다.
데이터 분석 시스템 (110) 은, 데이터 분석 애플리케이션 (140) 으로서 도 1 에 도시된, 하나 이상의 소프트웨어 애플리케이션들을 지원하도록 구성될 수 있다. 데이터 분석 애플리케이션 (140) 은 데이터 소스들 (120) 중 하나 이상으로부터 획득된 대량의 데이터를 프로세싱하고 분석한다. 일부 경우들에서, 데이터 분석 애플리케이션 (140) 은 다중 엔드 사용자들에게 데이터 분석 툴들 및 매크로들에 대한 네트워크, 또는 클라우드-기반 액세스를 지원하는 소프트웨어를 제공한다. 일례로서, 데이터 분석 애플리케이션 (140) 은 사용자들이 모바일 애플리케이션 스토어 또는 다른 클라우드 기반 서비스와 유사한 방식으로 분석을 공유, 브라우징 및 소비할 수 있도록 한다. 분석 데이터, 매크로들 및 워크플로우들은 예를 들어 데이터 분석 시스템 (110) 의 다른 사용자들에 의해 액세스될 수 있는, 더 작은 규모 및 맞춤형 (customizable) 분석 애플리케이션 (즉, 앱) 으로서 패키징되고 실행될 수 있다. 일부 경우들에서, 공개된 분석 앱들에 대한 액세스는, 즉 액세스를 승인 또는 철회하는, 데이터 분석 시스템 (110) 에 의해 관리됨으로써, 액세스 제어 및 보안 능력들을 제공할 수 있다. 데이터 분석 애플리케이션 (140) 은 생성, 배치, 공개, 반복, 업데이트 등과 같은 분석 앱들과 연관된 기능들을 수행할 수 있다. 추가적으로, 데이터 분석 애플리케이션 (140) 은 분석 결과들에 대한 액세스, 준비, 블렌드, 분석 및 출력하기 위한 능력과 같은, 데이터 분석에 수반되는 다양한 스테이지들에서 수행된 기능들을 지원할 수 있다.
데이터 분석 애플리케이션 (140) 은 또한, 시각적 그래픽 사용자 인터페이스 (GUI) 를 통해, 반복가능한 워크플로우들을 설계 및 실행하기 위해 소프트웨어 툴을 지원할 수 있다. 일례로서, 데이터 분석 애플리케이션 (140) 과 연관된 GUI 는 데이터 블렌딩, 데이터 프로세싱 및 어드밴스드 데이터 분석을 위한 드래그 앤 드롭 (drag-and-drop) 워크플로우 환경을 제공한다. 더욱이, 워크플로우는 특정 프로세싱 동작들 또는 데이터 분석 기능들을 수행하는 일련의 데이터 프로세싱 툴들을 포함할 수 있다. 워크플로우의 부분인 각 툴은 그 툴에 특정적인 데이터에 관련된 기능을 수행한다. 일례로서, 워크플로우는 입력/출력; 준비; 조인; 예측적; 공간적; 조사; 및 파싱 및 변환 동작들 중 하나 이상을 포함하는 다양한 데이터 분석 기능들을 구현하는 툴들을 포함할 수 있다. 워크플로우에 관한 보다 상세한 내용들은 도 2 와 함께 설명된다.
데이터 분석 애플리케이션 (140) 은 데이터 소스들 (120) 로부터 데이터의 블록들을 판독한다. 예를 들어, 데이터 분석 애플리케이션 (140) 은 SSD 로부터 데이터의 블록들을 판독할 수도 있다. 데이터 분석 애플리케이션 (140) 은 그 안에 포함된 데이터 레코드들을 추출하기 위해 각각의 데이터 블록을 프로세싱한다. 이들 데이터 레코드들은 데이터 분석 애플리케이션 (140) 에 의해 구현되는 데이터 분석 워크플로우에 의해 프로세싱된다.
하나의 실시형태에서, 데이터 분석 애플리케이션 (140) 은 데이터 소스 (120) 로부터 수신된 데이터의 다수의 블록들을 비동기적으로 프로세싱한다. 데이터 분석 애플리케이션 (140) 은 데이터 레코드들을 생성하기 위해 데이터 블록들을 동시에 프로세싱하기 위해 병렬로 실행되는 다중 워커 스레드들을 사용한다. 각각의 데이터 블록은 통상적으로 다수의 데이터 레코드들을 포함하고, 그 데이터 레코드들의 경계들은 종종 데이터 블록들의 경계들과 정렬되지 않는다. 그리하여, 데이터 레코드는 2 개의 인접하는 블록들에 걸칠 수도 있다. 더욱이, 스레드들은 데이터 블록들을 순서 외로 프로세싱할 수 있고, 상이한 스레드들이 인접하는 블록들을 프로세싱할 수도 있다.
데이터 분석 애플리케이션 (140) 은 특정 데이터 레코드들을 추론적으로 (speculatively) 프로세싱하고 후속하여 그 프로세싱이 정확하였음을 확인함으로써 인접하는 블록들에 걸친 데이터 레코드들을 고려한다. 추론적 프로세싱 (speculative processing) 이 부정확한 경우에, 부정확하게 프로세싱되었던 데이터 레코드들의 부분들만이 재프로세싱될 필요가 있다. 이하에서 보다 자세하게 설명되는 이 기법은 데이터 분석 애플리케이션 (140) 이 높은 스루풋으로 데이터 블록들을 데이터 레코드들로 프로세싱하고 그 데이터 레코드들을 데이터 분석 워크플로우에 제공하도록 허용한다. 스루풋은, 다른 기법들을 이용하면 대략적으로 0.1 GB/sec 인 것에 비해, 하나의 실시형태에서 스루풋이 2.0 GB/sec 이다. 사실, 본 기법들은 통상적으로, 데이터 소스 (120) 가 데이터 블록들을 물리적으로 제공할 수 있는 레이트와 동일한 지속적인 데이터 전송을 지원할 수 있다. 본 기법은 데이터 분석 애플리케이션 (140) 으로 하여금, 데이터 블록들을 프로세싱함에 있어서 지연들로 인한 성능 불이익 없이 효율적으로 동작하도록 허용한다.
네트워크 (130) 는 데이터 분석 시스템들 (110) 과 데이터 소스들 (120) 사이의 통신 경로들을 나타낸다. 하나의 실시형태에서, 네트워크 (130) 는 인터넷이고, 표준 통신 기술들 및/또는 프로토콜을 이용한다. 따라서, 네트워크 (130) 는 이더넷 802.11, WiMAX (worldwide interoperability for microwave access), 3G, 롱 텀 에볼루션 (LTE), DSL (digital subscriber line), ATM (asynchronous transfer mode), InfiniBand, PCI 익스프레스 어드밴스드 스위칭 (Express Advanced Switching) 등과 같은 기술들을 이용하는 링크들을 포함할 수 있다. 유사하게, 네트워크 (130) 상에서 사용되는 네트워킹 프로토콜들은 MPLS (multiprotocol label switching), TCP/IP (transmission control protocol/Internet protocol), UDP (User Datagram Protocol), HTTP (hypertext transport protocol), SMTP (simple mail transfer protocol), FTP (file transfer protocol) 등을 포함할 수 있다.
네트워크 (130) 를 통해 교환되는 데이터는 HTML (hypertext markup language), XML (extensible markup language) 등을 포함하는 기술들 및/또는 포맷들을 이용하여 표현될 수 있다. 또한, 링크들의 전부 또는 일부는 SSL (secure sockets layer), TLS (transport layer security), VPNs (virtual private networks), IPsec (Internet Protocol security) 등과 같은 종래의 암호화 기술들을 이용하여 암호화될 수 있다. 다른 실시형태에서, 엔티티들은 상술된 것들 대신에 또는 추가하여, 맞춤형 및/또는 전용 데이터 통신 기술들을 이용할 수 있다.
도 2 는 하나의 실시형태들에 따른, 데이터를 프로세싱하기 위해 데이터 분석 시스템 (110) 을 이용하여 형성된 워크플로우 (200) 를 나타내는 블록도이다. 하나의 실시형태에서, 워크플로우 (200) 는 데이터 분석 시스템 (110) 의 GUI 에 의해 지원되는 시각적 워크플로우 환경을 이용하여 형성된다. 시각적 워크플로우 환경은 워크플로우를 설계하기 위해 소프트웨어 코드를 제공할 필요성을 없애고 워크플로우에 의해 구현될 복잡한 공식들을 식별할 필요성을 없애는 드래그 앤 드롭 툴들의 세트를 가능하게 한다. 다른 실시형태에서, 워크플로우 (200) 는 XML (Extensible Markup Language) 문서와 같은 문서에서 형성되고 기술된다. 워크플로우 (200) 는 데이터 분석 시스템 (110) 의 컴퓨터 디바이스에 의해 실행된다. 그러나, 다른 실시형태들에서, 워크플로우 (200) 는 데이터 분석 시스템 (110) 에 네트워크 (예컨대, 네트워크 (130)) 를 통해 통신가능하게 접속될 수도 있는 다른 컴퓨터 디바이스에 대해 전개된다.
워크플로우는 특정 프로세싱 동작들 또는 데이터 분석 기능들을 수행하는 일련의 툴들을 포함할 수 있다. 일반적인 예로서, 워크플로우의 툴들은 다음의 데이터 분석 기능들 중 하나 이상을 수행할 수 있다: 입력/출력; 준비; 조인; 예측적; 공간적; 조사; 그리고 파싱 및 변환 동작들. 워크플로우를 구현하는 것은 데이터 분석 프로세스를 정의, 실행 및 자동화하는 것을 수반할 수 있으며, 여기서, 데이터는 워크플로우에서 각각의 툴에 패스되고, 각각의 툴은 수신된 데이터에 대해 그것의 각각의 프로세싱 동작을 수행한다. 개별 레코드들의 집성된 그룹을 포함하는 패킷은 워크플로우의 툴들을 통해 전달될 수 있으며, 이는 개별 프로세싱 동작들이 데이터에 대해 보다 효율적으로 동작하도록 허용한다. 이러한 집성 (aggregation) 기법들은 대량의 데이터를 프로세싱하더라도, 워크플로우들을 전개하고 실행하는 속도를 증가시킬 수 있다. 워크플로우는 특정된 툴들의 동작 시퀀스를 특정하는, 반복가능한 일련의 동작들을 정의 또는 그렇지 않으면 구조화할 수 있다. 일부 경우들에서, 워크플로우에 포함된 툴들은 선형 순서로 수행된다. 다른 경우들에서, 다중 툴들이 병렬로 실행된다.
도시된 바와 같이, 도 2 의 워크플로우 (200) 는 입력 툴들 (205 및 206) 및 브라우즈 툴 (230) 로서 도시된 입력/출력 툴들을 포함한다. 입력 툴들 (205 및 206) 은 특정 데이터 소스들 (120) 로부터 레코드들을 액세스하도록 기능한다. 입력 툴들 (205 및 206) 은 워크플로우로 액세스된 레코드들을 가져오고 이 레코드들을 워크플로우 (200) 의 후속 툴들에 제공한다. 이 예에서, 입력 툴 (205) 은 액세스된 레코드들을 필터 툴 (210) 에 제공하고, 입력 툴 (206) 은 액세스된 레코드들을 선택 툴 (211) 에 제공한다. 브라우즈 툴 (230) 은 워크플로우 (200) 의 끝에 위치되고, 워크플로우 (200) 의 업스크림 툴들의 각각의 실행으로부터 초래되는 출력을 수신한다. 이 예에서 브라우즈 툴 (230) 은 워크플로우 (200) 의 끝에 위치되지만, 브라우즈 툴 (230) 은 워크플로우의 임의의 지점에 부가되어 워크플로우의 업스트림 툴들의 실행으로부터의 결과들을 검토 및 검증할 수 있다.
도 2 의 예로 계속하면, 워크플로우 (200) 는 필터 툴 (210), 선택 툴 (211), 공식 툴 (215) 및 샘플 툴 (212) 로서 나타낸 준비 툴들을 포함한다. 필터 툴 (210) 은 표현에 기초하여 레코드들을 질의하고 데이터를 2 개의 스트림들, 즉 표현을 만족시키는 레코드들을 포함하는 참 스트림과 표현을 만족시키지 않는 레코드들을 포함하는 거짓 스트림으로 분할한다. 선택 툴 (211) 은 필드들을 선택, 선택해제, 재정렬 및 이름변경하고, 필드 타입 또는 사이즈를 변경하며, 디스크립션을 할당하는데 사용될 수 있다. 공식 툴 (formula tool) (215) 은 광범위한 산출들 및/또는 동작들을 수행하기 위해 하나 이상의 표현들을 사용하여 필드들을 생성 또는 업데이트한다. 샘플 툴 (212) 은 레코드들의 수, 퍼센티지, 또는 랜덤 세트로 수신된 레코드들의 스트림을 제한한다. 워크플로우 (200) 는 또한 다중 데이터 소스를 블렌딩하는 조인 툴 (join tool) (220) 을 포함한다. 구체적으로, 조인 툴 (220) 은 공통 필드들 (또는 레코드 포지션) 에 기초하여 2 개의 입력 데이터 스트림들을 결합한다.
도 2 의 워크플로우 (200) 는 또한 추가 분석에 사용되는 포맷으로 데이터를 재구조화 및 재형상화할 수 있는 파싱 및 변환 툴인 요약 툴 (summarize tool) (225) 을 포함하는 것으로 나타나 있다. 요약 툴 (225) 은 또한 그룹핑 (grouping), 합산, 카운팅, 공간 프로세싱, 및 스트링 연접 (concatenation) 에 의해 데이터의 요약을 수행할 수 있다. 하나의 실시형태에서, 요약 툴 (225) 에 의해 생성된 출력은 산출(들)의 결과들을 포함한다.
일부 실시형태들에서, 워크플로우 (200) 의 실행은 모든 레코드들이 프로세싱되고 조인 툴 (220) 에 도달할 때까지, 입력 툴 (205) 로 하여금 레코드들이 필터 툴 (210) 및 공식 툴 (215) 을 통해 한번에 하나씩 패스하게 할 것이다. 그 후, 입력 툴 (206) 은 레코드들이 동일한 조인 툴 (220) 로 패스될 때까지, 선택 툴 (211) 및 샘플 툴 (212) 을 통해 한 번에 하나씩 레코드들을 패스하는 것을 시작할 것이다. 워크플로우 (200) 의 일부 개별 툴들은 마지막 데이터 블록을 프로세싱하거나 소트 (sort) 툴과 같은 컴퓨터 집약적 동작들을 다중 부분들로 나누면서 데이터 블록의 판독을 개시하는 것과 같은, 그것들 자신의 병렬 동작을 구현하기 위한 능력을 소유할 수 있다. 그러나, 일부 기존 워크플로우 기법들에서, 레코드들의 세트로부터의 각각의 레코드는, 프로세싱 동작을 수행하기 위해 다중 레코드들을 필요로 하는 워크플로우 툴 (예를 들어, 소트 툴, 조인 툴, 요약 툴 등) 에 도달할 때까지, 파이프 라인 방식으로, 한번에 하나의 레코드씩 워크플로우의 각각의 툴에 의해 개별적으로 프로세싱된다.
도 3 은 일 실시형태들에 따른, 도 1 의 데이터 분석 시스템 (110) 으로서 사용하기 위한 통상적 컴퓨터 시스템 (300) 의 기능도를 나타내는 하이-레벨 블록도이다. 컴퓨터 시스템 (300) 은 도 2 의 워크플로우를 구현하기 위해 데이터 분석 애플리케이션 (140) 을 실행할 수 있다.
예시된 컴퓨터 시스템은 칩셋 (304) 에 커플링된 적어도 하나의 프로세서 (302) 를 포함한다. 프로세서 (302) 는 동일한 다이 상에 다수의 프로세서 코어들을 포함할 수 있다. 칩셋 (304) 은 메모리 제어기 허브 (320) 및 입력/출력 (I/O) 제어기 허브 (322) 를 포함한다. 메모리 (306) 및 그래픽 어댑터 (312) 는 메모리 제어기 허브 (320) 에 커플링되고, 디스플레이 (318) 는 그래픽 어댑터 (312) 에 커플링된다. 저장 디바이스 (308), 키보드 (310), 포인팅 디바이스 (314), 및 네트워크 어댑터 (316) 가 I/O 제어기 허브 (322) 에 커플링될 수도 있다. 일부 다른 실시형태들에서, 컴퓨터 시스템 (300) 은 추가적인, 더 적은, 또는 상이한 컴포넌트들을 가질 수도 있고, 그 컴포넌트들은 상이하게 커플링될 수도 있다. 예를 들어, 컴퓨터 시스템 (300) 의 실시형태들은 디스플레이들 및/또는 키보드들이 없을 수도 있다. 또한, 컴퓨터 시스템 (300) 은 일부 실시형태들에서 랙-마운티드 블레이드 서버로서 또는 쿨라우드 서버 인스턴스로서 인스턴스화될 수도 있다.
메모리 (306) 는 프로세서 (302) 에 의해 사용되는 명령들 및 데이터를 유지한다. 일부 실시형태들에서, 메모리 (306) 는 랜덤-액세스 메모리이다. 저장 디바이스 (308) 는 비일시적 컴퓨터 판독가능 저장 매체이다. 저장 디바이스 (308) 는 HDD, SDD, 또는 다른 타입들의 비일시적 컴퓨터 판독가능 저장 매체일 수 있다. 데이터 분석 시스템 (110) 에 의해 프로세싱되고 분석되는 데이터는 메모리 (306) 및/또는 저장 디바이스 (308) 에 저장될 수 있다.
포인팅 디바이스 (314) 는 마우스, 트랙 볼, 또는 다른 타입들의 포인팅 디바이스일 수도 있고, 데이터를 컴퓨터 시스템 (300) 내로 입력하기 위해 키보드 (310) 와 조합하여 사용된다. 그래픽 어댑터 (312) 는 디스플레이 (318) 상에 이미지들 및 다른 정보를 디스플레이한다. 일부 실시형태들에서, 디스플레이 (318) 는 사용자 입력 및 선택들을 수신하기 위한 터치 스크린 능력을 포함한다. 네트워크 어댑터 (316) 는 컴퓨터 시스템 (300) 을 네트워크 (130) 에 커플링한다.
컴퓨터 시스템 (300) 은 본원에 기술된 기능성을 제공하기 위해 컴퓨터 모듈들을 실행하도록 적응된다. 본 명세서에서 사용된 바와 같이, "모듈 (module)" 이라는 용어는 특정 기능성을 제공하기 위한 컴퓨터 프로그램 명령들 및 다른 로직 (logic) 을 지칭한다. 모듈은 하드웨어, 펌웨어, 및/또는 소프트웨어에서 실현될 수 있다. 모듈은 하나 이상의 프로세스들을 포함할 수 있고, 및/또는, 프로세스의 오직 부분만에 의해 제공될 수 있다. 모듈은 통상적으로 저장 디바이스 (308) 상에 저장되고, 메모리 (306) 내로 로딩되며, 프로세서 (302) 에 의해 실행된다.
도 4 는 하나의 실시형태에 따른, 데이터 분석 시스템 (110) 의 데이터 분석 애플리케이션 (140) 의 보다 상세한 모습을 나타내는 블록도이다. 데이터 분석 애플리케이션 (140) 은 데이터 수신기 모듈 (410), 툴 모듈들 (420), 및 데이터 출력 모듈 (430) 을 포함한다. 통상의 기술자는, 다른 실시형태들은 본 명세서에서 기술된 것들과는 상이한 및/또는 다른 컴포넌트들을 가질 수 있고, 기능성들은 상이한 방식으로 컴포넌트들 사이에 분포될 수 있음을 인식할 것이다.
데이터 수신기 모듈 (410) 은 데이터 소스들 (120) 로부터 데이터를 수신한다. 하나의 실시형태에서, 데이터 수신기 모듈 (410) 은 데이터 소스로부터 데이터 블록들을 수신하고, 데이터 레코드들을 생성하기 위해 데이터 블록들을 파싱한다. 예를 들어, 데이터 수신기 모듈 (410) 은 SSD 로부터 판독된 데이터 블록들을 수신할 수도 있고, 여기서, 각각의 데이터 블록은 다수의 데이터 레코드들을 포함하며, 일부 데이터 레코드들은 다수의 데이터 블록들에 걸칠 수도 있다. 데이터 수신기 모듈 (410) 은 데이터 분석 애플리케이션 (140) 내의 다른 모듈들에 데이터 레코드들을 패스한다.
툴 모듈들 (420) 은 입력/출력; 준비; 조인; 예측적; 공간적; 조사; 및 파싱 및 변환 동작들 중 하나 이상을 포함하는 데이터 분석 기능들 또는 특정 프로세싱 동작들을 수행하는 데이터 프로세싱 툴들의 세트를 제공한다. 툴들은 데이터 수신기 모듈 (410) 에 의해 데이터 소스들 (120) 로부터 수신된 데이터 레코드들에 대해 동작한다. 툴 모듈들 (420) 은 도 2 와 함께 설명된 워크플로우 (200) 에 포함된 툴들을 제공한다.
데이터 출력 모듈 (430) 은 데이터 분석 애플리케이션 (140) 에 의해 수행되는 프로세싱의 결과들을 출력한다. 즉, 데이터 출력 모듈 (430) 은 워크플로우 (200) 의 실행에 의해 생성된 프로세싱된 데이터 레코드들을 수신하고, 그 데이터 레코드들이 다른 시스템들 및/또는 인간 검토자들에 대해 이용가능하게 만든다. 예를 들어, 데이터 출력 모듈 (430) 은 GUI 를 제공할 수도 있고, 그 GUI 에 의해, 기업과 연관된 인간 검토자는 기업과 연관된 데이터 레코드들을 프로세싱하는 것으로부터 발생하는 워크플로우 (200) 의 출력을 검토할 수 있다.
도 5 는 하나의 실시형태에 따른, 데이터 분석 애플리케이션 (140) 의 데이터 수신기 모듈 (410) 의 보다 상세한 모습을 나타내는 블록도이다. 데이터 수신기 모듈 (410) 은 파일 판독 모듈 (510), 블록 캐시 (520), 다중 워커 스레드들 (530), 파싱 상태 캐시 (540), 및 리포팅 모듈 (550) 을 포함한다. 통상의 기술자는, 다른 실시형태들은 본 명세서에서 기술된 것들과는 상이한 및/또는 다른 컴포넌트들을 가질 수 있고, 기능성들은 상이한 방식으로 컴포넌트들 사이에 분포될 수 있음을 인식할 것이다.
파일 판독 모듈 (510) 은 데이터 소스들 (120) 로부터의 데이터 블록들로 이루어진 파일들을 판독하고, 데이터 블록들의 프로세싱을 관리한다. 예를 들어, 파일 판독 모듈 (510) 은 SSD 로부터 하나 이상의 파일들을 판독할 수도 있다. 파일들은 순차적 데이터 블록들의 세트로서 데이터 소스 (120) 상에 저장된다. 블록들의 사이즈는 변화할 수도 있고, 하나의 실시형태에서, 256KB 이다. 파일 판독 모듈 (510) 은 파일의 특정 데이터 블록들에 대한 하나 이상의 입력/출력 (I/O) 요청들을 데이터 소스 (120) 에 전송함으로써 파일을 판독한다. 하나의 실시형태에서, 파일 판독 모듈 (510) 은 많은 별개의 I/O 요청들을 동시에 발행함으로써 순차적인 순서로 파일에서의 블록들의 전부를 요청하고, 각 요청은 특정 블록을 요청한다. 예를 들어, 파일 판독 모듈 (510) 은 파일의 처음 100 블록들에 대한 I/O 요청들의 배치 (batch) 를 동시에 발행하고, 제 1 배치에서의 요청들이 충족됨에 따라 다음 순차적 블록들에 대한 추가적인 요청들을 발행할 수도 있다. 비록 I/O 요청들이 순차적 순서로 블록들을 요청하지만, 데이터 소스 (120) 는 상이한 순서로 요청을 완성하고, 비순차적 블록들을 리턴할 수도 있다.
파일 판독 모듈 (510) 은 데이터 소스들 (120) 에 의해 리턴된 데이터 블록들을 블록 캐시 (520) 에 저장한다. 블록 캐시 (520) 는 워커 스레드들 (530) 에 의해 블록들이 프로세싱되는 동안 블록들을 저장한다. 하나의 실시형태에서, 블록 캐시 (520) 는 고정된 사이즈를 가지고, 따라서 고정된 수의 블록들을 유지한다. 또한, 파일 판독 모듈 (510) 은, (그것의 시퀀스 넘버에 의해 식별된) 주어진 블록이 블록 캐시에서 특정된 로케이션에 있도록 보장되도록 블록 캐시 (520) 를 관리한다. 이 포지션은 블록의 시퀀스 넘버 모듈로 (modulo) 블록 캐시 (520) 에서 유지될 수 있는 블록들의 수로서 계산된다.
블록 캐시 (520) 를 이러한 식으로 관리하는 것은 워커 스레드들 (530) 에 의한 블록들의 비동기식 병렬적 프로세싱 동안 발생할 수 있는 리소스 경합 (resource contention) 을 감소시킨다. 블록 캐시 (520) 가 고정된 사이즈이기 때문에, 블록은, 그것이 캐시에 있는 경우에, 알려진 로케이션에 있고, 캐시 상에서 글로벌 락 (global lock) 을 유지할 필요가 없다. 캐시에서의 각각의 블록은 다른 블록들에 대해 독립적으로 그 블록의 관리를 용이하게 하는 3 개의 원자적 변수들을 포함한다: 1) 그 블록을 참조하는 워커 스레드들의 수의 카운트; 2) 주어진 시간에서 그 캐시 로케이션에 의해 표현되는 블록의 시퀀스 넘버; 및 3) 블록이 위치되는 캐시 로케이션의 상태 (예컨대, 이용가능, 펜딩, 미사용, 할당해제). 이들 변수들은 캐시에서의 주어진 블록의 이용가능성이 락을 획득할 필요 없이 일정 시간 내에 결정되도록 허용한다.
파일 판독 모듈 (510) 은 블록 캐시 (520) 에서의 블록들을 프로세싱을 위해 워커 스레드들 (530) 에 패스한다. 다수의 독립적으로 실행되는 워커 스레드들 (530) 이 존재한다. 각 스레드는 프로세서 (302) 의 별개의 프로세서 코어 상에서 실행될 수도 있다. 워커 스레드들 (530) 은 블록 캐시 (520) 에서의 데이터 블록들을, 그 안에 포함된 데이터 레코드들을 추출하기 위해, 파싱한다.
워커 스레드들 (530) 은 한 번에 단일의 데이터 블록들을 파싱하고, 다중 스레드들은 다수의 블록들을 동시에 집합적으로 프로세싱한다. 주어진 스레드 (530) 는 파일 판독 모듈 (510) 에 의해 제공된 애플리케이션 프로그래밍 인터페이스 (API) 를 사용하여 "임의 블록 획득 (get any block)" 요청을 만듦으로써 블록 캐시 (530) 로부터 데이터 블록을 요청한다. 스레드 (530) 는 그 요청에 응답하여 블록 캐시 (520) 에서 블록 (동등하게, 블록에 대한 레퍼런스 또는 포인터) 을 수신한다. 이 API 호출에 응답하여 수신된 블록은 다른 스레드에 의해 프로세싱되지 않았던 것이다; 그 블록은 스레드에 의해 프로세싱된 이전 블록에 대해 반드시 순차적으로 관련될 필요는 없다. API 호출은 또한, 프로세싱을 위해 아무런 블록들도 이용가능하지 않음을 나타내는 메시지를 리턴할 수도 있다. 이 경우에, 스레드는 그것이 블록이 이용가능하게 되기를 기다리는 동안 다른 태스크들을 수행할 수도 있다.
워커 스레드 (530) 는 데이터 블록을, 데이터 레코드들, 및 그 안에 포함된 데이터 레코드들의 부분들을 식별하기 위해, 처음부터 끝까지 순차적으로 그 블록을 판독함으로써, 그 데이터 블록을 파싱한다. 하나의 실시형태에서, 각 데이터 레코드는 묘사된 데이터 값들의 세트를 포함하고, 레코드 마커에 의해 종결된다. 예를 들어, 데이터 레코드는 콤마-분리된 값 (CSV) 들의 세트를 포함할 수도 있다. 레코드 마커는, 라인 피드 문자 또는 라인 피드 문자가 뒤따르는 캐리지 리턴 문자와 같은, 레코드의 끝을 마킹하는 특별한 값 또는 값들이다. 따라서, 워커 스레드 (530) 는 레코드 마커 직후의 포지션에서 시작하여 다음 레코드 마커까지 확장하여 데이터 레코드를 파싱한다. 주어진 데이터 블록은 다수의 레코드들을 유지할 수도 있고, 데이터 레코드는 다수의 데이터 블록들에 걸칠 수도 있다.
파싱 상태 캐시 (540) 는 워커 스레드들 (530) 에 의해 파싱된 데이터 블록들을 기술하는 정보를 저장한다. 하나의 실시형태에서, 파싱 상태 캐시 (540) 는 워커 스레드들 (530) 에 의해 파싱되고 있는 데이터 블록들에 대응하는 데이터 오브젝트들을 유지한다. 데이터 오브젝트에서의 정보는 제 1 레코드 마커의 추정된 로케이션 및 연관된 데이터 블록에서의 제 1 레코드 마커의 진정한 로케이션, 및 블록 내에서 시작하는 파싱된 데이터 레코드들을 포함한다. 데이터 오브젝트에서의 정보는 또한, 연관된 데이터 블록이 정확하게 파싱되었는지 여부, 및 데이터 블록이 재파싱될 필요가 있는지 여부를 나타낼 수도 있다. 워커 스레드들 (530) 은 스레드들이 데이터 블록들을 파싱함에 따라 정보를 업데이트한다.
동작 시에, 워커 스레드 (530) 는 블록 캐시 (520) 로부터 데이터 블록을 획득하기 위해 파일 판독 모듈 (510) 에 대해 "임의 블록 획득" API 호출을 만든다. 워커 스레드 (530) 는 그 다음, 제 1 레코드 마커를 발견하기 위해서 데이터 블록을 순차적인 순서로 스캐닝한다. 워커 스레드 (530) 는 데이터 블록을 제 1 레코드 마커 직후의 데이터 레코드로 시작하여 끝까지 파싱한다. 워커 스레드 (530) 는 파싱 상태 캐시 (540) 에 연관된 오브젝트에서의 파싱된 데이터 레코드들을 저장한다. 워커 스레드 (530) 는 또한 파싱 상태 캐시 (540) 에서의 데이터 블록에서 발견된 제 1 레코드 마커의 로케이션을 레코딩한다.
이 레코딩된 로케이션은, 그 로케이션에서 끝나는 레코드에 대해 부분적 컨텍스트를 오직 갖는 워커 스레드로 인해 이 로케이션이 부정확하게 검출된 기회가 존재하기 때문에, 데이터 블록에서 "추정된 (estimated)" 제 1 레코드 마커인 것으로 말해진다. 예를 들어, 일부 CSV 파일들에서, 데이터는 따옴표들로 둘러싸일 수도 있다. 따옴표들로 둘러싸인 라인 피드 문자는 따라서, 레코드 마커가 아니라 레코드 내의 데이터이다. 레코드를 파싱하는 워커 스레드 (530) 는, 이전 레코드가 인용된 텍스트로 끝났는지 여부를 알지 못하고, 따라서, 라인 피드 문자를, 그 문자가 인용의 부분임에도 불구하고, 레코드 마커로서 부정확하게 파싱할 수도 있을 것이다.
일단 워커 스레드 (530) 가 데이터 블록의 끝까지 파싱하고 나면, 워커 스레드는 파일 판독 모듈 (510) 에 대해 "다음 블록 획득 (get next block)" API 호출을 만든다. 이 호출은 다음 순차적 데이터 블록, 즉, 워커 스레드 (530) 가 막 파싱했던 블록에 순차적으로 뒤이은 데이터 블록을 요청한다. 또한, "다음 블록 획득" API 호출은 워커 스레드가 파싱한 이전 블록을 해제한다.
워커 스레드 (530) 는 요청된 다음 순차적 데이터 블록을 수신하고, 이 블록을 시작부터 제 1 레코드 마커까지 파싱한다. 파싱된 데이터는 이전 데이터 블록의 끝에서 파싱된 데이터 레코드에 첨부되고 파싱 상태 캐시 (540) 에 저장된다. 또한, 워커 스레드 (530) 는 다음 순차적 블록에 대응하는 파싱 상태 캐시 오브젝트에서 제 1 레코드 마커의 로케이션을 레코딩한다. 이 로케이션은 블록에서의 제 1 레코드 마커의 진정한 로케이션으로서 파싱 상태 오브젝트에 레코딩된다. 즉, 그 로케이션은, 워커 스레드가 이 로케이션에서 끝나는 레코드에 대해 충분한 컨텍스트를 가지기 때문에, 정확한 것으로 알려져 있다.
하나의 실시형태에서, 워커 스레드 (530) 는, 진정한 제 1 레코드 마커 로케이션이 데이터 블록에 대한 (즉, 다음 순차적 데이터 블록에 대한) 추정된 제 1 레코드 마커 로케이션에 매칭하는지 여부를 결정한다. 로케이션들이 매칭하는 경우에는, 이것은, 추정된 제 1 레코드 마커 로케이션이 정확하고, 데이터 블록이 정확하게 파싱되었음을 의미한다. 이 경우에, 워커 스레드 (530) 는 블록이 정확하게 파싱되었음을 나타내는 표시를 블록에 대한 파싱 상태 캐시 오브젝트에 저장한다.
진정한 제 1 레코드 마커 로케이션이 추정된 제 1 레코드 마커 로케이션에 매칭하지 않는 경우에는, 이것은 데이터 블록이 정확하게 파싱되지 않았음을 의미한다. 이 경우에, 워커 스레드 (530) 는 블록이 부정확하게 파싱되었고 재파싱될 필요가 있음을 나타내는 표시를 블록에 대한 파싱 상태 캐시 오브젝트에 저장한다. 하나의 실시형태에서, 워커 스레드 (530) 는 데이터 블록을 다시 파싱될 필요가 있는 것으로서 플래깅 (flagging) 하는 API 호출을 파일 판독 모듈 (510) 에 대해 만든다. 파일 판독 모듈 (510) 은 그 다음, 정확한 제 1 레코드 마커 로케이션을 이용하여 데이터 블록을 파싱하기 위해 워커 스레드 (530) 를 할당할 수 있다.
파일 판독 모듈 (510) 은 워크플로우 (200) 의 툴 모듈들 (420) 에 대해 데이터 레코드들을 해제하기 위해 블록 캐시 (520) 및 파싱 상태 캐시 (540) 에서의 정보를 사용한다. 하나의 실시형태에서, 파일 판독 모듈 (510) 은, 일단 블록을 이용하는 어떠한 워커 스레드들도 존재하지 않고, 파일에서의 모든 이전 블록들이 해제되었으며, 파싱 상태 캐시 (540) 가 그 블록이 정확하게 파싱된 것을 나타내면, 블록 캐시 (520) 로부터 주어진 블록의 데이터 레코드들을 해제한다. 파일 판독 모듈 (510) 은 또한, 블록 캐시 (520) 로부터 데이터 블록을 동시에 해제한다. 파일 판독 모듈 (510) 은 따라서, 전체 파일을 가로질러서 이동하는 슬라이딩 윈도우가 워커 스레드들 (530) 에 대해 (파일 판독 모듈 I/O 요청들을 통해) 블록들을 프리로딩하고 일단 블록들의 프로세싱이 완료되면 그 블록들을 놓아주므로, 필수적으로 블록 캐시 (520) 를 사용한다. 파일 판독 모듈 (510) 은 많은 독립적인 워커 스레드들의 요구들을 효율적으로 충족시키고, 다른 솔루션들보다 더 적은 메모리를 사용하며, 이에 의해, 데이터 분석 시스템 (110) 및 애플리케이션 (140) 의 성능을 향상시킨다.
리포팅 모듈 (550) 은 레코드들이 해제될 때 메시지들을 선택적으로 출력한다. 그 메시지들은 데이터 분석 애플리케이션 (140) 의 다른 컴포넌트에 대해, 예컨대, 특정 툴 모듈 (420) 에 대해 출력된다. 하나의 예에서, 리포팅 모듈 (550) 은, 특정 레코드가 해제될 때, 및/또는, 특정 레코드 이전의 모든 레코드들이 해제될 때, 메시지를 출력한다. 리포팅 모듈 (550) 은 따라서, 특정 레코드들이 해제되거나 다른 이벤트들이 발생할 때 데이터 분석 애플리케이션 (140) 의 컴포넌트들에게 통지하기 위한 기능을 제공한다.
도 6 은 데이터 블록들과 데이터 레코드들 사이의 예시적인 관계를 나타내는 도이다. 도 6 은 3 개의 순차적 데이터 블록들 (610, 620, 및 630) 및 7 개의 순차적 데이터 레코드들 (615, 625, 635, 645, 655, 665, 및 675) 을 예시한다. 데이터 레코드들은 데이터 블록들과 완전히 정렬되지 않는다. 예를 들어, 데이터 블록 (610) 은 레코드들 (615 및 625) 의 전부, 및 레코드 (635) 의 부분을 포함한다. 레코드 (635) 는 블록 (610) 에서 시작하고, 블록 (620) 을 통해 중간에서 끝난다. 블록 (620) 을 파싱하는 워커 스레드 (530) 는 처음에 데이터 레코드 (635) 의 부분을 판독할 것이고, 그 다음에, 레코드 (635) 에 대한 레코드 마커를 판독할 것이며, 그 다음에, 그것의 레코드 마커를 포함하는 레코드 (645) 의 전부를 판독하고, 그 다음에, 레코드 (655) 의 부분을 판독할 것이다.
파일 판독 모듈 (510) 이 워커 스레드 (530) 에 블록 (620) 을 할당한다고 가정한다. 블록 (620) 을 파싱하는 워커 스레드 (530) 는 그것이 레코드 (635) 의 끝을 마킹하는 레코드 마커를 발견할 때까지 데이터 블록을 스캐닝한다. 워커 스레드 (350) 는 블록 (620) 에 대응하는 파싱 상태 캐시 오브젝트에서의 레코드 마커의 로케이션을 이 블록에 대한 추정된 제 1 레코드 마커 로케이션으로서 레코딩한다. 그 다음, 그것은 데이터 블록 (620) 을, 레코드 (645) 로 시작하여 (제 1 레코드 마커 로케이션 직후에서 시작하여) 블록의 끝까지 파싱하고, 파싱 결과들을 블록에 대한 파싱 상태 캐시 오브젝트에 저장한다.
데이터 블록 (620) 을 파싱하는 동안, 워커 스레드 (530) 는 데이터 레코드 (655) 의 부분을 데이터 블록 (620) 의 끝까지 파싱한다. 워커 스레드 (530) 는 그 다음, 데이터 블록 (630) 을 요청 및 획득하고, 데이터 블록 (620) 을 해제한다. 워커 스레드 (530) 는, 데이터 블록 (630) 을 시작부로부터, 그것이 레코드 (655) 의 끝을 나타내는 레코드 마커 (즉, 데이터 블록에서의 제 1 레코드 마커) 에 도달할 때까지, 파싱한다. 블록 (630) 으로부터의 파싱된 데이터는 블록 (620) 으로부터의 레코드 (655) 의 데이터에 첨부되고, 그에 의해, 완전한 데이터 레코드를 형성하고, 이 정보는 블록 (620) 에 대한 파싱 상태 캐시 오브젝트에 저장된다. 워커 스레드 (530) 는, 레코드 (655) 의 끝을 마킹하는 마커를, 블록에 대응하는 파싱 상태 캐시 오브젝트에서 블록 (630) 에 대한 진정한 제 1 레코드 마커 로케이션으로서 레코딩한다.
워커 스레드 (530) 는, (상이한 워커 스레드에 의해 파싱 상태 캐시 오브젝트에서 레코딩되었던) 블록 (630) 에 대한 추정된 제 1 레코드 마커 로케이션이 그 블록에 대한 진정한 제 1 레코드 마커 로케이션에 매칭하는지 여부를 결정한다. 로케이션들이 매칭하는 경우에, 워커 스레드 (530) 는 블록이 정확하게 파싱되었음을 나타내는 표시를 블록 (630) 에 대한 파싱 상태 캐시 오브젝트에 저장한다. 로케이션들이 매칭하지 않는 경우에, 워커 스레드 (530) 는 진정한 제 1 레코드 마커 로케이션으로부터 다시 파싱될 필요로서 데이터 블록 (630) 을 플래깅하는 API 호출을 파일 판독 모듈 (510) 에 대해 만든다.
도 7 은 하나의 실시형태에 따른, 데이터 소스 (120) 로부터 수신된 데이터 블록들을 프로세싱하는 방법 (700) 을 나타내는 플로우 차트이다. 일부 실시형태들에서, 방법은 데이터 수신기 모듈 (410) 에 의해 수행되지만, 그 방법에서의 동작들의 일부 또는 전부는 다른 실시형태들에서 다른 엔티티들에 의해 수행될 수도 있다. 일부 실시형태들에서, 플로우 차트에서의 동작들은 상이한 순서들로 수행되고, 상이한 및/또는 추가적인 단계들을 포함한다.
데이터 수신기 모듈 (410) 은 데이터 소스 (120) 로부터 데이터 블록들을 수신한다 (710). 예를 들어, 데이터 수신기 모듈 (410) 은 SSD 에 대해 발행된 I/O 요청들에 응답하여 데이터 블록들을 수신할 수도 있다. 데이터 블록들은 순차적이지만, 데이터 수신기 모듈 (410) 은 블록들을 순서 외로 수신할 수도 있다 (710). 데이터 수신기 모듈 (410) 은 데이터 블록들을 블록 캐시 (520) 에 저장한다 (720). 데이터 수신기 모듈 (410) 은 블록들을 워커 스레드들 (530) 에 할당한다 (730). 각각의 데이터 블록은 개별 워커 스레드 (530) 에 할당된다. 워커 스레드 (530) 는 데이터 블록을 파싱하고, 다중 워커 스레드들은 다수의 데이터 블록들을 병렬적으로 집합적으로 파싱한다. 데이터 수신기 모듈 (410) 은 파싱 상태 캐시 (540) 에 워커 스레드들 (530) 의 파싱 활동을 기술하는 파싱 상태 정보를 유지한다 (740). 데이터 수신기 모듈 (410) 은 파싱된 데이터 블록들로부터의 데이터 레코드들을 데이터 분석 워크플로우에 대해 해제하고 (750), 블록 캐시 및 파싱 상태 캐시 (540) 에서의 정보에 기초하여, 블록 캐시 (520) 로부터 데이터 블록들을 해제한다. 도 7 에서는 도시되지 않았지만, 데이터 수신기 모듈 (410) 은, 데이터 블록들이 블록 캐시 (520) 로부터 해제됨에 따라, 데이터 소스 (120) 로부터 더 많은 데이터 블록들을 수신할 수도 있다.
도 8 은 하나의 실시형태에 따른, 데이터 블록들을 파싱하는 방법 (800) 을 나타내는 플로우 차트이다. 일부 실시형태들에서, 방법은, 파일 판독 모듈 (510) 및 워커 스레드들 (530) 을 포함하는, 데이터 수신기 모듈 (410) 의 컴포넌트들에 의해 수행된다. 방법에서의 동작들의 일부 또는 전부는 다른 실시형태들에서 다른 엔티티들에 의해 수행될 수도 있다. 일부 실시형태들에서, 플로우 차트에서의 동작들은 상이한 순서들로 수행되고, 상이한 및/또는 추가적인 단계들을 포함할 수 있다.
파일 판독 모듈 (510) 은, 블록 캐시 (520) 에서의 데이터 블록을 워커 스레드 (530) 에 할당한다 (810). 워커 스레드 (530) 는, 데이터 블록 내의 제 1 레코드 마커의 추정된 로케이션을 발견 (820) 하기 위해서 데이터 블록을 순차적인 순서로 스캐닝한다. 워커 스레드 (530) 는, 데이터 레코드에서의 데이터 레코드들을 제 1 레코드 마커 직후에서 시작하여 파싱한다 (830). 워커 스레드 (530) 는 파싱 결과들을 데이터 블록에 대한 파싱 상태 캐시 오브젝트에 보존한다. 워커 스레드 (530) 는 또한, 오브젝트에서의 제 1 레코드 마커의 로케이션을 그 데이터 블록에 대한 추정된 제 1 레코드 마커 로케이션으로서 보존한다.
워커 스레드 (530) 는 다음 순차적 데이터 블록을 획득하고, 그 블록을 제 1 레코드 마커까지 파싱한다 (840). 워커 스레드 (530) 는 이전 데이터 블록에 대한 파싱 상태 캐시 오브젝트에서 그 레코드로부터 데이터의 나머지로 파싱된 레코드를 저장한다. 또한, 워커 스레드 (530) 는, 파싱 상태 캐시 (540) 에서 제 1 레코드 마커의 로케이션을 다음 순차적 데이터 블록에 대한 진정한 제 1 레코드 마커 로케이션으로서 저장한다 (850).
워커 스레드 (530) 는 또한, 다음 순차적 데이터 블록에서의 진정한 제 1 레코드 로케이션이 다른 워커 스레드에 의해 그 데이터 블록에 대해 파싱 상태 캐시 오브젝트에서 저장되었던 추전된 제 1 레코드 로케이션에 매칭하는지 여부를 결정한다 (860 및 870). 두 로케이션들이 매칭하지 않는 경우에, 워커 스레드 (530) 는 블록이 부정확하게 파싱되었고 재파싱될 필요가 있음을 나타내는 표시를 블록에 대한 파싱 상태 캐시 오브젝트에 저장한다 (890). 파일 판독 모듈 (510) 은 그 표시를 검출할 것이고, 진정한 제 1 레코드 로케이션을 이용하여 파싱하기 위해 그 블록을 워커 스레드 (530) 에 할당할 것이다. 두 로케이션들이 매칭하는 경우에는, 다음 순차적 데이터 블록은 정확하게 파싱된 것이고, 파일 판독 모듈 (510) 은 그 블록으로부터의 데이터 레코드들을 툴 모듈들 (420) 로 해제할 것이다. 단계 830 에서 워커 스레드 (530) 에 의해 파싱되었던 이전 데이터 블록은 또한, 일단 그 데이터 블록에 대한 추정된 제 1 레코드 마커 로케이션이 검증되면, 해제될 것이다.
컴포넌트들의 특별한 명명, 용어들의 대문자, 속성들, 데이터 구조들, 또는 임의의 다른 프로그래밍 또는 구조적 양태는 필수적이거나 중요하지 않으며, 설명되는 실시형태들을 구현하는 메커니즘들은 상이한 명칭들, 포맷들, 또는 프로토콜들을 가질 수도 있다. 추가로, 시스템들은 설명된 바와 같이 하드웨어와 소프트웨어의 조합을 통해서, 또는 완전히 하드웨어 엘리먼트들에서 구현될 수도 있다. 또한, 본원에서 설명된 다양한 시스템 컴포넌트들 사이의 기능성의 특정 분할은 단지 예시적인 것이고, 필수적인 것은 아니며; 단일 시스템 컴포넌트에 의해 수행되는 기능들은 대신에 다수의 컴포넌트들에 의해 수행될 수도 있고, 다수의 컴포넌트들에 의해 수행되는 기능들은 대신에 단일 컴포넌트에 의해 수행될 수도 있다.
상기 설명의 일부 부분들은 정보에 대한 동작들의 알고리즘들 및 심볼 표현들의 관점에서 특징들을 제시한다. 이들 알고리즘적 설명들 및 표현들은 그것들의 작업의 본질을 다른 통상의 기술자들에게 가장 효과적으로 전달하기 위해 데이터 프로세싱 기술분야에서 통상의 지식을 가진 자에 의해 사용되는 수단들이다. 이들 동작들은, 기능적으로 또는 논리적으로 설명되지만, 컴퓨터 프로그램들에 의해 구현되는 것으로 이해된다. 또한, 동작들의 이들 배열들을 일반성의 손실 없이 모듈들로서 또는 기능적 명칭들에 의해 지칭하는 것이 때로는 편리한 것으로 증명되었다.
상기 논의로부터 명백한 바와 같이 특별히 달리 언급되지 않으면, 설명 전반에 걸쳐, "프로세싱하는 것" 또는 "계산하는 것" 또는 "산출하는 것" 또는 "결정하는 것" 또는 "디스플레이하는 것" 등과 같은 용어들을 활용하는 논의들은 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 액션 및 프로세스들을 지칭함이 인해되며, 이 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스는 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장, 송신 또는 디스플레이 디바이스들 내의 물리적 (전자적) 양들로서 표현되는 데이터를 조작하고 변환한다.
본원에 기술된 특정 실시형태들은 알고리즘의 형태로 기술된 프로세스 단계들 및 명령들을 포함한다. 실시형태들의 프로세스 단계들 및 명령들은 소프트웨어, 펌웨어 또는 하드웨어로 구현될 수 있을 것이고, 소프트웨어로 구현될 때, 실시간 네트워크 오퍼레이팅 시스템들에 의해 사용되는 상이한 플랫폼들 상에 상조하고 그 상이한 플랫폼들로부터 동작되도록 다운로드될 수 있을 것임에 유의하여야 한다.
마지막으로, 명세서에서 사용된 언어는 주로 판독성 및 교시적 목적들을 위해 선택되었고, 본 발명의 주제를 개관하고 제한하기 위해 선택되지 않았을 수도 있음에 유의하여야 한다. 따라서, 실시형태들의 개시는 예시적인 것으로 의도되고, 제한하는 것으로 의도되지 아니한다.

Claims (20)

  1. 데이터 분석 시스템에서 데이터 블록들을 프로세싱하는 컴퓨터 구현 방법으로서,
    복수의 순차적 데이터 블록들을 블록 캐시에 저장하는 단계로서, 각각의 데이터 블록은 하나 이상의 데이터 레코드들을 포함하고, 각각의 데이터 레코드는 하나 이상의 값들 및 상기 데이터 레코드의 끝을 마킹하는 레코드 마커를 포함하는, 상기 복수의 순차적 데이터 블록들을 블록 캐시에 저장하는 단계;
    상기 블록 캐시에서의 데이터 블록을 워커 스레드에 할당하는 단계;
    상기 워커 스레드에 의해, 상기 데이터 블록 내에 포함된 상기 하나 이상의 데이터 레코드들을 식별하기 위해 상기 데이터 블록을 파싱하는 단계;
    상기 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 단계; 및
    상기 데이터 블록이 정확하게 파싱되었다는 결정에 응답하여, 상기 데이터 블록 내에 포함된 상기 하나 이상의 데이터 레코드들을 상기 데이터 분석 시스템 상에서 실행되는 데이터 분석 워크플로우에 제공하는 단계를 포함하는, 데이터 분석 시스템에서 데이터 블록들을 프로세싱하는 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 복수의 순차적 데이터 블록들을 블록 캐시에 저장하는 단계는,
    데이터 소스에 대해 복수의 입력/출력 (I/O) 요청들을 발행하는 단계로서, 상기 복수의 I/O 요청들은 복수의 순차적으로 정렬된 데이터 블록들을 요청하는, 상기 복수의 I/O 요청들을 발행하는 단계;
    상기 복수의 I/O 요청들에 응답하여 상기 데이터 소스로부터 상기 복수의 순차적으로 정렬된 데이터 블록들을 수신하는 단계로서, 상기 복수의 순차적으로 정렬된 데이터 블록들은 상기 데이터 블록들의 순차적 순서와는 상이한 순서로 상기 데이터 소스로부터 수신되는, 상기 복수의 순차적으로 정렬된 데이터 블록들을 수신하는 단계; 및
    수신된 상기 복수의 순차적으로 정렬된 데이터 블록들을 상기 블록 캐시에 저장하는 단계를 포함하는, 데이터 분석 시스템에서 데이터 블록들을 프로세싱하는 컴퓨터 구현 방법.
  3. 제 2 항에 있어서,
    상기 복수의 순차적으로 정렬된 데이터 블록들은 상기 데이터 블록들의 상기 순차적 순서에 응답하여 결정된 상기 블록 캐시에서의 로케이션들에서 저장되는, 데이터 분석 시스템에서 데이터 블록들을 프로세싱하는 컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    복수의 워커 스레드들이 존재하고,
    상기 블록 캐시에서의 데이터 블록을 워커 스레드에 할당하는 단계는,
    복수의 데이터 블록들을 복수의 워커 스레드들에 할당하는 단계를 포함하며,
    상기 복수의 워커 스레드들은 할당된 상기 복수의 데이터 블록들을 동시에 파싱하도록 적응되는, 데이터 분석 시스템에서 데이터 블록들을 프로세싱하는 컴퓨터 구현 방법.
  5. 제 1 항에 있어서,
    상기 워커 스레드에 의해, 상기 데이터 블록 내에 포함된 상기 하나 이상의 데이터 레코드들을 식별하기 위해 상기 데이터 블록을 파싱하는 단계는,
    상기 데이터 블록 내의 제 1 레코드 마커 로케이션을 식별하기 위해 상기 데이터 블록을 스캐닝하는 단계;
    상기 제 1 레코드 마커 로케이션 후에 위치된 상기 데이터 블록에서의 데이터 레코드들을 파싱하는 단계; 및
    상기 워커 스레드에 의해, 다음 순차적 데이터 블록 내의 제 1 레코드 마커 로케이션 전에 발생하는 상기 다음 순차적 데이터 블록에서의 데이터 레코드를 파싱하는 단계를 포함하는, 데이터 분석 시스템에서 데이터 블록들을 프로세싱하는 컴퓨터 구현 방법.
  6. 제 1 항에 있어서,
    상기 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 단계는,
    상기 데이터 블록을 파싱하는 상기 워커 스레드에 의해 발견된 상기 데이터 블록의 추정된 제 1 레코드 마커 로케이션을 저장하는 단계;
    다른 워커 스레드에 의해, 상기 데이터 블록에서의 진정한 제 1 레코드 마커 로케이션을 결정하는 단계;
    저장된 상기 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하는지 여부를 결정하는 단계; 및
    상기 저장된 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하는 경우에 상기 데이터 블록이 정확하게 파싱되었다고 결정하는 단계를 포함하는, 데이터 분석 시스템에서 데이터 블록들을 프로세싱하는 컴퓨터 구현 방법.
  7. 제 1 항에 있어서,
    상기 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 단계는,
    상기 데이터 블록의 추정된 제 1 레코드 마커 로케이션을 저장하는 단계로서, 상기 데이터 블록은 상기 추정된 제 1 레코드 마커 로케이션에 응답하여 파싱되는, 상기 데이터 블록의 추정된 제 1 레코드 마커 로케이션을 저장하는 단계;
    상기 데이터 블록에서의 진정한 제 1 레코드 마커 로케이션을 결정하는 단계;
    저장된 상기 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하는지 여부를 결정하는 단계;
    저장된 상기 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하지 않는 경우에 상기 데이터 블록이 부정확하게 파싱되었다고 결정하는 단계; 및
    상기 데이터 블록이 부정확하게 파싱되었다고 결정하는 것에 응답하여, 상기 데이터 블록에서의 상기 진정한 제 1 레코드 마커 로케이션을 이용하여 상기 데이터 블록을 재파싱하는 단계를 포함하는, 데이터 분석 시스템에서 데이터 블록들을 프로세싱하는 컴퓨터 구현 방법.
  8. 데이터 블록들을 프로세싱하기 위한 컴퓨터 구현된 데이터 분석 시스템으로서,
    컴퓨터 프로그램 명령들을 실행하기 위한 컴퓨터 프로세서; 및
    동작들을 수행하도록 상기 컴퓨터 프로세서에 의해 실행가능한 컴퓨터 프로그램 명령들을 저장하는 비일시적 컴퓨터 판독가능 메모리를 포함하고,
    상기 동작들은,
    복수의 순차적 데이터 블록들을 블록 캐시에 저장하는 동작으로서, 각각의 데이터 블록은 하나 이상의 데이터 레코드들을 포함하고, 각각의 데이터 레코드는 하나 이상의 값들 및 상기 데이터 레코드의 끝을 마킹하는 레코드 마커를 포함하는, 상기 복수의 순차적 데이터 블록들을 블록 캐시에 저장하는 동작;
    상기 블록 캐시에서의 데이터 블록을 워커 스레드에 할당하는 동작;
    상기 워커 스레드에 의해, 상기 데이터 블록 내에 포함된 상기 하나 이상의 데이터 레코드들을 식별하기 위해 상기 데이터 블록을 파싱하는 동작;
    상기 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 동작; 및
    상기 데이터 블록이 정확하게 파싱되었다는 결정에 응답하여, 상기 데이터 블록 내에 포함된 상기 하나 이상의 데이터 레코드들을 상기 데이터 분석 시스템 상에서 실행되는 데이터 분석 워크플로우에 제공하는 동작을 포함하는, 데이터 분석 시스템.
  9. 제 8 항에 있어서,
    상기 복수의 순차적 데이터 블록들을 블록 캐시에 저장하는 동작은,
    데이터 소스에 대해 복수의 입력/출력 (I/O) 요청들을 발행하는 동작으로서, 상기 복수의 I/O 요청들은 복수의 순차적으로 정렬된 데이터 블록들을 요청하는, 상기 복수의 I/O 요청들을 발행하는 동작;
    상기 복수의 I/O 요청들에 응답하여 상기 데이터 소스로부터 상기 복수의 순차적으로 정렬된 데이터 블록들을 수신하는 동작으로서, 상기 복수의 순차적으로 정렬된 데이터 블록들은 상기 데이터 블록들의 순차적 순서와는 상이한 순서로 상기 데이터 소스로부터 수신되는, 상기 복수의 순차적으로 정렬된 데이터 블록들을 수신하는 동작; 및
    수신된 상기 복수의 순차적으로 정렬된 데이터 블록들을 상기 블록 캐시에 저장하는 동작을 포함하는, 데이터 분석 시스템.
  10. 제 9 항에 있어서,
    상기 복수의 순차적으로 정렬된 데이터 블록들은 상기 데이터 블록들의 상기 순차적 순서에 응답하여 결정된 상기 블록 캐시에서의 로케이션들에서 저장되는, 데이터 분석 시스템.
  11. 제 8 항에 있어서,
    복수의 워커 스레드들이 존재하고,
    상기 블록 캐시에서의 데이터 블록을 워커 스레드에 할당하는 동작은,
    복수의 데이터 블록들을 복수의 워커 스레드들에 할당하는 동작을 포함하며,
    상기 복수의 워커 스레드들은 할당된 상기 복수의 데이터 블록들을 동시에 파싱하도록 적응되는, 데이터 분석 시스템.
  12. 제 8 항에 있어서,
    상기 워커 스레드에 의해, 상기 데이터 블록 내에 포함된 상기 하나 이상의 데이터 레코드들을 식별하기 위해 상기 데이터 블록을 파싱하는 동작은,
    상기 데이터 블록 내의 제 1 레코드 마커 로케이션을 식별하기 위해 상기 데이터 블록을 스캐닝하는 동작;
    상기 제 1 레코드 마커 로케이션 후에 위치된 상기 데이터 블록에서의 데이터 레코드들을 파싱하는 동작; 및
    상기 워커 스레드에 의해, 다음 순차적 데이터 블록 내의 제 1 레코드 마커 로케이션 전에 발생하는 상기 다음 순차적 데이터 블록에서의 데이터 레코드를 파싱하는 동작을 포함하는, 데이터 분석 시스템.
  13. 제 8 항에 있어서,
    상기 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 동작은,
    상기 데이터 블록을 파싱하는 상기 워커 스레드에 의해 발견된 상기 데이터 블록의 추정된 제 1 레코드 마커 로케이션을 저장하는 동작;
    다른 워커 스레드에 의해, 상기 데이터 블록에서의 진정한 제 1 레코드 마커 로케이션을 결정하는 동작;
    저장된 상기 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하는지 여부를 결정하는 동작; 및
    상기 저장된 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하는 경우에 상기 데이터 블록이 정확하게 파싱되었다고 결정하는 동작을 포함하는, 데이터 분석 시스템.
  14. 제 8 항에 있어서,
    상기 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 동작은,
    상기 데이터 블록의 추정된 제 1 레코드 마커 로케이션을 저장하는 동작으로서, 상기 데이터 블록은 상기 추정된 제 1 레코드 마커 로케이션에 응답하여 파싱되는, 상기 데이터 블록의 추정된 제 1 레코드 마커 로케이션을 저장하는 동작;
    상기 데이터 블록에서의 진정한 제 1 레코드 마커 로케이션을 결정하는 동작;
    저장된 상기 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하는지 여부를 결정하는 동작;
    저장된 상기 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하지 않는 경우에 상기 데이터 블록이 부정확하게 파싱되었다고 결정하는 동작; 및
    상기 데이터 블록이 부정확하게 파싱되었다고 결정하는 것에 응답하여, 상기 데이터 블록에서의 상기 진정한 제 1 레코드 마커 로케이션을 이용하여 상기 데이터 블록을 재파싱하는 동작을 포함하는, 데이터 분석 시스템.
  15. 데이터 분석 시스템에서 데이터 블록들을 프로세싱하기 위한 실행가능 컴퓨터 프로그램 명령들을 저장하는 비일시적 컴퓨터 판독가능 메모리로서,
    상기 명령들은,
    복수의 순차적 데이터 블록들을 블록 캐시에 저장하는 동작으로서, 각각의 데이터 블록은 하나 이상의 데이터 레코드들을 포함하고, 각각의 데이터 레코드는 하나 이상의 값들 및 상기 데이터 레코드의 끝을 마킹하는 레코드 마커를 포함하는, 상기 복수의 순차적 데이터 블록들을 블록 캐시에 저장하는 동작;
    상기 블록 캐시에서의 데이터 블록을 워커 스레드에 할당하는 동작;
    상기 워커 스레드에 의해, 상기 데이터 블록 내에 포함된 상기 하나 이상의 데이터 레코드들을 식별하기 위해 상기 데이터 블록을 파싱하는 동작;
    상기 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 동작; 및
    상기 데이터 블록이 정확하게 파싱되었다는 결정에 응답하여, 상기 데이터 블록 내에 포함된 상기 하나 이상의 데이터 레코드들을 상기 데이터 분석 시스템 상에서 실행되는 데이터 분석 워크플로우에 제공하는 동작
    을 포함하는 동작들을 수행하도록 실행가능한, 비일시적 컴퓨터 판독가능 메모리.
  16. 제 15 항에 있어서,
    상기 복수의 순차적 데이터 블록들을 블록 캐시에 저장하는 동작은,
    데이터 소스에 대해 복수의 입력/출력 (I/O) 요청들을 발행하는 동작으로서, 상기 복수의 I/O 요청들은 복수의 순차적으로 정렬된 데이터 블록들을 요청하는, 상기 복수의 I/O 요청들을 발행하는 동작;
    상기 복수의 I/O 요청들에 응답하여 상기 데이터 소스로부터 상기 복수의 순차적으로 정렬된 데이터 블록들을 수신하는 동작으로서, 상기 복수의 순차적으로 정렬된 데이터 블록들은 상기 데이터 블록들의 순차적 순서와는 상이한 순서로 상기 데이터 소스로부터 수신되는, 상기 복수의 순차적으로 정렬된 데이터 블록들을 수신하는 동작; 및
    수신된 상기 복수의 순차적으로 정렬된 데이터 블록들을 상기 블록 캐시에 저장하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 메모리.
  17. 제 15 항에 있어서,
    복수의 워커 스레드들이 존재하고,
    상기 블록 캐시에서의 데이터 블록을 워커 스레드에 할당하는 동작은,
    복수의 데이터 블록들을 복수의 워커 스레드들에 할당하는 동작을 포함하며,
    상기 복수의 워커 스레드들은 할당된 상기 복수의 데이터 블록들을 동시에 파싱하도록 적응되는, 비일시적 컴퓨터 판독가능 메모리.
  18. 제 15 항에 있어서,
    상기 워커 스레드에 의해, 상기 데이터 블록 내에 포함된 상기 하나 이상의 데이터 레코드들을 식별하기 위해 상기 데이터 블록을 파싱하는 동작은,
    상기 데이터 블록 내의 제 1 레코드 마커 로케이션을 식별하기 위해 상기 데이터 블록을 스캐닝하는 동작;
    상기 제 1 레코드 마커 로케이션 후에 위치된 상기 데이터 블록에서의 데이터 레코드들을 파싱하는 동작; 및
    상기 워커 스레드에 의해, 다음 순차적 데이터 블록 내의 제 1 레코드 마커 로케이션 전에 발생하는 상기 다음 순차적 데이터 블록에서의 데이터 레코드를 파싱하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 메모리.
  19. 제 15 항에 있어서,
    상기 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 동작은,
    상기 데이터 블록을 파싱하는 상기 워커 스레드에 의해 발견된 상기 데이터 블록의 추정된 제 1 레코드 마커 로케이션을 저장하는 동작;
    다른 워커 스레드에 의해, 상기 데이터 블록에서의 진정한 제 1 레코드 마커 로케이션을 결정하는 동작;
    저장된 상기 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하는지 여부를 결정하는 동작; 및
    상기 저장된 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하는 경우에 상기 데이터 블록이 정확하게 파싱되었다고 결정하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 메모리.
  20. 제 15 항에 있어서,
    상기 데이터 블록이 정확하게 파싱되었는지 여부를 결정하는 동작은,
    상기 데이터 블록의 추정된 제 1 레코드 마커 로케이션을 저장하는 동작으로서, 상기 데이터 블록은 상기 추정된 제 1 레코드 마커 로케이션에 응답하여 파싱되는, 상기 데이터 블록의 추정된 제 1 레코드 마커 로케이션을 저장하는 동작;
    상기 데이터 블록에서의 진정한 제 1 레코드 마커 로케이션을 결정하는 동작;
    저장된 상기 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하는지 여부를 결정하는 동작;
    저장된 상기 추정된 제 1 레코드 마커 로케이션이 상기 진정한 제 1 레코드 마커 로케이션에 매칭하지 않는 경우에 상기 데이터 블록이 부정확하게 파싱되었다고 결정하는 동작; 및
    상기 데이터 블록이 부정확하게 파싱되었다고 결정하는 것에 응답하여, 상기 데이터 블록에서의 상기 진정한 제 1 레코드 마커 로케이션을 이용하여 상기 데이터 블록을 재파싱하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 메모리.
KR1020207012711A 2017-10-16 2018-10-15 순차적 데이터 블록들의 비동기적 프로세싱 KR102211613B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/785,357 2017-10-16
US15/785,357 US10552452B2 (en) 2017-10-16 2017-10-16 Asynchronously processing sequential data blocks
PCT/US2018/055898 WO2019079190A1 (en) 2017-10-16 2018-10-15 ASYNCHRONOUS PROCESSING OF SEQUENTIAL DATA BLOCKS

Publications (2)

Publication Number Publication Date
KR20200051836A true KR20200051836A (ko) 2020-05-13
KR102211613B1 KR102211613B1 (ko) 2021-02-02

Family

ID=66097078

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207012711A KR102211613B1 (ko) 2017-10-16 2018-10-15 순차적 데이터 블록들의 비동기적 프로세싱

Country Status (9)

Country Link
US (2) US10552452B2 (ko)
EP (1) EP3698243B1 (ko)
JP (1) JP6890721B2 (ko)
KR (1) KR102211613B1 (ko)
CN (1) CN111213126B (ko)
AU (1) AU2018350900B2 (ko)
CA (1) CA3076623C (ko)
SG (1) SG11202001673YA (ko)
WO (1) WO2019079190A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10552452B2 (en) * 2017-10-16 2020-02-04 Alteryx, Inc. Asynchronously processing sequential data blocks
US11150939B2 (en) * 2019-02-28 2021-10-19 Salesforce.Com, Inc. Composite batching to manage throughput for online commerce applications
US11061754B2 (en) * 2019-08-06 2021-07-13 Alteryx, Inc. Error handling during asynchronous processing of sequential data blocks
CN111651489A (zh) * 2020-06-05 2020-09-11 厦门理工学院 一种大数据处理服务器系统
US11074107B1 (en) 2020-11-04 2021-07-27 RazorThink, Inc. Data processing system and method for managing AI solutions development lifecycle

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004532442A (ja) * 2001-02-13 2004-10-21 キャンデラ, インコーポレイテッド ストレージシステムにおけるフェイルオーバー処理
US20130246215A1 (en) * 2012-02-02 2013-09-19 Patrick Faith Multi-Source, Multi-Dimensional, Cross-Entity, Multimedia Merchant Analytics Database Platform Apparatuses, Methods and Systems
US20150113535A1 (en) * 2012-05-31 2015-04-23 Hitachi, Ltd. Parallel data processing system, computer, and parallel data processing method
US20170308470A1 (en) * 2011-02-28 2017-10-26 Oracle International Corporation Universal cache management system

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187100A (ja) 1992-12-19 1994-07-08 Fuji Xerox Co Ltd レコード抽出装置
US5832310A (en) 1993-12-30 1998-11-03 Unisys Corporation Serial I/O channel having dependent and synchronous sources of control data and user defined data
US5875454A (en) 1996-07-24 1999-02-23 International Business Machiness Corporation Compressed data cache storage system
US6625671B1 (en) 1999-05-03 2003-09-23 Computer Network Technology Corporation Compression of buffered data
JP2001014139A (ja) 1999-06-28 2001-01-19 Nec Corp ワークファイルを使用するマルチスレッドソート処理方式及び処理方法
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
US20040236785A1 (en) 2003-05-22 2004-11-25 Greiner Dylan E. Method and system for transmitting a digital image over a communication network
US7003597B2 (en) 2003-07-09 2006-02-21 International Business Machines Corporation Dynamic reallocation of data stored in buffers based on packet size
US7188227B2 (en) 2003-09-30 2007-03-06 International Business Machines Corporation Adaptive memory compression
US7711876B2 (en) 2005-03-23 2010-05-04 International Business Machines Corporation Dynamic category compression in a data storage library
US7523123B2 (en) 2006-11-16 2009-04-21 Yahoo! Inc. Map-reduce with merge to process multiple relational datasets
US7899840B2 (en) 2007-03-29 2011-03-01 Microsoft Corporation Group joins to navigate data relationships
US9331919B2 (en) 2007-11-30 2016-05-03 Solarwinds Worldwide, Llc Method for summarizing flow information of network devices
JP5484471B2 (ja) 2008-09-19 2014-05-07 オラクル・インターナショナル・コーポレイション 記憶側記憶要求管理
US20100115182A1 (en) 2008-11-06 2010-05-06 Sony Corporation Flash memory operation
US9552299B2 (en) 2010-06-11 2017-01-24 California Institute Of Technology Systems and methods for rapid processing and storage of data
US8370316B2 (en) 2010-07-12 2013-02-05 Sap Ag Hash-join in parallel computation environments
US8515945B2 (en) 2010-11-16 2013-08-20 Sybase, Inc. Parallel partitioning index scan
US9436558B1 (en) 2010-12-21 2016-09-06 Acronis International Gmbh System and method for fast backup and restoring using sorted hashes
JP5712609B2 (ja) 2010-12-24 2015-05-07 富士通株式会社 データ処理装置及びデータ記録方法
WO2013009503A2 (en) 2011-07-08 2013-01-17 Yale University Query execution systems and methods
US8499122B2 (en) * 2011-11-21 2013-07-30 Microsoft Corporation Asynchronous data binding
US8880481B1 (en) 2012-03-29 2014-11-04 Pivotal Software, Inc. Inverse distribution function operations in a parallel relational database
US20130339473A1 (en) 2012-06-15 2013-12-19 Zynga Inc. Real time analytics via stream processing
US9183200B1 (en) 2012-08-02 2015-11-10 Symantec Corporation Scale up deduplication engine via efficient partitioning
US9471656B2 (en) 2013-03-15 2016-10-18 Uda, Llc Massively-parallel system architecture and method for real-time extraction of high-value information from data streams
US9817612B2 (en) 2014-11-20 2017-11-14 International Business Machines Corporation High-performance hash joins using memory with extensive internal parallelism
US10013443B2 (en) 2015-06-25 2018-07-03 Bank Of America Corporation Comparing data stores using hash sums on disparate parallel systems
US10346435B2 (en) * 2015-10-23 2019-07-09 Oracle International Corporation System and method for improved performance in a multidimensional database environment
US20180144015A1 (en) * 2016-11-18 2018-05-24 Microsoft Technology Licensing, Llc Redoing transaction log records in parallel
US10489350B2 (en) 2017-02-24 2019-11-26 Advanced Micro Devices, Inc. Data compression with inline compression metadata
US10552452B2 (en) * 2017-10-16 2020-02-04 Alteryx, Inc. Asynchronously processing sequential data blocks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004532442A (ja) * 2001-02-13 2004-10-21 キャンデラ, インコーポレイテッド ストレージシステムにおけるフェイルオーバー処理
US20170308470A1 (en) * 2011-02-28 2017-10-26 Oracle International Corporation Universal cache management system
US20130246215A1 (en) * 2012-02-02 2013-09-19 Patrick Faith Multi-Source, Multi-Dimensional, Cross-Entity, Multimedia Merchant Analytics Database Platform Apparatuses, Methods and Systems
US20150113535A1 (en) * 2012-05-31 2015-04-23 Hitachi, Ltd. Parallel data processing system, computer, and parallel data processing method

Also Published As

Publication number Publication date
EP3698243B1 (en) 2024-01-24
KR102211613B1 (ko) 2021-02-02
AU2018350900A1 (en) 2020-03-05
CN111213126A (zh) 2020-05-29
SG11202001673YA (en) 2020-03-30
JP6890721B2 (ja) 2021-06-18
CA3076623C (en) 2020-07-07
WO2019079190A1 (en) 2019-04-25
US11494409B2 (en) 2022-11-08
EP3698243A4 (en) 2021-08-11
US20190114353A1 (en) 2019-04-18
US10552452B2 (en) 2020-02-04
AU2018350900B2 (en) 2020-06-18
JP2020537261A (ja) 2020-12-17
EP3698243A1 (en) 2020-08-26
CA3076623A1 (en) 2019-04-25
US20200142906A1 (en) 2020-05-07
CN111213126B (zh) 2021-09-10

Similar Documents

Publication Publication Date Title
KR102211613B1 (ko) 순차적 데이터 블록들의 비동기적 프로세싱
US9959607B2 (en) Automatic verification of graphic rendition of JSON data
US20210136121A1 (en) System and method for creation and implementation of data processing workflows using a distributed computational graph
US9489642B2 (en) Flow based visualization of business rule processing traces
US11630716B2 (en) Error handling during asynchronous processing of sequential data blocks
CN107357885A (zh) 数据写入方法及装置、电子设备、计算机存储介质
US20220269504A1 (en) Client-side enrichment and transformation via dynamic logic for analytics
KR102170624B1 (ko) 데이터 분석 시스템에서의 메모리 할당
CN112784195A (zh) 一种页面数据发布方法和系统
US10133997B2 (en) Object lifecycle analysis tool
AU2022218687B2 (en) Memory management through control of data processing tasks

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant