SDEC2011 Implementing me2day friend suggestion

Preview:

DESCRIPTION

In the SNS domain, Response time of Friend Suggestion Algorithms and several SNA algorithms is in direct proportion to square of relationship number. In addition, increasing rate of relationship number is bigger and bigger. But existing usage pattern of Relational DB is suffering poor performance. To guarantee performance and scalability, we have developed such methods for Friend Suggestion and SNARelation Pruning using intimacy valueNo Join & Keeping all Data in-Memory StrategyDistributed Graph Structure

Citation preview

1

Implementing

me2day Friend Suggestion

NHN

미투데이인프라개발팀

강호성

2

Implementing

me2day Friend Suggestion

NHN

미투데이인프라개발팀

강호성

3

Contents

• SNS에서의 친구추천

• 친구추천 알고리즘

• 친구추천 시스템의 구현

• 결롞 및 향후 작업

4

5

6

가입했는데친구 없어서 심심해..나도 미친 좀 사귀어보자!

불쌍하다고 4명 싞청해주고..그마저도 홍보미투ㅠㅠ

허이고.. 불쌍하다 불쌍해! 옛다!미투 한 개 찍어줌.

7

SNS에서의친구추천

• 사용자에게 새로운 친구를 사귈 수 있도록 도와주는 장치

• 친구수가 적은 유저에게 유용함

SNS = 블로그?친구추천이 뜨네친구싞청 해볼까?

이제야 SNS의 묘미를알겠다~

8

me2day에서의친구추천

9

me2day에서의친구추천

추천하는 사람들

공통된 친구들

10

Next Contents

• SNS에서의 친구추천

•친구추천 알고리즘

• Friend of a Friend 추천

• Close Friend of a Close Friend 추천

• 친구추천 시스템의 구현

• 결롞 및 향후 작업

11

Friend of a Friend (FOAF) 추천

• F(A, B) = A, B가 친구관계이면 True

• M.F.C(A, C) = A, C의 공통친구의 수 (Mutual Friend Count)

• A의 추천친구 집합 = F(A, B) 이고 F(B, C)인 C들의 집합

• 각각의 C마다 M.F.C(A, C)가 높은 순으로 정렬함

First

※ Jilin Chen, (2009), “Recommending People on Social Networking Sites”.

아이유

직장동료

팀장님

친구2

친구1

친구3

갈길이멀다

12

Friend of a Friend (FOAF) 추천

• F(A, B) = A, B가 친구관계이면 True

• M.F.C(A, C) = A, C의 공통친구의 수 (Mutual Friend Count)

• A의 추천친구 집합 = F(A, B) 이고 F(B, C)인 C들의 집합

• 각각의 C마다 M.F.C(A, C)가 높은 순으로 정렬함

Second

※ Jilin Chen, (2009), “Recommending People on Social Networking Sites”.

아이유

직장동료

팀장님

친구2

친구1

친구3

갈길이멀다

13

Friend of a Friend (FOAF) 추천

• F(A, B) = A, B가 친구관계이면 True

• M.F.C(A, C) = A, C의 공통친구의 수 (Mutual Friend Count)

• A의 추천친구 집합 = F(A, B) 이고 F(B, C)인 C들의 집합

• 각각의 C마다 M.F.C(A, C)가 높은 순으로 정렬함

Third

※ Jilin Chen, (2009), “Recommending People on Social Networking Sites”.

아이유

직장동료

팀장님

친구2

친구1

친구3

갈길이멀다

14

Close Friend of a Close Friend (CFOACF) 추천

• FOAF 추천 알고리즘에 친밀도를 추가한 알고리즘

• A의 추천친구 집합 = F(A, B) 이고 F(B, C)인 C들의 집합

• I(A, B) = A B의 친밀도 (A에서 B로의 소통량을 수치로 표시)

9

Score of C = I(A, Bi) * I(Bi, C)

1

2

5

2

1

155

아이유

직장동료

팀장님

친구2

친구1

친구3

갈길이멀다

15

Close Friend of a Close Friend (CFOACF) 추천

• FOAF 추천 알고리즘에 친밀도를 추가한 알고리즘

• A의 추천친구 집합 = F(A, B) 이고 F(B, C)인 C들의 집합

• I(A, B) = A B의 친밀도 (A에서 B로의 소통량을 수치로 표시)

16

Score of C = I(A, Bi) * I(Bi, C)

2

5

2

5

3

2

5

아이유

직장동료

팀장님

친구2

친구1

친구3

갈길이멀다

16

Close Friend of a Close Friend (CFOACF) 추천

• FOAF 추천 알고리즘에 친밀도를 추가한 알고리즘

• A의 추천친구 집합 = F(A, B) 이고 F(B, C)인 C들의 집합

• I(A, B) = A B의 친밀도 (A에서 B로의 소통량을 수치로 표시)

20

Score of C = I(A, Bi) * I(Bi, C)

5 455

아이유

직장동료

팀장님

친구2

친구1

친구3

갈길이멀다

17

Close Friend of a Close Friend (CFOACF) 추천

• 친밀도 값의 산정 프로세스

Feedback !!

관심친구, 댓글,미투, 친구 맺은 기간

18

Next Contents

• SNS에서의 친구추천

• 친구추천 알고리즘

•친구추천 시스템의구현

• Social Network에적합한데이터모델링

• Graph Product의고려

•친구수가많은사용자로인한성능저하극복

•친구추천시스템의확장성문제

• 결롞 및 향후 작업

19

Social Network에적합한데이터모델링

• Social Network 모델링 기법 비교

User Nodes

1

2

3

5

6

8

9

List of

Friend

user_no friend_no

1 5

1 9

1 8

2 3

2 8

3 5

3 8

3 9

3 2

. .

. .

. .

9 6

8

5

1

3

2

9 6

<Social Network>

<Graph Model>

<Relational Model>

5 - 9 - 8

3 - 8

5 - 8 - 9 - 2

8 - 1 - 3

9 - 8

1 - 5 - 3 - 2 - 6

1 - 3 - 6

20

• Relational Model의 쿼리 방법

Joinor재쿼리

<User, Friend>

Social Network에적합한데이터모델링

21

• Graph Model의 쿼리 방법

Just Tracking Reference Pointer !

Social Network에적합한데이터모델링

22

• 실험: 25만 명의 친구를 가진 사용자의 “친구의 친구” 구하기

• Result (Count : 9,060,712)

Relational Model Graph Model

ResponseTime

5.9 sec 0.15 sec

Social Network에적합한데이터모델링

40X

23

Graph Product의고려

• Graph Products Features

Comparisons Graph Framework Graph Database

Data Durability Medium-Low Medium-High

Cache hit-ratio 100 % Depend on Workload

Suitable Workload Batch Job Real-time Job

Products

TinkerPop’s TinkerGraph

Google’s Pregel

MS’s Trinity

Neo Tech’s Neo4j

Twitter’s FlockDB

Orient Tech’s OrientDB

※ Google, Inc, (2010), “Pregel : A System for Large-Scale Graph Processing”“http://www.tinkerpop.com/”, “http://www.graph-database.org/”

24

• Graph Products Evaluation

HighLow

Low

High

Performance

AvailabilityTinkerGraph

Neo4j

OrientDB

FlockDB Pregel

Graph Product의고려

※ “http://markorodriguez.com”, “http://www.orientechnologies.com/”

25

• 친구추천 시스템의 구현

• TinkerGraph의 구현방식을 참고

• Availability 향상을 위해 Replication Failover 기능 구현

Graph Product의고려

Suggestion Result

Stand-byBatch ServerMaster

Batch Server

Friendships

26

친구수가많은사용자로인한성능저하극복

• 친구수가 많은 사용자

• 본인과 친구들의 추천 연산의 성능을 저하 시킴

• 이러한 사용자의 친구수는 급격한 속도로 증가하고 있음

265 X

27

친구수가많은사용자로인한성능저하극복

• Dunbar’s Number

• 친밀한 관계의 한계는 150명~200명 사이라는 이롞

※ Robin Dunbar, (2010), “How Many friends Does One Person Need?”.

친구 수 많아 봐야진짜 친구는 150명이야!~

28

친구수가많은사용자로인한성능저하극복

• 친밀도 순으로 150명만 남겨놓고 나머지는 제거

29

• Result

친구수가많은사용자로인한성능저하극복

RelationalGraph(All)

Graph(Top 150)

ResponseTime

5.9 sec 0.15 sec 0.0005 sec300X 40X

30

• Result

All Top 150

ResultCount

9,060,712 14,912

Memory 900 MB 608 MB

LoadTime

37.1 sec 28.8 sec

친구수가많은사용자로인한성능저하극복

32%

23%

99%

31

Batch Server Batch Server

친구추천시스템의확장성문제

Batch Server

아흑!1대의 메모리를

넘어가면 어쩌지?

• Social Network의 급격한 성장

32

Batch Server

• 1안

• 메모리를 넘어서는 데이터는 SSD에 저장

• 캐시 알고리즘(LRU, LFU)에 따라 메모리에 데이터를 유지

Batch Server

SSD

친구추천시스템의확장성문제

33

Batch Server 1 Batch Server 2 Batch Server 3 Batch Server 4

Remote Cache Cloud

• 2안

• 그래프를 분류 알고리즘으로 분산해서 저장

• Local 메모리에서 miss시에 Remote Cache Cloud를 참조함

친구추천시스템의확장성문제

34

Next Contents

• SNS에서의 친구추천

• 친구추천 알고리즘

• 친구추천 시스템의 구현

•결론및향후작업

35

결론및향후작업

• 친구추천 시스템 구현을 위해 다음의 방안들을 적용함

• Graph Model의 도입

• Pruning Edges using Dunbar’s Number

• Scalable Distributed Architecture

• 오픈 후 싞규 친구관계의 약 20%가 친구추천으로 맺어지고 있음

• 추천 알고리즘 정교화와 Scalability 확보는 계속 진행 중임

36

37

참고문헌

• Jilin Chen, (2009), “Recommending People on Social Networking Sites”.

• Robin Dunbar, (2010), “How Many friends Does One Person Need”.

• RENZO ANGLES, (2008), “Survey of Graph database models”, ACM

Computing Surveys.

• Marko A. Rodriguez, (2010), “Graph Traversal Programming Pattern”.

• HANNEMAN, R. A, (2001), “Introduction to social network methods”.

• TinkerPop, “TinkerGraph”.

http://github.com/tinkerpop/gremlin/wiki/tinkergraph

• Grzegorz Malewicz, (2010), “Pregel : A System for Large-Scale Graph

Processing”, Google, Inc.

• Microsoft, “Trinity”, http://research.microsoft.com/en-us/projects/trinity/

38

참고문헌

• Neo Technology, “Neo4j : the Graph database”. www.neo4j.org

• Twitter, “FlockDB”,

https://github.com/twitter/flockdb/blob/master/doc/blog.md

• Orient Technologies, “OrientDB”, http://www.orientechnologies.com/

• Marko A. Rodriguez, “MySQL vs. Neo4j on a Large-Scale Graph Traversal”,

http://markorodriguez.com/2011/02/18/mysql-vs-neo4j-on-a-large-scale-

graph-traversal/