KR101885688B1 - 낮은 지연속도 데이터 액세스를 위한 데이터 스트림의 분할 - Google Patents

낮은 지연속도 데이터 액세스를 위한 데이터 스트림의 분할 Download PDF

Info

Publication number
KR101885688B1
KR101885688B1 KR1020157022383A KR20157022383A KR101885688B1 KR 101885688 B1 KR101885688 B1 KR 101885688B1 KR 1020157022383 A KR1020157022383 A KR 1020157022383A KR 20157022383 A KR20157022383 A KR 20157022383A KR 101885688 B1 KR101885688 B1 KR 101885688B1
Authority
KR
South Korea
Prior art keywords
log data
data
server
log
aggregation
Prior art date
Application number
KR1020157022383A
Other languages
English (en)
Other versions
KR20150114965A (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 KR20150114965A publication Critical patent/KR20150114965A/ko
Application granted granted Critical
Publication of KR101885688B1 publication Critical patent/KR101885688B1/ko

Links

Images

Classifications

    • G06F17/30563
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

데이터 스트림을 분할하여 로그 데이터 프로세싱을 용이화하고 가속화하는 기술이 여기에서 개시된다. 전단 클러스터(front-end cluster)는 실시간으로 많은 양의 로그 데이터를 생성하고, 로그 데이터를 집성 클러스터(aggregating cluter)에 전송한다. 집성 클러스터는 상이한 전단 서버 및 클러스터로부터 유입되는 로그 데이터 스트림을 집성하도록 설계된다. 집성 클러스터는 또한, 로그 데이터를 복수의 데이터 스트림으로 분할하여 데이터 스트림이 병렬로 수신 애플리케이션에 전송되도록 한다. 일실시예에서, 로그 데이터가 분할된 데이터 스트림에 균일하게 분산되는 것을 보장하기 위해 로그 데이터는 랜덤하게 분할된다. 다른 실시예에서, 분할된 데이터 스트림을 수신하는 애플리케이션은 어떻게 로그 데이터를 분할할지를 결정한다.

Description

낮은 지연속도 데이터 액세스를 위한 데이터 스트림의 분할{DATA STREAM SPLITTING FOR LOW-LATENCY DATA ACCESS}
본 출원은 본 명세서에 전체로서 참조로 통합되는 2013년 1월 31일자로 출원된 미국특허출원 제13/756,340호의 우선권을 주장한다.
본 발명은 일반적으로 데이터 캡쳐링(capturing) 및 프로세싱 시스템에 관한 것이며, 특히 데이터를 다중 데이터 스트림으로 분할할 수 있는 데이터 캡쳐링 및 프로세싱 시스템에 관한 것이다.
컴퓨터 및 네트워킹 기술의 발전은 거대한 양의 데이터 저장을 필요로 하는 애플리케이션을 낳았다. 예컨대, 수천만의 사용자가 웹 페이지를 만들고 이미지와 텍스트를 소셜 미디어 웹사이트에 업로드할 수 있다. 결과적으로, 소셜 미디어 웹사이트는 거대한 양의 데이터를 매일 축적할 수 있고, 따라서 데이터를 저장하고 프로세싱하기 위해 크게 확장 가능한 시스템을 필요로 한다. 그러한 거대한 데이터 저장을 용이하게 하는 다양한 도구가 존재한다.
이러한 소셜 미디어 웹사이트의 전단 클러스터(front end cluster)는 사용자 활동을 모니터링하고 소셜 미디어 사용자의 활동에 기초하여 로그 데이터를 생성한다. 전단 클러스터는 로그 데이터를 중앙형 저장 파일러(centralized storage filer) 또는 데이터 웨어하우스(data warehouse)로 전송한다. 중앙형 저장 파일러 또는 데이터 웨어하우스는 수신된 로그 데이터를 조직화하고 데이터 프로세싱 애플리케이션으로부터의 응답에 응답한다. 거대한 양의 로그 데이터를 수용하기 위해, 큰 규모의 데이터 웨어하우스가 로그 데이터를 저장하고 데이터 프로세싱 애플리케이션으로부터의 데이터-집중적인 질의를 서비스하기 위해 일반적으로 사용된다.
애플리케이션이 수천의 (노드라고도 하는) 컴퓨터의 클러스터 및 페타바이트(petabyte)의 데이터와 상호작용할 수 있게 함으로써, 큰 규모의 데이터 집중적인 분산형 애플리케이션을 지원하는 프레임워크가 존재한다. 예를 들어, 하둡(Hadoop)이라고 불리는 프레임워크는 하둡 분산형 파일 시스템(Hadoop Distributed File System; HDFS)라고 불리는 분산된, 확장 가능한, 휴대형 파일 시스템을 사용하여 거대한 양의 데이터를 하둡 클러스터 내 (슬레이브 노드라고도 하는) 데이터 노드들에 분산시킨다. 데이터 노드의 전력 공급 정지 또는 네트워크 실패(스위치 실패를 포함)의 부정적인 영향을 감소시키기 위하여, HDFS의 데이터는 전형적으로 상이한 데이터 노드들에 복제된다.
오픈 소스 데이터 웨어하우스 시스템인 하이브(Hive)는 하둡 클러스터 상에서 구동하도록 개발되었다. 하이브는 HiveQL이라는, 스크립트 쿼리 언어(scripted query language; SQL)와 유사한 선언형 언어로 표현된 데이터 쿼리를 지원한다. 하이브 시스템은 HiveQL로 표현된 쿼리를 하둡 클러스터에서 실행가능한, 방향 비순환 그래프(directed acyclic graph)의 수학적 형태의 맵-리듀스(map-reduce) 작업으로 컴파일한다. HiveQL 언어는 기본형(primitive types), 배열 및 맵과 같은 컬렉션 및 타입의 중첩된 컴포지션(nested composition of types)을 담는 테이블을 지원하는 타입 시스템을 포함한다. 추가적으로, 하이브 시스템은 하이브-메타스토어(Hive-Metastore)라는 데이터 탐색과 쿼리 최적화에 유용한 체계 및 통계를 담고 있는 시스템 카탈로그를 포함한다.
하둡 클러스터와 더불어, 하이브 시스템은 소셜 네트워킹 시스템을 위한 많은 양의 데이터를 저장하고 분석할 수 있다. 예를 들어, 하이브 시스템은 사용자 간의 연결 정도를 분석하여 사용자가 소셜 네트워킹 시스템에서 팔로우하는 소식에 등급을 매길 수 있다. 하이브 시스템은 활동 로그를 분석하여 애플리케이션 개발자, 페이지 관리자 및 광고주의 개발 및 사업적 결정을 돕기 위해 소셜 네트워킹 시스템의 서비스가 어떻게 사용되는지 간파할 수 있다. 하이브 시스템은 복잡한 데이터 마이닝 프로그램을 구동하여 소셜 네트워킹 시스템의 사용자에게 보여지는 광고를 최적화할 수 있다. 하이브 시스템은 또한 사용 로그를 분석하여 스팸과 소셜 네트워킹 시스템의 어뷰징을 식별할 수 있다.
하이브 시스템은 하이브 쿼리를 작성하고 실행시킬 프로그래밍 능력이 없는 사람들을 위하여 복잡한 데이터 파이프라인의 작성, 디버깅 및 스케쥴링을 하고, 하이브 시스템 및 MySQL과 오라클 같은 다른 관계형 데이터베이스에 저장된 데이터에 기초한 보고서를 작성하기 위한 웹 기반의 도구를 포함한다.
하지만, 전단 클러스터는 캡쳐된 로그 데이터를 중앙형 데이터 웨어하우스에 실시간이 아니라 주기적으로 전송한다. 게다가, 데이터 웨어하우스가 이러한 로그 데이터에 대한 데이터 쿼리에 응답할 수 있기 이전에 데이터 웨어하우스가 수신된 로그 데이터를 조직화하는데 시간이 걸린다. 따라서, 데이터 웨어하우스의 로그 데이터는 로그 데이터가 캡쳐되기 때문에 시구간(time period) 이후에만 이용가능하다. 시구간은 1시간 또는 심지어 하루가 될 수 있다. 데이터 프로세싱 및 소비 애플리케이션은 유효 지연속도로 데이터를 액세스할 수 밖에 없다.
게다가, 중앙형 데이터 웨어하우스는 계속적으로 로그 데이터를 수신하기 위해 전단 서버와의 연결을 유지할 필요가 있다. 지금의 소셜 네트워크에서 전단 서버의 개수는 수천이거나 심지어는 더 많을 수 있다. 데이터 웨어하우스는 연결을 유지하는데 있어서 중대한 부담을 갖는다. 이러한 연결을 유지하는데 있어서의 부담은 데이터 웨어하우스의 전체적인 성능에 영향을 준다.
본 명세서에 소개되는 기술은 낮은 지연시간으로 로그 데이터를 액세스하고 프로세싱하는 장점을 제공한다. 특히, 본 명세서에 소개되는 기술은 실시간으로 많은 양의 로그 데이터를 생성하고 로그 데이터를 집성 클러스터(aggregating cluster)로 전달하는 전단 클러스터를 포함한다. 집성 클러스터는 상이한 전단 서버 및 클러스터로부터 유입(incoming)되는 로그 데이터 스트림을 집성하도록 설계된다. 집성 클러스터는 또한, 로그 데이터를 복수의 데이터 스트림으로 분할하여 데이터 스트림이 병렬로 수신 애플리케이션에 전송되도록 한다. 일실시예에서, 집성 클러스터는 로그 데이터를 랜덤하게 분할하여 로그 데이터가 분할된 데이터 스트림으로 균일하게 분산되는 것을 보장한다. 다른 실시예에서, 분할된 데이터 스트림을 수신하는 애플리케이션은 어떻게 로그 데이터를 분할할지를 결정한다.
따라서, 본 명세서에 소개되는 기술에 따라 데이터 스트림을 분할하기 위한 방법이 제공된다. 방법은 실시간 사용자 활동에 기초하여 로그 데이터를 생성하는 단계, 로그 데이터를 집성 서버로 전송하는 단계, 집성 서버에서 로그 데이터를 집성하는 단계, 로그 데이터를 복수의 로그 데이터 스트림으로 분할하는 단계 및 로그 데이터 스트림을 적어도 하나의 후단 서버에 병렬로 피드(feed)하는 단계를 포함한다.
따라서, 본 명세서에 소개되는 기술에 따라 데이터 스트림을 분할하기 위한 컴퓨터로 구현되는 시스템이 또한 제공된다. 컴퓨터로 구현되는 시스템은 복수의 전단 서버 및 적어도 하나의 집성 서버를 포함한다. 전단 서버는 실시간 사용자 활동에 기초하여 로그 데이터를 생성하도록 구성된다. 집성 서버는 전단 서버의 적어도 일부로부터 수신된 로그 데이터를 집성하도록 구성된다. 집성 서버는 네트워크를 통해 전단 서버의 적어도 일부와 연결된다. 집성 서버는 로그 데이터를 스테이징(stage)하도록 구성된 데이터 스테이징 영역을 포함한다. 집성 서버는 또한, 하나 이상의 후단 서버가 로그 데이터 스트림을 병렬로 검색(retrieve)할 수 있도록 로그 데이터를 복수의 로그 데이터 스트림으로 분할하도록 구성된다.
따라서, 본 명세서에 소개되는 기술에 따라 로그 데이터를 스테이징하기 위한 집성 서버가 또한 제공된다. 집성 서버는 프로세서, 네트워크 인터페이스, 데이터 저장체(data storage) 및 메모리를 포함한다. 네트워크 인터페이스는 프로세서에 결합되고, 네트워크 인터페이스를 통해 집성 서버는 복수의 전단 서버와 통신할 수 있다. 전단 서버는 실시간 사용자 활동에 기초하여 로그 데이터를 생성한다. 데이터 저장체는 데이터 스테이징 영역을 포함한다. 메모리는 프로세서에 의해 실행될 때 집성 서버로 하여금, 실시간 사용자 활동에 기초하여 로그 데이터를 생성하는 전단 서버로부터 로그 데이터를 수신하고, 로그 데이터를 집성하며, 데이터 스테이징 영역에서 로그 데이터를 스테이징하고, 하나 이상의 후단 서버가 로그 데이터 스트림을 병렬로 검색할 수 있도록 로그 데이터를 복수의 로그 데이터 스트림으로 분할하는 것을 포함하는 프로세스를 수행하도록 야기하는 명령어를 저장한다.
본 발명의 실시예에서 소셜 네트워킹 시스템, 제3자 시스템 또는 클라이언트 시스템의 사용자를 인증(authenticate)하며, 특히 소셜 네트워킹 시스템, 제3자 시스템, 클라이언트 시스템 또는 이들의 일부에 대해 허가되지 않은(unauthorized) 사용을 방지하는 방법이 제공되며, 다음을 포함한다.
본 발명의 일실시예에서, 방법은 복수의 전단 서버(front end server)에서 실시간 사용자 활동에 기초하여 로그 데이터를 생성하는 단계; 로그 데이터를 집성 서버로 전송하는 단계; 집성 서버에서 로그 데이터를 집성하는 단계; 로그 데이터를 복수의 로그 데이터 스트림으로 분할하는 단계; 및 로그 데이터 스트림을 적어도 하나의 후단 서버에 병렬로 피드하는 단계를 포함한다.
분할하는 단계는 로그 데이터가 복수의 로그 데이터 스트림으로 균일하게 분산되도록 로그 데이터를 랜덤하게 분할하는 단계를 포함할 수 있다.
방법은 로그 데이터를 데이터 스테이징 영역에서 스테이징하는 단계를 더 포함할 수 있다.
방법은 후단 서버로부터 로그 데이터를 복수의 로그 데이터 스트림으로 어떻게 분할할지에 관한 명령어를 수신하는 단계를 더 포함할 수 있다.
로그 데이터는 복수의 로그 데이터 엔트리를 포함하고, 각각의 로그 데이터 엔트리는 애플리케이션 식별자(identification) 및 카테고리 필드를 포함할 수 있다.
방법은 로그 데이터의 각각의 엔트리에 대해, 애플리케이션 식별자 및 카테고리 필드의 해시 함수에 버켓의 총 개수(total number)를 모듈로(modulo)함에 의해 버켓 수(bucket number)를 계산하는 단계; 및 상기 로그 데이터의 엔트리를 버켓 수에 의해 식별된 로그 데이터 스트림에 할당하는 단계를 더 포함할 수 있고, 상기 버켓의 총 개수는 복수의 로그 데이터 스트림의 총 개수이다.
카테고리 필드는 로그 데이터 엔트리의 지정된 목적지(intended destination)의 상위 레벨 기술(high level description)을 포함할 수 있다.
애플리케이션 식별자는 로그 데이터 엔트리를 프로세싱하기 위한 데이터 소비 애플리케이션을 식별할 수 있다.
로그 데이터는 복수의 로그 데이터 엔트리를 포함하고, 방법은, 각각의 로그 데이터 엔트리에 대해, 1에서 버켓의 총 개수 사이의 정수(integer)를 랜덤하게 생성하는 단계; 및 상기 로그 데이터 엔트리를 버켓 수에 의해 식별된 로그 데이터 스트림에 할당하는 단계를 더 포함할 수 있고, 상기 버켓의 총 개수는 복수의 로그 데이터 스트림의 총 개수일 수 있다.
버켓의 총 개수는 로그 데이터 스트림을 수신하는데 이용가능한 후단 서버의 수 및 각각의 후단 서버가 처리(handle)할 수 있는 연결의 수에 의해 결정될 수 있다.
버켓의 총 개수는 적어도 하나의 후단 서버에서 구동되는 데이터 소비 애플리케이션에 의해 지시(instruct)될 수 있다.
후단 서버는 후단 서버가 로그 데이터 스트림을 수신하고 프로세싱할 때, 동등하게 로딩될 수 있다.
방법은 엔트리가 할당된 로그 데이터 스트림을 결정하기 위해 로그 데이터의 엔트리의 프리픽스(prefix)를 검사하는 단계를 더 포함할 수 있다.
방법은 로그 데이터를 데이터 웨어하우스에 전송하는 단계; 및 데이터 웨어하우스가 프로세싱된 로그 데이터에 기초하여 데이터 쿼리(query)에 응답하도록 데이터 웨어하우스에서 로그 데이터를 프로세싱하는 단계를 더 포함할 수 있다.
또한, 청구될 수 있는 본 발명의 실시예에서, 컴퓨터로 구현되는 시스템은 실시간 사용자 활동에 기초하여 로그 데이터를 생성하도록 구성된 복수의 전단 서버; 및 전단 서버의 적어도 일부로부터 수신된 로그 데이터를 집성하도록 구성된 적어도 하나의 집성 서버를 포함하며, 상기 집성 서버는 네트워크를 통해 전단 서버의 적어도 일부와 연결되고, 상기 집성 서버는 로그 데이터를 스테이징(stage)하도록 구성된 데이터 스테이징 영역을 포함하며, 하나 이상의 후단 서버가 로그 데이터 스트림을 병렬로 검색할 수 있도록 집성 서버는 로그 데이터를 복수의 로그 데이터 스트림으로 분할(split)하도록 구성될 수 있다.
로그 데이터는 복수의 로그 데이터 엔트리를 포함하고, 각각의 로그 데이터 엔트리는 애플리케이션 식별자(identification) 및 카테고리 필드를 포함하며, 집성 서버는 또한, 로그 데이터의 각각의 엔트리에 대해, 애플리케이션 식별자 및 카테고리 필드의 해시 함수에 버켓의 총 개수(total number)를 모듈로(modulo)함에 의해 버켓 수를 계산하고, 상기 로그 데이터의 엔트리를 버켓 수에 의해 식별된 로그 데이터 스트림에 할당하도록 구성되며, 버켓의 총 개수는 복수의 로그 데이터 스트림의 총 개수일 수 있다.
로그 데이터는 복수의 로그 데이터 엔트리를 포함하고, 집성 서버는, 각각의 로그 데이터 엔트리에 대해, 1에서 버켓의 총 개수 사이의 정수를 랜덤하게 생성하고, 상기 로그 데이터 엔트리를 버켓 수에 의해 식별된 로그 데이터 스트림에 할당하도록 구성되고, 상기 버켓의 총 개수는 복수의 로그 데이터 스트림의 총 개수일 수 있다.
버켓의 총 개수는 적어도 하나의 후단 서버에서 구동되는 데이터 소비 애플리케이션에 의해 지시(instruct)되고, 버켓의 총 개수는 로그 데이터 스트림을 수신하는데 이용가능한 후단 서버의 개수 및 각각의 후단 서버가 처리(handle)할 수 있는 연결의 개수에 의해 결정될 수 있다.
또한, 청구될 수 있는 본 발명의 실시예에서, 집성 서버는 프로세서; 프로세서에 결합된 네트워크 인터페이스; 데이터 스테이징 영역을 포함하는 데이터 저장체(storage); 및 프로세서에 의해 실행될 때 집성 서버로 하여금, 실시간 사용자 활동에 기초하여 로그 데이터를 생성하는 전단 서버로부터 로그 데이터를 수신하고, 로그 데이터를 집성하며, 데이터 스테이징 영역에서 로그 데이터를 스테이징하고, 하나 이상의 후단 서버가 로그 데이터 스트림을 병렬로 검색할 수 있도록 로그 데이터를 복수의 로그 데이터 스트림으로 분할하는 것을 포함하는 프로세스를 수행하도록 야기하는 명령어를 저장하는 메모리를 포함하며, 상기 집성 서버는 네트워크 인터페이스를 통해 복수의 전단 서버와 통신할 수 있다.
로그 데이터는 복수의 로그 데이터 엔트리를 포함하고, 각각의 로그 데이터 엔트리는 애플리케이션 식별자 및 카테고리 필드를 포함하며, 프로세스는, 로그 데이터의 각각의 엔트리에 대해, 애플리케이션 식별자 및 카테고리 필드의 해시 함수(hash function)에 버켓의 총 개수(total number)를 모듈로(modulo)함에 의해 버켓 수를 계산하고, 상기 로그 데이터의 엔트리를 버켓 수에 의해 식별된 로그 데이터 스트림에 할당하는 것을 더 포함하며, 상기 버켓의 총 개수는 복수의 로그 데이터 스트림의 총 개수일 수 있다.
로그 데이터는 복수의 로그 데이터 엔트리를 포함하고, 프로세스는, 각각의 로그 데이터 엔트리에 대해, 1에서 버켓의 총 개수 사이의 정수를 랜덤하게 생성하고, 상기 로그 데이터 엔트리를 버켓 수에 의해 식별된 로그 데이터 스트림에 할당하는 것을 더 포함하며, 상기 버켓의 총 개수는 복수의 로그 데이터 스트림의 총 개수일 수 있다.
본 발명의 추가 실시예에서, 하나 이상의 컴퓨터 판독가능한 비일시적 저장 매체(computer-readable non-transitory storage media)는 본 발명 또는 상술한 임의의 실시예에 따른 방법을 수행하도록 실행될 때, 작동가능한 소프트웨어를 수록(embody)한다.
본 발명의 추가 실시예에서, 시스템은 하나 이상의 프로세서; 및 프로세서에 결합된 메모리를 포함하며, 메모리는 본 발명 또는 상술한 임의의 실시예에 따른 방법을 수행하도록 실행될 때, 작동가능한 프로세서에 의해 실행가능한 명령어를 포함한다. 본 명세서에서 소개되는 기술의 다른 양태는 이하의 첨부된 도면 및 후술할 상세한 설명으로부터 명백해질 것이다.
본 발명의 내용 중에 포함되어 있다.
본 발명의 이들 및 다른 객체, 특징 및 특성은 본 명세서의 일부분을 형성하는, 후술할 상세한 설명 및 함께 첨부된 청구항과 도면을 고려하면 해당 기술 분야의 통상의 기술자에게 보다 명백해질 것이다.
도 1은 온라인 데이터 수집 시스템의 실시예를 도시한다.
도 2는 로그 데이터 스트림을 분할할 수 있는 집성 클러스터의 실시예를 도시한다.
도 3은 로그 데이터 엔트리의 예시적인 구조를 도시한다.
도 4는 다수 계층의 집성 서버를 갖는 온라인 데이터 수집 시스템의 다른 실시예를 도시한다.
도 5는 로그 데이터를 집성하고 스테이징하기 위한 예시적인 프로세스를 도시한다.
도 6은 로그 데이터를 스테이징하고 분할하기 위한 예시적인 프로세스를 도시한다.
도 7은 본 명세서에 기술되는 임의의 노드 또는 서버를 표현할 수 있는 컴퓨터 서버의 구조의 실시예를 도시하는 상위 레벨 블록 다이어그램이다.
본 설명에서 "실시예" 또는 "일실시예”등에 대한 참조는 기술된 특정 특징, 기능 또는 특성이 본 발명의 적어도 하나의 실시예에 포함됨을 의미한다. 본 설명에서 이러한 문구의 존재는 모두 같은 실시예를 언급한다거나, 반드시 상호 배타적일 것을 필요로 하는 것은 아니다.
도 1은 온라인 데이터 수집 시스템의 실시예를 도시한다. 온라인 데이터 수집 시스템(100)은 복수의 전단 클러스터(110)를 포함한다. 각각의 전단 클러스터(110)는 다중 인터커넥트(interconnect)된 전단 서버(112)를 포함한다. 일실시예에서, 전단 클러스터(110)는 5000에서 30000개의 전단 서버(112)를 포함할 수 있다. 전단 클러스터는 웹 트래픽을 처리하고 온라인 데이터 수집 시스템(100)에 의해 모니터링되는 사용자 활동에 기초하여 실시간으로 로그 데이터를 생성한다. 일실시예에서, 전단 클러스터(110)는 또한, HTTP 서비스를 제공하는 것을 포함하여 사용자 인터페이스를 시스템(100)의 사용자에게 제공하는 것을 담당한다.
온라인 데이터 수집 시스템(100)은 로그 데이터를 집성하는 것, 즉 효율적인 네트워크 데이터 전송을 위해 로그 데이터를 수집하고 버퍼링하는 것을 담당하는 복수의 집성 클러스터(120)를 더 포함한다. 각각의 전단 클러스터(110)는 집성 클러스터(120) 중 적어도 하나로 요청을 전송하여, 집성 클러스터(120)가 이용가능한지 여부를 결정한다. 집성 클러스터(120)가 이용가능하다면, 전단 클러스터(110)는 캡쳐된 로그 데이터를 실시간으로 집성 클러스터(120)로 스트리밍한다. 각각의 집성 클러스터(120)는 다중 서버로부터 스트리밍 로그 데이터를 수신하고, 로그 데이터를 집성한다. 일실시예에서, 로그 데이터의 집성은 파일 및 디렉토리를 조합하는 데 있어서 로그 데이터를 재조직화하는 것을 포함한다. 집성된 로그 데이터 파일은 유입되는 로그 데이터 파일과 일대일 맵핑(one to one mapping)될 것을 필요로 하지 않는다. 집성 클러스터(120)는 매우 많은 수의 서버 노드들로 확장될 수 있도록 설계되고, 네트워크 및 노드 실패에 강건(robust)하다. 일실시예에서, 집성 클러스터(120)는 집성된 로그 데이터에 대해 집성된 로그 데이터를 압축(compress)하는 것을 포함하는 추가적인 프로세싱을 수행한다. 다른 실시예에서, 집성 클러스터(120)는 집성된 로그 데이터에 대한 추가적인 프로세싱을 수행하지 않는다.
그리고 나서 집성 클러스터(120)는 하둡 클러스터 상에 구현되는 하이브 데이터 웨어하우스와 같은 데이터 웨어하우스(130)에 집성된 로그 데이터를 주기적으로 복사한다. 일부 실시예에서, 하이브 데이터 웨어하우스는 페타바이트의 데이터를 저장할 수 있다. 일부 다른 실시예에서, 집성 클러스터(120)는 집성된 로그 데이터를 하나 이상의 NFS 파일러(filer)로 전송한다.
일부 실시예에서, 집성 클러스터(120)는 2-계층 구조로 구현될 수 있다. 집성 클러스터 중 하나는 마스터(master) 집성 클러스터로 설계된다. 나머지 집성 클러스터는 레벨 2 집성 클러스터이다. 마스터 집성 클러스터는 로그 데이터를 전단 클러스터(110)로부터 수신하고 수신된 로그 데이터를 레벨 2 집성 클러스터로 분산하는 것을 담당한다. 후단 서버에서 구동되는 데이터 소비 애플리케이션은 레벨 2 집성 클러스터로부터 실시간으로 로그 데이터를 검색한다. 이러한 집성 클러스터의 2-계층 구조는 후단 서버가 로그 데이터를 그들로부터 풀 다운(pull down)하게끔 큰 대역폭(bandwidth)을 제공한다. 일부 다른 실시예에서, 후단 서버에서 구동되는 데이터 소비 애플리케이션은 마스터 집성 클러스터로부터 직접 실시간으로 로그 데이터를 검색한다.
후단 서버(140)는 데이터 웨어하우스(130)가 관련 로그 데이터를 수신하고 프로세싱했을 때, 오프라인 데이터 분석을 위해 쿼리(query) 요청을 데이터 웨어하우스(130)에 전송할 수 있다. 더 빠른 로그 데이터 액세스를 위해, 각각의 집성 클러스터(120)는 데이터 스테이징 영역(122)을 포함한다. 데이터 스테이징 영역(122)은 프로세싱 이전에 집성된 로그 데이터를 일시적으로 저장(파킹이라고도 함)하기 위한 집성 클러스터(120) 내의 중간 저장 영역이다. 일실시예에서, 데이터 스테이징 영역(122)은 집성 클러스터(120)의 서버에 걸쳐 확장될 수 있다. 후단 서버(140)는 실시간 또는 거의 실시간으로 로그 데이터 피드를 위해 직접 데이터 스테이징 영역(122)에 액세스할 수 있다. 데이터 스테이징 영역(122)에 저장된 로그 데이터는 기결정된 시구간 후에 제거될 수 있다. 예컨대, 일실시예에서 로그 데이터는 캡쳐된지 3일 후에 제거된다. 일실시예에서 후단 서버(140)는 온라인 데이터 수집 시스템(100)의 일부이다. 다른 실시에에서, 후단 서버(140)는 온라인 데이터 수집 시스템(100)으로부터 분리되어 있다.
일부 실시예에서, 전단 클러스터(110) 내의 서버(112)는 레벨원 플러스(level one plus) 스테이징 영역(115)을 더 포함한다. 예컨대, 전단 클러스터(110)의 전단 서버(112)는 그것의 대응하는 집성 클러스터(120)가 이용가능하지 않다고 통지된다. 로그 데이터를 현재 이용가능하지 않은 집성 클러스터(120)에 스트리밍하는 대신에, 전단 서버(112)는 일시적으로 로그 데이터를 레벨원 플러스 스테이징 영역(115)에 저장한다. 레벨원 플러스 스테이징 영역(115)은 후단 서버에 의해 직접적으로 액세스될 수 있다. 즉, 후단 서버(140)는 집성 클러스터(120) 또는 데이터 웨어하우스(130)를 액세싱할 필요없이 레벨원 플러스 스테이징 영역(115)으로부터 로그 데이터를 직접 스트리밍할 수 있다. 일부 다른 실시예에서, 전단 클러스터(110)는 레벨원 플러스 스테이징 영역과 함께 또는 그것없이 시스템 내의 임의의 레벨로부터 서버에 의해 직접 액세스될 수 있는 레벨제로 스테이징 영역을 더 포함할 수 있다.
일실시예에서, 온라인 데이터 수집 시스템은 데이터를 다중 우선순위 티어(multiple priority tier)로 나눔으로써 로그 데이터를 우선순위화(prioritize)할 수 있다. 예컨대, 최상 티어(top tier) 로그 데이터는 데이터 웨어하우스 및 후단 서버로 전송될 더 높은 우선순위를 갖을 것이다. 최상 티어 로그 데이터는 또한, 데이터가 스테이징 영역에 파킹될 때, 더 긴 유지 시간을 가질 수 있다. 더 낮은 티어 로그 데이터는 최상 티어의 로그 데이터보다 더 짧은 유지 시구간 후에 더 먼저 삭제될 것이다. 일부 실시예에서, 우선순위를 설정하는 명령어는 정책 시스템(policy system)에서 구현될 수 있다. 데이터 소비 애플리케이션이 제출되면, 그것이 요청하는 데이터 카테고리에 대한 우선순위 티어뿐만 아니라 대역폭에 대해 정책이 특정될 수 있다. 정책은 또한, 요청된 로그 데이터가 스테이징된 영역으로부터 직접 실시간으로 애플리케이션이 구동하는 후단 서버로 전송될지 여부, 요청된 로그 데이터를 데이터 웨어하우스로부터 전송할지 여부나 요청된 로그 데이터가 집성 서버에서 레벨원 플러스 스테이징 영역 또는 스테이징 영역에서 스테이징될지 여부를 특정한다.
로그 데이터의 프로세싱을 가속화하기 위해, 집성 클러스터는 로그 데이터를 다중 로그 데이터 스트림으로 분할하여 로그 데이터 스트림이 후단 서버에서 구동되는 데이터 소비 애플리케이션에 병렬로 전송되도록 한다. 도 2는 로그 데이터 스트림을 분할할 수 있는 집성 클러스터의 실시예를 도시한다. 집성 클러스터(210)는 로그 데이터가 균일하게 그리고 랜덤하게 로그 데이터 스트림(212)(버켓이라고도 불림)에서 분산되는 것을 보장하기 위해 로그 데이터의 엔트리를 검사함으로써 로그 데이터를 분할한다. 도 3은 로그 데이터 엔트리의 예시적인 구조를 도시한다. 로그 데이터의 엔트리(300)는 로그 데이터 엔트리를 소비하고 프로세싱할 데이터 소비 애플리케이션을 식별하는 애플리케이션 ID(310)를 포함한다. 일실시예에서, 애플리케이션 ID(310)는 개발자 ID이다. 엔트리(300)는 카테고리(320)를 더 포함한다. 카테고리(320)는 메시지의 지정된 목적지(intended destination)의 상위 레벨 기술이다. 엔트리(300)는 메시지(330)를 더 포함한다. 메시지(330)는 로그 데이터 엔트리의 실제 콘텐츠를 포함한다.
일실시예에서, 집성 서버는 애플리케이션 ID 및 카테고리를 읽고, 그리고 나서 애플리케이션 ID 및 카테고리의 해시 함수(hash function)를 계산한다. 예컨대, 해시 함수는 32-비트 또는 128-비트 해시 값을 만들어 내는 MurmurHash3hash 함수일 수 있다. 집성 서버는 또한, 버켓의 총 수에 의해 해시 함수의 값을 모듈로(modulo)한다. 결과물은 로그 데이터 엔트리가 할당되는 버켓 수(bucket number)이다. 즉, 로그 데이터 엔트리는 그 버켓 수를 갖는 로그 데이터 스트림에 포함될 것이다. 해시 함수는 로그 데이터 엔트리를 리셔플(reshuffle)하여 엔트리가 균일하고 랜덤하게 버켓(즉, 분할된 로그 데이터 스트림)에 분산되도록 한다. 버켓 수를 엔트리에 할당하는 것은 엔트리가 생성되는 때의 시간이나 엔트리의 애플리케이션 ID와 상관관계(correlation)를 갖지 않는다. 일부 실시예에서, 버켓 수는 애플리케이션 ID이외에 로그 데이터 엔트리의 데이터 필드에 대한 함수일 수 있다. 예컨대, 해시 함수는 버켓 수를 결정하기 위한 해시 값을 생성하도록 애플리케이션 ID 및 로그 데이터 엔트리의 다른 데이터 필드를 사용할 수 있다.
버켓의 총 개수는 다양한 방법으로 결정될 수 있다. 일실시예에서, 후단 서버의 총 개수는 각각의 후단 서버가 처리할 수 있는 추정된 총 데이터 볼륨 및 데이터 대역폭에 의해 결정된다. 버켓의 개수는 시스템이 더 많은 후단 서버를 포함시키게끔 확장할 수 있도록 후단 서버의 개수보다 큰 숫자로 결정된다. 예컨대, 버켓의 개수가 1024라면, 이는 시스템이 스트림 분할에 대한 변경을 할 필요없이 1024개의 후단 서버로까지 확장할 수 있음을 뜻한다. 복수의 후단 서버는 실시간으로 분할된 데이터 스트림을 병렬로 프로세싱하는데 사용될 수 있다. 후단 서버는 스트림이 균일하게 분산되기 때문에 동등하게 로딩된다. 다른 실시예에서, 데이터 소비 애플리케이션을 제출할 때, 로그 데이터 스트림의 병렬 프로세싱을 위한 버켓의 개수를 포함하는 정책이 데이터 소비 애플리케이션에 대해 특정될 수 있다.
다른 실시예에서, 각각의 로그 데이터 엔트리에 할당된 버켓 수는 임의의 수(random number)에 의해 결정된다. 집성 서버는 버켓의 총 개수의 범위 내의 임의의 정수를 생성하고, 그 생성된 정수를 할당된 버켓 수로서 로그 데이터 엔트리에 할당한다.
다른 추가 실시예에서, 데이터 소비 애플리케이션은 버켓 수를 할당하기 위한 함수 또는 방법을 특정할 수 있다. 예컨대, 데이터 소비 애플리케이션은 엔트리의 특정 ID에 기초하여 버켓 수를 할당할 수 있다. 데이터 소비 애플리케이션은 엔트리의 사용자 ID의 제1 범위를 제1 버켓 수에 할당하고, 엔트리의 사용자 ID의 제2 범위를 제2 버켓 수에 할당하는 등등을 할 수 있다.
일실시예에서, 온라인 데이터 수집 시스템은 도 1의 집성 서버와 유사한 하나 이상의 중간 서버의 계층을 가질 수 있다. 도 4는 다중 계층의 집성 서버를 갖는 온라인 데이터 수집 시스템의 다른 실시예를 도시한다. 온라인 데이터 수집 시스템(400)은 복수의 전단 클러스터(410)를 포함한다. 각각의 전단 클러스터(410)는 다중 인터커넥트된 전단 서버(412)를 포함한다. 전단 클러스터(410)는 온라인 데이터 수집 시스템(100)에 의해 모니터링되는 사용자 활동에 기초하여 실시간으로 로그 데이터를 생성한다. 일실시예에서, 전단 클러스터(110) 내의 서버(412)는 후단 서버(450)에 의해 직접 액세스될 수 있는 레벨원 플러스 스테이징 영역(415)을 더 포함할 수 있다.
온라인 데이터 수집 시스템(400)은 전단 클러스터(410)로부터 전송되는 로그 데이터를 집성하는 것을 담당하는 복수의 제1 레벨 집성 클러스터(420)를 더 포함한다. 게다가, 온라인 데이터 수집 시스템(400)은 제1 레벨 집성 클러스터(420)로부터 전송된 로그 데이터를 집성하는 것을 담당하는 하나 이상의 제2 레벨 집성 클러스터(430)를 포함한다. 그리고 나서, 제2 레벨 집성 클러스터(430)는 하둡 클러스터 상에 구현되는 하이브 데이터 웨어하우스와 같은 데이터 웨어하우스(440)에 집성된 로그 데이터를 주기적으로 복사한다.
제1 레벨 집성 클러스터(420)는 제1 레벨 데이터 스테이징 영역(422)을 포함하고, 제2 레벨 집성 클러스터(430)는 제2 레벨 데이터 스테이징 영역(432)을 포함한다. 후단 서버(450)는 로그 데이터를 제1 레벨 데이터 스테이징 영역(422) 또는 제2 레벨 데이터 스테이징 영역(432)으로부터 직접 검색할 수 있다. 일실시예에서, 후단 서버(450)는 네트워크 토폴로지(topology)에 기초하여 제1 레벨 데이터 스테이징 영역 또는 제2 레벨 데이터 스테이징 영역으로부터 로그 데이터를 검색할지 여부를 결정할 수 있다. 예컨대, 후단 서버(450)가 네트워크 토폴로지에 있어서 제1 레벨 집성 클러스터(420)보다 제2 레벨 집성 클러스터(430)에 가깝게 있다면, 후단 서버(450)는 로그 데이터를 제2 레벨 데이터 스테이징 영역(432)으로부터 검색하게끔 결정할 수 있다.
예컨대, 일실시예에서 로그 데이터는 사용자 활동 데이터이며, 데이터 소비 애플리케이션은 뉴스피드(newsfeed) 애플리케이션이다. 시구간 이후 오프라인 로그 데이터가 데이터 웨어하우스에서 이용가능하게 되는 것을 기다리는 대신에 뉴스피드 애플리케이션은 어떤 집성 클러스터가 네트워크 토폴로지에서 뉴스피드 애플리케이션의 후단 서버에 더 가깝게 있는지에 의존하여, 제1 레벨 스테이징 영역이나 제2 레벨 스테이징 영역으로부터 실시간으로 관련 사용자 활동 로그 데이터를 검색하도록 요청할 수 있다. 뉴스피드 애플리케이션은 매우 낮은 지연시간으로 사용자 활동 로그 데이터를 풀(pull)하며, 가능한 빨리 로그 데이터를 프로세싱하고 뉴스필드 결과를 채울 수 있다.
일실시예에서, 다중 레벨의 집성 클러스터를 갖는 온라인 데이터 수집 시스템은 레벨원 플러스 스테이징 기능(capability)을 갖는 전단 클러스터를 포함한다. 집성 클러스터가 이용가능하지 않은 때에 전단 클러스터는 그것의 레벨원 플러스 스테이징 기능을 사용하여 로그 데이터를 후단 서버에 계속 피드(feed)할 수 있다. 다른 실시예에서, 온라인 데이터 수집 시스템은 심지어 데이터 스테이징 기능을 갖는 둘 이상의 집성 클러스터 레벨을 포함할 수 있다.
이러한 다중-레벨 스테이징 기능을 갖는 온라인 데이터 수집 시스템은 로그 데이터 집성의 각각의 스테이지에서 실시간으로 로그 데이터를 제공할 수 있다. 시스템은 로그 데이터가 중앙 데이터 저장소(repository)(예컨대, 데이터 웨어하우스)로부터 아직 이용가능하지 않은 때, 각각의 스테이지에서 데이터 소비 쿼리에 응답하여 낮은 지연시간의 데이터 피드를 공급할 수 있다. 후단 서버는 스테이지 로그 데이터를 검색하기 위해 네트워크 토폴로지에 있어 더 가까운 클러스터를 선택할 수 있다. 후단 서버의 데이터 스트림은 네트워크에서 더 적은 수의 노드 및 시스템을 통해 이동하며; 따라서, 전송 도중에 로그 데이터가 손실되거나 손상(corrupt)될 확률이 더 적다. 따라서, 다중-레벨 스테이징 시스템은 로그 데이터 전송의 내구성(durability) 및 신뢰성을 향상시킨다.
도 5는 로그 데이터를 집성하고 스테이징하기 위한 예시적인 프로세스를 도시한다. 단계(510)에서, 전단 서버는 실시간 사용자 활동에 기초하여 로그 데이터를 생성한다. 일실시예에서, 전단 서버는 또한, 웹 컨텐츠를 사용자에게 제공한다. 일실시예에서, 전단 서버는 로그 데이터에 복수의 우선순위 티어를 제공하며, 오로지 우선순위 티어의 최상 티어 내의 로그 데이터만을 집성 서버에 전송한다.
단계(514)에서, 전단 서버는 집성 서버가 이용가능한지 여부를 확인한다. 집성 서버가 이용가능하지 않다면, 전단 서버는 단계(516)에서 복수의 전단 서버 중 적어도 하나 내의 레벨원 플러스 스테이징 영역에서 로그 데이터를 스테이징한다. 단계(518)에서, 전단 서버는 후단 서버가 요청한다면 레벨원 플러스 스테이징 영역으로부터 후단 서버로 로그 데이터를 실시간으로 피드한다. 집성 서버가 이용가능하다면, 단계(520)에서 전단 서버는 로그 데이터를 집성 서버에 전송한다.
단계(530)에서, 집성 서버는 로그 데이터를 집성한다. 일실시예에서, 집성하는 것은 집성 서버에서 로그 데이터의 스트림을 조합함으로써 로그 데이터를 재조직화하는 것을 포함한다. 다른 실시예에서, 집성 서버는 또한, 집성 서버에서 로그 데이터를 압축한다.
단계(540)에서, 집성 서버는 로그 데이터를 스테이징하여 후단 서버가 로그 데이터에 실시간으로 액세스할 수 있도록 한다. 일실시예에서, 하나의 후단 서버는 집성 서버 및 전단 서버로 로그 데이터를 위한 데이터 스테이징 위치에 관한 명령어를 전송한다. 그리고 나서 집성 서버와 전단 서버는 명령어에 따라 로그 데이터를 스테이징할지 여부를 결정한다. 단계(550)에서, 집성 서버는 로그 데이터를 집성 서버로부터 후단 서버에 실시간으로 직접 피드한다.
단계(560)에서, 집성 서버는 로그 데이터를 데이터 웨어하우스로 전송한다. 단계(570)에서, 데이터 웨어하우스는 로그 데이터를 프로세싱하여 데이터 웨어하우스가 프로세싱된 로그 데이터에 기초하여 데이터 쿼리에 응답할 수 있도록 한다.
단계(580)에서, 집성 서버는 기결정된 시구간 후에 로그 데이터를 집성 서버로부터 제거한다. 전단 서버가 레벨원 플러스 스테이징 영역에서 로그 데이터를 스테이징한다면, 전단 서버는 또한, 기결정된 시구간 후에 로그 데이터를 레벨원 플러스 스테이징 영역으로부터 제거한다.
도 6은 로그 데이터를 스테이징하고 분할하기 위한 예시적인 프로세스를 도시한다. 단계(610)에서, 전단 서버는 실시간 사용자 활동에 기초하여 로그 데이터를 생성한다. 일실시예에서, 전단 서버는 또한, 사용자에게 웹 컨텐츠를 제공한다.
단계(614)에서, 전단 서버는 집성 서버가 이용가능한지 여부를 확인한다. 만약 집성 서버가 이용가능하지 않다면, 전단 서버는 단계(616)에서 복수의 전단 서버 중 적어도 하나 내의 레벨원 플러스 스테이징 영역에서 로그 데이터를 스테이징한다.
단계(618)에서, 전단 서버는 후단 서버가 요청한다면, 로그 데이터를 레벨원 플러스 스테이징 영역으로부터 후단 서버로 실시간으로 피드한다. 집성 서버가 이용가능하다면, 단계(620)에서 전단 서버는 로그 데이터를 집성 서버에 전송한다.
단계(630)에서, 집성 서버는 로그 데이터를 집성한다. 일실시예에서, 집성하는 것은 집성 서버에서 로그 데이터의 스트림을 조합함으로써 로그 데이터를 재조직화하는 것을 포함한다. 다른 실시예에서, 집성 서버는 또한 집성 서버에서 로그 데이터를 압축한다.
단계(640)에서, 집성 서버는 로그 데이터를 스테이징하여 후단 서버가 실시간으로 로그 데이터에 액세스할 수 있도록 한다.
일실시예에서, 로그 데이터는 복수의 로그 데이터 엔트리를 포함한다. 각각의 로그 데이터 엔트리는 애플리케이션 식별자 및 카테고리 필드를 포함한다. 카테고리 필드는 로그 데이터 엔트리의 지정된 목적지(intended destination)의 상위 레벨 기술(high level description)을 포함한다. 애플리케이션 식별자는 로그 데이터 엔트리를 프로세싱하기 위한 데이터 소비 애플리케이션을 식별한다. 집성 서버는 애플리케이션 식별자 및 카테고리 필드를 인식하기 위해 로그 데이터의 엔트리의 프리픽스(prefix)를 검사할 수 있다.
일실시예에 있어서, 단계(650)에서 로그 데이터의 각각의 엔트리에 대해, 집성 서버는 애플리케이션 식별자 및 카테고리 필드의 해시 함수에 버켓의 총 개수를 모듈로(modulo)함에 의해 버켓 수(bucket number)를 계산한다. 버켓의 총 개수는 복수의 로그 데이터 스트림의 총 개수이다. 일실시예에서, 버켓의 총 개수는 로그 데이터 스트림을 수신하는데 이용가능한 후단 서버의 개수 및 각각의 후단 서버가 처리할 수 있는 연결의 개수에 의해 결정된다. 다른 실시예에서, 버켓의 총 개수는 적어도 하나의 후단 서버에서 구동되는 데이터 소비 애플리케이션에 의해 지시된다. 후단 서버가 로그 데이터 스트림을 수신하고 프로세싱할 때 후단 서버가 동등하게 로딩되게끔 하는 목적이다. 단계(652)에서, 집성 서버는 그 로그 데이터의 엔트리를 버켓 수에 의해 식별된 로그 데이터 스트림에 할당한다.
다른 실시예에서, 각각의 로그 데이터 엔트리에 대해, 집성 서버는 1에서 버켓의 총 개수 사이의 정수를 랜덤하게 생성한다. 그리고 나서, 집성 서버는 상기 로그 데이터 엔트리를 버켓 수에 의해 식별된 로그 데이터 스트림에 할당한다.
단계(654)에서 집성 서버는 로그 데이터를 복수의 로그 데이터 스트림으로 분할(split)한다. 일실시예에서, 집성 서버는 어떻게 로그 데이터를 복수의 로그 데이터 스트림으로 분할할지에 관한 명령어를 후단 서버로부터 수신한다. 일실시예에서, 전단 서버는 또한 집성 서버가 로그 데이터를 분할하는 것과 유사한 방법으로 로그 데이터를 복수의 로그 데이터 스트림으로 분할한다. 단계(660)에서, 집성 서버는 하나 이상의 후단 서버로 로그 데이터 스트림을 병렬로 피드한다.
단계(670)에서, 집성 서버는 로그 데이터를 데이터 웨어하우스에 전송한다. 단계(680)에서, 데이터 웨어하우스는 로그 데이터를 프로세싱하여 데이터 웨어하우스가 프로세싱된 로그 데이터에 기초하여 데이터 쿼리에 응답할 수 있도록 한다.
단계(690)에서, 집성 서버는 기결정된 시구간 이후에 집성 서버로부터 로그 데이터를 제거한다. 전단 서버가 로그 데이터를 레벨 원 플러스 스테이징 영역에서 스테이징한다면, 전단 서버는 또한 기결정된 시구간 이후에 레벨 원 플러스 스테이징 영역으로부터 로그 데이터를 제거한다.
일실시예에서, 후단 서버가 분할된 로그 데이터 스트림을 수신한 후에, 후단 서버는 분할된 로그 데이터를 통합(consolidate)한다. 로그 데이터가 분할 전에 복수의 스트림에 속한다고 가정하면, 각각의 스트림은 후단 서버 중 하나에 할당된다. 임의의 후단 서버가 집성 서버로부터 분할된 로그 데이터 스트림의 메시지를 수신할 때, 그것은 어떤 후단 서버가 메시지가 속하는 스트림에 대해 할당되는지를 결정한다. 그리고 나서 후단 서버는 메시지를 할당된 후단 서버(소유자라고도 하는)에 포워딩한다. 일실시예에서, 후단 서버는 하나의 카테고리에 대한 로그 데이터를 큐(queue)로 통합한다. 큐는 다양한 방법으로 구현될 수 있다. 예컨대, 큐는 마지막 파일이 유일한 잠재적으로 열린 파일인 디렉토리에서의 파일과 유사한 명명법(naming convention)으로 구현될 수 있다. 큐를 구현하는 다른 방법은 2-계층 시스템을 사용하는 것이다.
일부 실시예에서, 서버-스트림 할당 정보를 기록하기 위해 후단 서버는 할당 정보를 위한 분산 맵(distribution map)을 유지한다. 분산 맵은 예컨대 서버가 이용가능하지 않은 때나 새로운 스트림이 추가되는 때와 같이 할당 정보에 대한 변화가 있는 경우 업로드된다. 후단 서버는 낮은 지연시간 방식으로 이러한 변화에 대한 통지를 받는다.
이러한 스트림-서버 할당 메커니즘은 스트림과 후단 서버 사이의 관계를 관리하기 위한 자동적이고 동적인 방법이다. 후단 서버 중 하나가 실패할 때, 잔존하는 후단 서버는 실패한 후단 서버에 할당되었던 스트림의 소유를 재분산할 수 있다. 일부 스트림의 소유를 일부 후단 서버로부터 다른 후단 서버로 이전함으로써, 이러한 메커니즘은 후단 서버의 작업 로드의 균형을 맞출 수 있다.
도 7은 전단 서버, 집성 서버, 데이터 웨어하우스 서버 및 후단 서버 중 어느 하나를 나타낼 수 있는 서버(700)에 대한 구조의 예를 도시하는 상위 레벨 블록 다이어그램이다. 서버(700)는 하나 이상의 프로세서(710) 및 인터커넥트(730)에 결합된 메모리(720)를 포함한다. 도 7에 도시된 인터커넥트(730)는 임의의 하나 이상의 분리된 물리적 버스(physical bus), 포인트 대 포인트 연결 또는 적절한 브릿지, 어댑터 또는 컨트롤러로 연결되는 이들 모두를 나타내는 추상적 개념이다. 따라서, 인터커넥트(730)는 예컨대 시스템 버스, PCI(Peripheral Component Interconnect) 버스, PCI-Express 버스, 하이퍼트랜스포트(HyperTransport) 또는 ISA(industry standard architecture) 버스, SCSI(small computer system interface) 버스, USB(universal serial bus), IIC(I2C) 버스 또는 "Firewire"라고도 하는 IEEE(Institute of Electrical and Electronics Engineers) 표준 674 버스를 포함할 수 있다.
프로세서(들)(710)는 서버(700)의 중앙 처리 유닛(central processing unit; CPU)이며, 따라서 서버(700)의 전체적인 동작을 제어한다. 특정 실시예에서, 프로세서(들)(710)는 메모리(720)에 저장된 소프트웨어 또는 펌웨어를 실행하여 이를 달성한다. 프로세서(들)(710)는 하나 이상의 프로그램가능한 범용 또는 특수용 마이크로프로세서, 디지털 신호 프로세서(digital signal processors; DSPs), 프로그램가능한 컨트롤러, 주문형 집적회로(application specific integrated circuits; ASICs), 프로그램가능한 논리 장치(programmable logic devices; PLDs), 신뢰 플랫폼 모듈(trusted platform modules; TPMs) 등 또는 이런 장치의 조합이거나, 이들을 포함할 수 있다.
메모리(720)는 서버(700)의 메인 메모리이거나 이를 포함한다. 메모리(720)는 임의의 형태의 랜덤 액세스 메모리(RAM), 읽기-전용 메모리(ROM), 플래시 메모리 등 또는 이런 장치의 조합을 나타낸다. 사용시, 메모리(720)는 다른 것들 이외에 서버(700)의 운영 시스템의 적어도 일부를 구체화하는 코드(770)를 담을 수 있다. 코드(770)는 또한, 본 명세서에 개시된 기술을 실행하기 위한 명령어를 포함할 수 있다.
또한, 네트워크 어댑터(740) 및 저장 어댑터(750)가 인터커넥트(730)를 통해 프로세서(들)(710)와 연결된다. 네트워크 어댑터(740)는 가령 다른 전단 서버, 통합 서버, 데이터 웨어하우스 서버 또는 후단 서버와 같은 장치와 네트워크상에서 통신하는 능력을 서버(700)에 제공하며, 예컨대 이더넷(Ethernet) 어댑터 또는 광섬유 채널 어댑터일 수 있다. 일부 실시예에서, 서버는 데이터 저장 클러스터 내 및 외에서의 통신을 처리하기 위한 하나 이상의 네트워크 어댑터를 별도로 사용할 수 있다. 저장 어댑터(750)는 서버(700)가 영속적인 저장체(persistent storage)에 액세스할 수 있도록 하고, 예컨대 광섬유 채널 어댑터 또는 SCSI 어댑터일 수 있다.
메모리(720)에 저장된 코드(770)는 소프트웨어 및/또는 펌웨어로 구현되어 프로세서(들)(710)이 후술할 행위를 수행하도록 프로그램할 수 있다. 특정 실시예에서, 이러한 소프트웨어 또는 펌웨어는 서버(700)를 통해(예컨대, 네트워크 어댑터(740)를 거쳐) 시스템으로부터 다운로드함으로써 서버(700)에 처음 제공될 수 있다.
본 명세서에 소개된 기술은 예컨대, 소프트웨어 및/또는 펌웨어로 프로그램된 프로그램 가능한 회로(circuitry)(예를 들어, 하나 이상의 마이크로프로세서) 또는 완전히 특수용 하드웨어 내장 회로 또는 이런 형태의 조합에 의해 구현될 수 있다. 특수용 하드웨어 내장 회로는 예컨대 하나 이상의 주문형 집적회로(application specific integrated circuits; ASICs), 프로그램 가능한 논리 장치(programmable logic devices; PLDs), 필드 프로그래머블 게이트 어레이(field programmable gate arrays; FPGAs), 기타 등등의 형태일 수 있다.
본 명세서에 소개된 기술의 구현에 있어 사용하기 위한 소프트웨어 또는 펌웨어는 기계-판독가능한 저장 매체(machine-readable storage medium)에 저장되고 하나 이상의 범용 또는 특수용 프로그램가능 마이크로프로세서에 의해 실행될 수 있다. 본 명세서에서 사용되는 용어 "기계-판독가능한 저장 매체"는 기계에 의해 접근 가능한 형태의 정보를 저장할 수 있는 임의의 메커니즘을 포함한다(기계는 예컨대 컴퓨터, 네트워크 장치, 휴대폰, 개인용 정보 단말기(PDA), 제작 도구, 하나 이상의 프로세서를 가지는 임의의 장치 등일 수 있다). 예를 들어, 기계-접근가능한 저장 매체는 기록가능/비-기록가능 매체(예를 들어 읽기-전용 메모리(ROM); 랜덤 액세스 메모리(RAM); 자기 디스크 저장 매체; 광학 저장 매체; 플래시 메모리 장치; 기타 등등) 등을 포함한다.
본 명세서에 사용되는 용어 "논리"는 예컨대 특정 소프트웨어 및/또는 펌웨어로 프로그램된 프로그램가능한 회로, 특수용 하드웨어 내장 회로 또는 이들의 조합을 포함할 수 있다.
상술한 예시에 추가하여, 발명의 다양한 다른 수정 및 변형이 발명에서 벗어남 없이 이루어질 수 있다. 따라서, 상술한 설명은 제한적인 것으로 인식될 것이 아니며, 첨부한 청구항은 발명의 진정한 정신과 전체 범위를 포함하는 것으로 해석되어야 할 것이다.

Claims (20)

  1. 복수의 전단 서버(112)에서, 실시간 사용자 활동에 기초하여 로그 데이터를 생성하는 단계(510, 610);
    로그 데이터를 적어도 하나의 집성 서버(aggregating server)로 송신하는 단계(520, 620);
    집성 서버에서, 로그 데이터를 집성하는 단계(530, 630);
    적어도 하나의 집성 서버에서, 로그 데이터를 복수의 로그 데이터 스트림(212)으로 분할(split)하는 단계(654); 및
    적어도 하나의 집성 서버에 의해, 로그 데이터 스트림(212)을 적어도 하나의 후단 서버(140)에 병렬로 피드(feed)하는 단계(550, 650)를 포함하고,
    상기 로그 데이터는 복수의 로그 데이터 엔트리를 포함하고, 각각의 로그 데이터 엔트리는 애플리케이션 식별자(310) 및 카테고리 필드(320)를 포함하며,
    상기 로그 데이터의 각각의 엔트리에 대하여, 집성 서버에 의해, 애플리케이션 식별자(310) 및 카테고리 필드(320)의 해시 함수에 버켓의 총 개수를 모듈로(modulo)함에 의해 버켓 수(bucket number)를 계산하는 단계(650); 및
    집성 서버에 의해, 로그 데이터의 엔트리를 버켓 수에 의해 식별된 로그 데이터 스트림(212)에 할당하는 단계를 포함하는 것을 특징으로 하고,
    상기 버켓의 총 개수는 복수의 로그 데이터 스트림(212)의 총 개수인 방법.
  2. 제 1 항에 있어서,
    분할하는 단계(654)는:
    로그 데이터가 복수의 로그 데이터 스트림(212)으로 균일하게 분산되도록 로그 데이터를 랜덤하게 분할하는 단계를 포함하는 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    프로세싱 이전에 집성된 로그 데이터를 일시적으로 저장하기 위한 집성 클러스터(120) 내의 중간 저장 영역을 표현하는 데이터 스테이징 영역(122)에서 로그 데이터를 스테이징하는 단계(516, 616)를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    후단 서버(140)로부터 로그 데이터를 복수의 로그 데이터 스트림(212)으로 어떻게 분할할지에 관한 명령어를 수신하는 단계를 더 포함하는 방법.
  5. 제 1 항에 있어서,
    카테고리 필드(320)는 로그 데이터 엔트리의 지정된(intended) 목적지의 상위 레벨 설명을 포함하는 방법.
  6. 제 1 항에 있어서,
    애플리케이션 식별자(310)는 로그 데이터 엔트리를 프로세싱하기 위한 데이터 소비 애플리케이션을 식별하는 방법.
  7. 제 1 항에 있어서,
    버켓의 총 개수는 로그 데이터 스트림(212)을 수신하는데 이용가능한 후단 서버(140)의 개수 및 각각의 후단 서버(140)가 처리할 수 있는 연결의 개수에 의해 결정되는 방법.
  8. 제 7 항에 있어서,
    후단 서버(140)가 로그 데이터 스트림(212)을 수신하고 프로세싱할 때, 후단 서버(140)는 동등하게 로딩되는 방법.
  9. 제 1 항에 있어서,
    복수의 전단 서버(112)는 소셜 네트워크를 위해 데이터를 프로세싱하는 방법.
  10. 제 1 항에 있어서,
    엔트리가 할당된 로그 데이터 스트림(212)을 결정하기 위해 로그 데이터의 엔트리의 프리픽스(prefix)를 검사하는 단계를 더 포함하는 방법.
  11. 제 1 항에 있어서,
    적어도 하나의 집성 서버 중 하나에 의해, 로그 데이터를 데이터 웨어하우스(130)로 전송하는 단계(560, 670); 및
    데이터 웨어하우스(130)가 프로세싱된 로그 데이터에 기초하여 데이터 질의에 응답할 수 있도록 데이터 웨어하우스(130)에서 로그 데이터를 프로세싱하는 단계를 더 포함하는 방법.
  12. 하나 이상의 컴퓨터-판독가능한 비-일시적 저장 매체로서, 제 1 항에 따른 방법을 수행하도록 실행시 동작하는 소프트웨어를 수록하는 컴퓨터-판독가능한 비-일시적 저장 매체.
  13. 하나 이상의 프로세서(710); 및
    프로세서(710)에 의해 실행가능한 명령어를 포함하고 프로세서(710)에 결합된 메모리(720)를 포함하는 시스템(100)으로서,
    상기 프로세서(710)는 제 1 항에 따른 방법을 수행하는 명령어를 실행시 동작하는 시스템(100).

  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020157022383A 2013-01-31 2014-01-17 낮은 지연속도 데이터 액세스를 위한 데이터 스트림의 분할 KR101885688B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/756,340 US10223431B2 (en) 2013-01-31 2013-01-31 Data stream splitting for low-latency data access
US13/756,340 2013-01-31
PCT/US2014/012120 WO2014120487A1 (en) 2013-01-31 2014-01-17 Data stream splitting for low-latency data access

Publications (2)

Publication Number Publication Date
KR20150114965A KR20150114965A (ko) 2015-10-13
KR101885688B1 true KR101885688B1 (ko) 2018-08-06

Family

ID=51224089

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157022383A KR101885688B1 (ko) 2013-01-31 2014-01-17 낮은 지연속도 데이터 액세스를 위한 데이터 스트림의 분할

Country Status (10)

Country Link
US (1) US10223431B2 (ko)
JP (1) JP6258975B2 (ko)
KR (1) KR101885688B1 (ko)
CN (1) CN104969213B (ko)
AU (1) AU2014212780B2 (ko)
BR (1) BR112015017391A2 (ko)
CA (1) CA2897338C (ko)
IL (1) IL239811B (ko)
MX (1) MX356571B (ko)
WO (1) WO2014120487A1 (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9609050B2 (en) * 2013-01-31 2017-03-28 Facebook, Inc. Multi-level data staging for low latency data access
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US10776404B2 (en) 2015-04-06 2020-09-15 EMC IP Holding Company LLC Scalable distributed computations utilizing multiple distinct computational frameworks
US10425350B1 (en) 2015-04-06 2019-09-24 EMC IP Holding Company LLC Distributed catalog service for data processing platform
US10511659B1 (en) * 2015-04-06 2019-12-17 EMC IP Holding Company LLC Global benchmarking and statistical analysis at scale
US10541938B1 (en) 2015-04-06 2020-01-21 EMC IP Holding Company LLC Integration of distributed data processing platform with one or more distinct supporting platforms
US10706970B1 (en) 2015-04-06 2020-07-07 EMC IP Holding Company LLC Distributed data analytics
US10791063B1 (en) 2015-04-06 2020-09-29 EMC IP Holding Company LLC Scalable edge computing using devices with limited resources
US10515097B2 (en) * 2015-04-06 2019-12-24 EMC IP Holding Company LLC Analytics platform for scalable distributed computations
US10541936B1 (en) * 2015-04-06 2020-01-21 EMC IP Holding Company LLC Method and system for distributed analysis
US10277668B1 (en) 2015-04-06 2019-04-30 EMC IP Holding Company LLC Beacon-based distributed data processing platform
US10860622B1 (en) 2015-04-06 2020-12-08 EMC IP Holding Company LLC Scalable recursive computation for pattern identification across distributed data processing nodes
CN106815274B (zh) * 2015-12-02 2022-02-18 中兴通讯股份有限公司 基于Hadoop的日志数据挖掘方法及系统
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10656861B1 (en) 2015-12-29 2020-05-19 EMC IP Holding Company LLC Scalable distributed in-memory computation
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
CN105912609B (zh) * 2016-04-06 2019-04-02 中国农业银行股份有限公司 一种数据文件处理方法和装置
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
WO2018182060A1 (ko) * 2017-03-28 2018-10-04 ㈜리얼타임테크 관계형 데이터베이스 기반의 텍스트 로그데이터 저장 및 검색 방법
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) * 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
CN112416699A (zh) * 2020-06-05 2021-02-26 上海哔哩哔哩科技有限公司 指标数据收集方法及系统
CN111680009B (zh) * 2020-06-10 2023-10-03 苏州跃盟信息科技有限公司 日志处理方法、装置、存储介质和处理器
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11797522B2 (en) * 2021-01-29 2023-10-24 International Business Machines Corporation Database log writing based on log pipeline contention
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution
US11995085B2 (en) 2022-02-25 2024-05-28 Visa International Service Association System, method, and computer program product for efficiently storing multi-threaded log data

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040103426A1 (en) * 2002-11-22 2004-05-27 Ludvig Edward A. Tracking end-user content viewing and navigation
US20040215640A1 (en) * 2003-08-01 2004-10-28 Oracle International Corporation Parallel recovery by non-failed nodes
US20110246826A1 (en) 2010-03-31 2011-10-06 Cloudera, Inc. Collecting and aggregating log data with fault tolerance

Family Cites Families (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1024646A (en) 1911-06-24 1912-04-30 Jeremiah Muckey Mold for concrete curbs for graves.
US6212515B1 (en) * 1998-11-03 2001-04-03 Platinum Technology, Inc. Method and apparatus for populating sparse matrix entries from corresponding data
US6408292B1 (en) 1999-08-04 2002-06-18 Hyperroll, Israel, Ltd. Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes on integer-encoded business dimensions
WO2001039012A2 (en) 1999-11-22 2001-05-31 Avenue, A, Inc. Efficient web server log processing
US20110128972A1 (en) 2000-04-17 2011-06-02 Randy Thornton Peer to peer dynamic network link acceleration
US20020002611A1 (en) 2000-04-17 2002-01-03 Mark Vange System and method for shifting functionality between multiple web servers
US7139791B1 (en) * 2000-07-13 2006-11-21 International Business Machines Corporation Apparatus and method for providing access to a data stream by a plurality of users at a same time
US7127492B1 (en) * 2000-10-31 2006-10-24 International Business Machines Corporation Method and apparatus for distributed application acceleration
US20030046394A1 (en) * 2000-11-03 2003-03-06 Steve Goddard System and method for an application space server cluster
US6978458B1 (en) 2000-11-17 2005-12-20 Oracle International Corporation Distributing data items to corresponding buckets for use in parallel operations
US20020184327A1 (en) * 2001-05-11 2002-12-05 Major Robert Drew System and method for partitioning address space in a proxy cache server cluster
US7895350B1 (en) * 2001-07-05 2011-02-22 Motive, Inc. N-way data stream splitter
US8156216B1 (en) 2002-01-30 2012-04-10 Adobe Systems Incorporated Distributed data collection and aggregation
US7337214B2 (en) 2002-09-26 2008-02-26 Yhc Corporation Caching, clustering and aggregating server
US6698815B1 (en) 2002-10-02 2004-03-02 Grupo Antolin Ingenieria, S.A. Sun visor with mirror assembly
US8676843B2 (en) * 2002-11-14 2014-03-18 LexiNexis Risk Data Management Inc. Failure recovery in a parallel-processing database system
US7469253B2 (en) * 2003-04-01 2008-12-23 Microsoft Corporation Associative hash partitioning using pseudo-random number generator
US20040230744A1 (en) * 2003-05-17 2004-11-18 Teh Jin Teik Cache content protocol for a content data delivery system
US7523145B2 (en) * 2004-04-22 2009-04-21 Opentv, Inc. System for managing data in a distributed computing system
US7644050B2 (en) * 2004-12-02 2010-01-05 International Business Machines Corporation Method and apparatus for annotation-based behavior extensions
WO2005124632A2 (en) * 2004-06-08 2005-12-29 Rosenthal Collins, Group, Llc Method and system for providing electronic information for multi-market electronic trading
US20080201299A1 (en) * 2004-06-30 2008-08-21 Nokia Corporation Method and System for Managing Metadata
US7380173B2 (en) * 2004-08-03 2008-05-27 International Business Machines Corporation Identifying temporal ambiguity in a aggregated log stream
US8161318B2 (en) 2005-02-07 2012-04-17 Mimosa Systems, Inc. Enterprise service availability through identity preservation
US20060206923A1 (en) 2005-03-09 2006-09-14 Macrovision Corporation Method and system for self-encrypting key identification
US20060236074A1 (en) * 2005-04-14 2006-10-19 Arm Limited Indicating storage locations within caches
JP2006318312A (ja) 2005-05-13 2006-11-24 Victor Co Of Japan Ltd 情報配信管理サーバ
US7587388B2 (en) * 2005-07-28 2009-09-08 Microsoft Corporation Separating uploads into aggregate and raw data storage
US20070027974A1 (en) * 2005-08-01 2007-02-01 Microsoft Corporation Online service monitoring
US8775273B2 (en) 2005-11-23 2014-07-08 Ebay Inc. System and method for transaction automation
US20070124437A1 (en) * 2005-11-30 2007-05-31 Cisco Technology, Inc. Method and system for real-time collection of log data from distributed network components
US7636743B2 (en) * 2005-12-19 2009-12-22 Commvault Systems, Inc. Pathname translation in a data replication system
WO2007124504A2 (en) 2006-04-21 2007-11-01 Mediamote, Inc. Collection and distribution of sense-on-demand data
KR100950661B1 (ko) 2006-05-20 2010-04-02 삼성전자주식회사 통신 시스템에서 신호 수신 장치 및 방법
US20070299631A1 (en) 2006-06-27 2007-12-27 Microsoft Corporation Logging user actions within activity context
US8037052B2 (en) 2006-11-22 2011-10-11 General Electric Company Systems and methods for free text searching of electronic medical record data
JP5396001B2 (ja) 2006-12-13 2014-01-22 楽天Edy株式会社 情報処理装置、情報処理装置の制御方法、及び情報処理装置の制御プログラム
US20080288500A1 (en) * 2007-02-13 2008-11-20 Demetrios Sapounas Physiological data processing architecture for situation awareness
JP5320678B2 (ja) 2007-02-20 2013-10-23 日本電気株式会社 データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム
US20080256079A1 (en) 2007-04-11 2008-10-16 Yahoo! Inc. Load-based technique to balance data sources to data consumers
JP4422742B2 (ja) 2007-06-11 2010-02-24 達也 進藤 全文検索システム
US8321579B2 (en) * 2007-07-26 2012-11-27 International Business Machines Corporation System and method for analyzing streams and counting stream items on multi-core processors
US7698422B2 (en) 2007-09-10 2010-04-13 Specific Media, Inc. System and method of determining user demographic profiles of anonymous users
US20090157766A1 (en) * 2007-12-18 2009-06-18 Jinmei Shen Method, System, and Computer Program Product for Ensuring Data Consistency of Asynchronously Replicated Data Following a Master Transaction Server Failover Event
US8019863B2 (en) 2008-03-28 2011-09-13 Ianywhere Solutions, Inc. Synchronizing events between mobile devices and servers
US8893131B2 (en) * 2008-04-11 2014-11-18 Yahoo! Inc. System and/or method for bulk loading of records into an ordered distributed database
JP5257311B2 (ja) * 2008-12-05 2013-08-07 ソニー株式会社 情報処理装置、および情報処理方法
KR101207510B1 (ko) 2008-12-18 2012-12-03 한국전자통신연구원 클러스터 데이터 관리시스템 및 클러스터 데이터 관리 시스템에서 공유 재수행 로그를 이용한 데이터 재구축 방법
US8392530B1 (en) * 2008-12-18 2013-03-05 Adobe Systems Incorporated Media streaming in a multi-tier client-server architecture
US8078825B2 (en) * 2009-03-11 2011-12-13 Oracle America, Inc. Composite hash and list partitioning of database tables
US8224924B2 (en) 2009-03-27 2012-07-17 Bank Of America Corporation Active email collector
JP4911198B2 (ja) * 2009-06-03 2012-04-04 富士通株式会社 ストレージ制御装置、ストレージシステムおよびストレージ制御方法
JP5395565B2 (ja) 2009-08-12 2014-01-22 株式会社日立製作所 ストリームデータ処理方法及び装置
US8230046B2 (en) * 2009-12-15 2012-07-24 Facebook, Inc. Setting cookies in conjunction with phased delivery of structured documents
WO2011076463A1 (en) 2009-12-23 2011-06-30 International Business Machines Corporation Deduplication of encrypted data
US8348840B2 (en) 2010-02-04 2013-01-08 Robert Bosch Gmbh Device and method to monitor, assess and improve quality of sleep
US8943053B2 (en) 2010-02-26 2015-01-27 Telefonaktiebolaget L M Ericsson (Publ) Social data ranking and processing
US9082127B2 (en) * 2010-03-31 2015-07-14 Cloudera, Inc. Collecting and aggregating datasets for analysis
US9317572B2 (en) 2010-03-31 2016-04-19 Cloudera, Inc. Configuring a system to collect and aggregate datasets
US8788543B2 (en) * 2010-05-13 2014-07-22 International Business Machines Corporation Scalable, concurrent resizing of hash tables
US8819236B2 (en) 2010-12-16 2014-08-26 Microsoft Corporation Resource optimization for online services
WO2012092268A1 (en) * 2010-12-29 2012-07-05 Citrix Systems, Inc. Systems and methods for scalable n-core statistics aggregation
US8825608B2 (en) 2011-02-23 2014-09-02 Level 3 Communications, Llc Content delivery network analytics management via edge stage collectors
US20120246303A1 (en) 2011-03-23 2012-09-27 LogRhythm Inc. Log collection, structuring and processing
US8775556B1 (en) * 2011-07-20 2014-07-08 Google Inc. Automated segmentation and processing of web site traffic data over a rolling window of time
US8775941B1 (en) * 2011-07-20 2014-07-08 Google Inc. System for monitoring and reporting deviations of real-time analytics data from expected analytics data
US20130030868A1 (en) * 2011-07-25 2013-01-31 Cbs Interactive, Inc. Scheduled Split Testing
US11127309B2 (en) 2011-08-09 2021-09-21 The Mitre Corporation Flight management system operator
US9747592B2 (en) 2011-08-16 2017-08-29 Verizon Digital Media Services Inc. End-to-end content delivery network incorporating independently operated transparent caches and proxy caches
US8429162B1 (en) * 2011-09-27 2013-04-23 Amazon Technologies, Inc. Facilitating data redistribution in database sharding
US20150356104A9 (en) 2011-10-04 2015-12-10 Electro Industries/Gauge Tech Systems and methods for collecting, analyzing, billing, and reporting data from intelligent electronic devices
US20130238391A1 (en) 2012-03-09 2013-09-12 Oracle International Corporation Product oriented web site analytics
CA2814190C (en) 2012-05-31 2015-06-16 Netsweeper Inc. Policy service logging using graph structures
US8850263B1 (en) 2012-09-14 2014-09-30 Amazon Technologies, Inc. Streaming and sampling in real-time log analysis
US9104745B1 (en) 2012-09-28 2015-08-11 Palo Alto Networks, Inc. Distributed log collector and report generation
US8447854B1 (en) * 2012-12-04 2013-05-21 Limelight Networks, Inc. Edge analytics query for distributed content network
US9152502B2 (en) 2012-12-21 2015-10-06 Microsoft Technology Licensing, Llc Data error detection and correction using hash values
US9633022B2 (en) 2012-12-28 2017-04-25 Commvault Systems, Inc. Backup and restoration for a deduplicated file system
US9609050B2 (en) 2013-01-31 2017-03-28 Facebook, Inc. Multi-level data staging for low latency data access

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040103426A1 (en) * 2002-11-22 2004-05-27 Ludvig Edward A. Tracking end-user content viewing and navigation
US20040215640A1 (en) * 2003-08-01 2004-10-28 Oracle International Corporation Parallel recovery by non-failed nodes
US20110246826A1 (en) 2010-03-31 2011-10-06 Cloudera, Inc. Collecting and aggregating log data with fault tolerance

Also Published As

Publication number Publication date
AU2014212780B2 (en) 2018-09-13
BR112015017391A2 (pt) 2017-07-11
MX2015009825A (es) 2016-04-04
IL239811B (en) 2019-01-31
MX356571B (es) 2018-06-04
JP2016515228A (ja) 2016-05-26
US20140214752A1 (en) 2014-07-31
IL239811A0 (en) 2015-08-31
CN104969213A (zh) 2015-10-07
CA2897338A1 (en) 2014-08-07
CN104969213B (zh) 2018-01-12
JP6258975B2 (ja) 2018-01-10
CA2897338C (en) 2018-08-14
WO2014120487A1 (en) 2014-08-07
AU2014212780A1 (en) 2015-07-23
KR20150114965A (ko) 2015-10-13
US10223431B2 (en) 2019-03-05

Similar Documents

Publication Publication Date Title
KR101885688B1 (ko) 낮은 지연속도 데이터 액세스를 위한 데이터 스트림의 분할
US10581957B2 (en) Multi-level data staging for low latency data access
US9665404B2 (en) Optimization of map-reduce shuffle performance through shuffler I/O pipeline actions and planning
US10853242B2 (en) Deduplication and garbage collection across logical databases
JP6117378B2 (ja) 分散型データベースクエリ・エンジン用のシステムおよび方法
US10127275B2 (en) Mapping query operations in database systems to hardware based query accelerators
US10394782B2 (en) Chord distributed hash table-based map-reduce system and method
US20150370881A1 (en) Dynamic n-dimensional cubes for hosted analytics
Lai et al. Towards a framework for large-scale multimedia data storage and processing on Hadoop platform
US10318346B1 (en) Prioritized scheduling of data store access requests
US10158709B1 (en) Identifying data store requests for asynchronous processing
JP2012118987A (ja) メモリ使用量照会ガバナのためのコンピュータ実装方法、コンピュータ・プログラム、およびシステム(メモリ使用量照会ガバナ)
US20160154867A1 (en) Data Stream Processing Using a Distributed Cache
EP3158477B1 (en) Dynamic n-dimensional cubes for hosted analytics
US11762860B1 (en) Dynamic concurrency level management for database queries
EP2765517B1 (en) Data stream splitting for low-latency data access
Salehian et al. Comparison of spark resource managers and distributed file systems
US10474653B2 (en) Flexible in-memory column store placement
AU2018353837B2 (en) Parallel map and reduce on hash chains
US9794326B1 (en) Log information transmission integrity
CN116795790A (zh) 小文件合并的方法、装置、电子设备及存储介质

Legal Events

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