KR102647075B1 - 맵-리듀스를 사용하여 데이터 스큐를 해결하는 방법 - Google Patents

맵-리듀스를 사용하여 데이터 스큐를 해결하는 방법 Download PDF

Info

Publication number
KR102647075B1
KR102647075B1 KR1020217006144A KR20217006144A KR102647075B1 KR 102647075 B1 KR102647075 B1 KR 102647075B1 KR 1020217006144 A KR1020217006144 A KR 1020217006144A KR 20217006144 A KR20217006144 A KR 20217006144A KR 102647075 B1 KR102647075 B1 KR 102647075B1
Authority
KR
South Korea
Prior art keywords
data
node
markers
marker
queue
Prior art date
Application number
KR1020217006144A
Other languages
English (en)
Other versions
KR20210032526A (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 KR20210032526A publication Critical patent/KR20210032526A/ko
Application granted granted Critical
Publication of KR102647075B1 publication Critical patent/KR102647075B1/ko

Links

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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • 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/217Database tuning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

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)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

맵-리듀스로 큐를 사용하는 시스템 및 방법을 포함한다. 시스템은 제1 노드에 의해, 제1 데이터 위치에서의 데이터를 나타내는 제1 복수의 마커를 생성하도록 제1 데이터 위치에서 제1 리듀스 동작을 실행하고, 제2 노드에 의해, 제2 데이터 위치에서의 데이터를 나타내는 제2 복수의 마커를 생성하도록 제2 데이터 위치에서 제2 리듀스 동작을 실행하는 컴퓨터 클러스터를 포함한다. 하나 이상의 마커의 생성에 응답하여, 컴퓨터 클러스터는 하나 이상의 마커를 큐에 제출한다. 제1 노드에 의한 제1 리듀스 동작을 완료한 것에 응답하여, 컴퓨터 클러스터는 큐에서 하나 이상의 마커의 제1 마커에 의해 식별된 제1 데이터를 복사하는 제1 복사 동작을 수행하도록 제1 노드에 지시한다.

Description

맵-리듀스를 사용하여 데이터 스큐를 해결하는 방법
본 출원은 2018년 7월 26일에 출원된 미국 특허 출원 일련 번호 16/046,765의 이익을 주장하며, 그 전체가 여기에 참조로 포함된다.
본 개시는 맵-리듀스(map-reduce) 분야에 관한 것으로, 특히 맵-리듀스로 데이터 스큐(data skew)를 해결하는 방법에 관한 것이다.
데이터는 제1 데이터 위치에서 제2 데이터 위치로 복사될 수 있다. 제1 데이터 위치는 제1 서버와 연관될 수 있고, 제2 데이터 위치는 제2 서버와 연관될 수 있다.
본 개시의 다양한 구현예는 아래에 주어진 상세한 설명과 본 개시의 다양한 구현예의 첨부 도면으로부터 더욱 충분히 이해될 것이다.
도 1은 일부 구현예에 따른, 예시적인 시스템 아키텍처를 예시한다.
도 2는 일부 구현예에 따른, 큐를 사용하여 데이터를 복사하는 것을 예시하는 블록도이다.
도 3은 일부 구현예에 따른, 큐를 사용하여 데이터를 복사하는 방법을 예시하는 흐름도이다.
도 4는 일부 구현예에 따른, 예시적인 컴퓨터 시스템을 예시하는 블록도이다.
데이터(예컨대, 데이터베이스)의 위치는 제1 서버와 연관될 수 있다. 예컨대, 프로덕션 데이터베이스는 협업 플랫폼(collaboration platform)과 같은 플랫폼의 운영을 지원하는 데 사용되는 프로덕션 서버와 연관될 수 있다. 프로덕션 서버와 연관된 데이터베이스에서 분석을 수행하는 것은 일반적으로 프로덕션 서버 및 플랫폼의 성능에 영향을 미칠 수 있다. 일부 경우에서, 분석을 수행하기 위해 프로덕션 데이터베이스는 제2 서버(예컨대, 분석 서버)에서의 사용을 위해 복사될 수 있다. 분석 서버는 복사된 데이터베이스에 대한 분석을 수행할 수 있으며, 프로덕션 서버의 성능에는 영향을 미치지 않을 수 있다.
일부 시스템에서, 데이터베이스에서 다른 데이터베이스로 데이터를 복사하기 위한 프로세스를 수행하는 것은 서버 컴퓨터 또는 프로세싱 장치와 같은, 하나 이상의 컴퓨팅 장치에 의해 수행될 수 있다. 예컨대, 단일 컴퓨팅 장치는 각 데이터베이스를 연속적으로, 차례로 복사하기 위해 준비하고, 복사할 수 있으며, 이는 엄청나게 많은 시간이 걸릴 수 있다. 다른 예시에서, 복수의 컴퓨팅 장치는 데이터를 병렬로 복사하기 위해 준비하고, 복사할 수 있다. 데이터베이스의 데이터는 스큐가 있을 수 있다. 데이터 스큐는 데이터베이스 간에 불균등하게 분산된 데이터를 지칭할 수 있다. 데이터 스큐는 데이터베이스에서 데이터를 복사하기 위한 프로세스의 성능에 비효율성을 야기할 수 있다. 예컨대, 데이터 스큐는 복사 프로세스를 수행하는 컴퓨팅 장치 중 일부가 사용되지 않고 유휴 상태(idle)로 유지되도록 할 수 있다. 예컨대, 복사 프로세스 중 하나 이상을 수행하는 일부 컴퓨팅 장치는 특정 프로세스를 (예컨대, 더 적은 양의 데이터가 있는 데이터베이스에서) 신속하게 완료할 수 있으며, 유휴 상태에 있으면서 다른 컴퓨팅 장치가 특정 프로세스를 (예컨대, 더 많은 양의 데이터가 있는 다른 데이터베이스에서) 완료하도록 기다릴 수 있다. 유휴 컴퓨팅 장치를 갖는 것은 컴퓨터 리소스(예컨대, 컴퓨터 프로세싱 리소스)의 비효율적인 사용이고, 복사 동작이 수행되는 속도를 감소시킨다.
본 개시의 양태는 프로덕션 서버의 데이터베이스의 데이터를 분석 서버와 같은 다른 서버의 데이터베이스에 복사하기 위해 맵-리듀스 동작을 구현하는 컴퓨터 클러스터의 컴퓨터 노드를 사용함으로써 전술한 과제 및 다른 과제를 해결한다. 복사될 데이터베이스의 식별자(identifier)는 컴퓨터 클러스터의 노드에 제출된다. 노드는 식별자 각각이 컴퓨터 클러스터의 다른 컴퓨터 노드에 분산되는 식별자에 대해 맵 동작을 수행할 수 있다. 다른 노드는 식별자에 의해 식별된 각각의 데이터베이스에 대해 리듀스 동작을 수행하기 위해 식별자를 사용할 수 있다. 리듀스 동작을 수행하는 다른 노드는 각각의 데이터베이스에서 데이터의 위치를 식별하는 마커일 수 있는 출력 데이터를 생성한다. 마커가 생성되면, 마커는 컴퓨터 클러스터의 컴퓨터 노드와 연관되고 액세스할 수 있는 큐에 저장될 수 있다. 유휴 상태로 유지하는 대신, 리듀스 동작을 완료하는 컴퓨터 노드에 응답하여, 컴퓨터 노드는 큐의 마커를 사용하여 프로덕션 서버의 데이터베이스의 데이터를 다른 서버의 데이터베이스로 복사하기 위한 복사 동작을 수행하도록 용도가 변경될 수 있다. 불균형적으로 더 많은 양의 데이터가 있는 데이터베이스에서 리듀스 동작을 수행하는 컴퓨터 노드와 같은 컴퓨터 클러스터의 다른 컴퓨터 노드는 각각의 리듀스 동작을 완료하는 다른 컴퓨터 노드가 복사 동작을 수행하도록 용도가 변경되므로 리듀스 동작을 계속 수행할 수 있다.
본 개시의 양태에 따른 큐 및 맵-리듀스 동작을 구현하는 컴퓨터 클러스터를 사용하는 데이터의 복사 또는 다른 유형의 프로세싱(예컨대, 데이터에 대한 임의의 다른 동작)은 본 개시의 양태가 다른 시스템보다 데이터 복사(예컨대, 제1 서버의 데이터베이스로부터 다른 서버의 데이터베이스로의 데이터와 같이) 또는 데이터 처리를 보다 빠르고 효율적으로 하기 때문에 (예컨대, 컴퓨터 프로세싱 리소스를 보다 효율적으로 사용하고 유휴 상태인 컴퓨터 프로세싱 리소스의 양을 감소시킴), 적어도 컴퓨터 관련 기술을 향상시킨다. 컴퓨터 관련 기술(예컨대, 속도 및 효율성)의 향상은 데이터 스큐를 가지는 데이터베이스의 데이터를 복사하거나 처리하는 데 사용될 때 더욱 향상된다.
맵-리듀스 프로그래밍 모델의 일부로서 설명된 맵 동작 및 리듀스 동작은 제한이 아닌 예시의 목적으로 제공된다는 점을 유의할 수 있다. 데이터베이스의 식별자를 클러스터의 노드에 분산하고, 마커를 생성하고, 데이터를 복사하는 것은 해시 분할(hash partitioning), 자가 균형 트리 데이터 구조(예컨대, B-트리), 관계형 데이터베이스 관리 시스템(RDBMS) 등과 같은, 하나 이상의 프로그래밍 모델에서 일어날 수 있다.
마커는 제한이 아닌 예시의 목적으로 제1 서버와 연관된 제1 데이터베이스로부터 제2 서버와 연관된 제2 데이터베이스로 데이터를 복사하는 데 사용되는 것으로 설명된다는 점을 유의할 수 있다. 다른 구현예에서, 마커는 임의의 수의 방식 또는 예컨대 다른 데이터 프로세싱 기술로 사용될 수 있다. 일부 구현예에서, 마커는 데이터의 위치를 식별할 수 있다. 다른 구현예에서, 마커는 데이터를 포함할 수 있다. 본 개시는 제한이 아닌 예시의 목적으로 데이터베이스로부터 다른 데이터베이스로 데이터를 복사하는 것을 설명한다는 점을 더 유의할 수 있다. 본 개시의 양태는 일반적으로 데이터를 복사하는 데 적용될 수 있다. 예컨대, 본 개시의 양태는 제1 데이터 위치(예컨대, 하나 이상의 제1 데이터 저장소)로부터 제2 데이터 위치(예컨대, 하나 이상의 제2 데이터 저장소)로 데이터를 복사하는 데 적용될 수 있다. 본 개시는 제한이 아닌 예시의 목적으로 데이터를 복사하는 것을 설명한다는 점을 더 유의할 수 있다. 본 개시의 양태는 임의의 유형의 데이터 프로세싱(예컨대, 데이터에 대한 임의의 다른 동작)에 적용될 수 있다. 예컨대, 본 개시의 양태는 데이터의 변환(예컨대, 제1 형태에서 제2 형태로), 데이터의 검증, 데이터의 정렬, 데이터의 요약, 데이터의 집계, 데이터의 분석, 데이터의 보고 등에 적용될 수 있다.
도 1은 본 개시의 구현예에 따른, 예시적인 시스템 아키텍처(100)를 예시한다. 시스템 아키텍처(100)(여기에서 "시스템"이라고도 지칭됨)는 클라이언트 장치(110A 및 110B)(여기에서 일반적으로 "클라이언트 장치(들)(110)"로 지칭됨), 네트워크(105), 서버(140A 및 140B)(일반적으로 "서버(140)"로 지칭됨), 협업 플랫폼(120) 및 컴퓨터 클러스터(130)를 포함한다. 시스템 아키텍처(100)는 제한이 아닌 예시를 위해 제공된다는 점을 유의할 수 있다. 구현예에서, 시스템 아키텍처(100)는 동일하거나 상이한 방식으로 구성된 동일하거나, 더 적거나, 더 많거나, 상이한 요소를 포함할 수 있다.
일 구현예에서, 네트워크(105)는 공중 네트워크(예컨대, 인터넷), 사설 네트워크(예컨대, LAN(local area network) 또는 WAN(wide area network)), 유선 네트워크(예컨대, 이더넷 네트워크), 무선 네트워크(예컨대, 802.11 네트워크, Wi-Fi® 네트워크 또는 무선 LAN(WLAN)), 셀룰러 네트워크(예컨대, LTE(long term evolution) 네트워크), 라우터, 허브, 스위치, 서버 컴퓨터 또는 이들의 조합을 포함할 수 있다.
구현예에서, 각 서버(140)는 하나 이상의 컴퓨팅 장치(예컨대, 랙 마운트 서버, 서버 컴퓨터, 물리적 서버의 클러스터 등)일 수 있다. 구현예에서, 서버(140)는 협업 플랫폼(120)에 포함되거나, 독립적인 시스템이거나, 다른 시스템 또는 플랫폼의 일부일 수 있다. 서버(140)는 메모리(예컨대, RAM(random access memory), 캐시, 드라이브(예컨대, 하드 드라이브), 플래시 드라이브, 데이터베이스 시스템, 또는 데이터를 저장 가능한 다른 유형의 컴포넌트 또는 장치와 연관될 수 있다 (예컨대, 포함함). 서버(140)는 또한 복수의 컴퓨팅 장치(예컨대, 복수의 서버 컴퓨터)에 걸쳐 있을 수 있는 복수의 스토리지 컴포넌트(예컨대, 복수의 드라이브 또는 복수의 데이터베이스)와 연관될 수 있다 (예컨대, 포함함). 서버(140A)는 데이터베이스(142A-142N)(일반적으로 "데이터베이스(142)"로 지칭됨)와 연관될 수 있다 (예컨대, 저장함). 서버(140B)는 데이터베이스(144A-144N)(일반적으로 "데이터베이스(144)"로 지칭됨)와 연관될 수 있다 (예컨대, 저장함). 구현예에서, 데이터베이스(142)는 제1 서버(140A)와 독립적일 수 있고, 데이터베이스(144)는 제2 서버(140B)와 독립적일 수 있다.
일부 구현예에서, 서버(140A)는 프로덕션 서버일 수 있고, 서버(140B)는 분석 서버일 수 있다. 서버(140A)는 협업 플랫폼(120)의 일부일 수 있다. 데이터베이스(142)는 프로덕션 데이터베이스일 수 있으며, 서버(140A), 협업 플랫폼(120) 또는 클라이언트 장치(110) 중 하나 이상에 의해 생성된 데이터(146)를 포함할 수 있다. 데이터베이스(144)는 분석 데이터베이스일 수 있고, 데이터베이스(142)로부터의 데이터(146)의 복사본을 포함할 수 있다. 데이터(146)는 데이터베이스(142)로부터 데이터베이스(144)로 복사될 수 있고, 데이터베이스(144) 내의 데이터(146)의 복사본은 분석될 수 있다 (예컨대, 서버(140A)의 성능에 영향을 미치지 않기 위함).
일부 구현예에서, 협업 플랫폼(120)은 협업 플랫폼(120)에서 동작을 수행하고 사용자에게 협업 플랫폼(120)에 대한 액세스를 제공하는 데 사용될 수 있는 하나 이상의 컴퓨팅 장치(예컨대, 랙 마운트 서버, 라우터 컴퓨터, 서버 컴퓨터, 개인용 컴퓨터, 메인프레임 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 데스크톱 컴퓨터 등), 데이터 저장소(예컨대, 하드 디스크, 메모리, 데이터베이스), 네트워크, 소프트웨어 컴포넌트 및/또는 하드웨어 컴포넌트일 수 있다. 협업 플랫폼(120)은 또한 사용자에게 협업 플랫폼(120)에 의해 제공되는 콘텐츠에 대한 액세스를 제공하는 데 사용될 수 있는 웹사이트(예컨대, 웹페이지) 또는 애플리케이션 백-엔드 소프트웨어를 포함할 수 있다. 예컨대, 사용자는 클라이언트 장치(110) 상의 협업 애플리케이션(114)을 사용하는 협업 플랫폼(120)에 액세스할 수 있다. 협업 애플리케이션(114A 및 114B)은 여기에서 일반적으로 협업 애플리케이션(들)(114)으로 지칭될 수 있음을 유의할 수 있다. 일부 구현예에서, 협업 애플리케이션(114)은 동일한 애플리케이션의 두 인스턴스일 수 있다.
여기에서 논의된 바와 같이, 협업 플랫폼(120)(및/또는 협업 애플리케이션(114))은 협업 플랫폼(120), 게임(122), 미디어 아이템, 게임 콘텐츠, 부가 기능(121), 게임 엔진(124), 제작자 모듈(126), 메시징 모듈(128) 등과의 상호 작용 및 사용자 액세스와 연관된 데이터(146)를 생성(예컨대, 수집, 처리 등) 할 수 있다. 협업 플랫폼은 데이터베이스(142)에 데이터(146)를 저장할 수 있다. 예컨대, 협업 플랫폼(120)은 사용자에 대한 식별자, 사용자가 상호 작용하는 게임(122) 또는 미디어 아이템에 대한 식별자, 사용자가 게임(122) 또는 미디어 아이템과 상호 작용하기 시작한 시작 시간, 사용자가 게임(122) 또는 미디어 아이템과 상호 작용을 중단한 종료 시간 등을 포함하는 (데이터베이스(142)를 위한) 데이터(146)를 생성할 수 있다. 일 구현예에서, 협업 플랫폼(120)은 하나 이상의 게임(122) 또는 미디어 아이템에 대한 데이터(146)를 동일한 데이터베이스(142)에 저장한다. 다른 구현예에서, 협업 플랫폼(120)은 하나 이상의 사용자에 대한 데이터(146)를 동일한 데이터베이스(142)에 저장한다. 다른 구현예에서, 협업 플랫폼(120)은 하나 이상의 기간에 대한 데이터(146)를 동일한 데이터베이스(142)에 저장한다. 예컨대, 데이터베이스(142A)는 첫째 날부터의 데이터(146A)를 포함할 수 있고, 데이터베이스(142B)는 둘째 날부터의 데이터(146B)를 포함할 수 있다.
구현예에서, 협업 플랫폼(120)은 사용자들 간의 연결을 제공하는 소셜 네트워크의 유형이거나, 사용자(예컨대, 최종 사용자 또는 소비자)가 플랫폼을 위한 콘텐츠를 제작하도록 허용하는 사용자 생성 콘텐츠 시스템의 유형일 수 있으며, 여기에서 제작된 콘텐츠는 또한 시스템의 다른 사용자에 의해 소비될 수 있다. 본 개시의 구현예에서, "사용자"는 단일 개인으로 표현될 수 있다. 그러나, 본 개시의 다른 구현예는 사용자 집합 또는 자동화된 소스에 의해 제어되는 엔티티인 "사용자"(예컨대, 제작 사용자)를 포함한다. 예컨대, 사용자 생성 콘텐츠 시스템에서 커뮤니티 또는 그룹으로 연합된 개별 사용자의 집합은 "사용자"로 간주될 수 있다. 협업 플랫폼(120) 또는 협업 애플리케이션(114) 중 하나 이상은 사용자 생성 콘텐츠와 연관된 데이터(146)를 생성(예컨대, 수집, 처리 등)할 수 있고, 데이터(146)를 데이터베이스(142)에 저장할 수 있다.
일 구현예에서, 협업 플랫폼(120)은 온라인 게임 플랫폼 또는 가상 게임 플랫폼과 같은 게임 플랫폼일 수 있다. 예컨대, 게임 플랫폼은 네트워크(105)를 통해 클라이언트 장치(110)를 사용하여 게임(122A-122Z)에 액세스하거나 상호 작용할 수 있는 사용자 커뮤니티에 싱글 플레이어 또는 멀티 플레이어 게임을 제공할 수 있다. 구현예에서, 게임(122)(여기에서 "비디오 게임", "온라인 게임" 또는 "가상 게임"이라고도 지칭됨)은 예컨대, 2 차원(2D) 게임, 3 차원(3D) 게임(예컨대, 제작자 모듈(126)을 사용하는 3D 사용자 생성 게임), 가상 현실(VR) 게임, 또는 증강 현실(AR) 게임일 수 있다. 구현예에서, 플레잉 사용자와 같은 사용자는 다른 플레잉 사용자와 함께 게임 플레이에 참가할 수 있다. 구현예에서, 게임(122)은 게임(122)의 다른 사용자와 실시간으로 플레잉될 수 있다.
구현예에서, 게임 플레이는 하나 이상의 플레이어와 게임(예컨대, 사용자 입력)의 상호 작용 또는 클라이언트 장치의 디스플레이 상의 상호 작용의 제시(presentation)를 지칭할 수 있다. 구현예에서, 실시간 또는 라이브 게임 플레이는 과거 또는 녹화된 게임 플레이가 아닌, 게임 플레이가 발생할 때 게임 플레이의 방송, 제시 또는 디스플레이를 지칭할 수 있다. 예컨대, 실시간 게임 플레이는 게임과의 사용자 상호 작용과 실질적으로 동시에 클라이언트 장치(110)의 디스플레이에 표시될 수 있다 (적어도 실시간 동작을 표시하는 기술적 한계 내에서, 예컨대 게임과의 사용자 상호 작용은 사용자 입력 후 밀리 초 이내에 표시될 수 있고, 사용자에게 절대적인 실시간인 것처럼 나타날 수 있다.)
구현예에서, 게임 플레이의 뷰가 클라이언트 장치(110) 상에 제시될 수 있다. 상이한 클라이언트 장치(110)상의 뷰는 동일하거나 상이할 수 있다. 구현예에서, 뷰(여기에서 "시야(field of view)"라고도 지칭됨)는 게임 카메라의 관점에서 임의의 주어진 순간에 볼 수 있고, 클라이언트 장치의 디스플레이에 표시되는 관찰 가능한 게임 세계의 범위를 지칭할 수 있다. 예컨대, 게임 카메라의 뷰는 1 인칭 시점 또는 3 인칭 시점 또는 이들의 일부 조합일 수 있다.
일부 구현예에서, 게임(122)은 게임 콘텐츠(예컨대, 디지털 미디어 아이템)를 엔티티에 제시하도록 구성된 소프트웨어, 펌웨어 또는 하드웨어를 사용하여 실행되거나 로딩될 수 있는 전자 파일을 포함할 수 있다. 구현예에서, 게임(122)은 게임 엔진(124)을 사용하여 실행되고 렌더링될 수 있다. 일부 구현예에서, 게임(122)은 공통 규칙 세트 또는 공통 목표를 가질 수 있고, 게임(122)의 환경은 공통 규칙 세트 또는 공통 목표를 공유할 수 있다. 구현예에서, 상이한 게임은 서로 상이한 규칙 또는 목표를 가질 수 있다.
일부 구현예에서, 게임은 복수의 환경이 링크될 수 있는 하나 이상의 환경(여기에서 "게임 환경" 또는 "가상 환경"이라고도 지칭됨)을 가질 수 있다. 환경의 예시는 3 차원(3D) 환경일 수 있다. 게임(122)의 하나 이상의 환경은 여기에서 "세계" 또는 "게임 세계" 또는 "가상 세계" 또는 "우주"로 통칭될 수 있다. 세계의 예시는 게임(122)의 3D 세계일 수 있다. 예컨대, 사용자는 다른 사용자에 의해 제작된 다른 가상 환경에 링크된 가상 환경을 구축할 수 있다. 가상 게임의 캐릭터는 가상 경계를 넘어 인접한 가상 환경에 들어갈 수 있다.
3D 환경 또는 3D 세계는 게임 콘텐츠를 나타내는 기하학적 데이터의 3 차원 표현을 사용하는 그래픽을 사용한다는 점을 유의할 수 있다 (또는 적어도 기하학적 데이터의 3D 표현이 사용되는지 여부에 관계없이 현재 게임 콘텐츠가 3D 콘텐츠로 나타남). 2D 환경 또는 2D 세계는 게임 콘텐츠를 나타내는 기하학적 데이터의 2 차원 표현을 사용하는 그래픽을 사용한다.
일부 구현예에서, 협업 플랫폼(120)은 게임(122)을 호스팅하고 사용자가 클라이언트 장치(110)의 협업 애플리케이션(114)을 사용하여 게임(122)과 상호 작용할 수 있도록 허용한다. 협업 플랫폼(120)의 사용자는 게임(122)을 플레잉하거나, 제작하거나, 상호 작용하거나 또는 구축할 수 있거나, 또는 게임(122)의 객체(예컨대, 여기에서 "아이템(들)" 또는 "게임 객체" 또는 "가상 게임 아이템(들)"이라고도 지칭됨)를 제작하고 구축할 수 있다. 예컨대, 사용자 생성 가상 아이템을 생성할 때, 사용자는 그 중에서도 캐릭터, 캐릭터 장식, 인터랙티브 게임을 위한 하나 이상의 가상 환경을 제작하거나, 게임(122)에서 사용되는 구조를 구축할 수 있다. 구현예에서, 사용자는 협업 플랫폼(120)의 다른 사용자와 플랫폼 내 통화(예컨대, 가상 통화)와 같은, 게임 가상 게임 객체를 구매, 판매 또는 거래할 수 있다. 구현예에서, 협업 플랫폼(120)은 게임 콘텐츠를 협업 애플리케이션(114)으로 전송할 수 있다. 구현예에서, 게임 콘텐츠(여기에서 "콘텐츠"라고도 지칭됨)는 협업 플랫폼(120) 또는 협업 애플리케이션(114)과 연관된 임의의 데이터 또는 소프트웨어 명령(예컨대, 게임 객체, 게임, 사용자 정보, 비디오, 이미지, 명령어, 미디어 아이템 등)을 지칭할 수 있다. 구현예에서, 게임 객체(예컨대, 여기에서 "아이템(들)" 또는 "객체" 또는 "가상 게임 아이템(들)"이라고도 지칭됨)는 협업 플랫폼(120)의 게임(122)에서 사용되고, 제작되고, 공유되고, 그 외 묘사되는 객체를 지칭할 수 있다. 예컨대, 게임 객체는 부품, 모델, 캐릭터, 도구, 무기, 의류, 건물, 차량, 통화, 식물상, 동물상, 전술한 컴포넌트(예컨대, 건물의 창문) 등을 포함할 수 있다.
게임(122)을 호스팅하는 협업 플랫폼(120)은 제한이 아닌 예시의 목적으로 제공된다는 점을 유의할 수 있다. 일부 구현예에서, 협업 플랫폼(120)은 하나 이상의 미디어 아이템을 호스팅할 수 있다. 미디어 아이템은 디지털 비디오, 디지털 영화, 디지털 사진, 디지털 음악, 오디오 콘텐츠, 멜로디, 웹사이트 콘텐츠, 소셜 미디어 업데이트, 전자 서적, 전자 잡지, 디지털 신문, 디지털 오디오 서적, 전자 저널, 웹 블로그, RSS(real simple syndication) 피드, 전자 만화책, 소프트웨어 애플리케이션 등을 포함할 수 있지만, 이에 제한되지 않는다. 구현예에서, 미디어 아이템은 디지털 미디어 아이템을 엔티티에 제시하도록 구성된 소프트웨어, 펌웨어 또는 하드웨어를 사용하여 실행되거나 로딩될 수 있는 전자 파일일 수 있다. 협업 플랫폼(120) 또는 협업 애플리케이션(114) 중 하나 이상은 콘텐츠(예컨대, 게임 콘텐츠, 미디어 아이템 등)에 대한 사용자 액세스, 제작 및 상호 작용과 연관된 데이터(146)를 생성(예컨대, 수집, 처리 등)할 수 있고, 데이터베이스(142)에 데이터(146)를 저장할 수 있다.
일부 구현예에서, 게임(122)은 특정 사용자 또는 특정 사용자 그룹과 연관될 수 있거나(예컨대, 프라이빗 게임), 협업 플랫폼(120)의 사용자에게 널리 이용 가능하게 될 수 있다(예컨대, 퍼블릭 게임). 협업 플랫폼(120)이 하나 이상의 게임(122)을 특정 사용자 또는 사용자 그룹과 연관시키는 구현예에서, 협업 플랫폼(120)은 사용자 계정 정보(예컨대, 사용자 이름 및 비밀번호와 같은 사용자 계정 식별자)를 사용하여 특정 사용자(들)를 게임(122)과 연관시킬 수 있다.
일부 구현예에서, 협업 플랫폼(120) 또는 클라이언트 장치(110)는 게임 엔진(124)을 포함할 수 있다. 구현예에서, 게임 엔진(124)은 게임(122)의 개발 또는 실행을 위해 사용될 수 있다. 예컨대, 게임 엔진(124)은 다른 특징 중에서도, 2D, 3D, VR 또는 AR 그래픽, 물리 엔진, 충돌 감지 엔진(및 충돌 응답), 사운드 엔진, 스크립팅 기능, 애니메이션 엔진, 인공 지능 엔진, 네트워킹 기능, 스트리밍 기능, 메모리 관리 기능, 스레딩 기능(threading functionality), 장면 그래프 기능 또는 시네마틱에 대한 비디오 지원을 위한 렌더링 엔진("렌더러")을 포함할 수 있다. 게임 엔진(124)의 컴포넌트는 게임을 계산하고 렌더링하는 데 도움이 되는 명령어(예컨대, 렌더링 명령어, 충돌 명령어, 물리 명령어 등)을 생성할 수 있다. 일부 구현예에서, 클라이언트 장치(110)의 게임 엔진(124)은 독립적으로, 협업 플랫폼(120)의 게임 엔진(124)과 협업하여, 또는 둘 다를 조합하여 작동할 수 있다.
일부 구현예에서, 협업 플랫폼(120) 및 클라이언트 장치(110) 둘 다는 게임 엔진(124)을 실행한다. 게임 엔진(124)을 사용하는 협업 플랫폼(120)은 일부 또는 모든 게임 엔진 기능을 수행할 수 있거나 (예컨대, 물리 명령어, 렌더링 명령어 생성 등), 또는 일부 또는 모든 게임 엔진 기능을 클라이언트 장치(110)의 게임 엔진(124)으로 오프로딩한다. 일부 구현예에서, 각각의 게임(122)은 협업 플랫폼(120) 상에서 수행되는 게임 엔진 기능과 클라이언트 장치(110) 상에 수행되는 게임 엔진 기능 사이에 상이한 비율을 가질 수 있다. 예컨대, 협업 플랫폼(120)의 게임 엔진(124)은 적어도 두 개의 게임 객체 사이에 충돌이 있는 경우에 물리 명령어를 생성하는 데 사용될 수 있지만, 추가적인 게임 엔진 기능(예컨대, 렌더링 명령어 생성)은 클라이언트 장치(110)로 오프로딩될 수 있다. 일부 구현예에서, 협업 플랫폼(120) 및 클라이언트 장치(110) 상에서 수행되는 게임 엔진 기능의 비율은 게임 플레이 조건에 기초하여 (예컨대, 동적으로) 변경될 수 있다. 예컨대, 특정 게임(122)의 게임 플레이에 참가하는 사용자의 수가 임계 값을 초과하면, 협업 플랫폼(120)은 클라이언트 장치(110)에 의해 이전에 수행되었던 하나 이상의 게임 엔진 기능을 수행할 수 있다.
예컨대, 플레잉 사용자는 클라이언트 장치(110)에서 게임(122)을 플레이할 수 있고, 제어 명령(예컨대, 오른쪽, 왼쪽, 위, 아래와 같은 사용자 입력, 사용자 선택, 또는 캐릭터 위치 및 속도 정보 등)을 전송할 수 있다. 클라이언트 장치(110)로부터 제어 명령을 수신한 후, 협업 플랫폼(120)은 게임 플레이 명령(예컨대, 그룹 게임 플레이에 참가하는 캐릭터의 위치 및 속도 정보 또는 렌더링 명령어, 충돌 명령어와 같은 명령어 등)를 전송할 수 있다. 예컨대, 협업 플랫폼(120)은 클라이언트 장치(110)에 대한 게임 플레이 명령을 생성하기 위해 제어 명령에 대해 하나 이상의 로직 동작을 (예컨대, 게임 엔진(124)을 사용하여) 수행할 수 있다. 다른 경우에, 협업 플랫폼(120)은 하나의 클라이언트 장치(110)로부터 게임(122)에 참가하는 다른 클라이언트 장치로의 제어 명령 중 하나 이상을 전달할 수 있다. 클라이언트 장치(110)는 게임 플레이 명령을 사용하고 클라이언트 장치(110)의 디스플레이 상에서의 제시를 위해 게임 플레이를 렌더링할 수 있다.
구현예에서, 제어 명령은 사용자 캐릭터의 게임 내 동작을 나타내는 명령을 지칭할 수 있다. 예컨대, 제어 명령은 오른쪽, 왼쪽, 위, 아래와 같은 게임 내 동작을 제어하기 위한 사용자 입력, 사용자 선택, 자이로스코프 위치 및 방향 데이터, 힘 센서 데이터 등을 포함할 수 있다. 제어 명령은 캐릭터 위치 및 속도 정보를 포함할 수 있다. 구현예에서, 제어 명령은 협업 플랫폼(120)으로 직접 전송된다. 다른 구현예에서, 제어 명령은 클라이언트 장치(110A)에서 다른 클라이언트 장치(110B)로 전송될 수 있으며, 여기에서 다른 클라이언트 장치(110B)는 로컬 게임 엔진(124)을 사용하여 게임 플레이 명령을 생성한다.
구현예에서, 게임 플레이 명령은 클라이언트 장치(110)가 멀티 플레이어 게임과 같은 게임의 게임 플레이를 렌더링하도록 허용하는 명령을 지칭할 수 있다. 게임 플레이 명령은 사용자 입력(예컨대, 제어 명령), 캐릭터 위치 및 속도 정보, 또는 명령어(예컨대, 물리 명령어, 렌더링 명령어, 충돌 명령어 등) 중 하나 이상을 포함할 수 있다.
구현예에서, 협업 플랫폼(120)은 제작자 모듈(126)을 포함할 수 있다. 구현예에서, 제작자 모듈(126)은 협업 플랫폼(120)의 사용자가 기존 게임(122)에서 환경을 설계 또는 제작하거나, 새로운 게임을 제작하거나, 또는 게임이나 환경 내에서 새로운 게임 객체를 제작하는 제작 사용자가 되도록 허용할 수 있다.
구현예에서, 제작자 모듈(126)은 사용자가 캐릭터를 제작, 수정 또는 커스터마이징하는 것을 허용할 수 있다. 구현예에서, 캐릭터(또는 일반적으로 게임 객체)는 컴포넌트로부터 구성되며, 이들 중 하나 이상은 사용자에 의해 선택될 수 있으며, 이는 사용자의 편집을 돕기 위해 자동으로 결합된다. 하나 이상의 캐릭터(여기에서 "아바타" 또는 "모델"이라고도 지칭됨)는 사용자(여기에서 "플레잉 사용자"라고도 지칭됨)와 연관될 수 있으며, 여기에서 사용자는 게임(122)과 사용자의 상호 작용을 용이하게 하기 위해 캐릭터를 제어할 수 있다. 구현예에서, 캐릭터는 신체 부위(예컨대, 머리카락, 팔, 다리 등) 및 액세서리(예컨대, 티셔츠, 안경, 장식용 이미지, 도구 등)와 같은 컴포넌트를 포함할 수 있다. 구현예에서, 커스터마이징 가능한 캐릭터의 신체 부위는 그 중에서도 머리 유형, 신체 부위 유형(팔, 다리, 몸통 및 손), 얼굴 유형, 머리카락 유형 및 피부 유형을 포함한다. 구현예에서, 커스터마이징 가능한 액세서리에는 의류(예컨대, 셔츠, 바지, 모자, 신발, 안경 등), 무기 또는 기타 도구를 포함한다. 구현예에서, 사용자는 또한 캐릭터의 규모(예컨대, 높이, 폭 또는 깊이) 또는 캐릭터의 컴포넌트의 규모를 제어할 수 있다. 구현예에서, 사용자는 캐릭터의 비율(예컨대, 블록, 해부학적 등)을 제어할 수 있다. 일부 구현예에서, 캐릭터는 캐릭터 게임 객체(예컨대, 신체 부위 등)를 포함하지 않을 수 있지만, 사용자는 (캐릭터 게임 객체 없는) 캐릭터를 제어하여 게임(예컨대, 렌더링된 캐릭터 게임 객체가 없지만 사용자가 여전히 게임 내 동작을 제어하기 위해 캐릭터를 제어하는 퍼즐 게임)과 사용자의 상호 작용을 용이하게 할 수 있다.
일부 구현예에서, 몸체 부분과 같은 컴포넌트는 블록, 원통, 구 등과 같은 기본 기하학적 모양이거나 쐐기(wedge), 토러스(torus), 튜브, 채널 등과 같은 일부 다른 기본 모양일 수 있다. 구현예에서, 제작자 모듈(126)은 협업 플랫폼(120)의 다른 사용자가 보거나 사용하게 하기 위해 사용자의 캐릭터를 공개할 수 있다. 일부 구현예에서, 캐릭터, 다른 게임 객체, 게임(122) 또는 게임 환경을 제작, 수정 또는 커스터마이징하는 것은 사용자 인터페이스(예컨대, 개발자 인터페이스)를 사용하고 스크립팅이 있거나 없는 (또는 API(application programming interface)가 있거나 없는) 사용자에 의해 수행될 수 있다. 제한이 아닌 예시의 목적으로, 캐릭터는 휴머노이드 형태를 갖는 것으로 설명된다는 점을 유의할 수 있다. 캐릭터는 차량, 동물, 무생물 객체 또는 기타 창의적인 형태와 같은 임의의 형태를 가질 수 있다는 점을 더 유의할 수 있다.
구현예에서, 협업 플랫폼(120)은 데이터베이스(142)에 사용자에 의해 제작된 캐릭터를 저장할 수 있다. 구현예에서, 협업 플랫폼(120)은 협업 애플리케이션(114)을 통해 사용자에게 제시될 수 있는 캐릭터 카탈로그 및 게임 카탈로그를 유지한다. 사용자는 플레이하는 게임 카탈로그에서 게임(122)을 선택할 수 있다. 구현예에서, 게임 카탈로그는 협업 플랫폼(120)에 저장된 게임의 이미지를 포함한다. 또한, 사용자는 선택된 게임에 참가하기 위해 캐릭터 카탈로그로부터 캐릭터(플레잉 사용자 또는 다른 사용자에 의해 제작됨)를 선택할 수 있다. 캐릭터 카탈로그는 협업 플랫폼(120)에 저장된 캐릭터의 이미지를 포함한다. 구현예에서, 캐릭터 카탈로그 내의 캐릭터 중 하나 이상은 사용자에 의해 제작되거나 커스터마이징될 수 있다. 구현예에서, 선택된 캐릭터는 캐릭터의 컴포넌트 중 하나 이상을 정의하는 캐릭터 설정을 가질 수 있다.
구현예에서, 사용자의 캐릭터는 컴포넌트의 구성을 포함하고, 여기에서 컴포넌트의 구성 및 외양, 보다 일반적으로 캐릭터의 외양은 캐릭터 설정에 의해 정의될 수 있다. 구현예에서, 사용자 캐릭터의 캐릭터 설정은 적어도 부분적으로 사용자에 의해 선택될 수 있다. 다른 구현예에서, 사용자는 디폴트 캐릭터 설정 또는 다른 사용자에 의해 선택된 캐릭터 설정을 갖는 캐릭터를 선택할 수 있다. 예컨대, 사용자는 사전 정의된 캐릭터 설정을 갖는 캐릭터 카탈로그에서 디폴트 캐릭터를 선택할 수 있으며, 사용자는 캐릭터 설정 중 일부를 변경(예컨대, 커스터마이징된 로고가 있는 셔츠 추가)하여 디폴트 캐릭터를 추가로 커스터마이징할 수 있다. 캐릭터 설정은 협업 플랫폼(120)에 의해 특정 캐릭터와 연관될 수 있다.
구현예에서, 제작자 모듈(126)을 실행하는 협업 플랫폼(120)은 사용자 인터페이스 웹사이트 또는 애플리케이션(예컨대, 협업 애플리케이션(114))을 포함하고, 여기에서 사용자(여기에서 "제작 사용자", "제작자", "소유자" 또는 "소유 사용자"라고도 지칭됨)는 개인 소유 게임(122) 또는 게임 환경을 구축, 관리, 편집 및 상호 작용할 목적으로 협업 플랫폼(120)에 의해 호스팅되는 온라인 컴퓨팅 리소스(예컨대, 클라우드 리소스)에 액세스할 수 있다. 구현예에서, 제작자 모듈(126)은 3 차원 가상 게임 또는 환경을 제작하고 인스턴스화하기 위해 사용자가 이용할 수 있는 도구를 포함한다. 구현예에서, 제작자 모듈(126)은 자신의 프라이빗 가상 게임(122)을 제작 및 관리하고자 하는 사용자에게 이용 가능하다. 구현예에서, 사용자는 협업 애플리케이션(114)을 사용하여 제작자 모듈(126)에 액세스할 수 있다. 구현예에서, 제작자 모듈(126)은 사용자가 제작자 모듈(126)의 기능에 액세스할 수 있도록 허용하는 협업 애플리케이션(114)을 통해 사용자 인터페이스(여기에서 "개발자 인터페이스"라고도 지칭됨)를 사용할 수 있다. 구현예에서, 개발자 인터페이스는 협업 애플리케이션(114)의 일부일 수 있다. 예컨대, 협업 애플리케이션(114)의 개발자 인터페이스는 게임 환경을 구축하거나 게임(122)을 구축하기 위해 사용자에 의해 선택될 수 있는 게임 객체의 라이브러리에 대한 사용자 액세스를 허용할 수 있다. 사용자는 게임이 협업 플랫폼(120)의 사용자에게 이용가능하도록 개발자 인터페이스를 통해 그 게임 객체를 공개할 수 있다.
구현예에서, 제작자 모듈(126)은 제작된 게임(122) 및 환경의 제어를 사용자가 게임(122) 또는 환경과 상호 작용하도록 허용되고 사용자가 게임(122) 또는 환경을 수정, 편집 또는 상호 작용할 수 있는 능력을 가지는 관리 정책을 설정할 수 있는 제작 사용자에게 제공할 수 있다. 관리 제어를 갖는 사용자는 또한 달리 명시되지 않는 한 여기에서 관리 사용자라고도 지칭될 수 있다. 일부 구현예에서, 관리 규칙은 모집될 수 있거나 그 외에는 게임(122) 또는 게임 환경과 상호 작용하고자 하는 특정 개인에 대한 다양한 수준의 상호 작용, 수정 또는 편집 능력을 지정하는 지점까지 세분화될 수 있다. 예컨대, 개인은 협업 플랫폼(120)의 친구 또는 소셜 네트워크 또는 온라인 장소와 연관된 다른 그룹의 친구로부터 모집될 수 있다. 구현예에서, 제작자 모듈(126)은 게임(122) 또는 게임 환경 내의 상호 작용을 위한 일반적인 규칙을 포함하거나 이에 추가하여 그러한 정책을 설정하기 위한 관리 도구를 갖는다. 협업 플랫폼(120) 또는 협업 애플리케이션(114) 중 하나 이상은 게임(122)을 액세스, 제작 및 상호 작용하는 사용자와 연관된 데이터(146)를 생성(예컨대, 수집, 처리 등)할 수 있고, 데이터(146)를 데이터베이스(142)에 저장할 수 있다.
구현예에서, 클라이언트 장치(110A 내지 110B)는 각각 개인용 컴퓨터(PC), 모바일 장치(예컨대, 랩톱, 휴대 전화, 스마트 폰, 태블릿 컴퓨터 또는 넷북 컴퓨터), 네트워크 연결 텔레비전, 게이밍 콘솔 등과 같은 컴퓨팅 장치를 포함할 수 있다. 일부 구현예에서, 클라이언트 장치(110A 내지 110B)는 "사용자 장치"라고도 지칭될 수 있다. 구현예에서, 협업 애플리케이션(114)을 통해 하나 이상의 클라이언트 장치(110)는 임의의 주어진 순간에 협업 플랫폼(120)에 연결될 수 있다. 클라이언트 장치(110)의 수는 제한이 아닌 예시로서 제공된다는 점을 유의할 수 있다. 구현예에서, 임의의 수의 클라이언트 장치(110)가 사용될 수 있다.
클라이언트 장치(110A-B)는 예컨대, 웹 애플리케이션, 데스크톱 애플리케이션, 브라우저 애플리케이션 등을 포함하는 다양한 애플리케이션을 호스팅할 수 있다. 일 구현예에서, 애플리케이션은 맵-리듀스 스큐 모듈(170)(예컨대, 맵-리듀스 인터페이스 애플리케이션)이다. 맵-리듀스 스큐 모듈(170)은 클라이언트 장치(110)의 사용자가 프로세싱될 맵-리듀스 동작을 전송하도록 허용할 수 있고, 맵-리듀스 동작의 결과를 수신할 수 있다. 맵-리듀스 스큐 모듈(170)은 클라이언트 장치가 컴퓨터 클러스터(130)(예컨대, 마스터 노드(132))와 상호 작용(예컨대, 맵-리듀스 동작을 제출)하도록 허용할 수 있다.
구현예에서, 각각의 클라이언트 장치(110)는 협업 애플리케이션(114)의 인스턴스를 포함할 수 있다. 일 구현예에서, 협업 애플리케이션(114)은, 협업 플랫폼(120)에 의해 호스팅되는 가상 게임의 가상 캐릭터 제어하는 것, 또는 게임(122), 이미지, 비디오 아이템, 웹 페이지, 문서 등과 같은 콘텐츠를 보거나 업로드하는 것과 같은, 사용자가 협업 플랫폼(120)을 사용하고 상호 작용하도록 허용하는 애플리케이션일 수 있다. 일 예시에서, 협업 애플리케이션(114)은 웹 서버에 의해 제공된 콘텐츠(예컨대, 가상 환경의 가상 캐릭터 등)에 액세스, 검색, 제시 또는 탐색할 수 있는 웹 애플리케이션(예컨대, 웹 브라우저와 함께 동작하는 애플리케이션)일 수 있다. 다른 예시에서, 협업 애플리케이션(114)은 클라이언트 장치(110)에 로컬로 설치 및 실행되고, 사용자가 협업 플랫폼(120)과 상호 작용할 수 있도록 허용하는 네이티브 애플리케이션(native application)(예컨대, 모바일 애플리케이션, 앱 또는 게임 프로그램)일 수 있다. 협업 애플리케이션(114) 사용자에게 콘텐츠(예컨대, 웹 페이지, 미디어 뷰어)를 렌더링, 표시 또는 제시할 수 있다. 구현예에서, 협업 애플리케이션(114)은 또한 웹 페이지에 내장된 내장형 미디어 플레이어(예컨대, Flash® 플레이어)를 포함할 수 있다.
본 개시의 양태에 따르면, 협업 애플리케이션(114)은 사용자가 협업 플랫폼(120)에 콘텐츠를 구축, 제작, 편집, 업로드할 뿐만 아니라, 협업 플랫폼(120)과 상호 작용(예컨대, 협업 플랫폼(120)에 의해 호스팅된 게임(122)을 플레이)하기 위한 협업 플랫폼 애플리케이션 일 수 있다. 이와 같이, 협업 애플리케이션(114)은 협업 플랫폼(120)에 의해 클라이언트 장치(110A 및 110B)에 제공될 수 있다. 다른 예시에서, 협업 애플리케이션(114)은 협업 플랫폼(120)으로부터 다운로드된 애플리케이션일 수 있다. 일부 구현예에서, 클라이언트 장치(110)의 협업 애플리케이션(114)은 게임 엔진(124)을 포함할 수 있다. 일부 구현예에서, 클라이언트 장치(110)의 게임 엔진(124)은 협업 애플리케이션(114)과 분리될 수 있다.
구현예에서, 사용자는 협업 애플리케이션(114)을 통해 협업 플랫폼(120)에 로그인할 수 있다. 사용자는 사용자 계정이 협업 플랫폼(120)의 하나 이상의 게임(122)에 참가하기 위해 이용 가능한 하나 이상의 캐릭터와 연관되는 사용자 계정 정보(예컨대, 사용자 이름 및 비밀번호)를 제공함으로써 사용자 계정에 액세스할 수 있다.
일반적으로, 협업 플랫폼(120)에 의해 수행되는 것으로 일 구현예에서 설명된 기능은 또한 적절한 경우 다른 구현예에서 클라이언트 장치(110A 내지 110B), 컴퓨터 클러스터(130) 또는 서버(140)에 의해 수행될 수 있다. 또한, 특정 컴포넌트에 기인하는 기능은 함께 동작하는 상이한 또는 복수의 컴포넌트에 의해 수행될 수 있다. 협업 플랫폼(120)은 적절한 API(application programming interface)를 통해 다른 시스템 또는 장치에 제공된 서비스로도 액세스될 수 있으며, 따라서 웹사이트에서의 사용에 제한되지 않는다.
구현예에서, 협업 플랫폼(120)은 메시징 모듈(128)을 포함할 수 있다. 구현예에서, 메시징 모듈(128)은 사용자가 네트워크(105)와 같은, 통신 시스템을 통해 전자 메시지를 교환할 수 있도록 허용하는 시스템, 애플리케이션 또는 모듈일 수 있다. 메시징 모듈(128)은 협업 애플리케이션(114)(예컨대, 협업 애플리케이션(114)의 모듈 또는 별도의 애플리케이션)과 연관될 수 있다. 구현예에서, 사용자는 메시징 모듈(128)과 인터페이스하고 협업 플랫폼(120)의 사용자들 간에 전자 메시지를 교환할 수 있다. 메시징 모듈(128)은 그 중에서도 예컨대 인스턴트 메시징 애플리케이션, 텍스트 메시징 애플리케이션, 이메일 애플리케이션, 음성 메시징 애플리케이션, 비디오 메시징 애플리케이션 또는 이들의 조합일 수 있다.
구현예에서, 메시징 모듈(128)은 사용자들 간의 전자 메시지 교환을 용이하게 할 수 있다. 예컨대, 사용자는 클라이언트 장치(110A) 상의 메시징 애플리케이션에 로그인될 수 있고, 다른 사용자는 클라이언트 장치(110B) 상의 메시징 애플리케이션에 로그인될 수 있다. 두 사용자는 인스턴트 메시징 대화와 같은, 대화를 시작할 수 있다. 메시징 모듈(128)은 협업 플랫폼(120)의 사용자들 간의 전자 메시지를 송수신함으로써, 메시징 대화를 용이하게 하는 데 도움이 될 수 있다. 또 다른 구현예에서, 두 사용자는 대화가 게임 플레이를 포함하는 뷰의 일부일 수 있는 게임 내 대화에 서로 참가하기 위해 각각의 메시징 애플리케이션을 사용할 수 있다. 협업 플랫폼(120) 또는 협업 애플리케이션(114) 중 하나 이상은 메시징 모듈(128)을 통해 다른 사용자를 메시징하는 것과 연관된 데이터(146)를 생성(예컨대, 수집, 처리 등)할 수 있고, 데이터베이스(142)(예컨대, 채팅 데이터베이스)에 데이터(146)를 저장할 수 있다.
구현예에서, 협업 플랫폼(120)의 사용자는 다른 사용자와 링크될 수 있고, 협업 플랫폼(120)에 의해 "친구"로 인식될 수 있다. 협업 플랫폼(120) 상의 "친구"는 협업 플랫폼(120)을 통한 다른 사용자와의 연결을 지칭할 수 있다. "친구 관계"은 협업 플랫폼(120)을 통한 적어도 두 명의 사용자 간의 연결을 지칭할 수 있다. 일부 구현예에서, 사용자와 그들의 친구는 친구의 사용자 계정에 대한 정보를 보고, 서로 전자 메시지를 전송하고, 아이템을 거래하는 등의 능력과 같은 서로에 대한 특별한 액세스를 가질 수 있다. 일부 구현예에서, 친구 요청을 다른 사용자에게 전송하고 다른 사용자가 친구 요청을 수락하여 친구 관계를 맺도록 함으로써 친구 관계 맺기가 수행될 수 있다. 친구 요청은 사용자가 협업 플랫폼(120)에서 다른 사용자와 친구 관계를 맺을 것을 요청하는 사용자에게 전송된 메시지(또는 대안)일 수 있다.
일부 구현예에서, 협업 플랫폼(120)의 사용자는 협업 플랫폼(120)의 다른 사용자와 상호 작용하기 위한 기본 기능을 가질 수 있다. 다른 사용자와 친구 관계를 맺음함으로써, 사용자는 친구들이 서로 상호 작용하도록 더 큰 기회를 허용하는 협업 플랫폼(120)의 부가 기능(여기에서 "특권" 또는 "부가 특권"이라고도 지칭됨)에 액세스하도록 허용될 수 있다. 일부 구현예에서, 친구인 협업 플랫폼(120)의 사용자는 친구 관계 맺기에 응답하여 기본 기능 및 부가 기능을 사용할 수 있다.
일부 구현예에서, 부가 기능은 사용자 A(예컨대, 클라이언트 장치(110A)의 사용자) 및 사용자 B(예컨대, 클라이언트 장치(110B)의 사용자)가 협업 플랫폼(120)(예컨대, 포스트, 채팅, 개인 메시지, 공중 메시지, 가상 게임 환경에서의 메시징, 비디오 등)을 통해 메시징 서비스(예컨대, 메시징 모듈(128))를 사용하여 통신할 수 있도록 허용하는 메시징 기능을 포함할 수 있다. 예컨대, 메시징 기능은 사용자가 서로에게 메시지를 전송하도록 허용할 수 있다. 다른 예시에서, 메시징 기능은 사용자가 다른 경우라면 메시징 모듈(128)에 의해 필터링되는 특정 유형의 정보(예컨대, 민감한 정보, 연락처 정보, 이름, 사진, 음성 녹음, 현재 위치, 고유 식별자(장치 ID) 등)를 서로에게 전송할 수 있도록 허용한다. 사용자 A 및 사용자 B는 제한이 아닌 예시의 목적으로 사용된다는 점을 유의할 있다. 예컨대, 협업 플랫폼(120)은 협업 플랫폼(120)이 부가 기능을 부여하도록 하는 친구 관계를 맺을 수 있는 하나 이상의 사용자를 포함할 수 있다.
일부 구현예에서, 부가 기능은 사용자 A와 사용자 B가 협업 플랫폼(120)을 통해 서로 아이템을 공유하도록 허용하는 공유 기능을 포함할 수 있다. 예컨대, 게임 플랫폼의 사용자는 사용자가 가상 게임 환경에서 가상 화폐와 같은 가상 아이템을 구매, 거래 또는 전송하도록 허용하는 공유 기능을 가질 수 있다.
일부 구현예에서, 부가 기능은 사용자 A와 사용자 B가 게임(122) 또는 협업 플랫폼(120)에 의해 호스팅되는 게임(122)의 특정 게임 환경 안으로 서로를 팔로잉하도록 허용하는 팔로잉 기능을 포함할 수 있다. 예컨대, 사용자 A는 게임(122A)에 참가할 수 있다. 팔로잉 기능은 사용자 B가 사용자 A의 프로필 페이지를 탐색하고 사용자 A의 프로필 페이지에서 "게임 참가" 옵션을 선택할 수 있도록 허용할 수 있고, 이는 사용자 B를 게임(122A)(예컨대, 사용자 A가 참가하는 게임(122A)의 특정 게임 환경)에 배치한다. 구현예에서, 팔로잉 기능은 또한 예컨대, 사용자 A가 이동했거나 현재 참가하고 있는 게임을 사용자 B에게 통지하는 통지 특징을 포함할 수 있다.
일부 구현예에서, 부가 기능은 사용자 A와 사용자 B가 협업 플랫폼(120)에 의해 호스팅되는 프라이빗 게임에 서로 초대할 수 있도록 허용하는 초대 기능을 포함할 수 있다. 예컨대, 사용자 A는 프라이빗 게임을 제작할 수 있고, 초대 기능은 사용자 A가 프라이빗 게임에 참가하도록 사용자 B를 초대하게끔 허용할 수 있다.
일부 구현예에서, 부가 기능은 사용자 A와 사용자 B가 협업 플랫폼(120)에 의해 호스팅되는 그룹에 참가하도록 허용하는 그룹 기능을 포함할 수 있다. 예컨대, 부가 기능은 사용자 A가 사용자 B를 사용자 A가 그룹 멤버 또는 그룹 제작자인 그룹에 초대하게끔 허용할 수 있다. 그룹의 멤버는 게임(122)에서 서로 다른 그룹과 경쟁하기 위해 서로 참가할 수 있으며, 게임(122) 내의 건물(예컨대, 환경, 구조물 등)에 서로 참가할 수 있으며, 게임(122) 등을 (예컨대, 제작자 모듈(126)을 통해) 제작하도록 서로 참가할 수 있다.
일부 구현예에서, 부가 기능은 사용자 A와 사용자 B가 협업 플랫폼(120)을 통해 서로 상호 작용할 수 있도록 허용하는 상호 작용 기능을 포함한다. 예컨대, 기본 기능은 사용자가 단일 플레이어 게임에 참가하도록 허용할 수 있고 (그러나 멀티 플레이어 게임은 아님), 상호 작용 기능은 사용자가 멀티 플레이어 게임에 참가하도록 허용할 수 있다. 다른 예시에서, 기본 기능은 사용자 A가 게임(122)에서 다른 사용자와 경쟁하도록 허용할 수 있고, 상호 작용 기능은 사용자 A가 게임(122)에서 다른 사용자와 경쟁하기 위해 사용자 B와 함께 작업하도록 허용할 수 있다. 여기에 설명된 부가 기능은 제한이 아닌 예시의 목적으로 제공된다는 점을 유의한다. 다른 구현예에서, 협업 플랫폼(120)의 다른 특징은 친구 관계 맺기를 고려해서 제공되는 부가 기능에 포함될 수 있다.
구현예에서, 컴퓨터 클러스터(130)는 컴퓨터 클러스터(130)가 단일 컴퓨터 시스템으로 보일 수 있도록 공통 태스크를 수행하기 위해 상호 연결된 노드(132 및 134)의 세트(예컨대, 컴퓨팅 장치들)을 포함한다. 예컨대, 컴퓨터 클러스터(130)는 마스터 노드(132) 및 작업자 노드(134A-134N)를 포함한다. 컴퓨터 클러스터(130)의 각 노드(132 및 134)는 데스크톱 컴퓨터, 랩톱 컴퓨터, 메인프레임 컴퓨터, PDA(personal digital assistant), 서버 컴퓨터, 휴대용 장치와 같은 임의의 데이터 프로세싱 장치 또는 데이터를 처리하도록 구성된 임의의 다른 장치를 포함할 수 있지만, 이에 제한되지는 않는다. 컴퓨터 클러스터(130)의 노드(132 및 134)는 네트워크(105)와 같은 네트워크를 통해 서로 연결될 수 있다. 각 노드(132 및 134)는 운영 체제의 그 자체 인스턴스를 실행할 수 있다.
컴퓨터 클러스터(130)의 각 노드(132 및 134)는 자신의 물리 또는 가상 메모리를 가질 수 있다. 메모리는 ROM(read-only memory), 플래시 메모리, DRAM(dynamic random access memory)(예컨대, SDRAM(synchronous DRAM) 또는 RDRAM(rambus DRAM) 등) 및 정적 메모리(예컨대, 플래시 메모리, SRAM(static random access memory) 등)과 같은 메인 메모리가 포함될 수 있지만, 이에 제한되지 않는다. 컴퓨터 클러스터(130)의 각 노드는 로컬 스토리지 디스크와 같은, 로컬 스토리지(도시되지 않음)에 저장된 데이터를 가질 수 있다.
컴퓨터 클러스터(130) 및 컴퓨터 클러스터(130)의 각 노드(132 및 134)는 다양한 네트워크 액세스 가능한 서버 기반 기능(도시되지 않음)을 추가로 구현하거나 다른 데이터 프로세싱 장비를 포함할 수 있다.
컴퓨터 클러스터(130)는 큐(136)와 연관될 수 있다(예컨대, 포함함). 큐(136)는 요소(예컨대, 데이터(146)의 단위를 식별하는 마커(138), 데이터(146)의 단위인 마커)를 저장하는 데이터 구조를 포함할 수 있다. 큐(136)의 요소는 순서대로 유지될 수 있으며, 데이터 구조에 대한 동작은 데이터 구조에 요소를 추가하고 데이터 구조에서 요소를 제거하는 것을 포함할 수 있다. 예컨대, 큐(136)는 큐에 추가된 첫 번째 요소가 큐에서 제거될 첫 번째 요소가 되는 FIFO(First-In-First-Out) 큐일 수 있다 (예컨대, 데이터 구조에 대한 동작은 큐의 후면 터미널 위치에 대한 요소의 추가와 큐의 전면 터미널 위치로부터의 요소의 제거를 포함함). 일부 구현예에서, 큐(136)는 컴퓨터 클러스터(130)에 의해 호스팅된다. 일부 구현예에서, 큐(136)는 컴퓨터 클러스터(130) 외부에서 호스팅된다. 큐(136)는 마스터 노드(132), 작업자 노드(134), 서버(140) 등 중 하나 이상에 저장될 수 있다. 일 구현예에서, 큐(136)는 메모리(예컨대, RAM(random access memory), 캐시, 드라이브(예컨대, 하드 드라이브), 플래시 드라이브, 데이터베이스 시스템 또는 데이터를 저장할 수 있는 다른 유형의 컴포넌트 또는 장치에 저장될 수 있다. 큐(136)는 노드(132 및 134)에 결합된, 자기 또는 광학 스토리지 기반 디스크, SSD(solid-state drive) 또는 하드 드라이브와 같은, 임의의 수의 대용량 스토리지 장치에 저장될 수 있다. 큐(136)는 복수의 컴퓨팅 장치(예컨대, 복수의 서버 컴퓨터)에 걸쳐 있을 수도 있는 복수의 스토리지 컴포넌트(예컨대, 복수의 드라이브 또는 복수의 데이터베이스)에 저장될 수 있다. 구현예에서, 큐(136)는 분산 파일 시스템에 저장될 수 있다. 예컨대, 큐(136)는 클라우드 스토리지 서비스에 저장될 수 있다. 큐(136)는 마커(138)를 포함할 수 있다. 각각의 마커(138)는 데이터베이스(142)에서 데이터(146)의 일부(예컨대, 행의 세트)와 연관될 수 있다. 각 마커는 데이터베이스(142), 데이터의 시작 주소(예컨대, 데이터베이스(142)의 시작 행) 및 데이터의 종료 주소(예컨대, 데이터베이스(142)의 종료 행)을 식별할 수 있다. 예컨대, 마커(138)는 데이터베이스(142A)에서 행 1 내지 10,000과 연관될 수 있다. 각각의 마커(138)는 고정된 크기의 주소 범위를 식별할 수 있다. 예컨대, 제1 마커(138)는 데이터베이스(142A)의 행 1-10,000을 식별할 수 있고, 제2 마커(138)는 데이터베이스(142A)의 행 10,001-20,000을 식별할 수 있다.
구현예에서, 컴퓨터 클러스터(130)는 서버(140A)와 연관된 데이터(146)를 서버(140B)로 (예컨대, 데이터베이스(142)에서 데이터베이스(144)로) 복사할 수 있다. 구현예에서, 서버(140A)는 협업 플랫폼(120)으로부터 데이터(146)를 수신하고, 데이터베이스(142)에 데이터(146)를 저장한다. 관련 데이터(146)는 동일한 데이터베이스(142)에 저장될 수 있다.
컴퓨터 클러스터(130)는 마스터 노드(132) 및 작업자 노드(134)를 포함할 수 있다. 마스터 노드(132)는 맵-리듀스 작업의 처리를 제어할 수 있다. 마스터 노드(132)는 사용할 맵 동작 횟수, 사용할 리듀스 동작 횟수, 동작을 수행하기 위해 사용할 프로세스 및 프로세싱 장치(예컨대, 노드), 중간 데이터 및 출력 데이터를 저장할 위치(예컨대, 마커(138)), 프로세싱 실패에 대응할 방법 등을 결정할 수 있다.
마스터 노드(132)는 맵-리듀스 스큐 모듈(170)을 포함할 수 있다. 마스터 노드(132)에서 동작하는 맵-리듀스 스큐 모듈(170)은 클라이언트 장치(110A-B)로부터 하나 이상의 맵-리듀스 동작을 수신할 수 있다 (예컨대, 클라이언트 장치(110)는 마스터 노드(132)에 의해 수신되는 맵-리듀스 작업을 제출할 수 있음). 이하에서 더 자세히 설명되는 바와 같이, 마스터 노드(132)에서 실행되는 맵-리듀스 스큐 모듈(170)은 작업자 노드(134A)가 데이터베이스(142)의 식별자에 대한 맵 동작을 실행하여 데이터베이스를 작업자 노드(134B-C)에 분산하게 하고, 작업자 노드(134B)가 데이터베이스(142A)에 대한 제1 리듀스 동작을 실행하여 마커(138)를 생성하게 하고, 작업자 노드(134C)가 데이터베이스(142B)에 대한 제2 리듀스 동작을 실행하여 마커(138)를 생성하고, 마커(138)를 큐(136)에 제출하고, 작업자 노드(134)가 각각의 리듀스 동작을 완료하는 작업자 노드(134)에 응답하는 큐(136)의 마커(138)에 기초하여 복사 동작을 수행하도록 지시하게 한다.
구현예에서, 맵-리듀스 작업이 클러스터(130)로 전송되면, 마스터 노드(132)에서 실행되는 맵-리듀스 스큐 모듈(170)은 클러스터(130)에서 실행되는 맵-리듀스 작업의 진행을 모니터링할 수 있다. 구현예에서, 마스터 노드(132)에서 실행되는 맵-리듀스 스큐 모듈(170)은 맵-리듀스 작업의 결과(예컨대, 마커(138))를 수신할 수 있고, 결과를 큐(136)에 저장할 수 있다.
구현예에서, 컴퓨터 클러스터(130)의 각 노드(132 및 134)는 맵-리듀스 작업의 전부 또는 일부를 실행할 수 있다. 하나 이상의 맵-리듀스 작업의 전부 또는 일부의 실행은 각각의 노드에서 실행되는 맵-리듀스 스큐 모듈(170)에 의해 예시된다. 단일 맵-리듀스 작업이 클러스터(130)의 하나 이상의 노드에서 병렬로 실행될 수 있다는 점을 유의할 수 있다. 각각의 노드(132 및 134)는 메모리(예컨대, 메모리 하드웨어)를 가질 수 있고, 또한 큐(136) 또는 로컬 스토리지(도시되지 않음)와 통신할 수 있다.
구현예에서, 컴퓨터 클러스터(130)는 맵-리듀스 프레임워크를 실행할 수 있다. 클러스터(130)의 각 노드(132 및 134)는 특정 맵-리듀스 프레임워크를 실행하도록 구성된다. 다양한 프레임워크는 ApacheTM Hadoop®, Hazelcast®, MongoDB®, Infinispan 및 ApacheTM SparkTM와 같은 프레임워크를 포함한다.
구현예에서, 맵-리듀스 스큐 모듈(170)은 클라이언트 장치(110A)에 의해 제출된 맵-리듀스 작업을 수신한다. 맵-리듀스 스큐 모듈(170)은 또한 컴퓨터 클러스터(130) 및 서버(140)(예컨대, 데이터베이스(142), 데이터베이스(144))로부터 정보를 수신할 수 있다. 정보는 맵-리듀스 작업의 입력 데이터(예컨대, 데이터베이스(142)의 식별자), 중간 데이터(예컨대, 데이터베이스(142)의 식별자) 및 출력 데이터(예컨대, 마커(138))를 포함할 수 있다.
맵-리듀스 작업은 복수의 기능을 포함할 수 있음을 유의할 수 있다. 맵-리듀스 작업은 기능의 완전한 실행을 설명할 수 있으며, 입력 데이터, 중간 데이터 및 출력 데이터를 포함할 수 있다는 점을 유의할 수 있다. 대안적으로, 맵-리듀스 동작은 맵-리듀스 작업을 실행하는 하나 이상의 기능 또는 동작을 나타낼 수 있다. 예컨대, 맵-리듀스 작업은 맵 기능 또는 리듀스 기능을 지칭할 수 있다.
제한보다는 예시를 위해, 맵-리듀스 스큐 모듈(170)은 마스터 노드(132)에서 구현되는 것으로 설명된다. 다른 구현예에서, 맵-리듀스 스큐 모듈(170)은 부분적으로 또는 전체적으로 협업 플랫폼(120)에서 구현될 수 있다. 다른 구현예에서, 맵-리듀스 스큐 모듈(170)은 부분적으로 또는 전체적으로 클라이언트 장치(110)에서 구현될 수 있다. 다른 구현예에서, 클라이언트 장치(110), 컴퓨터 클러스터(130), 또는 협업 플랫폼(120) 중 하나 이상에서 동작하는 맵-리듀스 스큐 모듈(170)은 여기에서 설명된 동작을 수행하기 위해 함께 작업할 수 있다. 본 개시의 구현은 협업 플랫폼에 관해서 논의되지만, 구현은 또한 일반적으로 데이터(146)를 생성하는 임의의 유형의 플랫폼에 적용될 수 있다. 맵-리듀스 스큐 모듈(170)은 도 2-3에 대하여 설명된 동작과 같이, 여기에 설명된 동작을 용이하게 하는 데 도움이 될 수 있다. 일부 구현예에서, 맵-리듀스 스큐 모듈(170)은 플러그-인과 같은, 다른 애플리케이션(예컨대, 협업 애플리케이션(114))의 일부일 수 있다. 일부 구현예에서, 맵-리듀스 스큐 모듈(170)은 장치에서 실행되는 별도의 애플리케이션일 수 있다.
여기에서 논의된 시스템이 사용자에 대한 개인 정보를 수집하거나 개인 정보를 사용할 수 있는 상황에서, 사용자는 협업 플랫폼(120)이 사용자 정보(예컨대, 사용자의 소셜 네트워크, 소셜 행위 또는 활동, 직업, 사용자의 선호도 또는 사용자의 현재 위치에 관한 정보)를 수집하는지 여부를 제어하거나 또는 사용자와 더 관련이 있을 수 있는 콘텐츠 서버로부터 콘텐츠를 수신할지 여부 및/또는 방법을 제어하기 위한 기회가 제공될 수 있다. 또한, 특정 데이터는 개인 식별 가능 정보가 제거되도록 저장 또는 사용되기 전에 하나 이상의 방식으로 처리될 수 있다. 예컨대, 사용자의 신원은 개인 식별 가능 정보가 사용자에 대해 결정되지 않을 수 있도록 처리되거나, 사용자의 지리적 위치는 사용자의 특정 위치가 결정되지 않을 수 있도록 획득된 위치 정보(예컨대, 도시, 우편 번호 또는 국가 수준)가 일반화될 수 있다. 따라서, 사용자는 사용자에 대한 정보가 수집되고 협업 플랫폼(120)에 의해 사용되는 방식에 대한 제어를 가질 수 있다.
도 2는 일부 구현예에 따른, 큐(136)를 사용하여 데이터(146)를 복사하는 것을 예시하는 블록도이다. 도 2에 도시된 바와 같이, 입력 데이터(210)의 세트(예컨대, 데이터베이스(142)의 식별자(270))는 중간 데이터(230)의 세트(예컨대, 데이터베이스(142)의 식별자(270))를 분산하기 위해 제1 프로세스의 세트(예컨대, 매핑 동작(220))에 의해 처리된다. 중간 데이터(230)는 출력 데이터(250)(예컨대, 데이터베이스(142)의 데이터(146)의 마커(138))를 생성하기 위해 제2 프로세스의 세트(예컨대, 리듀스 동작(240))에 의해 처리된다. 출력 데이터(250)는 큐(136)에 배치된 후 데이터(146)의 복사본을 생성하기 위해 제3 프로세스의 세트(예컨대, 복사 동작(260))에 의해 처리될 수 있다. 마스터 노드(132)는 프로세싱 태스크의 세트를 제어하고, 사용할 맵 작업 횟수, 사용할 리듀스 작업 횟수, 작업을 수행하기 위해 사용할 프로세스 및 프로세서(예컨대, 노드), 입력 데이터(210), 중간 데이터(230), 출력 데이터(250) 및 데이터(146)의 복사본을 저장할 위치, 임의의 프로세싱 실패에 대응할 방법 등을 결정한다. 마스터 노드(132)는 작업을 프로세스에 할당하고, 복수의 프로세스가 노드(134) 각각에 의해 실행될 수 있다 (예컨대, 작업자 노드(134A)는 맵 동작(220) 및 리듀스 동작을 실행할 수 있음). 마스터 노드(132)에 의해 제어되는 프로세스는 시스템(100)에 의해 실행되는 전체 프로세스의 세트의 서브세트일 수 있고, 마스터 노드(132)에 의해 할당된 작업을 수행하기 위해 이용 가능한 노드(134)의 세트는 시스템(100)의 노드(134)의 세트보다 적을 수 있다.
일부 구현예에서, 매핑 동작(220)은 패스 스루 동작이고, 중간 데이터(230)는 입력 데이터(210)와 동일하다. 작업자 노드(134A)는 (매핑 동작(220)을 통해) 중간 데이터(230)를 리듀스 동작(240)을 위한 작업자 노드(134)에 분산할 수 있다. 매핑 동작(220)에서 작업자 노드(134A)는 각 작업자 노드(134B-C)가 각각의 데이터베이스(142)에서 각각의 리듀스 동작을 실행하도록 데이터베이스(142)의 각각의 식별자(270)를 리듀스 동작(240)에서 각 작업자 노드(134B-C)에 분산할 수 있다. 작업자 노드(134B-C)는 각각의 데이터베이스(142)의 데이터(146)의 마커(138)를 출력하기 위해 각각의 리듀스 동작(240)을 실행할 수 있다. 각 마커(138)는 데이터베이스(142), 데이터(146)의 시작 주소 및 데이터(146)의 종료 주소에 대응할 수 있다. 각 마커(138)는 고정된 크기의 주소 범위(예컨대, 10,000 행의 데이터)를 식별할 수 있다.
각 마커(138)는 작업자 노드(134)에 의해 생성되고 컴퓨터 클러스터(130)와 연관된 큐(136)에 제출되므로, 마커(138)가 생성될 때 (예컨대, 리듀스 동작(240)을 완료하기 위해 대기하지 않고) 마커(138)가 (예컨대, 연속적으로) 제출될 수 있다. 일부 구현예에서, 작업자 노드(134)는 마커(138)를 큐(136)에 출력(예컨대, 제출)한다. 일부 구현예에서, 마스터 노드(132)는 마커(138)가 작업자 노드(134)에 의해 생성되었음을 결정하고, 마스터 노드(132)는 마커(138)를 큐(136)에 제출한다. 마커(138)를 큐(136)에 제출하는 것에 응답하여, 마스터 노드(132)는 마커(138)가 큐(136)에 있음을 나타내는 제1 메시지를 생성하고, 제1 메시지를 작업자 노드(134B-C)에 방송할 수 있다.
일 구현예에서, 데이터베이스(142A)는 데이터베이스(142B)보다 더 크다(예컨대, 데이터(146)의 더 많은 행을 가짐). 작업자 노드(134C)는 작업자 노드(134B)가 여전히 데이터베이스(142A)에서 각각의 리듀스 동작(240A)을 수행하는 동안, 데이터베이스(142B)에 대한 마커(138)를 생성하는 각각의 리듀스 동작(240B)을 완료할 수 있다. 마스터 노드(132)는 작업자 노드(134C)가 데이터베이스(142B)에서 각각의 리듀스 동작을 완료했음을 나타내는 제2 메시지를 작업자 노드(134C)로부터 수신할 수 있다.
마스터 노드(132)는 마커(138)(큐(136)에서)에 의해 식별된 데이터(146)를 데이터베이스(144)에 복사하는 복사 동작(260)을 수행하도록 작업자 노드(134C)에 지시할 수 있다. 일부 구현예에서, 마스터 노드(132)는 작업자 노드(134C)가 마커(138B)를 생성한, 마커(138B)에 의해 식별된 데이터(146B)를 복사하는 복사 동작(260)을 수행하도록 작업자 노드(134C)에 지시한다. 일부 구현예에서, 마스터 노드(132)는 작업자 노드(134B)가 마커(138A)를 생성한, 마커(138A)에 의해 식별된 데이터(146A)를 복사하는 복사 동작(260)을 수행하도록 작업자 노드(134C)에 지시한다. 복사 동작(260)을 수행하기 위해, 작업자 노드(134C)는 서버(140A)와 연관된 데이터베이스(142)로부터 서버(140B)와 연관된 다른 데이터베이스(144)로 마커(138)에 의해 식별된 데이터(146)를 복사할 수 있다.
복사 동작(260)을 수행하도록 작업자 노드(134C)에 지시한 후, 마스터 노드(132)는 작업자 노드(134C)가 (예컨대, 서버(140A)와 연관된 데이터베이스(142)로부터 서버(140B)와 연관된 데이터베이스(144)로) 마커(138)에 의해 식별된 데이터(146)의 복사를 완료했다는 제3 메시지를 작업자 노드(134C)로부터 수신할 수 있다. 일부 구현예에서, 작업자 노드(134C)로부터 제3 메시지를 수신하는 것에 응답하여, 마스터 노드(132)는 큐(136)로부터 마커(138)를 제거할 수 있다. 일부 구현예에서, 복사 동작을 수행하도록 작업자 노드(134C)에 지시하는 것에 응답하여, 마스터 노드(132)는 큐(136)에서 마커(138)를 제거할 수 있다. 일부 구현예에서, 마스터 노드(132)는 복사 동작(260)을 모니터링할 수 있고, 마커(138)에 대응하는 복사 동작(260)이 완료되었다고 결정하는 것에 응답하여, 마스터 노드(132)는 큐(136)에서 마커(138)를 제거할 수 있다.
작업자 노드(134B)가 데이터베이스(142A)에서 각각의 리듀스 동작(240)을 완료했다고 결정하는 것에 응답하여, 마스터 노드(132)는 큐(136)의 다른 마커(138)에 의해 식별된 데이터(146)를 복사하는 복사 동작(260)을 수행하도록 작업자 노드(134B)에 지시할 수 있다. 작업자 노드(134A-N)는 작업자 노드(134A-N)가 유휴 상태가 아니도록, 상이한 시점에서(예컨대, 일단 이용 가능하면) 복사 동작을 시작할 수 있다. 마스터 노드(132)는 각각의 작업자 노드(134)가 이용 가능해질 때(예컨대, 각각의 리듀스 동작(240)을 완료하고, 각각의 매핑 동작(220)을 완료함), 복사 동작의 실행을 위해 마커(138)를 상이한 작업자 노드(134A-N)에 분산할 수 있다.
모든 리듀스 동작(240)이 작업자 노드(134)에 의해 완료된 후, 리듀스 동작(240) 완료를 나타내는 최종 레코드가 (예컨대, 마스터 노드(132)에 의해) 큐(136)로 전송될 수 있다. 모든 복사 동작(260)이 완료된 후, 데이터베이스(142)로부터 데이터 복사의 완료를 나타내는 최종 레코드가 (예컨대, 마스터 노드(132)에 의해) 큐(136)로 전송될 수 있다.
도 3은 본 개시의 구현예에 따른, 큐를 사용하여 데이터를 복사하는 방법(300)을 예시하는 흐름도이다. 방법(300)은 하드웨어(예컨대, 회로, 전용 로직, 프로그래밍 가능 로직, 마이크로 코드), 소프트웨어(예컨대, 하드웨어 시뮬레이션을 수행하기 위해 프로세싱 장치에서 실행되는 명령어) 또는 이들의 조합을 포함하는 프로세싱 로직에 의해 수행될 수 있다. 일부 구현예에서, 마스터 노드(132)에서 실행하는 맵-리듀스 스큐 모듈(170)은 일부 또는 모든 동작을 수행할 수 있다. 다른 구현예에서, 협업 플랫폼(120), 클라이언트 장치(110A), 클라이언트 장치(110B), 마스터 노드(132), 작업자 노드(134), 또는 이들의 조합에서 실행되는 맵-리듀스 스큐 모듈(170)은 일부 또는 모든 동작을 수행할 수 있다. 도 1-2의 요소가 예시된 방법(300)을 돕기 위해 사용될 수 있다. 일부 구현예에서, 방법(300)은 임의의 순서로 수행되는 동일하거나, 상이하거나, 더 적거나, 또는 더 많은 수의 동작을 포함할 수 있다는 점을 유의할 수 있다.
방법(300)의 블록(305)에서, 프로세싱 로직 수행 방법(300)은 데이터베이스(142)의 식별자(270)가 컴퓨터 클러스터(130)의 제1 노드(134A)로 전송되도록 한다. 프로세싱 로직은 제2 서버(140B)에서의 사용을 위해 데이터베이스(142)의 복사가 일어나도록 하는 제1 서버(140A)에 의해 사용되는 데이터베이스(142)의 식별자(270)를 수신할 수 있다. 일부 구현예에서, 프로세싱 로직은 클라이언트 장치(110) 또는 협업 플랫폼(120)으로부터 맵-리듀스 작업을 수신한다. 맵-리듀스 작업은 복사될 데이터베이스(142)를 나타낼 수 있다. 일부 구현예에서, 프로세싱 로직은 데이터베이스(142)의 식별자(270)(예컨대, 데이터베이스(142) 당 하나의 식별자(270))를 생성한다. 일부 구현예에서, 프로세싱 로직은 (예컨대, 맵-리듀스 작업과 함께 맵-리듀스 작업의 일부로서) 데이터베이스(142)의 식별자(270)를 수신한다.
블록(310)에서, 프로세싱 로직은 제1 노드(134A)가 식별자(270)에 대해 맵 동작(220)을 실행하여 제1 데이터베이스(142A)를 제2 노드(134B)에 분산하고 제2 데이터베이스(142B)를 제3 노드(134C)에 분산하도록 한다. 맵 동작(220)은 식별자(270)를 노드(134)에 분산할 수 있다. 맵 동작(220)은 노드(134) 당 하나의 식별자(270)를 분산할 수 있다.
블록(315)에서, 프로세싱 로직은 컴퓨터 클러스터(130)의 제2 노드(134B)가 제1 마커(138)를 생성하기 위해 제1 데이터베이스(142A)에서 제1 리듀스 동작(240A)을 실행하도록 한다. 일부 구현예에서, 마커(138)는 각각의 데이터베이스의 데이터(146)(예컨대, 제1 데이터베이스(142A)의 데이터(146A))의 위치를 식별한다. 일부 구현예에서, 마커(138)는 각각의 데이터베이스(142)의 데이터(146)(예컨대, 데이터 단위)를 포함한다. 일부 구현예에서, 식별자(270)는 데이터베이스(142)에 대한 정보(예컨대, 데이터베이스(142)에서 데이터(146)의 행의 양을 나타냄)를 포함한다. 일부 구현예에서, 작업자 노드(134)는 식별자(270)를 사용하여 제1 서버(140A)와 연관된 데이터베이스(142)를 식별하고, 데이터베이스(142) 또는 제1 서버(140A)로부터 데이터베이스(142)에 대한 정보를 획득한다.
블록(320)에서, 프로세싱 로직은 컴퓨터 클러스터(130)의 제3 노드(134C)가 제2 데이터베이스(142B)에서 제2 리듀스 동작(240B)을 실행하여 제2 마커(138)(예컨대, 제2 데이터베이스(142B)의 데이터 단위인, 제2 데이터베이스(142B)의 데이터(146)의 위치를 식별함)를 생성하도록 한다. 일부 구현예에서, 제2 데이터베이스(142B)는 제1 데이터베이스(142A)보다 더 작고(예컨대, 더 적은 행을 가짐), 제3 노드(134C)는 제2 노드(134B)가 제1 리듀스 동작(240A)을 완료하기 전에 제2 리듀스 동작(240B)을 완료한다.
블록(325)에서, 프로세싱 로직은 하나 이상의 마커(138)의 생성에 응답하여, 컴퓨터 클러스터(130)와 연관된 큐(136)에 하나 이상의 마커(138)의 제출이 일어나도록 한다. 일부 구현예에서, 프로세싱 로직은 마커(138)를 큐(136)에 배치하는 노드(134)를 모니터링한다. 각 마커(138)는 각각의 마커(138)가 생성될 때 큐(136)에 제출된다(예컨대, 마커(138)는 작업자 노드(134)에서 실행하는 리듀스 동작(240)이 완료되지 않았더라도, 마커(138)가 생성되면 즉시 큐로 전송됨). 큐(136)는 마커(138)가 생성될 때 (예컨대, 작업자 노드(134)에서 실행되는 리듀스 동작(240)이 완료되도록 대기하지 않고) 마커(138)를 수신한다. 큐(136)는 리듀스 동작(240)이 수행되는 컴퓨터 클러스터(130) 또는 다른 하드웨어의 일부일 수 있다는 점을 유의할 수 있다.
블록(330)에서, 프로세싱 로직은 제2 노드(134B)가 제1 마커(138)가 생성된 제1 리듀스 동작(220A)을 완료했다고 결정한다. 일부 구현예에서, 프로세싱 로직은 노드(134)가 리듀스 동작(220)을 완료했음을 결정하기 위해 리듀스 동작(240)을 모니터링한다. 일부 구현들에서, 노드(134)는 각각의 리듀스 동작(240)의 완료에 응답하여 최종 레코드를 큐(136)로 전송한다.
블록(335)에서, 프로세싱 로직은 큐(136)의 마커(138)에 대응하는 제1 데이터(146)를 복사하는 제1 복사 동작(260A)을 수행하도록 제2 노드(134B)에 지시한다. 일부 구현예에서, 제2 노드(134B)는 리듀스 동작(240A)에서 마커(138)를 생성했다. 일부 구현예에서, 제3 노드(134C)는 리듀스 동작(240B)에서 마커(138)를 생성했다.
블록(340)에서, 프로세싱 로직은 제2 노드(134B)가 마커(138)에 대응하는 제1 데이터(146)를 제1 서버(140A)와 연관된 각각의 데이터베이스(142)로부터 제2 서버(140B)와 연관된 다른 데이터베이스(144)로 복사를 완료했음을 식별한다. 일부 구현예에서, 프로세싱 로직은 복사 동작(260)을 모니터링하여 노드(134)가 마커(138)에 대응하는 데이터(146) 복사를 완료했음을 결정한다. 일부 구현예에서, 노드(134)는 마커(138)에 대응하는 데이터(146) 복사를 완료하는 것에 응답하여 프로세싱 로직에 메시지를 전송한다. 구현예에서, 제2 노드(134B)가 마커(138)에 대응하는 제1 데이터(146)의 복사를 완료한 후, 제2 노드(134B)는 큐(136)로 돌아와서 큐의 다음 마커를 검색하고 다른 복사 동작을 수행할 수 있다. 제2 노드(134B)는 마커가 큐(136)에 남아있지 않을 때까지 데이터 복사를 계속할 수 있다.
블록(345)에서, 프로세싱 로직은 큐(136)로부터 마커(138)를 제거한다. 일부 구현예에서, 프로세싱 로직은 노드(134)가 데이터베이스(142)로부터 데이터베이스(144)로 마커(138)에 대응하는 데이터(146) 복사를 완료했다고 결정하는 것에 응답하여 큐(136)로부터 마커(138)를 제거한다. 일부 구현예에서, 프로세싱 로직은 노드(134)가 데이터베이스(142)로부터 데이터베이스(144)로 마커(138)에 대응하는 데이터(146)의 복사를 완료했다는 표시를 노드(134)로부터 수신하는 것에 응답하여 큐(136)로부터 마커(138)를 제거한다.
구현예에서, 컴퓨터 클러스터(130)의 다른 노드(134)가 각각의 리듀스 동작을 완료함에 따라, 다른 노드(134)는 큐(136)를 사용하여 복사 동작을 수행하도록 용도가 변경될 수 있다 (전술한 것과 유사함). 프로세싱 로직은 데이터베이스(142)로부터의 모든 데이터(146)가 데이터베이스(144)에 복사될 때까지 (큐가 제공하는 순서대로) 큐(136)의 마커(138)에 대응하는 데이터(146)를 복사하기 위한 복사 동작을 수행하도록 노드(134)에 계속 지시한다. 일부 구현예에서, 데이터베이스(142)로부터 데이터베이스(144)로의 데이터(146)의 복사는 병렬로 수행될 수 있다. 예컨대, 데이터베이스(142A 및 142B)의 복사는 병렬로 복사될 수 있다.
방법(300)은 제한이 아닌 예시의 목적으로 데이터베이스(142)로부터 다른 데이터베이스(144)로 데이터(146)를 복사하는 것을 설명한다. 다른 구현예에서, 본 개시의 양태는 일반적으로 구조화된 데이터(예컨대, 데이터베이스) 또는 구조화되지 않은 데이터와 같은, 저장된 데이터를 효율적으로 복사하는 데 적용될 수 있다. 예컨대, 데이터는 제1 데이터 저장소 그룹의 하나 이상의 데이터 저장소로부터 제2 데이터 저장소 그룹의 하나 이상의 데이터 저장소로 복사될 수 있다. 데이터 저장소는 데이터의 수집을 지속적으로 저장하기 위한 리포지토리(repository)일 수 있으며, 데이터베이스 또는 파일, 이메일, 사진 등과 같은 다른 유형의 데이터를 포함할 수 있다. 이하에서 예시가 제공된다.
일부 구현예에서, 방법(300)의 블록(305)에서, 프로세싱 로직 수행 방법(300)은 데이터 저장소의 제1 그룹의 식별자(270)가 컴퓨터 클러스터(130)의 제1 노드(134A)로 전송되도록 한다. 블록(305)에서, 프로세싱 로직은 제1 노드(134A)가 식별자(270)에 대한 맵 동작(220)을 실행하여 제1 데이터 저장소 그룹의 제1 데이터 저장소를 제2 노드(134B)에 분산하고, 제1 데이터 저장소 그룹의 제2 데이터 저장소를 제3 노드(134C)에 분산하도록 한다. 블록(315)에서, 프로세싱 로직은 컴퓨터 클러스터(130)의 제2 노드(134B)가 제1 마커(138)를 생성하기 위해 제1 데이터 저장소에 대해 제1 리듀스 동작(240A)을 실행하도록 한다. 일부 구현예에서, 마커(138)는 데이터 저장소에서 데이터(146)의 위치를 식별한다. 일부 구현예에서, 마커(138)는 데이터 저장소의 데이터(146)(예컨대, 데이터 단위)를 포함한다. 블록(320)에서, 프로세싱 로직은 컴퓨터 클러스터(130)의 제3 노드(134C)가 제1 데이터 저장소 그룹의 제2 데이터 저장소에 대해 제2 리듀스 동작(240B)을 실행하여 제2 마커(138)를 생성하도록 한다. 블록(325)에서, 프로세싱 로직은 하나 이상의 마커(138)의 생성에 응답하여, 컴퓨터 클러스터(130)와 연관된 큐(136)에 하나 이상의 마커(138)의 제출이 일어나도록 한다. 블록(330)에서, 프로세싱 로직은 제2 노드(134B)가 제1 마커(138)가 생성된 제1 리듀스 동작(220A)을 완료했다고 결정한다. 블록(335)에서, 프로세싱 로직은 큐(136)의 마커(138)에 대응하는 제1 데이터(146)를 복사하는 제1 복사 동작(260A)을 수행하도록 제2 노드(134B)에 지시한다. 블록(340)에서, 프로세싱 로직은 제2 노드(134B)가 마커(138)에 대응하는 제1 데이터(146)를 제1 데이터 저장소 그룹의 각각의 데이터 저장소로부터 제2 데이터 저장소 그룹의 다른 데이터 저장소로 복사하는 것을 완료했음을 식별한다. 블록(345)에서, 프로세싱 로직은 큐(136)로부터 마커(138)를 제거한다.
도 4는 구현예에 따른, 예시적인 컴퓨터 시스템(400)을 예시하는 블록도이다. 컴퓨터 시스템(400)은 머신이 여기에서 논의된 방법론 중 임의의 하나 이상을 수행하도록 하는 명령어의 하나 이상의 세트를 실행한다. 명령어의 세트, 명령어 등은 컴퓨터 시스템(400)이 실행되는 경우, 컴퓨터 시스템(400)이 맵-리듀스 스큐 모듈(170)의 하나 이상의 동작을 수행하도록 하는 명령어를 지칭할 수 있다. 머신은 클라이언트 서버 네트워크 환경에서 클라이언트 장치 또는 서버로서, 또는 피어-투-피어(peer-to-peer)(또는 분산된) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신은 PC(personal computer), 태블릿 PC, 셋톱박스(STB), PDA(personal digital assistant), 모바일 전화, 웹 어플라이언스(web appliance), 서버, 네트워크 라우터, 스위치 또는 브릿지 또는 머신에 의해 취해질 동작을 명시하는 명령어의 세트(순차적 또는 기타)를 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신만이 예시되는 한편, "머신"이라는 용어는 또한 여기에서 논의된 방법론 중 임의의 하나 이상을 수행하도록 명령어의 세트를 개별적으로 또는 공동으로 실행하는 머신의 임의의 집합을 포함하도록 이해될 수 있다.
컴퓨터 시스템(400)은 버스(408)를 통해 서로 통신하는 프로세싱 장치(402), 메인 메모리(404)(예컨대, ROM(read-only memory), 플래시 메모리, SDRAM(synchronous DRAM) 또는 RDRAM(rambus DRAM)과 같은 DRAM(dynamic random access memory) 등), 정적 메모리(406)(예컨대, 플래시 메모리, SRAM(static random access memory) 등) 및 데이터 저장 장치(416)를 포함한다.
프로세싱 장치(402)는 마이크로프로세서, CPU(central processing unit) 등과 같은, 하나 이상의 범용 프로세싱 장치를 나타낸다. 특히, 프로세싱 장치(402)는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서 또는 다른 명령어 세트를 구현하는 프로세싱 장치 또는 명령어 세트의 조합을 구현하는 프로세싱 장치일 수 있다. 프로세싱 장치(402)는 또한 ASIC(application specific integrated circuit), FPGA(field programmable gate array), DSP(digital signal processor), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 프로세싱 장치일 수 있다. 프로세싱 장치(402)는 여기에서 논의된 동작을 수행하기 위한 맵-리듀스 스큐 모듈(170) 및 시스템 아키텍처(100)의 명령어를 실행하도록 구성된다.
컴퓨터 시스템(400)은 근거리 네트워크(LAN), 인트라넷, 엑스트라넷 또는 인터넷과 같은, 네트워크(418) 상으로 다른 머신과의 통신을 제공하는 네트워크 인터페이스 장치(422)를 더 포함할 수 있다. 컴퓨터 시스템(400)은 또한, 디스플레이 장치(410)(예컨대, 액정 디스플레이(LCD) 또는 음극선관(CRT)), 영숫자 입력 장치(412)(예컨대, 키보드), 커서 컨트롤 장치(414)(예컨대, 마우스) 및 신호 생성 장치(420)(예컨대, 스피커)를 포함할 수 있다.
데이터 저장 장치(416)는 여기에서 설명된 동작 또는 방법론 중 임의의 하나 이상을 실시하는 맵-리듀스 스큐 모듈(170) 및 시스템 아키텍처(100)의 명령어의 세트를 저장하는 비일시적 컴퓨터 판독 가능 저장 매체(424)를 포함할 수 있다. 시스템 아키텍처(100) 및 맵-리듀스 스큐 모듈(170)의 명령어의 세트는 또한, 컴퓨터 판독 가능 저장 매체를 구성하는 컴퓨터 시스템(400), 메인 메모리(404) 및 프로세싱 장치(402)에 의한 그들의 실행 동안, 메인 메모리(404) 및/또는 프로세싱 장치(402) 내에 완전히 또는 적어도 부분적으로 있을 수 있다. 명령어의 세트는 네트워크 인터페이스 장치(422)를 통해 네트워크(418) 상으로 더 전송되거나 수신될 수 있다.
컴퓨터 판독 가능 저장 매체(424)가 단일 매체로서 도시되지만, "컴퓨터 판독 가능 저장 매체"라는 용어는 명령어의 세트를 저장하는 단일 매체 또는 복수의 매체(예컨대, 중앙 집중되거나 분산된 데이터베이스 및/또는 연관된 캐시 및 서버)를 포함할 수 있다. "컴퓨터 판독 가능 저장 매체"라는 용어는 머신에 의한 실행을 위해 명령어의 세트를 저장, 암호화 또는 운송할 수 있고, 머신이 본 개시의 방법론 중 임의의 하나 이상을 수행하도록 하는 임의의 매체를 포함할 수 있다. "컴퓨터 판독 가능 저장 매체"라는 용어는 고체 상태 메모리(solid-state memory), 광학 매체 및 자기 매체를 포함하지만 이에 제한되지 않을 수 있다.
전술한 설명에서, 많은 세부사항이 제시된다. 그러나, 본 개시의 이익을 가지는 당업자에게 본 개시가 이러한 구체적인 세부사항 없이 수행될 수 있음이 명백할 것이다. 일부 경우에서, 알려진 구조 및 장치가 본 개시의 모호함을 피하기 위해 상세하게 하는 대신 블록도 형태로 도시된다.
상세한 설명의 일부분은 컴퓨터 메모리 내의 데이터 비트 상의 동작의 상징적 표현 및 알고리즘의 용어로 나타난다. 이러한 알고리즘 설명 및 표현은 당업자에게 가장 효율적으로 그들의 업무의 핵심을 전달하도록 데이터 프로세싱 분야 당업자에 의해 이용되는 의미이다. 알고리즘은 여기에서 그리고 일반적으로, 바람직한 결과로 이끄는 동작의 일관성 있는 순서가 되도록 구상한다. 동작의 순서는 물리량의 요구되는 물리적 조작이다. 보통, 필수적이지는 않지만, 이러한 양은, 저장되고, 이동되고, 결합되고 비교되고 그 외 조작될 수 있는 전기적 또는 자기 신호의 형태를 취한다. 이러한 신호를 비트, 값, 요소, 기호, 캐릭터, 용어, 수 등으로 지칭하는 것이 주로 일반적인 용법의 이유로 편리하다는 것이 증명된다.
그러나, 이러한 모든 유사한 용어는 적절한 물리량에 연관되어야 하고, 이러한 양에 적용되는 단지 편리한 라벨이라는 점을 명심해야 할 수 있다. 달리 특정하지 않는 한, 설명의 전반적으로, "실행", "제출", "수신", "식별", "복사", "지시", "제거", "결정", "수행", "야기" 등과 같은 용어를 이용하는 논의는 컴퓨터 시스템 메모리 내에서 물리(예컨대, 전자)량으로 나타낸 데이터를 조작하고 변형하거나, 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 이러한 정보 저장, 전송 또는 디스플레이 장치 내에서 물리량처럼 유사하게 나타내는 다른 데이터로 기재하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스를 지칭한다는 점이 이해된다.
본 개시는 또한, 여기에서 동작을 수행하기 위한 장치와 관련된다. 장치는 요구된 목적을 위해 특별히 구성될 수 있거나 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 예컨대, 플로피 디스크, 광학 디스크, CD-ROM(compact disc read-only memory), 자기-광학 디스크, ROM(read-only memory), RAM(random access memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 자기 또는 광학 카드를 포함하는 임의의 형태의 디스크 또는 전자 명령어를 저장하기 위해 적합한 임의의 형태의 매체와 같지만 이에 제한되는 것은 아닌 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
"예시" 또는 "예시적인"이라는 단어는 여기에서 예, 경우 또는 예시의 역할을 하는 의미로 이용된다. "예시" 또는 "예시적인"으로서 여기에서 설명된 임의의 양태 또는 설계는 다른 양태 또는 설계보다 선호되거나 유리한 것으로 해석될 필요는 없다. 오히려 "예시" 또는 "예시적인"이라는 단어의 사용은 구체적 방식에서의 개념을 나타내도록 의도된다. 본 출원에서 사용된 바와 같이, "또는"이라는 용어는 배타적인 "또는"보다는 포괄적인 "또는"을 의미하도록 의도된다. 즉, 달리 특정되거나 문맥으로부터 분명하지 않는 한, "X는 A 또는 B를 포함한다."는 자연 포괄적인 치환 중 임의의 것을 의미하도록 의도된다. 즉, X가 A를 포함하거나; X가 B를 포함하거나; X가 A 및 B를 모두 포함하는 경우, "X가 A또는 B를 포함한다"는 전술한 경우 중 임의의 것을 만족한다. 또한, "하나("a" 및 "an")"라는 관사는 특정되거나 문맥상 단수의 형태로 나타남이 분명하지 않는 한 본 출원 및 첨부된 청구항에서 사용되는 것처럼 일반적으로 "하나 이상의" 의미로 해석될 수 있다. 게다가, 전반적으로 "구현예" 또는 "일 구현예" 또는 "실시예" 또는 "일 실시예" 또는 이와 유사한 용어의 사용은 그렇게 설명되지 않는 한, 동일한 구현예 또는 구현예를 의미하도록 의도되지 않는다. 여기에서 설명된 하나 이상의 구현예 또는 실시예는 특정한 구현예 또는 실시예와 결합될 수 있다. 여기에서 이용된 "제1", "제2", "제3", "제4" 등의 용어는 상이한 요소 중에서 구별하도록 라벨로서 의미되고, 그들의 수명칭에 따른 일반적인 의미를 가지는 것은 아닐 수 있다.
위의 설명은 예시적인 것을 의도하였으며, 제한하는 것은 아님이 이해된다. 다른 구현예는 위의 설명을 읽고 이해함에 따라 당업자에게 명백할 것이다. 따라서, 본 개시의 범위는 그러한 청구항에 부여된 균등물의 전 범위와 함께, 첨부된 청구항을 참조하여 결정된다.
추가적인 구현예에서, 전술한 구현예의 동작을 수행하기 위한 하나 이상의 프로세싱 장치가 개시된다. 추가적으로, 본 개시의 구현예에서, 비일시적 컴퓨터 판독 가능 저장 매체는 설명된 구현예의 동작을 수행하기 위한 명령어를 저장한다. 또한, 다른 구현예에서, 설명된 구현예의 동작을 수행하기 위한 시스템도 개시된다.

Claims (23)

  1. 시스템으로서,
    복수의 노드를 포함하는 하드웨어 컴퓨터 클러스터를 포함하고,
    상기 하드웨어 컴퓨터 클러스터는 동작을 수행하도록 배열되고, 상기 동작은:
    상기 복수의 노드 중 제1 노드에 의해, 제1 데이터 위치에서의 데이터를 나타내는 제1 복수의 마커를 생성하도록 상기 제1 데이터 위치에서 제1 리듀스 동작을 실행하는 것;
    상기 복수의 노드 중 제2 노드에 의해, 제2 데이터 위치에서의 데이터를 나타내는 제2 복수의 마커를 생성하도록 상기 제2 데이터 위치에서 제2 리듀스 동작을 실행하는 것;
    상기 제1 복수의 마커 또는 상기 제2 복수의 마커의 하나 이상의 마커의 생성에 응답하여, 상기 하나 이상의 마커를 상기 하드웨어 컴퓨터 클러스터와 연관된 큐(queue)에 제출하는 것;
    상기 제1 복수의 마커가 생성된 상기 제1 노드에 의한 상기 제1 리듀스 동작을 완료한 것에 응답하여, 상기 큐에서 상기 하나 이상의 마커의 제1 마커에 의해 식별된 제1 데이터를 복사하는 제1 복사 동작을 수행하도록 상기 제1 노드에 지시하는 것 - 상기 제1 노드에 의한 상기 제1 복사 동작은 상기 제2 노드에 의해 수행된 상기 제2 리듀스 동작과 동시에 수행됨 -; 및
    상기 제1 노드가 상기 제1 복사 동작을 완료했다는 결정에 응답하여, 상기 큐로부터 상기 제1 마커를 제거하는 것
    을 포함하는, 시스템.
  2. 제1항에 있어서,
    상기 하드웨어 컴퓨터 클러스터는,
    복수의 데이터 위치의 식별자를 수신하는 것; 및
    상기 복수의 노드 중 제3 노드에 의해, 상기 복수의 데이터 위치의 식별자에서 맵 동작을 실행하여 상기 제1 데이터 위치를 상기 제1 리듀스 동작의 실행을 위한 상기 제1 노드에 분산하고, 그리고 상기 제2 데이터 위치를 상기 제2 리듀스 동작의 실행을 위한 상기 제2 노드에 분산하는 것
    을 포함하는 동작을 더 수행하도록 배열되는 것인, 시스템.
  3. 제1항에 있어서,
    상기 제1 복사 동작을 수행하기 위해, 상기 제1 노드는 상기 제1 마커에 의해 식별된 상기 제1 데이터를 제1 서버와 연관된 각각의 데이터 위치로부터 제2 서버와 연관된 다른 데이터 위치로 복사하는 것인 시스템.
  4. 제1항에 있어서,
    상기 하드웨어 컴퓨터 클러스터는,
    상기 제1 복사 동작을 수행하도록 상기 제1 노드에 지시한 후, 상기 하드웨어 컴퓨터 클러스터의 마스터 노드에 의해, 상기 제1 노드가 상기 제1 마커에 의해 식별된 상기 제1 데이터를 제1 서버와 연관된 각각의 데이터 위치로부터 제2 서버와 연관된 다른 데이터 위치로 복사하는 것을 완료했는지 결정하는 것을 포함하는 동작을 더 수행하도록 배열되고,
    상기 큐로부터 상기 제1 마커를 제거하는 것은 상기 마스터 노드에 의해 수행되는 것인, 시스템.
  5. 제1항에 있어서,
    상기 하드웨어 컴퓨터 클러스터는,
    상기 하드웨어 컴퓨터 클러스터의 상기 제2 노드가 상기 제2 데이터 위치에서 상기 제2 리듀스 동작을 완료했다고 결정한 것에 응답하여, 상기 큐에서 상기 하나 이상의 마커의 제2 마커에 의해 식별된 제2 데이터를 복사하는 제2 복사 동작을 수행하도록 상기 제2 노드에 지시하는 것
    을 포함하는 동작을 더 수행하도록 배열되는 것인, 시스템.
  6. 제1항에 있어서,
    상기 제1 복수의 마커 및 상기 제2 복수의 마커의 각각의 마커는 대응하는 데이터의 위치, 데이터의 시작 주소 및 데이터의 종료 주소를 식별하는 것인 시스템.
  7. 제6항에 있어서,
    상기 제1 복수의 마커 및 상기 제2 복수의 마커의 각각의 마커는 고정된 크기의 주소 범위(fixed size address range)를 식별하는 것인 시스템.
  8. 제1항에 있어서,
    각각의 마커는 대응하는 데이터를 포함하는 것인 시스템.
  9. 프로세싱 장치에 의해, 컴퓨터 클러스터의 복수의 노드 중 제1 노드가 제1 데이터 위치에서의 데이터를 나타내는 제1 복수의 마커를 생성하도록 상기 제1 데이터 위치에서 제1 리듀스 동작을 실행하게 하는 단계;
    상기 복수의 노드 중 제2 노드가 제2 데이터 위치에서의 데이터를 나타내는 제2 복수의 마커를 생성하도록 상기 제2 데이터 위치에서 제2 리듀스 동작을 실행하게 하는 단계;
    상기 제1 복수의 마커 또는 상기 제2 복수의 마커의 하나 이상의 마커의 생성에 응답하여, 상기 하나 이상의 마커를 상기 컴퓨터 클러스터와 연관된 큐에 제출하게 하는 단계;
    상기 제1 노드가 상기 제1 복수의 마커가 생성된 상기 제1 리듀스 동작을 완료했다는 결정에 응답하여, 상기 큐에서 상기 하나 이상의 마커의 제1 마커에 의해 식별된 제1 데이터를 복사하는 제1 복사 동작을 수행하도록 상기 제1 노드에 지시하는 단계 - 상기 제1 노드에 의한 상기 제1 복사 동작은 상기 제2 노드에 의해 수행된 상기 제2 리듀스 동작과 동시에 수행됨 -; 및
    상기 제1 노드가 상기 제1 복사 동작을 완료했다는 결정에 응답하여, 상기 큐로부터 상기 제1 마커를 제거하는 단계
    를 포함하는 방법.
  10. 제9항에 있어서,
    복수의 데이터 위치의 식별자가 제3 노드로 전송되게 하는 단계; 및
    상기 복수의 노드 중 상기 제3 노드가 상기 제1 데이터 위치를 상기 제1 리듀스 동작의 실행을 위한 상기 제1 노드에 분산하고, 그리고 상기 제2 데이터 위치를 상기 제2 리듀스 동작의 실행을 위한 상기 제2 노드에 분산하도록 상기 복수의 데이터 위치의 식별자에서 맵 동작을 실행하게 하는 단계
    를 더 포함하는 방법.
  11. 제9항에 있어서,
    상기 제1 복사 동작을 수행하기 위해, 상기 제1 노드는 상기 제1 마커에 의해 식별된 상기 제1 데이터를 제1 서버와 연관된 각각의 데이터 위치로부터 제2 서버와 연관된 다른 데이터 위치로 복사하는 것인 방법.
  12. 제9항에 있어서,
    상기 제1 복사 동작을 수행하도록 상기 제1 노드에 지시한 후, 상기 컴퓨터 클러스터의 마스터 노드에 의해, 상기 제1 노드가 상기 제1 마커에 의해 식별된 상기 제1 데이터를 제1 서버와 연관된 각각의 데이터 위치로부터 제2 서버와 연관된 다른 데이터 위치로 복사하는 것을 완료했는지 결정하는 단계를 더 포함하고,
    상기 큐로부터 상기 제1 마커를 제거하는 것은 상기 마스터 노드에 의해 수행되는 것인, 방법.
  13. 제9항에 있어서,
    상기 컴퓨터 클러스터의 상기 제2 노드가 상기 제2 데이터 위치에서 상기 제2 리듀스 동작을 완료했다고 결정한 것에 응답하여, 상기 큐에서 상기 하나 이상의 마커의 제2 마커에 의해 식별된 제2 데이터를 복사하는 제2 복사 동작을 수행하도록 상기 제2 노드에 지시하는 단계를 더 포함하는 방법.
  14. 제9항에 있어서,
    상기 제1 복수의 마커 및 상기 제2 복수의 마커의 각각의 마커는 대응하는 데이터의 위치, 데이터의 시작 주소 및 데이터의 종료 주소를 식별하는 것인 방법.
  15. 시스템으로서,
    컴퓨터 클러스터의 복수의 노드 중 마스터 노드를 포함하고,
    상기 마스터 노드는,
    상기 복수의 노드 중 제1 작업자 노드가 제1 데이터 위치에서의 데이터를 나타내는 제1 복수의 마커를 생성하도록 상기 제1 데이터 위치에서 제1 리듀스 동작을 실행하게 하고;
    상기 복수의 노드 중 제2 작업자 노드가 제2 데이터 위치에서의 데이터를 나타내는 제2 복수의 마커를 생성하도록 상기 제2 데이터 위치에서 제2 리듀스 동작을 실행하게 하고;
    상기 제1 복수의 마커 또는 상기 제2 복수의 마커의 하나 이상의 마커의 생성에 응답하여, 상기 하나 이상의 마커를 상기 컴퓨터 클러스터와 연관된 큐에 제출하게 하고;
    상기 제1 작업자 노드가 상기 제1 복수의 마커가 생성된 상기 제1 리듀스 동작을 완료했다는 결정에 응답하여, 상기 큐에서 상기 하나 이상의 마커의 제1 마커에 의해 식별된 제1 데이터를 복사하는 제1 복사 동작을 수행하도록 상기 제1 작업자 노드에 지시하며, 상기 제1 작업자 노드에 의한 상기 제1 복사 동작은 상기 제2 작업자 노드에 의해 수행된 상기 제2 리듀스 동작과 동시에 수행되고;
    상기 제1 작업자 노드가 상기 제1 복사 동작을 완료했다는 결정에 응답하여, 상기 큐로부터 상기 제1 마커를 제거하도록 구성되는, 시스템.
  16. 제15항에 있어서,
    상기 마스터 노드는,
    복수의 데이터 위치의 식별자가 제3 작업자 노드로 전송되게 하고; 그리고
    상기 복수의 노드 중 상기 제3 작업자 노드가 상기 제1 데이터 위치를 상기 제1 리듀스 동작의 실행을 위한 상기 제1 작업자 노드에 분산하고, 그리고 상기 제2 데이터 위치를 상기 제2 리듀스 동작의 실행을 위한 상기 제2 작업자 노드에 분산하도록 상기 복수의 데이터 위치의 식별자에서 맵 동작을 실행하게 하도록 더 구성되는, 시스템.
  17. 제15항에 있어서,
    상기 제1 복사 동작을 수행하기 위해, 상기 제1 작업자 노드는 상기 제1 마커에 의해 식별된 상기 제1 데이터를 제1 서버와 연관된 각각의 데이터 위치로부터 제2 서버와 연관된 다른 데이터 위치로 복사하는 것인 시스템.
  18. 제15항에 있어서,
    상기 마스터 노드는,
    상기 제1 복사 동작을 수행하도록 상기 제1 작업자 노드에 지시한 후, 상기 제1 작업자 노드가 상기 제1 마커에 의해 식별된 상기 제1 데이터를 제1 서버와 연관된 각각의 데이터 위치로부터 제2 서버와 연관된 다른 데이터 위치로 복사하는 것을 완료했는지 결정하도록 더 구성되는, 시스템.
  19. 제15항에 있어서,
    상기 마스터 노드는,
    상기 컴퓨터 클러스터의 상기 제2 작업자 노드가 상기 제2 데이터 위치에서 상기 제2 리듀스 동작을 완료했다고 결정한 것에 응답하여, 상기 큐에서 상기 하나 이상의 마커의 제2 마커에 의해 식별된 제2 데이터를 복사하는 제2 복사 동작을 수행하도록 상기 제2 작업자 노드에 지시하도록 더 구성되는, 시스템.
  20. 제15항에 있어서,
    상기 제1 복수의 마커 및 상기 제2 복수의 마커의 각각의 마커는 대응하는 데이터의 위치, 데이터의 시작 주소 및 데이터의 종료 주소를 식별하고,
    상기 제1 복수의 마커 및 상기 제2 복수의 마커의 각각의 마커는 고정된 크기의 주소 범위를 식별하는 것인 시스템.
  21. 명령어를 포함하는 비일시적 컴퓨터 판독 가능 저장 매체로서, 상기 명령어는 프로세싱 장치에 의한 실행에 응답하여 상기 프로세싱 장치로 하여금:
    컴퓨터 클러스터의 복수의 노드 중 제1 노드에 의해, 제1 데이터 위치에서의 데이터를 나타내는 제1 복수의 마커를 생성하도록 상기 제1 데이터 위치에서 제1 리듀스 동작을 실행하는 것;
    상기 복수의 노드 중 제2 노드에 의해, 제2 데이터 위치에서의 데이터를 나타내는 제2 복수의 마커를 생성하도록 상기 제2 데이터 위치에서 제2 리듀스 동작을 실행하는 것;
    상기 제1 복수의 마커 또는 상기 제2 복수의 마커의 하나 이상의 마커의 생성에 응답하여, 상기 하나 이상의 마커를 상기 컴퓨터 클러스터와 연관된 큐에 제출하는 것;
    상기 제1 복수의 마커가 생성된 상기 제1 노드에 의한 상기 제1 리듀스 동작을 완료한 것에 응답하여, 상기 큐에서 상기 하나 이상의 마커의 제1 마커에 의해 식별된 제1 데이터를 복사하는 제1 복사 동작을 수행하도록 상기 제1 노드에 지시하는 것 - 상기 제1 노드에 의한 상기 제1 복사 동작은 상기 제2 노드에 의해 수행된 상기 제2 리듀스 동작과 동시에 수행됨 -; 및
    상기 제1 노드가 상기 제1 복사 동작을 완료했다는 결정에 응답하여, 상기 컴퓨터 클러스터의 마스터 노드에 의해, 상기 큐로부터 상기 제1 마커를 제거하는 것
    을 포함하는 동작을 수행하도록 하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체.
  22. 제21항에 있어서,
    상기 동작은,
    복수의 데이터 위치의 식별자를 수신하는 것; 그리고
    상기 복수의 노드 중 제3 노드에 의해, 상기 복수의 데이터 위치의 식별자에서 맵 동작을 실행하여 상기 제1 데이터 위치를 상기 제1 리듀스 동작의 실행을 위한 상기 제1 노드에 분산하고, 그리고 상기 제2 데이터 위치를 상기 제2 리듀스 동작의 실행을 위한 상기 제2 노드에 분산하는 것
    을 더 포함하는 비일시적 컴퓨터 판독 가능 저장 매체.
  23. 제21항에 있어서,
    상기 제1 복사 동작을 수행하기 위해, 상기 제1 노드는 상기 제1 마커에 의해 식별된 상기 제1 데이터를 제1 서버와 연관된 각각의 데이터 위치로부터 제2 서버와 연관된 다른 데이터 위치로 복사하는, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020217006144A 2018-07-26 2019-07-25 맵-리듀스를 사용하여 데이터 스큐를 해결하는 방법 KR102647075B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/046,765 US11003686B2 (en) 2018-07-26 2018-07-26 Addressing data skew using map-reduce
US16/046,765 2018-07-26
PCT/US2019/043528 WO2020023803A1 (en) 2018-07-26 2019-07-25 Addressing data skew using map-reduce

Publications (2)

Publication Number Publication Date
KR20210032526A KR20210032526A (ko) 2021-03-24
KR102647075B1 true KR102647075B1 (ko) 2024-03-13

Family

ID=69177889

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217006144A KR102647075B1 (ko) 2018-07-26 2019-07-25 맵-리듀스를 사용하여 데이터 스큐를 해결하는 방법

Country Status (5)

Country Link
US (2) US11003686B2 (ko)
EP (1) EP3827361A4 (ko)
KR (1) KR102647075B1 (ko)
CN (1) CN112470148A (ko)
WO (1) WO2020023803A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11027196B2 (en) * 2019-09-04 2021-06-08 Take-Two Interactive Software, Inc. System and method for managing transactions in a multiplayer network gaming environment
CN111766950B (zh) * 2020-08-12 2022-05-24 腾讯科技(深圳)有限公司 虚拟角色交互方法、装置、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050193041A1 (en) * 2004-02-27 2005-09-01 Serge Bourbonnais Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates
US20160142868A1 (en) * 2014-09-03 2016-05-19 CloudLeaf, Inc. Systems, methods and devices for asset status determination
US20160196163A1 (en) 2015-01-05 2016-07-07 Miosoft Corporation Using databases for both transactions and analysis
US20170249567A1 (en) 2010-05-04 2017-08-31 Google Inc. Parallel processing of data for an untrusted application

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100211894A1 (en) * 2009-02-18 2010-08-19 Google Inc. Identifying Object Using Generative Model
US9454444B1 (en) 2009-03-19 2016-09-27 Veritas Technologies Llc Using location tracking of cluster nodes to avoid single points of failure
US8572575B2 (en) * 2009-09-14 2013-10-29 Myspace Llc Debugging a map reduce application on a cluster
US8688642B2 (en) * 2010-02-26 2014-04-01 Symantec Corporation Systems and methods for managing application availability
US8381015B2 (en) * 2010-06-30 2013-02-19 International Business Machines Corporation Fault tolerance for map/reduce computing
US9471651B2 (en) * 2012-10-08 2016-10-18 Hewlett Packard Enterprise Development Lp Adjustment of map reduce execution
US9268716B2 (en) * 2012-10-19 2016-02-23 Yahoo! Inc. Writing data from hadoop to off grid storage
US20140236990A1 (en) * 2013-02-19 2014-08-21 International Business Machines Corporation Mapping surprisal data througth hadoop type distributed file systems
US20140236977A1 (en) * 2013-02-19 2014-08-21 International Business Machines Corporation Mapping epigenetic surprisal data througth hadoop type distributed file systems
US9660930B2 (en) * 2014-03-17 2017-05-23 Splunk Inc. Dynamic data server nodes
US9576000B2 (en) * 2014-04-25 2017-02-21 International Business Machines Corporation Adaptive fragment assignment for processing file data in a database
CN105205058B (zh) * 2014-06-10 2019-03-12 北京畅游天下网络技术有限公司 数据处理系统和方法
CN104331520B (zh) * 2014-11-28 2018-08-07 北京奇艺世纪科技有限公司 Hadoop集群性能优化方法及装置和节点状态识别方法及装置
CN105095413B (zh) * 2015-07-09 2018-11-23 北京京东尚科信息技术有限公司 一种解决数据倾斜的方法及装置
US20170228285A1 (en) 2016-02-10 2017-08-10 SwiftStack, Inc. Data durability in stored objects
CN106372221B (zh) * 2016-09-07 2019-08-20 华为技术有限公司 一种文件同步的方法、设备及系统
CN107832153B (zh) * 2017-11-14 2020-12-29 北京科技大学 一种Hadoop集群资源自适应分配方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050193041A1 (en) * 2004-02-27 2005-09-01 Serge Bourbonnais Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates
US20170249567A1 (en) 2010-05-04 2017-08-31 Google Inc. Parallel processing of data for an untrusted application
US20160142868A1 (en) * 2014-09-03 2016-05-19 CloudLeaf, Inc. Systems, methods and devices for asset status determination
US20160196163A1 (en) 2015-01-05 2016-07-07 Miosoft Corporation Using databases for both transactions and analysis

Also Published As

Publication number Publication date
EP3827361A4 (en) 2022-03-30
US20200034470A1 (en) 2020-01-30
US11531685B2 (en) 2022-12-20
US20210256035A1 (en) 2021-08-19
KR20210032526A (ko) 2021-03-24
CN112470148A (zh) 2021-03-09
US11003686B2 (en) 2021-05-11
WO2020023803A1 (en) 2020-01-30
EP3827361A1 (en) 2021-06-02

Similar Documents

Publication Publication Date Title
JP7179973B2 (ja) フレンドを作成するためのユーザ生成のコンテンツシステム
KR102484301B1 (ko) 데이터 플러드 검사 및 향상된 성능의 게이밍 프로세스
US11531685B2 (en) Addressing data skew using map-reduce
US11717760B2 (en) Chat application using a gaming engine
US11080916B1 (en) Character morphing system
US10853375B1 (en) Leveraging historical data to improve the relevancy of search results
KR102475236B1 (ko) 게이밍 플랫폼을 이용한 근접 사용자와의 그룹 게임플레이
US20220100753A1 (en) Computing cross products using map reduce
US20240149165A1 (en) Optimized player positioning system in virtual experiences

Legal Events

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