KR102076580B1 - 집약성 및 균형을 위한 동적 매핑을 위한 시스템 및 방법 - Google Patents

집약성 및 균형을 위한 동적 매핑을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102076580B1
KR102076580B1 KR1020167010542A KR20167010542A KR102076580B1 KR 102076580 B1 KR102076580 B1 KR 102076580B1 KR 1020167010542 A KR1020167010542 A KR 1020167010542A KR 20167010542 A KR20167010542 A KR 20167010542A KR 102076580 B1 KR102076580 B1 KR 102076580B1
Authority
KR
South Korea
Prior art keywords
partition
nodes
node
histogram
computer system
Prior art date
Application number
KR1020167010542A
Other languages
English (en)
Other versions
KR20160062073A (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 KR20160062073A publication Critical patent/KR20160062073A/ko
Application granted granted Critical
Publication of KR102076580B1 publication Critical patent/KR102076580B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/101Collaborative creation, e.g. joint development of products or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Theoretical Computer Science (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Tourism & Hospitality (AREA)
  • Marketing (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Primary Health Care (AREA)
  • General Health & Medical Sciences (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Analysis (AREA)
  • Machine Translation (AREA)
  • Complex Calculations (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

집약성과 균형을 위해 노드를 동적으로 매핑하기 위하여, 컴퓨터 구현 방법, 시스템 및 컴퓨터 판독가능한 매체가, 일실시예에서, 제1 파티션의 노드에 대한 히스토그램을 계산할 수 있다. 히스토그램은 제2 파티션의 노드에 대해 계산될 수 있다. 제2 파티션은 제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 세트에 대한 후보 파티션으로 선택될 수 있다. 제1 파티션은 제2 파티션의 노드에 대한 히스토그램에 기반하여 제2 파티션의 노드의 세트에 대한 후보 파티션으로 선택될 수 있다. 부하 균형에 기반하여 제1 파티션의 노드의 세트의 적어도 일부가 제2 파티션으로 매핑되고, 제2 파티션의 노드의 세트의 적어도 일부가 제1 파티션으로 매핑될 수 있다.

Description

집약성 및 균형을 위한 동적 매핑을 위한 시스템 및 방법{SYSTEMS AND METHODS FOR DYNAMIC MAPPING FOR LOCALITY AND BALANCE}
본 발명은 노드 그래프 분야에 관한 것이고, 특히 컴퓨터-구현 방법 및 시스템 및 저장 매체에 관한 것이다. 보다 구체적으로, 본 발명은 파티션에 노드를 매핑하기 위한 기술을 제공한다.
소셜 네트워킹 웹사이트는 회원이 다른 회원과 연결되고 통신할 수 있는 동적 환경을 제공한다. 이들 웹사이트는 공통적으로 회원이 기존재하는 소셜 네트워크 내에서 상호작용할 뿐만 아니라 새로운 소셜 네트워크를 생성할 수 있게 할 수 있다. 회원은 임의의 개인 또는 엔티티, 예컨대 단체 또는 사업체를 포함할 수 있다. 다른 속성 중에서, 소셜 네트워킹 웹사이트는 회원이 효과적이고 효율적으로 관련된 정보를 그들의 소셜 네트워크와 통신할 수 있게 한다.
소셜 네트워크의 회원은 정보, 뉴스 소식, 관계 활동, 음악, 비디오 및 임의의 다른 관심 있는 컨텐츠를 회원 전용 웹사이트의 영역에 강조하거나 공유할 수 있고 또는 그런 컨텐츠를 다르게 사용가능하게 만들 수 있다. 소셜 네트워크의 다른 회원은 회원 프로필을 브라우징하거나 전용 검색을 수행함으로써 공유된 컨텐츠에 접근할 수 있다. 컨텐츠에 접근하고 고려하며, 다른 회원은 하나 이상의 응답 행위, 예컨대 컨텐츠에 대한 피드백 또는 의견을 제공함으로써 반응할 수 있다. 이 방식으로 회원이 상호작용하는 기능은 그들 사이의 통신을 발전시키고 소셜 네트워킹 웹사이트의 목표를 실현할 수 있게 돕는다.
소셜 네트워크는 소셜 그래프로써 모델링된다. 노드 그래프, 예컨대 소셜 그래프는 극도로 많은 수의 노드와 노드를 연결하는 에지를 포함할 수 있다. 이 경우의 소셜 네트워킹 시스템에서, 사용자는 노드 그래프에 반영되는 방대한 양의 정보에 접근하고 공유할 수 있다. 예컨대, 노드의 수는 수억개, 또는 심지어 수십억개일 수 있다. 이러한 방대한 양의 데이터의 유지 및 제공에는 많은 도전이 존재한다.
집약성과 균형을 위해 노드를 동적으로 매핑하기 위하여, 컴퓨터 구현 방법, 시스템 및 컴퓨터 판독가능한 매체가, 일실시예에서, 제1 파티션의 노드에 대한 히스토그램을 계산할 수 있다. 히스토그램은 제2 파티션의 노드에 대해 계산될 수 있다. 제2 파티션은 제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 세트에 대한 후보 파티션으로 선택될 수 있다. 제1 파티션은 제2 파티션의 노드에 대한 히스토그램에 기반하여 제2 파티션의 노드의 세트에 대한 후보 파티션으로 선택될 수 있다. 부하 균형에 기반하여 제1 파티션의 노드의 세트의 적어도 일부가 제2 파티션으로 매핑되고, 제2 파티션의 노드의 세트의 적어도 일부가 제1 파티션으로 매핑될 수 있다.
일실시예에서, 히스토그램은 제3 파티션의 노드에 대해 계산될 수 있다. 제3 파티션은 제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 다른 세트에 대한 후보 파티션으로 선택될 수 있다. 제1 파티션은 제3 파티션의 노드에 대한 히스토그램에 기반하여 제3 파티션의 노드의 세트에 대한 후보 파티션으로 선택될 수 있다. 부하 균형에 기반하여 제1 파티션의 노드의 다른 세트의 적어도 일부는 제3 파티션으로 매핑되고 제3 파티션의 노드의 세트의 적어도 일부는 제1 파티션으로 매핑될 수 있다.
일실시예에서, 에지 집약성의 이득에 기반하여 제1 파티션의 노드의 세트가 정렬될 수 있다. 에지 집약성의 이득에 기반하여 제2 파티션의 노드의 세트가 정렬될 수 있다.
일실시예에서, 에지 집약성의 이득에 관한 확률에 기반하여 제2 파티션이 제1 파티션의 노드에 대한 후보 파티션으로 선택될 수 있다.
일실시예에서, 제1 파티션의 노드에 대한 히스토그램은 복수의 파티션 각각 내의 연결된 노드의 수를 표시할 수 있다.
일실시예에서, 제2 파티션으로 리매핑된 제1 파티션의 노드의 수와 제1 파티션으로 리매핑된 제2 파티션의 노드의 수 사이의 차이는 임계치 이내일 수 있다.
일실시예에서, 제2 파티션으로 리매핑된 제1 파티션의 노드의 가중치와 제1 파티션으로 리매핑된 제2 파티션의 노드의 가중치 사이의 차이는 임계치 이내일 수 있다.
일실시예에서, 리매핑 전에 제1 파티션의 제1 총 노드 가중치가 계산될 수 있다.
일실시예에서, 리매핑 후에 제1 파티션의 제2 총 노드 가중치가 계산될 수 있다.
일실시예에서, 컴퓨터 시스템은 비-분산형 시스템일 수 있다. 노드 그래프는 메모리로 로드될 수 있다. 노드 그래프는 제1 파티션의 노드 및 제2 파티션의 노드를 포함할 수 있다.
일실시예에서, 컴퓨터 시스템은 분산형 시스템일 수 있다. 분산형 시스템에 걸친 노드 그래프의 상이한 부분이 로드될 수 있다. 노드 그래프는 제1 파티션의 노드 및 제2 파티션의 노드를 포함할 수 있다.
일실시예에서, 제1 파티션의 각 노드와 연관된 연결된 노드의 현재 파티션 ID가 수신될 수 있다.
일실시예에서, 제1 파티션의 노드에 대한 히스토그램은 현재 파티션 ID에 기반하여 계산될 수 있다.
일실시예에서, 제1 파티션의 각 노드의 현재 파티션 ID가 제공될 수 있다.
일실시예에서, 후보 파티션은 집약성 이득 임계치에 기반하여 선택될 수 있다.
일실시예에서, 제2 파티션은 에지 집약성의 이득에 관한 확률에 기반하여 제1 파티션의 노드에 대한 후보 파티션으로 선택될 수 있다.
일실시예에서, 리매핑될 노드를 가리키는 복수의 파티션에 대한 모드 파티션 쌍의 기록이 생성될 수 있다.
일실시예에서, 노드 그래프는 소셜 네트워킹 시스템에 의하여 지원될 수 있다.
본 발명의 많은 다른 특징 및 실시예가 첨부되는 도면과 다음의 상세한 설명으로부터 명백할 것이다.
본 발명에 따른 실시예는 특히 방법, 시스템 및 매체에 대한 첨부된 청구항에 개시되고, 하나의 청구항 카테고리, 예컨대 방법에 언급된 임의의 특징은 다른 청구항 카테고리, 예컨대 시스템으로도 청구될 수 있다.
본 발명에 따른 일실시예에서 컴퓨터 구현 방법은:
컴퓨터 시스템으로, 제1 파티션의 노드에 대한 히스토그램을 계산하는 단계;
컴퓨터 시스템으로, 제2 파티션의 노드에 대한 히스토그램을 계산하는 단계;
컴퓨터 시스템으로, 제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 세트에 대한 후보 파티션으로 제2 파티션을 선택하는 단계;
컴퓨터 시스템으로, 제2 파티션의 노드에 대한 히스토그램에 기반하여 제2 파티션의 노드의 세트에 대한 후보 파티션으로 제1 파티션을 선택하는 단계; 및
컴퓨터 시스템으로, 부하 균형에 기반하여 제1 파티션의 노드의 세트의 적어도 일부를 제2 파티션으로, 및 제2 파티션의 노드의 세트의 적어도 일부를 제1 파티션으로 리매핑하는 단계를 포함한다.
바람직하게 컴퓨터 구현 방법은:
컴퓨터 시스템으로, 제3 파티션의 노드에 대한 히스토그램을 계산하는 단계;
컴퓨터 시스템으로, 제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 다른 세트에 대한 후보 파티션으로 제3 파티션을 선택하는 단계;
컴퓨터 시스템으로, 제3 파티션의 노드에 대한 히스토그램에 기반하여 제3 파티션의 노드의 세트에 대한 후보 파티션으로 제1 파티션을 선택하는 단계; 및
컴퓨터 시스템으로, 부하 균형에 기반하여 제1 파티션의 노드의 다른 세트의 적어도 일부를 제3 파티션으로, 및 제3 파티션의 노드의 세트의 적어도 일부를 제1 파티션으로 리매핑하는 단계를 더 포함한다.
컴퓨터 구현 방법은 또한:
컴퓨터 시스템으로, 에지 집약성의 이득에 기반하여 제1 파티션의 노드의 세트를 정렬하는 단계; 및
컴퓨터 시스템으로, 에지 집약성의 이득에 기반하여 제2 파티션의 노드의 세트를 정렬하는 단계를 더 포함할 수 있다.
바람직하게는 에지 집약성의 이득에 관한 확률에 기반하여 제1 파티션의 노드에 대한 후보 파티션으로 제2 파티션이 선택된다.
추가적인 실시예에서 제1 파티션의 노드에 대한 히스토그램은 복수의 파티션 각각 내의 연결된 노드의 수를 표시하고, 및/또는
제2 파티션으로 리매핑된 제1 파티션의 노드의 수와 제1 파티션으로 리매핑된 제2 파티션의 노드의 수 사이의 차이는 임계치 이내이고, 및/또는
제2 파티션으로 리매핑된 제1 파티션의 노드의 가중치와 제1 파티션으로 리매핑된 제2 파티션의 노드의 가중치 사이의 차이는 임계치 이내이다.
추가적인 실시예에서, 방법은:
컴퓨터 시스템으로, 리매핑 전에 제1 파티션의 제1 총 노드 가중치를 계산하는 단계 및/또는
컴퓨터 시스템으로, 리매핑 후에 제1 파티션의 제2 총 노드 가중치를 계산하는 단계를 더 포함한다.
추가적으로 컴퓨터 시스템은 비-분산형 시스템이고, 컴퓨터 구현 방법은:
컴퓨터 시스템으로, 메모리로 노드 그래프를 로드하는 단계를 더 포함할 수 있고, 노드 그래프는 제1 파티션의 노드 및 제2 파티션의 노드를 포함한다.
컴퓨터 시스템은 분산형 시스템이고, 컴퓨터 구현 방법은 또한:
컴퓨터 시스템으로, 분산형 시스템에 걸친 노드 그래프의 상이한 부분을 로드하는 단계를 더 포함할 수 있고, 노드 그래프는 제1 파티션의 노드 및 제2 파티션의 노드를 포함하고, 및/또는
제1 파티션의 각 노드와 연관된 연결된 노드의 현재 파티션 ID를 수신하는 단계를 더 포함하고, 및/또는
제1 파티션의 노드에 대한 히스토그램은 현재 파티션 ID에 기반하여 계산되고, 및/또는
제1 파티션의 각 노드의 현재 파티션 ID를 제공하는 단계를 더 포함하고 및/또는
후보 파티션은 집약성 이득 임계치에 기반하여 선택되고, 및/또는
제2 파티션은 에지 집약성의 이득에 관한 확률에 기반하여 제1 파티션의 노드에 대한 후보 파티션으로 선택되고, 및/또는
컴퓨터 시스템으로, 리매핑될 노드를 가리키는 복수의 파티션에 대한 모드 파티션 쌍의 기록을 생성하는 단계를 더 포함한다.
컴퓨터 구현 방법은 또한 소셜 네트워킹 시스템에 의하여 지원되는 노드 그래프를 포함할 수 있다.
본 발명에 따른 시스템은 바람직하게는:
적어도 하나의 프로세서, 및
적어도 하나의 프로세서가 상기 언급된 실시예의 일부 또는 전부에 따른 방법을 수행하도록 지시하도록 구성된 명령어를 저장하는 메모리를 포함한다.
컴퓨터 저장 매체는 실행 시, 컴퓨터 시스템이 상기 언급된 실시예의 일부 또는 전부에 따른 컴퓨터 구현 방법을 수행하도록 하는 컴퓨터 실행가능한 명령어를 저장한다.
본 발명에 따른 시스템은 바람직하게는:
적어도 하나의 프로세서, 및
적어도 하나의 프로세서가:
제1 파티션의 노드에 대한 히스토그램의 계산;
제2 파티션의 노드에 대한 히스토그램의 계산;
제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 세트에 대한 후보 파티션으로 제2 파티션을 선택하기;
제2 파티션의 노드에 대한 히스토그램에 기반하여 제2 파티션의 노드의 세트에 대한 후보 파티션으로 제1 파티션을 선택하기; 및
부하 균형에 기반하여 제1 파티션의 노드의 세트의 적어도 일부를 제2 파티션으로, 및 제2 파티션의 노드의 세트의 적어도 일부를 제1 파티션으로 리매핑을 수행하도록 지시하도록 구성된 명령어를 저장하는 메모리를 포함한다.
컴퓨터 저장 매체는 실행 시, 컴퓨터 시스템이 바람직하게는:
제1 파티션의 노드에 대한 히스토그램을 계산하는 단계;
제2 파티션의 노드에 대한 히스토그램을 계산하는 단계;
제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 세트에 대한 후보 파티션으로 제2 파티션을 선택하는 단계;
제2 파티션의 노드에 대한 히스토그램에 기반하여 제2 파티션의 노드의 세트에 대한 후보 파티션으로 제1 파티션을 선택하는 단계; 및
부하 균형에 기반하여 제1 파티션의 노드의 세트의 적어도 일부를 제2 파티션으로, 및 제2 파티션의 노드의 세트의 적어도 일부를 제1 파티션으로 리매핑하는 단계를 포함하는 컴퓨터 구현 방법을 수행하도록 하는 컴퓨터 실행가능한 명령어를 저장한다.
본 발명의 내용 중에 포함되어 있다.
도 1은 일실시예에 따른 최적화 모듈(100)의 예시를 도시한다.
도 2는 일실시예에 따른 집약성 제어 모듈(102)의 예시를 도시한다.
도 3은 일실시예에 따른 분산형 시스템의 예시를 도시한다.
도 4은 일실시예에 따른 균형화된 리매핑 모듈(103)의 예시를 도시한다.
도 5는 일실시예에 따른 노드를 리매핑하기 위한 최적화 프로세스의 예시를 도시한다.
도 6은 일실시예에 따른 소셜 네트워킹 시스템 내의 노드의 매핑을 최적화하기 위한 시스템의 네트워크 다이어그램의 예시를 도시한다.
도 7은 일실시예에 따른 본 명세서에 서술된 하나 이상의 실시예를 구현하는데 사용될 수 있는 컴퓨터 시스템의 예시를 도시한다.
도면들은 오로지 예시적인 목적을 위해 본 발명의 다양한 실시예들을 도시하며, 도면들은 같은 구성요소를 식별하기 위해 같은 참조 번호를 사용한다. 통상의 기술자는 다음의 설명으로부터 도면들에 도시된 구조들 및 방법들의 대안적 실시예가 본 명세서에 기술된 발명의 원리로부터 벗어남이 없이 이용될 수 있음을 쉽게 인식할 것이다.
노드 그래프는 분산형 시스템의 복수의 컴퓨터에 걸쳐 파티션될 수 있다. 어떻게 노드가 파티션에 매핑되는지는 성능에 영향을 미칠 수 있다. 예를 들어, 소셜 네트워크에서, 동일한 파티션에 매핑된 친구(예컨대, "친구 관계"에 기반한 에지로 연결된 노드)를 가지는 것은 친구에 관한 질의가 발생할 때 다른 파티션으로의 산개된 질의의 양을 최소화함으로써 성능을 증가시킬 수 있다. 파티션은 예컨대 서버 또는 데이터 센터를 포함할 수 있다. 나아가, 친구가 중복되는 정보를 질의하는 경향이 있기 때문에 네트워크 성능이 증가될 수 있는데, 중복된 정보가 이미 질의에 대해 검색되고 더 빠른 메모리, 예컨대 캐시에 저장된 확률이 증가한 경우이다. 그러므로, 에지 집약성의 증가는 이득이 될 수 있다.
나아가, 파티션의 부하 역시 네트워크 성능에 영향을 줄 수 있다. "부하"의 타입은 애플리케이션에 따라 다양할 수 있다. 예를 들어, 일부 애플리케이션에서, 부하는 파티션 내의 노드(예컨대, 사용자)의 수에 기반할 수 있다. 다른 실시예에서, 부하는 파티션 내에 저장된 데이터의 양에 기반할 수 있다. 또 다른 실시예에서, 부하는 활동 레벨에 기반할 수 있다. 활동 레벨은 파티션 내의 사용자의 활동에 관한 것일 수 있다. 활동은 사용자가 하나 이상의 활동을 수행하는 횟수; 사용자가 업로드, 다운로드 또는 양자 모두를 한 데이터의 양; 기타 등등에 관련될 수 있다. 부하의 타입은 상이한 애플리케이션에서 다양할 수 있지만, 일반적으로 파티션간 균형 잡힌 부하를 유지하는 것이 성능에 이득이 된다.
일부 예에서, 노드는 일반적으로 무작위 방식으로 파티션에 매핑될 수 있는데, 낮은 에지 집약성의 결과를 낳기 쉽다. 예를 들어, 소셜 네트워크의 사용자는 네트워크에 가입한 시간과 그 때 사용가능한 파티션에 기반하여 파티션에 매핑될 수 있다. 이런 경우, 소셜 네트워크의 사용자는 그들의 친구가 어디 매핑되었는지의 고려 없이 파티션에 매핑될 수 있다.
일부 예에서, 노드 그래프의 초기 매핑은 파티션간 균형 잡힌 부하를 제공하며 높은 에지 집약성을 제공하기 위한 시도로 생성될 수 있다. 초기 매핑의 예시는 예컨대 파티션간 균형 잡힌 부하를 제공하며 높은 에지 집약성을 제공하기를 시도하기 위하여 지리적 위치에 기반할 수 있다. 하지만, 노드 그래프, 예컨대 소셜 그래프는 동적이고 종종 변화하는데, 에지 집약성 또는 균형에 해로운 영향을 줄 수 있다. 예를 들어, 소셜 네트워크의 사용자는 친구를 얻거나 잃을 수 있고, 다른 지리적 위치로 이동할 수 있고, 새 단체, 회사, 학교, 기타 등등에 가입할 수 있다. 나아가, 새 사용자는 네트워크에 가입하고 기존의 사용자와 새로운 친구 관계를 형성할 수 있는데, 에지 집약성 또는 균형에 해로운 영향을 줄 수 있다. 또한, 사용자는 그 행동 또는 습관을 바꿀 수 있는데 그들이 매핑된 파티션에 제공하는 부하의 양을 변화시킬 수 있다. 일부 초기 매핑 정책이 생성 시에는 이득이 될 수 있지만, 정적이고 노드 그래프의 변경을 고려하지 않을 수 있다.
본 명세서에 서술되는 시스템 및 방법의 실시예는 노드 그래프의 노드의 파티션으로의 매핑을 최적화하여 에지 집약성(또는 연결 집약성)을 향상시키며 파티션 내의 부하 균형을 유지하는 것에 관한 것이다. 최적화 프로세스는 연속적으로 파티션 내의 에지 집약성을 향상시키며 부하 균형도 유지하는 일련의 반복을 포함할 수 있다. 예를 들어, 특정 실시예에서, 최적화 프로세스는 어떤 노드가 만약 다른 파티션에 리매핑되면 에지 집약성에 이득을 줄지 결정할 수 있다. 후보 파티션은 후보 파티션에 리매핑됨으로써 이득을 낳는 각 노드에 대해 선택될 수 있다. 최적화 프로세스는 그 후 선택적으로 노드를 부하 균형을 유지하는 방식으로 후보 파티션으로 이동시킬 수 있다. 최적화 프로세스는 그 후 최적화 프로세스가 안정화될 때까지 일련의 후속 반복을 수행할 수 있다.
나아가, 최적화 프로세스는 반복적으로 미래에 시간에 걸쳐 일어날 수 있는 노드 그래프의 임의의 변화를 고려한 매핑을 최적화하기 위하여 수행될 수 있다. 일실시예에서, 최적화 프로세스는 기결정된 시간 간격 후, 예컨대 1주, 1개월, 6개월 또는 임의의 다른 시간 간격 후 재실행될 수 있다.
노드 그래프가 시간에 걸쳐 변화할 때, 변화가 에지 집약성 또는 부하에 해로울 수 있기 때문에 안정화된 매핑과의 불일치(또는 불안정화 효과)가 생성될 수 있다. 최적화 프로세스는 주로 그 불일치에 초점을 맞출 수 있는데, 매핑의 남은 안정화된 부분은 이미 안정화되었기 때문이다. 그렇게 함으로써, 최적화 프로세스는 스크래치로부터 매번 완전히 새로운 매핑을 생성하지 않고 연속적으로 현재 매핑을 최적화할 수 있다. 예를 들어, 새로운 사용자는 친구 관계 연결을 가지지 않는 경향이 있고 초기에 에지 집약성에 대한 최소의 고려로 또는 고려하지 않고 무작위 파티션에 매핑될 수 있다. 미래의 최적화 프로세스는 안정화된 매핑의 변화에 대한 특정한 이유에 초점을 맞출 수 있다.
도 1은 일실시예에 따른 최적화 모듈(100)의 예시를 도시한다. 최적화 모듈(100)은 파티션에 걸친 부하 균형을 유지하는 한편 에지 집약성(또는 연결 집약성)을 향상시키는 방식으로 노드 그래프의 노드의 파티션으로의 매핑을 최적화한다. 일실시예에서, 본 명세서에 서술되는 노드 및 에지는 소셜 네트워킹 시스템의 사용자 및 그 친구 관계에 관련될 수 있다. 근본적인 개념 및 이론은 다른 타입의 노드 및 에지에도 적용가능할 수 있다. 일실시예에서, 노드는, 예컨대 사람, 비-인격체, 단체, 컨텐츠(예컨대, 이미지, 비디오, 오디오, 기타 등등), 이벤트, 웹 페이지, 통신, 객체, 컨셉 또는 임의의 다른 것, 개념 또는 구조, 구체적이거나 추상적인, 노드로서 나타내어질 수 있는 것과 연관될 수 있다. 노드는 네트워킹 시스템, 예컨대 소셜 네트워킹 시스템의 사용자를 포함할 수 있다. 사용자는 반드시 사람으로 제한되지 않을 수 있고, 다른 비-인격 엔티티를 포함할 수 있다. 에지 집약성은 두 파티션 간의 에지가 아니라, 파티션 내의 에지의 수 또는 퍼센티지에 관한 것일 수 있다. 주어진 파티션에 대하여, 에지 집약성은 주어진 파티션 내에 포함되는 에지의 수 대 다른 파티션과 연결된 에지의 수에 관한 것일 수 있다. 주어진 노드에 대하여, 에지 집약성은 주어진 노드에 및 주어진 노드의 파티션 내에서 연결된 에지의 수 대 주어진 노드를 다른 파티션에 연결하는 에지의 수에 관한 것일 수 있다. 최적화 모듈(100)은 초기화 모듈(101), 집약성 제어 모듈(102) 및 균형화된 리매핑 모듈(103)을 포함할 수 있다. 이 도면 및 본 명세서의 모든 도면에 도시된 구성요소는 단지 예시적인 것이고, 다른 구현은 추가적이거나, 더 적거나 또는 상이한 구성요소를 포함할 수 있다. 일부 구성요소는 관련 상세사항을 모호하지 않게 하기 위하여 도시되지 않을 수 있다.
초기화 모듈(101)은 노드 그래프의 노드의 파티션으로의 현재 매핑(예컨대, 초기 매핑)을 획득할 수 있다. 초기화 모듈(101)은 노드 그래프를 메모리로 로드할 수 있다. 초기화 모듈(101)은 또한 노드 가중치 또는 에지 가중치를 메모리로 로드할 수 있다. 노드 가중치는 사용자가 파티션에 두는 부하의 양에 관련될 수 있다. 예를 들어, 소셜 네트워킹 시스템의 사용자에 대한 노드 가중치는 사용자가 얼마나 많이 로그인하고, 사진을 업로드하는 등에 관련된 것일 수 있다. 에지 가중치는 상이한 파티션의 두 노드를 가지는 "비용", 예컨대 두 사용자 간의 에지에 적용되는 부하의 양에 관련될 수 있다. 예를 들어, 서로 많은 양의 데이터를 공유하는 두 사용자는 높은 에지 가중치를 가지는 것으로 결정될 수 있다. 에지의 계수는 두 노드의 근접성 또는 관계성에 관련될 수 있다. 예를 들어, 두 사용자는 가족일 수 있고 따라서 일반적인 지인보다 높은 계수를 가질 수 있다. 일부 예에서, 계수는 에지 가중치로 사용될 수 있다.
초기화 모듈(101)은 또한 노드의 파티션으로의 초기 매핑을 로드할 수 있다. 예를 들어, 초기 매핑은 노드의 지리적 연관성에 기반한 노드의 파티션으로의 초기 매핑을 포함할 수 있다. 초기 매핑은 그 후 본 명세서에 서술되는 바와 같이 최적화되어 부하 균형을 유지하는 한편 집약성을 향상시킬 수 있다.
일실시예에서, 비-분산형 시스템은 매핑을 최적화한다. 예를 들어, 노드 그래프는 노드의 파티션으로의 최적화된 매핑을 계산할 수 있는 단일 또는 로컬 장치(또는 다른 비-분산형 시스템)의 메모리(예컨대, RAM)에 로드될 수 있다.
다른 실시예에서, 복수의 컴퓨터를 포함하는 분산형 시스템은 매핑을 최적화할 수 있다. 예를 들어, 노드 그래프는 복수의 컴퓨터(또는 장치)에 걸쳐 로드될 수 있어 각 컴퓨터는 노드 그래프의 고유의 서브셋을 로드한다. 노드 그래프는 예컨대, Hadoop Distributed File System(HDFS)와 같은 분산형 파일 시스템으로부터의 표 내에 포함될 수 있다. 노드 가중치, 에지 가중치 및 초기 매핑은 분산형 파일 시스템으로부터의 추가적인 표 내에 저장될 수 있다.
집약성 제어 모듈(102)은 본 명세서에 보다 자세히 서술되는 바와 같이 파티션 내의 에지 집약성의 향상에 관한 계산 및 분석을 수행한다. 균형화된 리매핑 모듈(103)은 본 명세서에 보다 자세히 서술되는 바와 같이 파티션에 걸친 부하 균형을 유지하는 방식으로 상이한 파티션으로 노드를 리매핑하는 것에 관한 계산 및 분석을 수행한다.
도 2는 일실시예에 따른 집약성 제어 모듈(102)의 예시를 도시한다. 집약성 제어 모듈(102)은 히스토그램 생성 모듈(201), 이득 계산 모듈(202), 후보 파티션 선택 모듈(203) 및 행렬 생성 모듈(204)을 포함할 수 있다.
히스토그램 생성 모듈(201)은 하나 이상의 파티션의 노드에 대한 히스토그램을 계산한다. 주어진 노드에 에지로 연결된(또는 주어진 노드와 연결을 가지는) 노드의 수는 본 명세서에서 "연결된 노드"로 부를 수 있다. 에지 가중치를 고려하지 않는 일실시예에서, 주어진 노드의 히스토그램은 각 파티션 내에서 다수의 파티션에 걸친 연결된 노드의 수를 식별할 수 있다. 에지 가중치를 고려하는 일실시예에서, 주어진 노드의 히스토그램은 각 파티션에 다수의 파티션에 걸쳐 연결된 에지의 총 가중치를 식별할 수 있다.
비-분산형 시스템이 매핑을 최적화하는 일실시예에서, 각 노드에 대한 히스토그램은 비-분산형 시스템(예컨대, 단일 컴퓨터)에 의해 계산될 수 있다. 예를 들어, 단일 컴퓨터는 각 노드의 현재 파티션뿐만 아니라 각 노드에 대한 연결된 노드를 식별하는 데이터를 포함할 수 있다. 이 방법으로, 컴퓨터는 데이터에 접근하여 각 노드에 대한 히스토그램을 생성할 수 있다.
분산형 시스템이 매핑을 최적화하는 일실시예에서, 복수의 컴퓨터가 컴퓨터간에 정보(또는 메시지)를 통신함으로써 노드 그래프의 노드에 대한 히스토그램을 생성하기 위해 사용될 수 있다. 예를 들어, 각 노드는 그 현재 파티션을 (예컨대, 현재 파티션 ID를 통하여) 연결된 노드 각각과 통신할 수 있다. 그 후 각 노드는 각 연결된 노드가 매핑된 파티션을 식별하고, 그 자신의 히스토그램을 생성할 수 있다. 노드 가중치가 고려되는 일실시예에서, 노드 가중치 또한 노드 간에 통신될 수 있다. 현재 파티션과 노드 가중치는 표에 전역적으로 통합되어 본 명세서에 보다 자세히 서술되는 바와 같이 각 파티션 내의 노드 또는 에지의 총 가중치를 식별할 수 있다.
이득 계산 모듈(202)은 노드를 현재 파티션에서 다른 파티션으로 리매핑하는데 연관된 "이득" 값을 계산할 수 있다. 주어진 노드의 "이득"은 다른 파티션에 매핑된 연결된 노드의 수와 주어진 노드의 현재 파티션에 매핑된 연결된 노드의 수의 차이에 의하여 계산될 수 있다. 예를 들어, 만약 주어진 노드가 파티션 #1에 할당되고, 5개의 연결된 노드가 파티션 #1에 매핑되고 7개의 연결된 노드가 파티션 #2에 매핑되면, 주어진 노드는 만약 파티션 #2에 리매핑된다면 "2"의 이득(예컨대, 7-5)을 가질 수 있다. 상이한 파티션으로의 리매핑과 연관된 이득이 양수라면, 주어진 노드와 동일한 파티션 내의 연결된 노드의 수의 증가를 반영하고 따라서 주어진 노드의 에지 집약성이 증가된다. 다른 파티션으로의 리매핑과 연관된 이득이 음수라면, 주어진 노드와 동일한 파티션 내의 연결된 노드의 수의 감소를 반영하고 따라서 주어진 노드의 에지 집약성이 감소한다. 일부 예에서, 이득이 0일 수 있고, 주어진 노드와 동일한 파티션 내의 연결된 노드의 수가 변화가 없음을 반영한다.
에지 가중치를 고려하는 일실시예에서, 주어진 노드의 다른 파티션으로의 리매핑과 연관된 이득은 다른 파티션에 매핑된 연결된 노드의 총 에지 가중치와 주어진 노드의 현재 파티션에 매핑된 연결된 노드의 총 가중치의 차이에 의하여 계산될 수 있다.
후보 파티션 선택 모듈(203)은 노드가 리매핑될 후보 파티션을 선택할 수 있다. 주어진 노드에 대한 후보 파티션의 선택은 주어진 노드의 에지 집약성을 향상시키는데 기반하여 선택될 수 있다. 일부 예에서, 동일한 에지 집약성을 유지하는(예컨대, 0의 이득을 낳는) 후보 파티션 또한 주어진 노드에 대해 선택될 수 있다.
일실시예에서, 주어진 노드에 대한 후보 파티션은 주어진 노드에 대한 에지 집약성의 이득에 관한 확률에 기반할 수 있다. 예를 들어, 주어진 노드에 대한 후보 파티션은 에지 집약성에 보다 큰 증가를 낳는 파티션에 편향을 가지는 확률 알고리즘에 기반하여 선택될 수 있다. 이 방법으로, 주어진 노드에 대해 보다 큰 이득을 낳는 파티션은 반드시 확실하지는 않지만 보다 높은 주어진 노드에 대해 후보 파티션으로 선택될 확률을 가질 것이다. 예를 들어, 노드 C가 파티션 #3에 매핑되고 파티션 #3에 5개의 연결된 노드, 파티션 #6에 10개의 연결된 노드, 파티션 #12에 8개의 연결된 노드를 가지고, 다른 파티션에는 연결된 노드를 가지지 않을 수 있다. 일실시예에서, 확률 알고리즘은 파티션 내의 연결된 노드의 수뿐만 아니라 이득을 낳는 파티션 내의 연결된 노드의 총 수에 기반하여 정의될 수 있다. 예를 들어, 파티션 #3이 후보 파티션으로 선택될 확률은 5/23인데, "5"는 파티션 #3 내의 연결된 노드의 수이고 "23"은 연결된 노드의 총 수(파티션 #3에서 5개, 파티션 #6에서 10개, 파티션 #12에서 8개)이다. 파티션 #6이 후보 파티션으로 선택될 확률은 10/23이다. 파티션 #12가 후보 파티션으로 선택될 확률은 8/23이다. 일실시예에서, 0의 이득을 낳는 파티션 또한 후보 파티션으로 고려될 수 있다. 이와 같이, 예컨대, 확률 알고리즘은 파티션 내의 연결된 노드의 수뿐만 아니라 양의 이득 또는 이득 0을 낳는 파티션 내의 연결된 노드의 총 수에 기반하여 정의될 수 있다.
다른 실시예에서, 에지 집약성의 가장 큰 증가를 낳는 파티션이 후보 파티션으로 선택될 수 있다.
일실시예에서, 파티션이 후보 파티션으로 자격을 얻기 위하여 임계치를 만족하거나 초과하는 이득을 낳을 것을 요구하도록 임계 집약성 이득이 구현될 수 있다. 예를 들어, 만약 임계 집약성 이득이 3이면, 주어진 노드의 리매핑이 1 또는 2의 이득을 낳는 파티션은 후보 파티션으로 선택될 자격을 얻지 못한다. 하지만, 주어진 노드의 리매핑이 3 이상의 이득을 낳는 파티션은 후보 파티션으로 선택될 자격을 얻을 것이다. 임계 집약성 이득은, 예컨대 작은 이득을 가지는 파티션 간의 리매핑을 감소시키거나 제거하기 위하여 구현될 수 있다.
일실시예에서, 임계 집약성 이득은 최적화의 상이한 반복에서 달라질 수 있다. 예를 들어, 임계 집약성 이득은 높은 값으로 시작하여 반복에 따라 감소할 수 있다. 임계값에 대한 다른 변형 패턴 또한 구현될 수 있다. 일부 예에서, 높은 임계 집약성 이득이 긴 기간 동안 또는 짧은 기간 동안 노드의 리매핑을 멈추거나 느리게 할 수 있다. 분산형 시스템이 매핑을 최적화하는 일실시예에서, 임계 집약성 이득은 높게 시작하여 반복에 따라 감소할 수 있다. 이 방법으로, 보다 유용한 노드의 리매핑이 먼저 일어날 수 있고, 그 후 파티셔닝이 향상되고 안정화되어 보다 미세 조정 리매핑을 제공함에 따라 점진적으로 감소할 수 있다.
행렬 생성 모듈(204)은 모든 파티션 쌍 (X,Y)에 대한 노드에 기반하여 노드 목록 행렬을 생성한다. 비-분산형 시스템이 매핑을 최적화하는 일실시예에서, 파티션 쌍 (X,Y)에 대한 목록은 후보 파티션에 파티션 Y를 가지는 파티션 X 내의 노드를 나열한다. 예를 들어, 파티션 쌍 (1,2)에 대해, 파티션 #2의 후보 파티션을 가지는 파티션 #1 내의 모든 노드가 나열될 수 있다. 파티션 쌍 (1,3)에 대해, 파티션 #3의 후보 파티션을 가지는 파티션 #1 내의 모든 노드가 나열될 수 있다. 파티션 쌍 (3,1)에 대하여, 파티션 #1의 후보 파티션을 가지는 파티션 #3 내의 모든 노드가 나열될 수 있다. 모든 파티션 쌍 (X,Y)에 대한 목록은 그 후 이 데이터에 기반하셔 생성될 수 있다. 일실시예에서, 목록은 또한 후보 파티션으로 리매핑되는 노드와 연관된 이득을 가리킬 수 있다. 노드 가중치를 고려하는 일실시예에서, 파티션 쌍 (X,Y)에 대한 목록은 파티션 Y의 후보 파티션을 가지는 파티션 X 내의 노드의 총 가중치를 포함할 수 있다.
분산형 시스템이 매핑을 최적화하는 일실시예에서, 행렬 내의 목록은 파티션 Y의 후보 파티션을 가지는 파티션 X에 얼마나 많은 노드가 있는지 가리키는 값을 포함할 수 있다. 만약 노드 가중치를 고려한다면, 목록은 파티션 Y의 후보 파티션을 가지는 파티션 X 내의 노드에 대한 총 노드 가중치를 포함할 수 있다. 일실시예에서, 각 노드와 연관된 장치는 그 현재 포지션과 노드 가중치를 다른 파티션의 다른 노드와 연관된 장치와 통신할 수 있다. 이 방법으로, 노드 가중치는 전역적으로 통합되어 각 파티션에 대한 총 노드 가중치를 반영할 수 있다. 파티션의 총 노드 가중치는 표에 반영될 수 있다.
행렬 생성 모듈(204)에 의해 생성된 목록은 그 후 균형화된 리매핑 모듈(103)에 제공되어 다른 파티션으로 노드를 리매핑할 수 있다. 리매핑은 본 명세서에 보다 자세히 서술되는 바와 같이 파티션에 대한 부하 균형을 유지하며 에지 집약성을 증가시키는 방법으로 수행될 수 있다.
비-분산형 시스템의 구조는 분산형 시스템의 구조와 다를 수 있다. 예를 들어, 비-분산형이 매핑을 최적화하는 일실시예에서, 히스토그램 생성 모듈(201), 이득 계산 모듈(202), 후보 파티션 선택 모듈(203) 및 행렬 생성 모듈(204)은 단일 컴퓨터에 구현될 수 있고 최적화 프로세스와 연관된 데이터는 컴퓨터 시스템의 단일 또는 공유된 메모리(예컨대, RAM) 내에 유지될 수 있다. 분산형 시스템에서, 이득 계산 모듈(202), 후보 파티션 선택 모듈(203) 및 행렬 생성 모듈(204)은 각각 분산형 시스템의 하나 이상의 컴퓨터 시스템에 걸쳐 구현될 수 있다.
도 3은 일실시예에 따른 분산형 시스템의 예시를 도시한다. 분산형 시스템(300)은 컴퓨터 시스템(301 내지 303), 통합자 모듈(304 내지 312) 및 마스터 컴퓨터 시스템(313)을 포함할 수 있다. 노드 그래프는 컴퓨터 시스템(301 내지 303)에 걸쳐 로드되어 컴퓨터 시스템(301 내지 303) 각각은 노드 그래프의 고유의(또는 비-고유의) 서브셋을 포함할 수 있다. 세 컴퓨터 시스템은 예시로 사용되었고, 임의의 다른 수의 컴퓨터 시스템이 다른 실시예에서 구현될 수 있다.
컴퓨터 시스템(301 내지 303)은 또한 통합자 모듈(304 내지 312)의 서브셋을 포함할 수 있다. 통합자 모듈(304 내지 312) 각각은 노드 목록 및 파티션 쌍 (X,Y)의 행렬을 생성하는데 사용될 수 있는 하나 이상의 파티션 쌍 (X,Y)에 대한 노드 목록을 생성할 수 있다. 일실시예에서, 통합자 모듈(304 내지 312) 각각은 예컨대 히스토그램 생성 모듈(201), 이득 계산 모듈(202) 및 후보 파티션 선택 모듈(203)을 포함할 수 있다. 9개의 통합자 모듈(304 내지 312)가 예시로 사용됐지만, 임의의 다른 수의 통합자 모듈이 다른 실시예에서 구현될 수 있다. 컴퓨터 시스템당 통합자 모듈의 수 또한 다양할 수 있다.
컴퓨터 시스템(301 내지 303)은 각각의 통합자 모듈(304 내지 312)의 서브셋으로부터 노드 목록을 수신할 수 있다. 각각의 컴퓨터 시스템(301 내지 303)은 그 후 각각의 목록을 서로 및 마스터 컴퓨터 시스템(313)으로 통신할 수 있다. 예를 들어. 컴퓨터 시스템(301)은 통합자 모듈(304) 내지 통합자 모듈(306)으로부터 생성된 목록을 컴퓨터 시스템(302 및 303) 및 마스터 컴퓨터 시스템(313)으로 통신할 수 있다. 컴퓨터 시스템(301 내지 303) 및 통합자 모듈(312)은 그 후 모든 파티션 쌍 (X,Y)에 대한 전체 행렬을 생성할 수 있다. 이 방법으로, 행렬 생성 모듈(204)은 예컨대 통합자 모듈(304 내지 312), 컴퓨터 시스템(301 내지 303) 및 통합자 모듈(312)에 의해 구현될 수 있다. 통합자 모듈(304 내지 312)은 각각 특정한 파티션 쌍 (X,Y)에 대한 목록을 생성할 수 있고, 컴퓨터 시스템(301 내지 303) 및 마스터 컴퓨터 시스템(313)은 파티션 쌍 (X,Y)의 전체 행렬을 생성할 수 있다. 일실시예에서, 마스터 컴퓨터 시스템(313)은 노드 그래프의 서브셋을 포함할 필요가 없지만, 노드 목록과 파티션 쌍 (X,Y)의 행렬을 생성한다.
도 4는 일실시예에 따른 균형화된 리매핑 모듈(103)의 예시를 도시한다. 균형화된 리매핑 모듈(103)은 노드 선택 모듈(401), 노드 리매핑 모듈(402) 및 종료 모듈(403)을 포함할 수 있다.
노드 선택 모듈(401)은 임의의 주어진 두 파티션에 대하여, 제1 파티션으로부터의 어떤 노드가 제2 파티션으로 리매핑되어 파티션간 부하 균형을 유지하며 에지 집약성을 증가시킬 수 있는지를 결정할 수 있다. 노드 리매핑 모듈(402)은 노드 선택 모듈(401)이 결정한 대로 임의의 주어진 두 파티션 간에 노드를 리매핑한다.
노드 가중치가 고려되지 않는 일실시예에서, 제1 파티션으로부터 제2 파티션으로 리매핑되는 노드의 총 수는 제2 파티션으로부터 제1 파티션으로 리매핑되는 노드의 총 수와 동일할 수 있다. 다른 실시예에서, 제1 파티션으로부터 제2 파티션으로 리매핑되는 노드의 총 수는 제2 파티션으로부터 제1 파티션으로 리매핑되는 노드의 총 수와 동일하지 않을 수 있으나, 파티션간 부하 균형을 유지하는 허용가능한 범위 내일 수 있다. 노드 가중치가 고려되는 일시시예에서, 제1 파티션으로부터 제2 파티션으로 리매핑되는 노드의 총 노드 가중치는 제2 파티션으로부터 제1 파티션으로 리매핑되는 노드의 총 노드 가중치와 동일할 수 있다. 제1 파티션으로부터 제2 파티션으로 리매핑되는 노드의 총 노드 가중치는 제2 파티션으로부터 제1 파티션으로 리매핑되는 노드의 총 노드 가중치와 동일하지 않을 수 있으나, 고려된 부하 균형이기 위한 허용가능한 범위 내일 수 있다.
노드 선택 모듈(401)은 파티션 쌍 (X,Y)에 대해 생성된 리스트에 리매핑 결정을 기반으로 할 수 있다. 일실시예에서, 균형을 유지하기 위하여, 파티션 X에서 파티션 Y로 이동되는 것으로 선택된 노드의 수는 파티션 Y에서 파티션 X로 이동되는 것으로 선택된 노드의 수와 동일할 수 있다. 만약 두 파티션 쌍(예컨대, 파티션 쌍 (1,2) 및 파티션 쌍 (2,1))에 대한 목록이 상이한 수의 노드를 가지고 있다면, 일실시예에서, 각 파티션에서 리매핑되는 것으로 선택된 노드의 수는 더 적은 수의 노드를 가지는 파티션 쌍에 대한 목록 내의 노드의 수와 동일할 수 있다. 예를 들어, 만약 파티션 쌍 (1,2)의 목록이 파티션 #2의 후보 파티션을 가지는 파티션 #1에 5개의 노드를 포함하고, 파티션 쌍 (2,1)의 목록이 파티션 #1의 후보 파티션을 가지는 파티션 #2에 10개의 노드를 포함한다면, 5개의 노드가 각 파티션에서 리매핑되는 것으로 선택될 수 있다. 예를 들어, 파티션 쌍 (1,2)의 리스트의 5개의 노드 모두가 파티션 #2로 리매핑될 수 있고, 파티션 쌍 (2,1)의 리스트에서 가장 높은 이득을 가지는 5개의 노드가 파티션 #1로 리매핑될 수 있다.
비-분산형 시스템이 매핑을 최적화하는 일실시예에서, 노드 선택 모듈(401)은 파티션 쌍 (X,Y)의 목록을 이득으로 정렬하는 정렬 모듈을 포함할 수 있다. 예를 들어, 파티션 Y의 후보 파티션을 가지는 파티션 X의 노드는 각 노드가 만약 후보 파티션으로 리매핑되면 가질 이득에 기반하여 순위화될 것이다. 이 방법으로, 가장 높은 이득을 가지는 노드가 리매핑을 위해 먼저 선택된다.
노드 가중치를 고려하는 일실시예에서, 파티션 쌍의 두 임의의 목록 내의 노드의 총 가중치는 두 파티션 간에 노드가 리매핑될 수 있는지 여부를 결정하기 위하여 계산될 수 있다. 예를 들어, 만약 파티션 #3의 계산된 노드의 총 가중치가 파티션 #4의 노드의 총 가중치보다 크고, 파티션 쌍 (3,4)의 목록에 노드가 있다면, 파티션 쌍 (3,4)의 목록의 노드는 파티션 #4로 리매핑될 수 있다. 두 파티션 내의 노드의 총 가중치는 파티션 #3 및 #4의 노드 간에 업데이트된 리매핑에 기반하여 다시 계산될 수 있고, 분석이 반복된다. 만약 파티션 #3의 계산된 노드의 총 가중치가 파티션 #4의 노드의 총 가중치보다 작거나 같고, 파티션 쌍 (4,3)의 리스트에 노드가 있다면, 파티션 쌍 (4,3)의 리스트의 노드는 파티션 #3으로 리매핑될 수 있다. 두 파티션 내의 노드의 총 가중치는 업데이트된 리매핑에 기반하여 다시 계산될 수 있고, 분석이 반복된다. 노드 가중치가 동일하지 않을 때 파티션의 총 노드 가중치의 비교 및 관련 리매핑은 임의의 적절한 횟수만큼 반복될 수 있다. 파티션 쌍의 각 목록의 총 노드 가중치가 동일하거나 그 차이가 선택된 임계치 내라면, 반복은 종료되고 파티션은 부하 균형화된 것으로 간주될 수 있다. 일실시예에서, 파티션 내의 노드의 총 가중치는 파티션 #3 및 #4의 노드 간의 업데이트된 리매핑뿐만 아니라 다른 파티션들 및 파티션 #3과 파티션 #4 중 어느 하나 또는 모두 간의 노드의 임의의 다른 업데이트된 리매핑에 기반하여 다시 계산될 수 있다. 일반적으로, 본 명세서에 서술된 부하 균형화를 위한 노드 리매핑에 관련된 이론은 노드 그래프의 노드와 연관된 모든 파티션의 모든 쌍에 적용될 수 있다.
분산형 시스템이 매핑을 최적화하는 일실시예에서, 마스터 컴퓨터 시스템(313)은 노드 목록과 파티션 쌍 (X,Y)의 행렬을 얼마나 많은 노드가 다른 파티션으로 리매핑되어야 할지 결정하기 위하여 생성할 수 있다. 예를 들어, 마스터 컴퓨터 시스템(313)은 통합자 모듈(304 내지 312)로부터 모든 파티션 쌍 (X,Y)의 목록을 수신할 수 있다. 목록은 파티션 Y의 후보 파티션을 가지는 파티션 X의 노드의 총 수를 식별할 수 있다. 만약 노드 가중치를 고려한다면, 리스트는 파티션 Y의 후보 파티션을 가지는 파티션 X의 노드의 총 가중치를 식별할 수 있다.
그 후 마스터 컴퓨터 시스템(313)은 균형을 유지하기 위하여 얼마나 많은 노드가 다른 파티션으로 리매핑되어야 할지를 결정할 수 있다. 마스터 컴퓨터 시스템(313)은 그 후 리매핑될 노드의 수를 컴퓨터 시스템(301 내지 303)으로 통신할 수 있다. 일실시예에서, 균형을 유지하기 위하여, 만약 두 파티션 쌍의 리스트(예컨대, 파티션 쌍 (1,2) 및 파티션 쌍 (2,1))이 다른 수의 노드를 가진다면, 각 파티션에서 리매핑될 것으로 선택된 노드의 수는 더 작은 수의 노드를 가지는 파티션 쌍의 리스트 내의 노드의 수와 동일할 것이다.
일실시예에서, 다른 파티션으로 리매핑될 노드의 수는 마스터 컴퓨터 시스템(313)에서 컴퓨터 시스템(301 내지 303)으로 확률에 기반하여 통신된다. 예를 들어, 파티션 쌍 (X,Y)의 목록의 노드를 리매핑하는 확률 PXY는 다음 식에 기반하여 결정될 수 있다.
PXY = ZXY / mXY
ZXY가 파티션 X에서 파티션 Y로 리매핑되는 노드의 수를 나타내고,
mXY가 파티션 Y의 후보 파티션을 가지는 파티션 X의 노드의 총 수를 나타낸다.
파티션 Y의 후보 파티션을 가지는 파티션 X의 각 노드는 파티션 Y로 리매핑 되는 확률 PXY를 가진다.
종료 모듈(403)은 언제 최적화 프로세스가 멈추어야 할지 결정하는 계산 또는 분석을 수행할 수 있다. 일실시예에서, 종료 모듈(403)은 최적화가 안정화된 후 최적화 프로세스를 멈출 수 있다. 분산형 시스템이 매핑을 최적화하는 일실시예에서, 종료 모듈(403)은 마스터 컴퓨터 시스템(313)에 의해 구현될 수 있다. 종료 모듈(403)은 최적화 프로세스가 수렴하여 최적화 프로세스가 멈출 수 있는지 여부를 결정하는 수렴 검출 기술을 수행할 수 있다. 일실시예에서, 종료 모듈(403)은 기결정된 수의 반복 후 최적화 프로세스를 멈출 수 있다.
일실시예에서, 종료 모듈(403)은 "집약성 퍼센티지"에 기반하여 최적화 프로세스를 멈출 수 있는데, 로컬 에지의 총 수 또는 가중치(또는 파티션 내 파티션에 걸친 에지) 대 노드 그래프의 에지의 총 수를 식별할 수 있다. 에지의 총 수는 예컨대 최적화 프로세스의 시작에 계산될 수 있다. 종료 모듈(403)은 노드 그래프 및 노드 그래프의 최적화에 관한 전역 통계를 통합자 모듈(304 내지 312)로부터 수신하여 집약성 퍼센티지를 결정할 수 있다. 파티션의 각 노드는 그 에지가 로컬(노드와 동일한 파티션 내)인지 여부에 기반하여 집약성 퍼센티지의 결정에 기여할 수 있다. 로컬인 총 에지 가중치를 결정하기 위하여 로컬 에지의 가중치는 통합자 모듈(301 내지 303)에 의해 통합될 수 있다.
집약성 퍼센티지는 다른 고려에 기반할 수 있다. 집약성 퍼센티지는 또한 에지의 총 수가 아닌, 에지의 총 가중치에 적용가능할 수 있다. 종료 모듈(403)은 파티션에 로컬인 총 가중치 대 노드 그래프 내의 노드의 총 가중치의 비율의 집약성 퍼센티지에 기반할 수 있다. 일실시예에서, 집약성 퍼센티지의 결정은 파티션 내의 로컬 에지의 총 수뿐만 아니라 파티션 내의 에지의 총 가중치 양자를 고려할 수 있다.
집약성 퍼센티지가 기결정된 수의 반복에 대해 안정되면, 최적화 프로세스는 수렴한 것으로 고려되고 멈출 수 있다. 일실시예에서, 이러한 안정성은 선택된 수의 반복에 걸쳐 선택된 임계 범위 내에 들어가는 집약성 퍼센티지 값의 변화에 반영될 수 있다.
도 5는 일실시예에 따른 노드를 리매핑하는 최적화 방법(500)의 예시를 도시한다. 상기 도 1 내지 4에 대한 서술은 도 5의 방법에도 적용될 수 있다. 간결성과 명확성을 위하여, 도 5에 적용가능한 모든 특징 및 기능은 여기 반복되지 않는다.
방법(500)의 블록(502)에서, 제1 파티션의 노드에 대한 히스토그램이 계산될 수 있다. 블록(504)에서, 제2 파티션의 노드에 대한 히스토그램이 계산될 수 있다. 일실시예에서, 블록(502 및 504)은 도 2의 히스토그램 생성 모듈(201)에 의해 수행될 수 있다. 분산형 시스템이 매핑을 최적화하는 일실시예에서, 각 노드는 연결된 노드와 연관된 장치로부터 통신된 정보에 기반하여 히스토그램을 생성한다.
블록(506)에서, 제2 파티션이 제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 세트에 대한 후보 파티션으로 선택될 수 있다. 블록(508)에서, 제1 파티션이 제2 파티션의 노드에 대한 히스토그램에 기반하여 제2 파티션의 노드의 세트에 대한 후보 파티션으로 선택될 수 있다. 일실시예에서, 블록(506 및 508)은 도 2의 후보 파티션 선택 모듈(203)에 의해 수행될 수 있다. 후보 파티션은 에지 집약성 향상에 기반하여 선택될 수 있다. 일실시예에서, 부호 파티션은 에지 집약성의 이득에 관련된 확률에 기반하여 선택될 수 있다. 예를 들어, 후보 파티션은 더 많이 에지 집약성을 향상시키는 결과를 낳는 파티션으로 편향을 가지는 확률 알고리즘에 기반하여 선택될 수 있다. 일실시예에서, 임계 집약성 이득이 구현되어 파티션이 후보 파티션으로 자격을 얻기 위하여 임계치를 만족하거나 초과하는 이득을 낳을 것을 요구할 수 있다. 파티션의 노드에 대한 후보 파티션의 선택은 노드 그래프의 노드와 연관된 하나, 다수 또는 모든 파티션을 수반할 수 있다.
블록(510)에서, 파티션의 부하 균형에 기반하여 제1 파티션의 노드의 세트의 적어도 부분은 제2 파티션으로 리매핑될 수 있고 제2 파티션의 노드의 세트의 적어도 부분은 제1 파티션으로 리매핑될 수 있다. 나아가, 부하 균형을 위한 노드의 리매핑은 노드 그래프의 노드와 연관된 모든 파티션의 일부 또는 모든 쌍에 적용될 수 있다. 일실시예에서, 블록(510)은 도 4의 집약성 제어 모듈(102)에 의해 수행될 수 있다. 노드 가중치를 고려하지 않는 일실시예에서, 한 파티션에서 리매핑되는 노드의 총 수는 다른 파티션에서 리매핑되는 노드의 총 수와 동일할 수 있다. 노드 가중치를 고려하는 일실시예에서, 한 파티션에서 리매핑되는 노드의 총 가중치는 다른 파티션에서 리매핑되는 노드의 총 가중치와 동일할 수 있다. 비-분산형 시스템이 매핑을 최적화하는 일실시예에서, 노드는 이득에 기반하여 리매핑되어, 가장 높은 이득과 연관된 노드가 리매핑을 위해 먼저 선택될 수 있다. 일실시예에서, 노드의 리매핑은 노드의 가중치에 기반할 수 있다. 분산형 시스템이 매핑을 최적화하는 일실시예에서, 마스터 컴퓨터 시스템은 균형을 유지하기 위하여 각 파티션으로 리매핑되어야 할 노드의 수를 결정할 수 있고, 그 후 파티션이 존재하는 컴퓨터 시스템으로 리매핑을 수행하기 위하여 수를 통신할 수 있다.
소셜 네트워킹 시스템 - 구현의 예시
도 10은 본 발명의 실시예에 따른, 소셜 네트워크 내의 비디오 링크를 대체하기 위한 예시적인 시스템(600)의 네트워크 다이어그램이다. 시스템(600)은 하나 이상의 사용자 장치(610), 하나 이상의 외부 시스템(620), 소셜 네트워킹 시스템(630), 및 네트워크(650)를 포함한다. 일실시예로, 전술한 실시예들과 연계하여 논의된 소셜 네트워킹 시스템은 소셜 네트워킹 시스템(630)으로 구현될 수 있다. 예시적인 목적을 위해, 도 6에 의해 도시된 시스템(600)의 실시예는 단일 외부 시스템(620) 및 단일 사용자 장치(610)를 포함한다. 하지만, 다른 실시예로, 시스템(600)은 더 많은 사용자 장치(610) 및/또는 더 많은 외부 시스템(620)을 포함할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(630)은 소셜 네트워크 제공자에 의해 운영되는 한편, 외부 시스템(620)은, 상이한 엔티티들에 의해 운영될 수 있는 점에서 소셜 네트워킹 시스템(630)으로부터 분리되어 있다. 하지만, 다양한 실시예로, 소셜 네트워킹 시스템(630) 및 외부 시스템(620)은 소셜 네트워킹 시스템(630)의 사용자들 (또는 구성원들)에게 소셜 네트워킹 서비스를 제공하기 위해 함께 동작한다. 이러한 측면에서, 소셜 네트워킹 시스템(630)은, 외부 시스템(620)과 같은 다른 시스템들이 인터넷을 통해 사용자에게 소셜 네트워킹 서비스 및 기능을 제공하는데 사용할 수 있는 플랫폼 또는 백본을 제공한다.
사용자 장치(610)는 사용자로부터 입력을 수신하고 네트워크(650)를 통해 데이터를 송수신할 수 있는 하나 이상의 컴퓨팅 장치를 포함한다. 일실시예로, 사용자 장치(610)는 예컨대, Microsoft Windows 호환가능한 운영 시스템(OS), Apple OS X, 및/또는 리눅스 배포판을 실행하는 종래의 컴퓨터 시스템이다. 다른 실시예로, 사용자 장치(610)는 가령 스마트폰, 태블릿, PDA(personal digital assistant), 모바일 전화 등과 같은 컴퓨터 기능을 갖는 장치일 수 있다. 사용자 장치(610)는 네트워크(650)를 통해 통신하도록 구성된다. 사용자 장치(610)는 예컨대, 사용자 장치(610)의 사용자가 소셜 네트워킹 시스템(630)과 상호작용할 수 있게 하는 브라우저 애플리케이션과 같은 애플리케이션을 실행할 수 있다. 또 다른 실시예로, 사용자 장치(610)는 iOS 및 ANDROID와 같은 사용자 장치(610)의 네이티브 운영 시스템에 의해 제공되는 API(application programming interface)를 통해 소셜 네트워킹 시스템(630)과 상호작용한다. 사용자 장치(610)는, 유선 및/또는 무선 통신 시스템을 사용하는 로컬 영역 및/또는 광역 네트워크의 임의의 조합을 포함할 수 있는 네트워크(650)를 통해 외부 시스템(620) 및 소셜 네트워킹 시스템(630)과 통신하도록 구성된다.
일실시예로, 네트워크(650)는 표준 통신 기술 및 프로토콜을 사용한다. 따라서, 네트워크(650)는 Ethernet, 802.11, WiMAX(worldwide interoperability for microwave access), 3G, 4G, CDMA, GSM, LTE, DSL(digital subscriber line) 등과 같은 기술을 사용하는 링크를 포함할 수 있다. 유사하게, 네트워크(650)에서 사용되는 네트워킹 프로토콜은 MPLS(multiprotocol label switching), TCP/IP(transmission control protocol/Internet protocol), UDP(User Datagram Protocol), HTTP(hypertext transport protocol), SMTP(simple mail transfer protocol), FTP(file transfer protocol) 등을 포함할 수 있다. 네트워크(650) 상에서 교환되는 데이터는 HTML(hypertext markup language) 및 XML(extensible markup language)을 포함하는 기술 및/또는 포맷을 사용하여 표현될 수 있다. 추가로, 모든 또는 일부 링크는 SSL(secure sockets layer), TLS(transport layer security), 및 IPsec(Internet Protocol security)와 같은 종래의 암호화 기술을 사용하여 암호화될 수 있다.
일실시예로, 사용자 장치(610)는 브라우저 애플리케이션(612)을 사용하여, 외부 시스템(620) 및 소셜 네트워킹 시스템(630)으로부터 수신된 마크업 언어 문서(614)를 프로세싱함으로써 외부 시스템(620) 및/또는 소셜 네트워킹 시스템(630)으로부터의 컨텐츠를 디스플레이할 수 있다. 마크업 언어 문서(614)는 컨텐츠 및 컨텐츠의 포맷 또는 프레젠테이션을 기술하는 하나 이상의 명령어들을 식별한다. 마크업 언어 문서(614)에 포함된 명령어들을 실행함으로써, 브라우저 애플리케이션(612)은 마크업 언어 문서(614)에 의해 기술된 포맷 또는 프레젠테이션을 사용하여 식별된 컨텐츠를 디스플레이한다. 예컨대, 마크업 언어 문서(614)는, 외부 시스템(620) 및 소셜 네트워킹 시스템(630)으로부터 검색된 텍스트 및/또는 이미지 데이터를 포함하는 다수의 프레임들을 갖는 웹 페이지를 생성하고 디스플레이하기 위한 명령어들을 포함한다. 다양한 실시예로, 마크업 언어 문서(614)는 XML(extensible markup language) 데이터, XHTML(extensible hypertext markup language) 데이터, 또는 다른 마크업 언어 데이터를 포함하는 데이터 파일을 포함한다. 추가로, 마크업 언어 문서(614)는 JSON(JavaScript Object Notation) 데이터, 패딩(padding)을 갖는 JSON(JSONP), 및 외부 시스템(620)과 사용자 장치(610) 사이의 데이터 상호교환을 용이하게 하는 자바스크립트 데이터를 포함할 수 있다. 사용자 장치(610)상의 브라우저 애플리케이션(612)은 마크업 언어 문서(614)를 디코딩하기 위해 자바스크립트 컴파일러를 사용할 수 있다.
마크업 언어 문서(614)는 또한, FLASH™ 또는 Unity™ 애플리케이션들, SilverLight™ 애플리케이션 프레임워크(framework) 등과 같은 애플리케이션 또는 애플리케이션 프레임워크를 포함하거나 링크할 수 있다.
일실시예로, 사용자 장치(610)는 또한, 사용자 장치(610)의 사용자가 소셜 네트워킹 시스템(630)으로 로그되는지 여부를 표시하는 데이터를 포함하는 하나 이상의 쿠키(616)를 포함하고, 이는 소셜 네트워킹 시스템(630)으로부터 사용자 장치(610)로 통신되는 데이터의 수정을 가능하게 할 수 있다.
외부 시스템(620)은, 네트워크(650)를 사용하여 사용자 장치(610)로 통신되는 하나 이상의 웹 페이지들(622a, 1022b)을 포함하는 하나 이상의 웹 서버들을 포함한다. 외부 시스템(620)은 소셜 네트워킹 시스템(630)으로부터 분리된다. 예컨대, 외부 시스템(620)은 제1 도메인과 연관되는 한편, 소셜 네트워킹 시스템(630)은 분리된 소셜 네트워킹 도메인과 연관된다. 외부 시스템(620)에 포함된 웹 페이지들(622a, 1022b)은 컨텐츠를 식별하고 식별된 컨텐츠의 포맷 또는 프레젠테이션을 특정하는 명령어들을 포함하는 마크업 언어 문서(614)를 포함한다.
소셜 네트워킹 시스템(630)은 복수의 사용자들을 포함하는 소셜 네트워크를 위해 소셜 네트워크의 사용자들에게 소셜 네트워크의 다른 사용자들과 통신하고 상호작용하는 능력을 제공하는 하나 이상의 컴퓨팅 장치를 포함한다. 일부 예에서, 소셜 네트워크는 그래프 즉, 에지 및 노드를 포함하는 데이터 구조로 표현될 수 있다. 데이터 베이스, 객체, 클래스, 메타 구성요소, 파일, 또는 임의의 다른 데이터 구조를 포함하지만 이에 제한되지 않는 다른 데이터 구조가 또한, 소셜 네트워크를 표현하는데 사용될 수 있다. 소셜 네트워킹 시스템(630)은 오퍼레이터에 의해 관리되고, 유지되거나, 또는 제어될 수 있다. 소셜 네트워킹 시스템(630)의 오퍼레이터는 사람, 자동화된 애플리케이션, 또는 컨텐츠를 관리하고, 정책을 규제하고, 소셜 네트워킹 시스템(630) 내에서 사용 메트릭을 수집하기 위한 일련의 애플리케이션들일 수 있다. 임의의 타입의 오퍼레이터가 사용될 수 있다.
사용자들은 소셜 네트워킹 시스템(630)에 가입할 수 있고, 이후 그들이 연결되고자 하는 소셜 네트워킹 시스템(630)의 임의의 수의 다른 사용자들에 대한 연결을 추가할 수 있다. 본 명세서에서 사용되는 용어 "친구"는, 사용자가 소셜 네트워킹 시스템(630)을 통해 연결, 연관, 또는 관계를 형성한 소셜 네트워킹 시스템(630)의 임의의 다른 사용자를 의미한다. 예컨대, 일실시예로, 소셜 네트워킹 시스템(630)에서의 사용자들이 소셜 그래프에서 노드로 표현된다면, 용어 "친구"는 2개의 사용자 노드를 직접 연결하고 그 사이에 형성되는 에지를 의미할 수 있다.
연결은 사용자에 의해 명시적으로 추가되거나 사용자의 공통의 특징(예컨대,동일한 교육 기관의 졸업생들인 사용자들)에 기반하여 소셜 네트워킹 시스템(630)에 의해 자동으로 생성될 수 있다. 예컨대, 제1 사용자는 구체적으로 특정의 다른 사용자를 친구로 선택한다. 소셜 네트워킹 시스템(630)에서의 연결은 보통 양방향이지만, 그럴 필요는 없고, 따라서 용어들 "사용자" 및 "친구"는 준거 기준(frame of reference)에 따른다. 소셜 네트워킹 시스템(630)의 사용자들 사이의 연결은 보통 양방향("쌍방향"), 또는 "상호적"이지만, 연결들은 또한, 일방적, 또는 "일방향"일 수 있다. 예컨대, Bob과 Joe가 모두 소셜 네트워킹 시스템(630)의 사용자들이고 서로에게 연결되어있다면, Boe과 Joe는 서로의 연결들이다. 반면에, Bob이 소셜 네트워킹 시스템(630)으로 Joe에 의해 통신되는 데이터를 열람하기 위해 Joe에게 연결하기를 희망한지만, Joe가 상호 연결을 형성하기를 희망하지 않는다면, 일방향 연결이 확립될 수 있다. 사용자들 사이의 연결은 직접적인 연결일 수 있지만, 소셜 네트워킹 시스템(630)의 일부 실시예들은 하나 이상의 연결 레벨 또는 이격도를 통한 간접적인 연결을 허용한다.
사용자들 사이의 연결을 확립 및 관리하고 사용자들 사이의 상호작용을 허용하는 것에 추가로, 소셜 네트워킹 시스템(630)은 사용자들에게 소셜 네트워킹 시스템(630)에 의해 지원되는 다양한 타입의 아이템들에 대해 행위를 수행할 능력을 제공한다. 이러한 아이템들을, 소셜 네트워킹 시스템(630)의 사용자들이 속할 수 있는 그룹들 또는 네트워크들(즉, 사람들, 엔티티들, 및 컨셉들의 소셜 네트워크), 사용자가 관심있을 수 있는 이벤트 또는 캘린더 엔트리들, 사용자가 소셜 네트워킹 시스템(630)을 통해 사용할 수 있는 컴퓨터-기반의 애플리케이션들, 사용자가 소셜 네트워킹 시스템(630)에 의해 제공되거나 소셜 네트워킹 시스템(630)을 통한 서비스를 통해 아이템들을 사거나 팔 수 있도록 하는 거래들, 사용자가 소셜 네트워킹 시스템(630) 내에서 혹은 밖에서 수행할 수 있는 광고와의 상호작용들을 포함할 수 있다. 이들은 사용자가 소셜 네트워킹 시스템(630)에 대해 행동할 수 있는 아이템들의 몇몇 예시에 불과하며, 많은 다른 예들이 가능하다. 사용자는 소셜 네트워킹 시스템(630)에서 또는 소셜 네트워킹 시스템(630)과 분리되거나 네트워크(650)를 통해 소셜 네트워킹 시스템(630)으로 연결된 외부 시스템(620)에서, 표현될 수 있는 어떤 것과도 상호작용할 수 있다.
소셜 네트워킹 시스템(630)은 또한, 다양한 엔티티들을 링크할 수 있다. 예컨대, 소셜 네트워킹 시스템(630)은 사용자가 API, 웹 서비스, 또는 다른 통신 채널을 통해 외부 시스템(620) 또는 다른 엔티티들과 상호작용하는 것뿐만 아니라 사용자들 서로와 상호작용할 수 있게 한다. 소셜 네트워킹 시스템(630)은 복수의 에지에 의해 상호연결된 복수의 노드를 포함하는 "소셜 그래프"를 생성하고 관리한다. 소셜 그래프에서의 각각의 노드는 다른 노드에 대해 행동할 수 있거나 및/또는 다른 노드가 행동할 수 있는 엔티티를 표현할 수 있다. 소셜 그래프는 다양한 타입의 노드들을 포함할 수 있다. 노드의 타입의 예들은 사용자들, 비-인간 엔티티들, 컨텐츠 아이템, 웹 페이지, 그룹, 활동, 메시지, 컨셉, 및 소셜 네트워킹 시스템(630)에서 객체에 의해 표현될 수 있는 임의의 다른 것들을 포함한다. 소셜 그래프에서의 2개의 노드 사이의 에지는 2개의 노드 사이의 특정 유형의 연결 또는 연관을 표현할 수 있고, 에지는 노드 연결로부터 또는 노드들 중 하나가 다른 노드에 대해 수행하는 행위로부터 발생할 수 있다. 일부 경우에서, 노드 사이의 에지에는 가중치가 부과될 수 있다. 에지의 가중치는 노드 사이의 연결 또는 연관의 강도와 같은 에지와 연관된 속성을 표현할 수 있다. 상이한 타입의 에지에는 상이한 가중치가 제공될 수 있다. 예컨대, 한 명의 사용자가 다른 사용자를 "좋아요"할 때 생성된 에지에는 하나의 가중치가 부여될 수 있는 한편, 사용자가 다른 사용자를 친구로 삼을 때 생성된 에지에는 상이한 가중치가 부여될 수 있다.
예로서, 제1 사용자가 제2 사용자를 친구로 식별할 때, 소셜 그래프에서의 에지는 제1 사용자를 표현하는 노드와 제2 사용자를 표현하는 제2 노드를 연결하도록 생성된다. 다양한 노드가 서로 연관되고 상호작용함에 따라, 소셜 네트워킹 시스템(630)은 관계 및 상호작용을 반영하도록 다양한 노드를 연결하는 에지들을 수정한다.
소셜 네트워킹 시스템(630)은 또한, 소셜 네트워킹 시스템(630)과의 사용자 상호작용을 향상시키는 사용자-생성된 컨텐츠를 포함한다. 사용자-생성된 컨텐츠는, 사용자가 소셜 네트워킹 시스템(630)에 추가, 업로드, 전송 또는 "게시"할 수 있는 모든 것을 포함할 수 있다. 예컨대, 사용자는 사용자 장치(610)로부터 소셜 네트워킹 시스템(630)에 게시물을 통신한다. 게시물은 상태 업데이트 또는 다른 텍스트 데이터, 위치 정보, 사진과 같은 이미지, 비디오, 링크, 음악, 또는 다른 유사한 데이터 및/또는 미디어와 같은 데이터를 포함할 수 있다. 컨텐츠는 또한, 제3자에 의해 소셜 네트워킹 시스템(630)에 추가될 수 있다. 컨텐츠 "아이템"들은 소셜 네트워킹 시스템(630)에서 객체로 표현될 수 있다. 이러한 방식으로, 소셜 네트워킹 시스템(630)의 사용자들은, 다양한 통신 채널을 통해 미디어의 다양한 타입의 텍스트 및 컨텐츠 아이템을 게시함으로써 서로와 통신하도록 장려된다. 이러한 통신은 사용자들 서로간의 상호작용을 증가시키고 사용자가 소셜 네트워킹 시스템(630)과 상호작용하는 빈도를 증가시킨다.
소셜 네트워킹 시스템(630)은 웹 서버(632), API 요청 서버(634), 사용자 프로필 스토어(636), 연결 스토어(638), 행위 로거(640), 활동 로그(642), 인증 서버(644), 및 최적화 모듈(646)을 포함한다. 본 발명의 일실시예로, 소셜 네트워킹 시스템(630)은 다양한 애플리케이션을 위해 추가의, 더 적은 수의, 혹은 상이한 컴포넌트들을 포함할 수 있다. 네트워크 인터페이스, 보안 메커니즘, 로드 균형기(load balancer), 장애복구 서버(failover server), 관리 및 네트워크 운영 콘솔 등과 같은 다른 컴포넌트들은 시스템의 세부사항을 불명확하게 만들지 않기 위해 도시되지 않는다.
사용자 프로필 스토어(636)는, 사용자에 의해 선언되었거나 소셜 네트워킹 시스템(630)에 의해 추론된 경력, 학력, 취미 또는 선호도, 위치 등과 같은 인명적, 인구학적, 및 다른 타입의 기술적 정보를 포함하는 사용자 계정에 관한 정보를 관리한다. 이 정보는 사용자 프로필 스토어(636)에 저장되어서, 각각의 사용자가 고유하게 식별되도록 한다. 소셜 네트워킹 시스템(630)은 또한, 연결 스토어(638)에서의 상이한 사용자들 사이의 하나 이상의 연결을 기술하는 데이터를 저장한다. 연결 정보는 유사하거나 공통되는 경력, 그룹 멤버쉽, 취미, 또는 학력을 갖는 사용자들을 표시할 수 있다. 추가로, 소셜 네트워킹 시스템(630)은 상이한 사용자들 사이의 사용자-정의된 연결을 포함하여, 사용자들이 다른 사용자들과의 그들의 관계를 특정할 수 있도록 한다. 예컨대, 사용자-정의된 연결은 사용자가 사용자의 실제-삶에서의 관계들, 가령 친구들, 동료들, 파트너들 등에 필적하는 다른 사용자들과의 관계를 생성할 수 있도록 한다. 사용자들은 미리 정의된 타입의 연결로부터 선택하거나 필요에 따라 그들 스스로의 연결 타입을 정의할 수 있다. 소셜 네트워킹 시스템(630)에서의 다른 노드들과의 연결, 가령 비-인간 엔티티들, 버켓, 클러스터 센터, 이미지, 관심사, 페이지, 외부 시스템, 컨셉 등이 또한, 연결 스토어(638)에 저장된다.
소셜 네트워킹 시스템(630)은 사용자가 상호작용할 수 있는 객체들에 관한 데이터를 관리한다. 이 데이터를 관리하기 위해, 사용자 프로필 스토어(636) 및 연결 스토어(638)는 소셜 네트워킹 시스템(630)에 의해 관리되는 객체들의 대응하는 타입의 인스턴스들을 저장한다. 각각의 객체 타입은 객체의 타입에 적절한 정보는 저장하는데 적합한 정보 필드를 가진다. 예컨대, 사용자 프로필 스토어(636)는 사용자의 계정 및 사용자의 계정과 관련된 정보를 기술하기에 적절한 필드를 갖는 데이터 구조를 포함한다. 특정 타입의 새로운 객체가 생성될 때, 소셜 네트워킹 시스템(630)은 대응하는 타입의 새로운 데이터 구조를 초기화하고, 고유한 객체 식별자를 그것에 할당하며, 필요에 따라 객체에 데이터를 추가한다. 이는 예컨대, 사용자가 소셜 네트워킹 시스템(630)의 사용자가 되고, 소셜 네트워킹 시스템(630)이 사용자 프로필 스토어(636)에 사용자 프로필의 새로운 인스턴스를 생성하며, 고유한 식별자를 사용자 계정에 할당하고, 사용자에 의해 제공된 정보로 사용자 계정의 필드를 채우는 것을 시작할 때에 발생할 수 있다.
연결 스토어(638)는 사용자의 다른 사용자들에 대한 연결, 외부 시스템(620)으로의 연결 또는 다른 엔티티들로의 연결을 기술하는데 적절한 데이터 구조를 포함한다. 연결 스토어(638)는 또한, 연결 타입을 사용자의 연결과 연관시킬 수 있고, 연결 타입은 사용자에 관한 정보에 대한 액세스를 규제하기 위해 사용자의 개인정보 설정과 함께 사용될 수 있다. 본 발명의 일실시예로, 사용자 프로필 스토어(636) 및 연결 스토어(638)는 연합된 데이터베이스로 구현될 수 있다.
연결 스토어(638), 사용자 프로필 스토어(636), 및 활동 로그(642)에 저장된 데이터는 소셜 네트워킹 시스템(630)이 상이한 객체들 사이의 관계를 식별하기 위해 다양한 객체 및 노드를 연결하는 에지를 식별하도록 노드를 사용하는 소셜 그래프를 생성할 수 있도록 한다. 예컨대, 제1 사용자가 소셜 네트워킹 시스템(630)에서 제2 사용자와의 연결을 확립한다면, 사용자 프로필 스토어(636)로부터의 제1 사용자 및 제2 사용자의 사용자 계정들은 소셜 그래프에서 노드로서 역할을 할 수 있다. 연결 스토어(638)에 의해 저장된 제1 사용자 및 제2 사용자 사이의 연결은 제1 사용자 및 제2 사용자와 연관된 노드들 사이의 에지이다. 이 예로 계속하면, 제2 사용자는 이후, 소셜 네트워킹 시스템(630) 내에서 제1 사용자에게 메시지를 전송할 수 있다. 저장될 수 있는 이 메시지를 전송하는 행위는, 제1 사용자 및 제2 사용자를 표현하는 소셜 그래프에서의 2개의 노드 사이의 또 다른 에지이다. 추가로, 메시지 자체는 식별될 수 있고, 제1 사용자 및 제2 사용자를 표현하는 노드들에 연결된 또 다른 노드로서 소셜 그래프에 포함될 수 있다.
다른 예로, 제1 사용자는 소셜 네트워킹 시스템(630)에 의해 관리되는 이미지에서 (또는 대안으로, 소셜 네트워킹 시스템(630) 외부의 다른 시스템에 의해 관리되는 이미지)에서 제2 사용자를 태그할 수 있다. 이미지는 그 자체가 소셜 네트워킹 시스템(630)에서 노드로 표현될 수 있다. 이러한 태깅 행위는 제1 사용자 및 제2 사용자 사이의 에지를 생성할 뿐만 아니라 소셜 그래프에서 또한, 노드가 되는 각각의 사용자들 및 이미지 사이의 에지를 생성할 수 있다. 또 다른 예로, 사용자가 이벤트에 참석하는 것을 확인한다면, 사용자 및 이벤트는 사용자 프로필 스토어(636)로부터 획득되는 노드들이며, 여기서 이벤트의 참석은 활동 로그(642)로부터 검색될 수 있는 노드 사이의 에지이다. 소셜 그래프를 생성하고 관리함으로써, 소셜 네트워킹 시스템(630)은 상이한 타입의 객체 및 상호작용과 그 객체들 사이의 연결을 기술하는 데이터를 포함하고, 소셜적으로 관련된(socially relevant) 정보의 풍부한 소스를 제공한다.
웹 서버(632)는 네트워크(650)를 통해 소셜 네트워킹 시스템(630)을 하나 이상의 사용자 장치(610) 및/또는 하나 이상의 외부 시스템(620)으로 링크한다. 웹 서버(632)는, 가령 Java, JavaScript, Flash, XML 등과 같은 다른 웹-연관 컨텐츠뿐만 아니라 웹 페이지들을 서빙한다. 웹 서버(632)는 메일 서버 또는 소셜 네트워킹 시스템(630)과 하나 이상의 사용자 장치(610) 사이의 메시지를 수신하고 라우팅하기 위한 다른 메시징 기능을 포함할 수 있다. 메시지는 인스턴트 메시지, 큐잉된 메시지(예컨대, 이메일), 텍스트 및 SMS 메시지, 또는 임의의 다른 적절한 메시지 포맷일 수 있다.
API 요청 서버(634)는, 하나 이상의 API 함수를 호출함으로써 하나 이상의 외부 시스템(620) 및 사용자 장치(610)가 소셜 네트워킹 시스템(630)으로부터 액세스 정보를 호출하도록 한다. API 요청 서버(634)는 또한, API들을 호출함으로써 외부 시스템(620)이 소셜 네트워킹 시스템(630)으로 정보를 전송하도록 할 수 있다. 일실시예로, 외부 시스템(620)은 네트워크(650)를 통해 소셜 네트워킹 시스템(630)으로 API 요청을 전송하고, API 요청 서버(634)는 API 요청을 수신한다. API 요청 서버(634)는, API 요청 서버(634)가 네트워크(650)를 통해 외부 시스템(620)으로 통신하는 적절한 응답을 생성하기 위해 API 요청과 연관된 API를 호출함으로써 그 요청을 프로세싱한다. 예컨대, API 요청에 응답하여, API 요청 서버(634)는 가령 외부 시스템(620)으로 로그된 사용자의 연결과 같은 사용자와 연관된 데이터를 수집하고, 수집된 데이터를 외부 시스템(620)으로 통신한다. 다른 실시예로, 사용자 장치(610)는 외부 시스템(620)과 동일한 방식으로 소셜 네트워킹 시스템(630)과 API들을 통해 통신한다.
행위 로거(640)는 소셜 네트워킹 시스템(630) 안에서의 및/또는 밖에서의 사용자 행위에 관한 통신을 웹 서버(632)로부터 수신할 수 있다. 행위 로거(640)는 사용자 행위에 관한 정보로 활동 로그(642)를 채워서 소셜 네트워킹 시스템(630)이 소셜 네트워킹 시스템(630) 내에서 및 소셜 네트워킹 시스템(630) 밖에서 그것의 사용자들에 의해 행해진 다양한 행위를 발견할 수 있도록 한다. 특정 사용자가 소셜 네트워킹 시스템(630) 상의 다른 노드에 관해 행한 임의의 행위는, 활동 로그(642) 또는 유사한 데이터베이스 또는 다른 데이터 저장소에 관리되는 정보를 통해 각각의 사용자의 계정과 연관될 수 있다. 식별되고 저장된 소셜 네트워킹 시스템(630) 내에서 사용자에 의해 행해진 행위의 예들은 예컨대, 다른 사용자로의 연결의 추가, 다른 사용자에게 메세지를 전송, 다른 사용자로부터의 메시지를 읽기, 다른 사용자와 연관된 컨텐츠를 열람, 다른 사용자에 의해 게시된 이벤트에 참석, 이미지를 게시, 이미지를 게시하는 것의 시도, 또는 다른 사용자 또는 다른 객체와 상호작용하는 다른 행위들을 포함할 수 있다. 사용자가 소셜 네트워킹 시스템(630) 내에서 행위를 행할 때, 행위는 활동 로그(642)에 기록된다. 일실시예로, 소셜 네트워킹 시스템(630)은 활동 로그(642)를 엔트리들의 데이터베이스로서 관리한다. 행위가 소셜 네트워킹 시스템(630) 내에서 행해질 때, 행위에 대한 엔트리는 활동 로그(642)에 추가된다. 활동 로그(642)는 행위 로그라고 언급될 수 있다.
추가로, 사용자 행위는 가령 소셜 네트워킹 시스템(630)으로부터 분리된 외부 시스템(620)과 같이 소셜 네트워킹 시스템(630)의 외부의 엔트리 내에서 발생하는 컨셉 및 행위와 연관될 수 있다. 예컨대, 행위 로거(640)는 웹 서버(632)로부터 외부 시스템(620)과의 사용자 상호작용을 기술하는 데이터를 수신할 수 있다. 이 예에서, 외부 시스템(620)은 소셜 그래프에서의 구조화된 행위 및 객체에 따라 사용자의 상호작용을 보고한다.
사용자가 외부 시스템(620)과 상호작용하는 행위들의 다른 예들은, 사용자가 외부 시스템(620) 또는 다른 엔티티에 대한 관심을 표현하는 것, 사용자가 외부 시스템(620) 또는 외부 시스템(620) 내의 웹 페이지(622a)를 논의하는 코멘트를 소셜 네트워킹 시스템(630)에 게시하는 것, 사용자가 외부 시스템(620)과 연관된 URL(Uniform Resource Locator) 또는 다른 식별자를 소셜 네트워킹 시스템(630)에 게시하는 것, 사용자가 외부 시스템(620)과 연관된 이벤트에 참석하는 것, 또는 외부 시스템(620)과 관련된 사용자에 의한 임의의 다른 행위를 포함한다. 따라서, 활동 로그(642)는 소셜 네트워킹 시스템(630)의 사용자 및 소셜 네트워킹 시스템(630)으로부터 분리된 외부 시스템(620) 사이의 상호작용을 기술하는 행위들을 포함할 수 있다.
인증 서버(644)는 소셜 네트워킹 시스템(630)의 사용자들의 하나 이상의 개인정보 설정을 강제한다. 사용자의 개인정보 설정은 어떻게 사용자와 연관된 특정 정보가 공유될 수 있는지를 결정한다. 개인정보 설정은 사용자와 연관된 특정 정보의 명세(specification) 및 정보가 공유될 수 있는 엔티티 또는 엔티티들의 명세를 포함한다. 정보가 공유될 수 있는 엔티티들의 예들은 다른 사용자들, 애플리케이션, 외부 시스템(620), 또는 정보에 잠재적으로 액세스할 수 있는 임의의 엔티티를 포함할 수 있다. 사용자에 의해 공유될 수 있는 정보는 가령, 프로필 사진, 사용자와 연관된 전화번호, 사용자의 연결, 연결을 추가하기, 사용자의 프로필 정보를 변경하기와 같은 사용자에 의해 행해진 행위 등과 같은 사용자 계정 정보를 포함한다.
개인정보 설정 명세가 상이한 레벨의 입상도(granularity)에서 제공될 수 있다. 예컨대, 개인정보 설정은 다른 사용자들과 공유될 특정 정보를 식별할 수 있고; 개인정보 설정은 직장 전화번호 또는 가령, 프로필 사진, 집 전화번호, 및 상태와 같은 관련된 정보의 특정 세트를 식별한다. 대안으로, 개인정보 설정은 사용자와 연관된 모든 정보에 적용될 수 있다. 특정 정보에 액세스할 수 있는 엔티티들의 세트의 명세는 또한, 다양한 레벨의 입상도에서 특정될 수 있다. 정보가 공유될 수 있는 다양한 세트의 엔티티들은 예컨대, 사용자의 모든 친구들, 친구들의 모든 친구들, 모든 애플리케이션, 또는 모든 외부 시스템(620)을 포함할 수 있다. 일실시예는 엔티티들의 세트의 명세가 엔티티들의 목록을 포함할 수 있도록 한다. 예컨대, 사용자는 특정 정보에 액세스하는 것이 허용되는 외부 시스템(620)의 리스트를 제공할 수 있다. 다른 실시예는 명세가, 정보에 액세스하는것이 허용되지 않은 예외들을 함께 갖는 엔티티들의 세트를 포함하도록 한다. 예컨대, 사용자는 모든 외부 시스템(620)이 사용자의 작업 정보에 액세스할 수 있도록 하지만, 작업 정보에 액세스하는 것이 허용되지 않는 외부 시스템(620)의 리스트를 특정할 수 있다. 특정 실시예들은 특정 정보를 액세스하는 것이 허용되지 않는 예외들의 리스트를 "차단 리스트"라고 할 수 있다. 사용자에 의해 특정된 차단 리스트에 속하는 외부 시스템(620)은 개인정보 설정에 특정된 정보를 액세스하는 것으로부터 차단된다. 정보의 명세의 입상도 및 정보가 공유되는 엔티티들의 명세의 입상도의 다양한 조합이 가능하다. 예컨대, 모든 개인 정보는 친구들과 공유될 수 있는 한편, 모든 작업 정보는 친구의 친구들과 공유될 수 있다.
인증 서버(644)는 사용자와 연관된 특정 정보가 사용자의 친구들, 외부 시스템(620), 및/또는 다른 애플리케이션과 엔티티들에 의해 액세스될 수 있는지 여부를 결정하는 로직을 포함한다. 외부 시스템(620)은 가령 사용자의 직장 전화번호와 같은 사용자의 더 개인적이고 민감한 정보에 액세스하기 위해 인증 서버(644)로부터의 인증이 필요할 수 있다. 사용자의 개인정보 설정에 기반하여, 인증 서버(644)는, 다른 사용자, 외부 시스템(620), 애플리케이션, 또는 다른 엔티티가 사용자에 의해 행해진 행위에 관한 정보를 포함하는 사용자와 연관된 정보에 액세스하는 것이 허용되는지 여부를 결정한다.
최적화 모듈(646)은 소셜 네트워킹 시스템(630)을 위한 소셜 그래프의 노드의 현재 매핑을 최적화할 수 있다. 최적화 모듈(646)은 부하 균형을 유지하며 에지 집약성을 향상시키는 방법으로 현재 매핑을 최적화할 수 있다. 일실시예에서, 최적화 모듈(646)은 도 1의 최적화 모듈(100)으로 구현될 수 있다.
하드웨어 구현
전술한 프로세스 및 특징들은 광범위하게 다양한 네트워크 및 컴퓨팅 환경에서 광범위하게 다양한 기계 및 컴퓨터 시스템 구조에 의해 구현될 수 있다. 도 7은 본 발명의 일실시예에 따른, 본 명세서에 기술된 하나 이상의 실시예들을 구현하도록 사용될 수 있는 컴퓨터 시스템(700)의 예시를 도시한다. 컴퓨터 시스템(700)은 컴퓨터 시스템(700)이 본 명세서에 기술된 프로세스 및 특징들을 수행하도록 야기하는 명령어들의 세트들을 포함한다. 컴퓨터 시스템(700)은 다른 기계들에 연결(예컨대, 네트워킹)될 수 있다. 네트워킹된 배치에서, 컴퓨터 시스템(700)은 클라이언트-서버 네트워크 환경에서의 서버 기계 또는 클라이언트 기계의 용량으로 또는 피어-투-피어 (또는 분산형) 네트워크 환경에서의 피어 기계로서 동작할 수 있다. 본 발명의 일실시예로, 컴퓨터 시스템(700)은 본 명세서에 서술된 소셜 네트워킹 시스템의 컴포넌트일 수 있다. 본 발명의 일실시예로, 컴퓨터 시스템(700)은 소셜 네트워킹 시스템(1130)의 전부 또는 일부를 구성하는 많은 수의 서버들 중 하나의 서버일 수 있다.
컴퓨터 시스템(700)은, 본 명세서에 기술된 프로세스 및 특징에 관련되고, 컴퓨터-판독가능한 매체에 저장된 프로세서(702), 캐시(704), 및 하나 이상의 실행가능한 모듈 및 드라이버를 포함한다. 추가로, 컴퓨터 시스템(700)은 고성능 입력/출력(I/O) 버스(706) 및 표준 I/O 버스(708)를 포함한다. 호스트 브릿지(710)는 프로세서(702)를 고성능 I/O 버스(706)에 연결하는 한편, I/O 버스 브릿지(712)는 2개의 버스들(706, 712)을 서로 연결한다. 시스템 메모리(714) 및 하나 이상의 네트워크 인터페이스(716)는 고성능 I/O 버스(706)에 연결된다. 컴퓨터 시스템(700)은 비디오 메모리 및 비디오 메모리에 연결된 디스플레이 장치(도시되지 않음)를 더 포함할 수 있다. 대용량 저장소(718) 및 I/O 포트(720)는 표준 I/O 버스(708)에 연결된다. 컴퓨터 시스템(700)은 선택적으로 키보드, 포인팅 장치, 디스플레이 장치, 또는 표준 I/O 버스(712)에 연결된 다른 입력/출력 장치들(도시되지 않음)을 포함할 수 있다. 전체적으로, 이러한 구성요소들은, 캘리포니아 산타 클라라의 인텔사에 의해 제조된 x86-호환 프로세서, 및 캘리포니아 서니데일의 AMD(Advanced Micro Devices), Inc.에 의해 제조된 x86-호환 프로세서뿐만 아니라 임의의 다른 적절한 프로세서에 기반하는 컴퓨터 시스템을 포함하지만 이에 제한되지 않는 컴퓨터 하드웨어 시스템의 넓은 카테고리를 표현하도록 의도되었다.
운영 시스템은, 소프트웨어 애플리케이션(도시되지 않음)으로 오가는 데이터의 입력 및 출력을 포함하는 컴퓨터 시스템(700)의 동작을 관리하고 제어한다. 운영 시스템은 시스템상에 실행되는 소프트웨어 애플리케이션과 시스템의 하드웨어 컴포넌트들 사이의 인터페이스를 제공한다. 가령 LINUX 운영 시스템, 캘리포니아 쿠퍼티노의 Apple Computer Inc.로부터 이용가능한 Apple Macintosh 운영 시스템, UNIX 운영 시스템, Microsoft® Windows® 운영 시스템, BSD 운영 시스템 등과 같은 임의의 적절한 운영 시스템이 이용될 수 있다. 다른 구현도 가능하다.
컴퓨터 시스템(700)의 구성요소들은 아래에서 더 상세하게 기술된다. 특히, 네트워크 인터페이스(716)는 컴퓨터 시스템(700) 및 가령 Ethernet(예컨대, IEEE 802.3) 네트워크, 백플레인(backplane) 등과 같은 임의의 광범위의 네트워크 사이의 통신을 제공한다. 대용량 저장소(718)는 앞서 식별된 각각의 컴퓨팅 시스템들에 의해 구현되는 상기 프로세스들 및 특징들을 수행하는 프로그래밍 명령어들 및 데이터를 위한 영구적인 저장소를 제공하는 한편, 시스템 메모리(714)(예컨대, DRAM)는 프로세서(702)에 의해 실행될 때 데이터 및 프로그래밍 명령어들을 위한 임시적인 저장소를 제공한다. I/O 포트(720)는, 컴퓨터 시스템(700)에 연결될 수 있는 추가 주변 장치들 사이의 통신을 제공하는 하나 이상의 직렬 및/또는 병렬 통신 포트일 수 있다.
컴퓨터 시스템(700)은 다양한 시스템 구조들을 포함할 수 있고, 컴퓨터 시스템(700)의 다양한 컴포넌트들은 재정렬될 수 있다. 예컨대, 캐시(704)는 프로세서(702)를 갖는 온-칩일 수 있다. 대안으로, 캐시(704) 및 프로세서(702)는 프로세서(702)가 "프로세서 코어"로 불리는 "프로세서 모듈"로 함께 패킹(pack)될 수 있다. 더욱이, 본 발명의 특정 실시예들은 상기의 컴포넌트들 전부를 요구하지도 않고 포함하지도 않을 수 있다. 예컨대, 표준 I/O 버스(712)에 연결된 주변 장치들은 고성능 I/O 버스(706)에 연결될 수 있다. 추가로, 일부 실시예로, 단일 버스만이 존재할 수 있고, 컴퓨터 시스템(700)의 컴포넌트들은 단일 버스에 연결될 수 있다. 더욱이, 컴퓨터 시스템(700)은 가령 추가적인 프로세서, 저장 장치, 또는 메모리와 같은 추가 컴포넌트들을 포함할 수 있다.
일반적으로, 본 명세서에 기술된 프로세스 및 특징들은 운영 시스템 또는 특정 애플리케이션, 컴포넌트, 프로그램, 객체, 모듈 또는 "프로그램"으로 불리는 일련의 명령어들의 일부로서 구현될 수 있다. 예컨대, 하나 이상의 프로그램들은 본 명세서에 기술된 특정 프로세스들을 실행하는데 사용될 수 있다. 프로그램들은 전형적으로 하나 이상의 프로세서에 의해 읽혀지고 실행될 때 컴퓨터 시스템(700)이 본 명세서에 기술된 프로세스 및 특징들을 실행하는 동작들을 수행하도록 야기하는 하나 이상의 명령어들을 컴퓨터 시스템(700)에서 다양한 메모리 및 저장 장치에서 포함할 수 있다. 본 명세서에 기술된 프로세스 및 특징들은 소프트웨어, 펌웨어, 하드웨어(예컨대, 애플리케이션 고유의 집적 회로(application specific integrated circuit; ASIC), 또는 이들의 임의의 조합에서 구현될 수 있다.
하나의 구현예로, 본 명세서에 기술된 프로세스 및 특징들은, 컴퓨터 시스템(700)에 의해 실행되는 일련의 실행가능한 모듈로서 분산형 컴퓨팅 환경에서 개별적으로 또는 집합적으로 구현될 수 있다. 전술한 모듈들은 하드웨어, 컴퓨터-판독가능한 매체 (또는 기계-판독가능한 매체), 또는 이들 모두의 조합에 의해 실현될 수 있다. 예컨대, 모듈은 가령, 프로세서(702)와 같은 하드웨어 시스템에서의 프로세서에 의해 실행되는 복수의 또는 일련의 명령어들을 포함할 수 있다. 초기에, 일련의 명령어들은 가령, 대용량 저장소(718)와 같은 저장 장치에 저장될 수 있다. 하지만, 일련의 명령어들은 임의의 적절한 컴퓨터-판독가능한 저장 매체에 저장될 수 있다. 더욱이, 일련의 명령어들은 로컬에서 저장될 필요가 없으며, 네트워크 인터페이스(716)를 통해 가령 네트워크상의 서버와 같은 원격 저장 장치로부터 수신될 수 있다. 명령어들은 가령 대용량 저장소(718)와 같은 저장 장치로부터 시스템 메모리(714)로 복사되고, 이후 프로세서(702)에 의해 액세스되고 실행된다. 다양한 구현예로, 모듈 또는 모듈들은 가령, 병렬 프로세싱 환경에서의 다수의 서버들과 같이 하나 또는 다수의 위치들에서 프로세서 또는 다수의 프로세서들에 의해 실행될 수 있다.
컴퓨터-판독가능한 매체의 예들은, 가령 휘발성 및 비-휘발성 메모리 장치와 같은 기록 가능한 타입의 매체; 고체 상태 메모리(solid state memory; SSD); 플로피 및 다른 제거가능한 디스크; 하드 디스크 드라이브, 자기 매체; 광학 디스크(예컨대, CD ROMS(Compact Disk Read-Only Memory), DVDs(Digital Versatile Disks)); 다른 유사한 비-일시적 (또는 일시적), 실체적 (또는 비-실체적) 저장 매체; 또는 본 명세서에 기술되는 임의의 하나 이상의 프로세스 및 특징을 수행하는 컴퓨터 시스템(700)에 의해 실행하기 위한 일련의 명령어들을 저장하고, 인코딩하고, 운반하는데 적절한 임의의 타입의 매체를 포함하지만, 이에 제한되지 않는다.
설명하기 위한 목적을 위해, 발명의 설명의 완전한 이해를 제공하도록 다수의 구체적인 세부사항들이 언급된다. 하지만, 본 명세서의 실시예들은 이러한 구체적인 세부사항들 없이도 실행될 수 있음이 통상의 기술자에게 자명해질 것이다. 일부 예에서, 모듈, 구조, 프로세스, 특징, 및 장치는 발명의 설명을 불명확하게 하는 것을 피하기 위해 블록 다이어그램의 형태로 도시된다. 다른 예에서, 기능적 블록 다이어그램 및 흐름 다이어그램은 데이터 및 로직의 흐름을 표현하도록 도시된다. 블록 다이어그램 및 흐름 다이어그램의 컴포넌트들(예컨대, 모듈, 블록, 구조, 장치, 특징 등)은 본 명세서에 명시적으로 기술되고 도시된 것과 다른 방식으로 다양하게 조합되고, 분리되고, 제거되고, 재정렬되고, 대체될 수 있다.
본 명세서에서의 "일실시예", "실시예", "다른 실시예", "일련의 실시예", "일부 실시예", "다양한 실시예", "특정 실시예" 등에 대한 언급은, 실시예와 연계되어 기술된 특정의 특징, 설계, 구조, 또는 특성이 본 명세서의 적어도 하나의 실시예에 포함되는 것을 의미한다. 본 명세서에서의 다양한 위치에서 가령, "일실시예로" 또는 "실시예로"와 같은 구절이 나타나는 것은 동일한 실시예를 언급하거나 혹은 다른 실시예들과 상호 배타적이며 분리된 또는 대안적 실시예들을 필연적으로 언급하는 것은 아니다. 더욱이, "실시예" 등에 대한 명시적인 언급이 있는지와 무관하게, 다양하게 조합될 수 있고 일부 실시예들에 포함될 수 있는 다양한 특징들이 기술되지만, 이들은 또한, 다른 실시예들에서 다양하게 생략된다. 유사하게, 일부 실시예들에 대한 선호사항 또는 요구사항일 수 있지만 다른 실시예들에서는 그렇지 않을 수 있는 다양한 특징들이 기술된다.
본 명세서에 사용되는 용어는 원칙적으로 가독성 및 훈시적 목적을 위해서 선택되었으며, 발명의 대상을 묘사하거나 제한하기 위해 선택된 것은 아니다. 따라서, 본 발명의 보호범위는, 본 발명의 상세한 설명에 의해 제한되는 것이 아니며, 출원이 기반으로 하는 제출된 청구범위에 의해 정의되는 것으로 의도되었다. 그러므로 실시예들의 개시내용은 이하의 청구범위에서 정의되는 본 발명의 보호범위를 제한하는 것이 아니라 그 예시가 되는 것으로 의도되었다.

Claims (17)

  1. 컴퓨터 시스템으로, 제1 파티션의 노드에 대한 히스토그램을 계산하는 단계;
    컴퓨터 시스템으로, 제2 파티션의 노드에 대한 히스토그램을 계산하는 단계;
    컴퓨터 시스템으로, 제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 세트에 대한 후보 파티션으로 제2 파티션을 선택하는 단계;
    컴퓨터 시스템으로, 제2 파티션의 노드에 대한 히스토그램에 기반하여 제2 파티션의 노드의 세트에 대한 후보 파티션으로 제1 파티션을 선택하는 단계; 및
    컴퓨터 시스템으로, 부하 균형에 기반하여 제1 파티션의 노드의 세트의 적어도 일부를 제2 파티션으로, 및 제2 파티션의 노드의 세트의 적어도 일부를 제1 파티션으로 리매핑하는 단계를 포함하는 컴퓨터 구현 방법.
  2. 청구항 1에 있어서,
    컴퓨터 시스템으로, 제3 파티션의 노드에 대한 히스토그램을 계산하는 단계;
    컴퓨터 시스템으로, 제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 다른 세트에 대한 후보 파티션으로 제3 파티션을 선택하는 단계;
    컴퓨터 시스템으로, 제3 파티션의 노드에 대한 히스토그램에 기반하여 제3 파티션의 노드의 세트에 대한 후보 파티션으로 제1 파티션을 선택하는 단계; 및
    컴퓨터 시스템으로, 부하 균형에 기반하여 제1 파티션의 노드의 다른 세트의 적어도 일부를 제3 파티션으로, 및 제3 파티션의 노드의 세트의 적어도 일부를 제1 파티션으로 리매핑하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  3. 청구항 1 또는 청구항 2에 있어서,
    컴퓨터 시스템으로, 에지 집약성의 이득에 기반하여 제1 파티션의 노드의 세트를 정렬하는 단계; 및
    컴퓨터 시스템으로, 에지 집약성의 이득에 기반하여 제2 파티션의 노드의 세트를 정렬하는 단계를 더 포함하고,
    에지 집약성의 이득에 관한 확률에 기반하여 제1 파티션의 노드에 대한 후보 파티션으로 제2 파티션이 선택되는, 컴퓨터 구현 방법.
  4. 청구항 1에 있어서,
    제1 파티션의 노드에 대한 히스토그램은 복수의 파티션 각각 내의 연결된 노드의 수를 표시하는, 컴퓨터 구현 방법.
  5. 청구항 1에 있어서,
    제2 파티션으로 리매핑된 제1 파티션의 노드의 수와 제1 파티션으로 리매핑된 제2 파티션의 노드의 수 사이의 차이는 임계치 이내이고, 및/또는
    제2 파티션으로 리매핑된 제1 파티션의 노드의 가중치와 제1 파티션으로 리매핑된 제2 파티션의 노드의 가중치 사이의 차이는 임계치 이내인, 컴퓨터 구현 방법.
  6. 청구항 1에 있어서,
    컴퓨터 시스템으로, 리매핑 전에 제1 파티션의 제1 총 노드 가중치를 계산하는 단계를 더 포함하고,
    컴퓨터 시스템으로, 리매핑 후에 제1 파티션의 제2 총 노드 가중치를 계산하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  7. 청구항 1에 있어서,
    컴퓨터 시스템으로, 메모리로 노드 그래프를 로드하는 단계를 더 포함하고,
    노드 그래프는 제1 파티션의 노드 및 제2 파티션의 노드를 포함하는, 컴퓨터 구현 방법.
  8. 청구항 1에 있어서,
    컴퓨터 시스템은 분산형 시스템이고,
    컴퓨터 시스템으로, 분산형 시스템에 걸친 노드 그래프의 상이한 부분을 로드하는 단계를 더 포함하고,
    노드 그래프는 제1 파티션의 노드 및 제2 파티션의 노드를 포함하는, 컴퓨터 구현 방법.
  9. 청구항 1에 있어서,
    제1 파티션의 각 노드와 연관된 연결된 노드의 현재 파티션 ID를 수신하는 단계를 더 포함하고,
    제1 파티션의 노드에 대한 히스토그램은 현재 파티션 ID에 기반하여 계산되고,
    제1 파티션의 각 노드의 현재 파티션 ID를 제공하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  10. 청구항 1에 있어서,
    후보 파티션은 집약성 이득 임계치에 기반하여 선택되는, 컴퓨터 구현 방법.
  11. 청구항 1에 있어서,
    제2 파티션은 에지 집약성의 이득에 관한 확률에 기반하여 제1 파티션의 노드에 대한 후보 파티션으로 선택되는, 컴퓨터 구현 방법.
  12. 청구항 1에 있어서,
    컴퓨터 시스템으로, 리매핑될 노드를 가리키는 복수의 파티션에 대한 모드 파티션 쌍의 기록을 생성하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  13. 청구항 1에 있어서,
    노드 그래프는 소셜 네트워킹 시스템에 의하여 지원되는, 컴퓨터 구현 방법.
  14. 적어도 하나의 프로세서, 및
    적어도 하나의 프로세서가 청구항 1에 따른 방법을 수행하도록 지시하도록 구성된 명령어를 저장하는 메모리를 포함하는 시스템.
  15. 실행 시, 컴퓨터 시스템이 청구항 1에 따른 컴퓨터 구현 방법을 수행하도록 하는 컴퓨터 실행가능한 명령어를 저장하는 컴퓨터 저장 매체.
  16. 적어도 하나의 프로세서, 및
    적어도 하나의 프로세서가:
    제1 파티션의 노드에 대한 히스토그램의 계산;
    제2 파티션의 노드에 대한 히스토그램의 계산;
    제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 세트에 대한 후보 파티션으로 제2 파티션을 선택하기;
    제2 파티션의 노드에 대한 히스토그램에 기반하여 제2 파티션의 노드의 세트에 대한 후보 파티션으로 제1 파티션을 선택하기; 및
    부하 균형에 기반하여 제1 파티션의 노드의 세트의 적어도 일부를 제2 파티션으로, 및 제2 파티션의 노드의 세트의 적어도 일부를 제1 파티션으로 리매핑을 수행하도록 지시하도록 구성된 명령어를 저장하는 메모리를 포함하는 시스템.
  17. 실행 시, 컴퓨터 시스템이:
    제1 파티션의 노드에 대한 히스토그램을 계산하는 단계;
    제2 파티션의 노드에 대한 히스토그램을 계산하는 단계;
    제1 파티션의 노드에 대한 히스토그램에 기반하여 제1 파티션의 노드의 세트에 대한 후보 파티션으로 제2 파티션을 선택하는 단계;
    제2 파티션의 노드에 대한 히스토그램에 기반하여 제2 파티션의 노드의 세트에 대한 후보 파티션으로 제1 파티션을 선택하는 단계; 및
    부하 균형에 기반하여 제1 파티션의 노드의 세트의 적어도 일부를 제2 파티션으로, 및 제2 파티션의 노드의 세트의 적어도 일부를 제1 파티션으로 리매핑하는 단계를 포함하는 컴퓨터 구현 방법을 수행하도록 하는 컴퓨터 실행가능한 명령어를 저장하는 컴퓨터 저장 매체.
KR1020167010542A 2013-10-01 2013-11-20 집약성 및 균형을 위한 동적 매핑을 위한 시스템 및 방법 KR102076580B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/043,730 2013-10-01
US14/043,730 US9934323B2 (en) 2013-10-01 2013-10-01 Systems and methods for dynamic mapping for locality and balance
EP13193398.8A EP2858026A3 (en) 2013-10-01 2013-11-19 Systems and methods for dynamic mapping for locality and balance
EP13193398.8 2013-11-19
PCT/US2013/071087 WO2015050568A1 (en) 2013-10-01 2013-11-20 Systems and methods for dynamic mapping for locality and balance

Publications (2)

Publication Number Publication Date
KR20160062073A KR20160062073A (ko) 2016-06-01
KR102076580B1 true KR102076580B1 (ko) 2020-02-12

Family

ID=49641547

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167010542A KR102076580B1 (ko) 2013-10-01 2013-11-20 집약성 및 균형을 위한 동적 매핑을 위한 시스템 및 방법

Country Status (11)

Country Link
US (1) US9934323B2 (ko)
EP (1) EP2858026A3 (ko)
JP (1) JP6272467B2 (ko)
KR (1) KR102076580B1 (ko)
CN (1) CN105593838B (ko)
AU (1) AU2013402190B2 (ko)
BR (1) BR112016007205A2 (ko)
CA (1) CA2925114C (ko)
IL (1) IL244779A0 (ko)
MX (1) MX355951B (ko)
WO (1) WO2015050568A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3103238B1 (en) * 2014-02-07 2021-06-23 Oracle International Corporation Mobile cloud service architecture
US9529657B2 (en) 2014-02-07 2016-12-27 Oracle International Corporation Techniques for generating diagnostic identifiers to trace events and identifying related diagnostic information
US9529658B2 (en) 2014-02-07 2016-12-27 Oracle International Corporation Techniques for generating diagnostic identifiers to trace request messages and identifying related diagnostic information
CA2931750C (en) 2014-02-07 2023-03-07 Oracle International Corporation Cloud service custom execution environment
US10055423B2 (en) 2014-03-31 2018-08-21 Oracle International Corporation Infrastructure for synchronization of mobile device with mobile cloud service
US9860316B2 (en) * 2014-09-19 2018-01-02 Facebook, Inc. Routing network traffic based on social information
US10063661B2 (en) 2015-01-14 2018-08-28 Oracle International Corporation Multi-tenant cloud-based queuing systems
CN106445677A (zh) * 2015-08-06 2017-02-22 阿里巴巴集团控股有限公司 负载均衡方法及设备
US10810179B2 (en) * 2015-09-25 2020-10-20 Microsoft Technology Licensing, Llc Distributed graph database
US9704277B2 (en) 2015-10-15 2017-07-11 International Business Machines Corporation Vectorized graph processing
WO2017127106A1 (en) * 2016-01-22 2017-07-27 Hewlett Packard Enterprise Development Lp Graph partitioning
WO2017171932A1 (en) 2016-03-28 2017-10-05 Oracle International Corporation Pre-formed instructions for a mobile cloud service
US10762072B2 (en) * 2017-01-30 2020-09-01 International Business Machines Corporation Processing messages of a plurality of devices
US11151031B2 (en) * 2017-06-29 2021-10-19 Microsoft Technology Licensing, Llc Optimized record placement in defragmenting graph database
US10452553B1 (en) * 2017-10-16 2019-10-22 Veritas Technologies Llc Systems and methods for distributing cache space
US10607074B2 (en) * 2017-11-22 2020-03-31 International Business Machines Corporation Rationalizing network predictions using similarity to known connections
CN108089918B (zh) * 2017-12-06 2020-07-14 华中科技大学 一种面向异构服务器结构的图计算负载均衡方法
CN110019234A (zh) * 2017-12-28 2019-07-16 中国电信股份有限公司 用于分片存储数据的方法和系统
CN109903178B (zh) * 2019-04-04 2021-08-20 腾讯科技(深圳)有限公司 一种确定共同社交对象的方法、装置、系统及计算设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060015588A1 (en) 2004-06-30 2006-01-19 Microsoft Corporation Partitioning social networks
US20080189093A1 (en) 2005-04-25 2008-08-07 International Business Machines Corporation Pairwise fragment interaction computation
US20120310959A1 (en) 2011-06-03 2012-12-06 Huhn Derrick S System and method for managing a partitioned database of user relationship data
US20130108263A1 (en) 2011-11-01 2013-05-02 Plexxi Inc. Data center network architecture

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596703A (en) * 1993-10-22 1997-01-21 Lucent Technologies Inc. Graphical display of relationships
CA2159269C (en) * 1995-09-27 2000-11-21 Chaitanya K. Baru Method and apparatus for achieving uniform data distribution in a parallel database system
US6437804B1 (en) * 1997-10-23 2002-08-20 Aprisma Management Technologies, Inc Method for automatic partitioning of node-weighted, edge-constrained graphs
US7853930B2 (en) 2005-01-04 2010-12-14 International Business Machines Corporation Annotating graphs to allow quick loading and analysis of very large graphs
US7233733B2 (en) 2005-07-13 2007-06-19 International Business Machines Corporation Method and system for finding evolving regions in graphs without persistent node identity
US7933915B2 (en) 2006-02-27 2011-04-26 The Regents Of The University Of California Graph querying, graph motif mining and the discovery of clusters
US7818303B2 (en) * 2008-01-29 2010-10-19 Microsoft Corporation Web graph compression through scalable pattern mining
EP2347623B1 (en) * 2008-10-17 2017-07-05 Telefonaktiebolaget LM Ericsson (publ) Method and apparatuses for service selection and indication
US8321873B2 (en) * 2009-06-09 2012-11-27 Yahoo! Inc. System and method for offline data generation for online system analysis
US9015597B2 (en) * 2009-07-31 2015-04-21 At&T Intellectual Property I, L.P. Generation and implementation of a social utility grid
JP5479601B2 (ja) * 2009-09-28 2014-04-23 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 通信ネットワークにおいてソーシャルネットワークの分析を支援する方法及び装置
US8556724B2 (en) * 2009-09-30 2013-10-15 Zynga Inc. Apparatuses, methods and systems for an online game manager
US8713125B2 (en) * 2010-05-10 2014-04-29 Telefonica, S.A. Method and system for scaling usage of a social based application on an online social network
US8539197B1 (en) * 2010-06-29 2013-09-17 Amazon Technologies, Inc. Load rebalancing for shared resource
US8819236B2 (en) * 2010-12-16 2014-08-26 Microsoft Corporation Resource optimization for online services
US8719211B2 (en) * 2011-02-01 2014-05-06 Microsoft Corporation Estimating relatedness in social network
US9026560B2 (en) * 2011-09-16 2015-05-05 Cisco Technology, Inc. Data center capability summarization
US8880841B2 (en) * 2011-11-15 2014-11-04 International Business Machines Corporation Distributing data among data storage partitions based on a forecasted demand in a networked computing environment
US8886781B2 (en) * 2011-12-13 2014-11-11 Microsoft Corporation Load balancing in cluster storage systems
JP5851225B2 (ja) * 2011-12-15 2016-02-03 三菱電機株式会社 通信システム、サーバおよびノード
US8972378B2 (en) * 2012-10-22 2015-03-03 Microsoft Corporation Formulating global statistics for distributed databases
US9083757B2 (en) * 2012-11-21 2015-07-14 Telefonaktiebolaget L M Ericsson LLP Multi-objective server placement determination
US9015128B2 (en) * 2012-11-28 2015-04-21 Sharethis, Inc. Method and system for measuring social influence and receptivity of users
US20140244335A1 (en) * 2013-02-28 2014-08-28 Linkedin Corporation Techniques for deriving a social proximity score for use in allocating resources
US10198834B2 (en) * 2013-04-29 2019-02-05 Microsoft Technology Licensing, Llc Graph partitioning for massive scale graphs

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060015588A1 (en) 2004-06-30 2006-01-19 Microsoft Corporation Partitioning social networks
US20080189093A1 (en) 2005-04-25 2008-08-07 International Business Machines Corporation Pairwise fragment interaction computation
US20120310959A1 (en) 2011-06-03 2012-12-06 Huhn Derrick S System and method for managing a partitioned database of user relationship data
US20130108263A1 (en) 2011-11-01 2013-05-02 Plexxi Inc. Data center network architecture

Also Published As

Publication number Publication date
US20150095348A1 (en) 2015-04-02
CA2925114A1 (en) 2015-04-09
MX2016004118A (es) 2016-06-06
US9934323B2 (en) 2018-04-03
JP2016540280A (ja) 2016-12-22
EP2858026A3 (en) 2015-06-03
CN105593838A (zh) 2016-05-18
IL244779A0 (en) 2016-04-21
MX355951B (es) 2018-05-07
AU2013402190B2 (en) 2020-04-09
KR20160062073A (ko) 2016-06-01
CN105593838B (zh) 2019-09-03
AU2013402190A1 (en) 2016-04-21
BR112016007205A2 (pt) 2017-08-01
EP2858026A2 (en) 2015-04-08
WO2015050568A1 (en) 2015-04-09
CA2925114C (en) 2019-12-31
JP6272467B2 (ja) 2018-01-31

Similar Documents

Publication Publication Date Title
KR102076580B1 (ko) 집약성 및 균형을 위한 동적 매핑을 위한 시스템 및 방법
US11106720B2 (en) Systems and methods for clustering items associated with interactions
US10574775B2 (en) Systems and methods to optimize news feed access
US10832165B2 (en) Systems and methods for online distributed embedding services
US9900223B2 (en) Systems and methods for adding users to a networked computer system
US20190187955A1 (en) Systems and methods for comment ranking using neural embeddings
US10871879B2 (en) Systems and methods for providing feed page updates in a social networking system
US11755673B1 (en) Systems and methods for recommending pages
US10726085B2 (en) Systems and methods for evaluating diversity of content based on content properties
US10437876B2 (en) Systems and methods for processing shape data based on serialization formatting
US20230029504A1 (en) Systems and methods for generating interactive music charts
US20190057156A1 (en) Systems and methods for providing dynamic hovercards associated with pages in a social networking system
US20190005424A1 (en) Systems and methods for providing actionable data insights
US10789275B2 (en) Systems and methods for providing content
US10397169B2 (en) Systems and methods for providing communication items from an entity associated with a social networking system
US10803130B2 (en) Systems and methods for filtering page recommendations
US20190197456A1 (en) Systems and methods for providing an attributed review framework associated with a social networking system
US20180097697A1 (en) Systems and methods for providing adaptive experimentation of contextual configurations in a social networking system
US11663477B2 (en) Systems and methods for generating music recommendations
US20190095841A1 (en) Systems and methods for ranking pages based on page-to-page engagement graphs associated with a social networking system
US10250656B2 (en) Systems and methods for generating, providing, and rendering quick load articles

Legal Events

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