2010-02-10 4 views
1

Facebook과 같은 소셜 네트워킹 사이트의 데이터베이스 구조를 구현하기위한 가능한 두 가지 솔루션을 찾았습니다.Facebook과 같은 대규모 소셜 네트워킹 사이트를위한 최적의 RDBMS 솔루션은 무엇입니까?

1 : '관계'테이블을 만들고 모든 우정을 삽입합니다. 예를 들어, 사용자 A가 친구 (A-B)로 B를 추가하면 논리는 (A-B)와 (B-A)를 '관계'테이블에 넣습니다. 그런 다음 첫 번째 속성을 색인화합니다.

2 : 친구가있는 모든 사용자에 대해 고유 한 테이블을 만듭니다. 대부분의 데이터베이스는 거의 20 억 개의 고유 한 테이블에서 작동하므로 문제가되지 않습니다. 그러나 데이터베이스 크기는 거의 300 배 더 클 것입니다 (사용자 당 평균 300 명의 친구를 예상 함). 이 시나리오에서 친구를 쿼리해도 문제가되지 않습니다 (SELECT * FROM처럼 간단 함)

아이디어가 있습니까? 내가 어딘가 틀렸어? 감사합니다.

+0

오, 언급하는 것을 잊어 버렸습니다. 구현 방법에 대한 답변을 찾았습니다. 데이터 구조 구현을 위해 RDBMS를 전혀 사용하지 않는다는 것을 알았습니다. 그러나 RDBMS 방식으로 구현하는 것은 여전히 ​​흥미로울 것입니다. – nbitd

+0

AFAIK, Facebook * do *은 MySQL을 사용하지만 그래프 데이터베이스를 대신 사용해 볼 수도 있습니다. 예 : http://neo4j.org/ –

+0

RDBMS 솔루션이 첫 번째 솔루션입니다. 각 데이터 항목마다 하나씩 추가 테이블을 추가하는 것은 접근법이 아닙니다. 필자가 본 모든 SQL 구현에서 테이블 이름은 마치 데이터 항목 인 것처럼 조작하기가 편리하지 않았습니다. –

답변

3

설명하는 table-per-user 솔루션은 기본적으로 Oracle의 파티션 기능과 비슷합니다.

정확히 관련되지 않음,하지만 난이 멋진 게시물을 추천 : Presentation Summary “High Performance at Massive Scale: Lessons Learned at Facebook”

나는 우정 테이블 당신은 최대 테이블 크기에 대해 걱정할 필요하지 않으며 그들의 관심사 :

+0

소셜 그래프 데이터베이스 구성에 대한 훌륭한 기사가 있습니다. http://techportal.ibuildings.com/2009/09/07/graphs-in-the-database-sql-meets-social-networks/ –

1

의 최소한이라고 생각 그런 것들. Facebook과 같은 사이트를 만들려면 모든 테이블을 여러 대의 컴퓨터에 분할하거나 분할해야합니다.

관련 문제