Facebook과 같은 소셜 네트워킹 사이트의 데이터베이스 구조를 구현하기위한 가능한 두 가지 솔루션을 찾았습니다.Facebook과 같은 대규모 소셜 네트워킹 사이트를위한 최적의 RDBMS 솔루션은 무엇입니까?
1 : '관계'테이블을 만들고 모든 우정을 삽입합니다. 예를 들어, 사용자 A가 친구 (A-B)로 B를 추가하면 논리는 (A-B)와 (B-A)를 '관계'테이블에 넣습니다. 그런 다음 첫 번째 속성을 색인화합니다.
2 : 친구가있는 모든 사용자에 대해 고유 한 테이블을 만듭니다. 대부분의 데이터베이스는 거의 20 억 개의 고유 한 테이블에서 작동하므로 문제가되지 않습니다. 그러나 데이터베이스 크기는 거의 300 배 더 클 것입니다 (사용자 당 평균 300 명의 친구를 예상 함). 이 시나리오에서 친구를 쿼리해도 문제가되지 않습니다 (SELECT * FROM처럼 간단 함)
아이디어가 있습니까? 내가 어딘가 틀렸어? 감사합니다.
오, 언급하는 것을 잊어 버렸습니다. 구현 방법에 대한 답변을 찾았습니다. 데이터 구조 구현을 위해 RDBMS를 전혀 사용하지 않는다는 것을 알았습니다. 그러나 RDBMS 방식으로 구현하는 것은 여전히 흥미로울 것입니다. – nbitd
AFAIK, Facebook * do *은 MySQL을 사용하지만 그래프 데이터베이스를 대신 사용해 볼 수도 있습니다. 예 : http://neo4j.org/ –
RDBMS 솔루션이 첫 번째 솔루션입니다. 각 데이터 항목마다 하나씩 추가 테이블을 추가하는 것은 접근법이 아닙니다. 필자가 본 모든 SQL 구현에서 테이블 이름은 마치 데이터 항목 인 것처럼 조작하기가 편리하지 않았습니다. –