2010-01-06 4 views
1

이상적으로 페이스 북과 같은 애플리케이션이 "친구"데이터를 어디에 저장할 것입니까? 데이터베이스 테이블에서? XML 파일에?소셜 네트워킹 백엔드 아키텍처

+3

Facebook의 규모가 단일 데이터베이스를 사용하지 않는다는 것, 훨씬 적은 XML 파일을 저장하는 단일 테이블이 훨씬 적음을 알 수 있습니다. –

+0

이것은 http://stackoverflow.com/questions/1009025/facebook-database-design과 매우 유사합니다. – NotMe

답변

5

:

페이스 북은 관여 할 수 데이터베이스 기술의 번호를 사용 :

"이미 우리는 세계에서 두 번째로 많은 트래픽을 낸 PHP 사이트이며 (야후는 # 1), 수천 개의 데이터베이스를 운영하는 가장 큰 MySQL 설치 중 하나입니다."

는 "우리는 우리가 완벽하고 쉽게 모든 플랫폼에서 실행 함께 어떤 언어로 작성된 서브 시스템을 묶을 수있는 경량하지만 강력한 멀티 - 언어 RPC 프레임 워크를 구축했습니다. 페이스 북은 PHP, C에 내장되어 ++ , Perl, Python, Erlang, Java, 심지어 ML까지 - 모두 함께 작동합니다 .* 우리는 memcached의 오픈 소스 캐싱 시스템 세계에서 가장 큰 사용자입니다. 원래 LiveJournal에서 개발 한 ' ve는 매우 많은 확장 성 향상과 성능 향상을 통해 차기 주요 릴리스에서 주요 기능을 제공 할 것입니다. * 우리는 매일 수백만 개의 쿼리를 제공하는 사용자 정의 검색 엔진을 만들었습니다. y 메모리 내에서 실시간 업데이트가 가능합니다. "

0

확실히 XML 파일이 아닙니다.

예, 데이터베이스에서 하나 또는 여러 개의 테이블. 그리고 페이스 북의 정확한 예를 들어, 여러 서버에.

1

아마도 다른 메커니즘이 있어야합니다. 예를 들어 검색 엔진은 색인을 데이터베이스 또는 XML 파일로 유지하지 않습니다. 최대 성능을 얻으려면 일반적으로 몇 가지 트리 (이진 검색 트리 또는 더 복잡한 트리)를 유지하고 디스크를 성능이 우수한 방식으로 디스크에 저장합니다. 그래서 나는 그런 메커니즘을 추측한다.

2

는 "친구"데이터가 그래프 데이터베이스에 잘 설명되어에서 시스템 architecures의 http://highscalability.com/ 많은 실제 사례를 배울 수 있습니다. Neo4j이 예이지만, Facebook이이 정보를 저장하는 방식이 아니라는 것을 알고 있습니다.

관련 문제