2011-02-08 4 views
0

데이터베이스에 새로운 점 Facebook 및 Google과 같은 대형 웹 사이트가 대규모 사용자 기반의 로그인을 처리하는 방법을 알고 싶습니다. 나는 페이스 북과 구글이 수억 또는 아마 10 억 이상의 사용자 계정을 가지고 있고 수천 명의 사람들이 아마 거의 같은 시간에 로그인했을 것으로 추정한다. 누군가 로그인 할 때 시스템이 전체 사용자 이름 테이블을 스캔하여 일치하는 항목을 찾아 암호를 비교합니까? 그렇다면 많은 시간이 걸릴까요? 몇 초 안에 그걸 어떻게합니까? 아니면 알파벳순으로 색인을 생성하여 전체 표를 검사하지 않습니다. 새로운 사용자가 새 계정을 만들면서 테이블이 하루에 여러 번 변경되면 어떻게 색인을 생성합니까?대형 웹 사이트의 로그인 표에 대한 도움말

디보

+0

왜? 재미로? 그의 질문 중 어떤 부분이 그것에 의해 답변을 받았습니까? –

답변

1

대부분의 대기업은 신원 관리를 위해 설계된 시스템을 사용합니다. Active Directory는 하나이며 사이트 Minder는 다른 것입니다. 여기에서 열린 ID는 stackoverflow에서 또 하나입니다.

실제 질문은 테이블과 인덱스의 작동 방식입니다.

너무 큰 질문입니다. 그러나 간단히 말해 데이터베이스는 3 ~ 5 블록을 읽음으로써 10 억 개의 행 테이블에서 고유 항목을 찾을 수 있습니다. 각 블록은 10ms마다 30-50 밀리 초입니다.

데이터베이스는 테이블을 변경할 때마다 인덱스 유지 관리를 수행합니다. 동시에 발생합니다. 당신은 그것을 관리 할 필요가 없습니다.

+0

알았어, 아프다. 질문을 간단하게 만들어 보라. 만약 내가 기본 키가 사용자/로그인 계정 (구글처럼)과 사용자 "johnsmith"가 로그인하는 수백만 개의 항목이있는 1 개의 테이블을 가지고 있다면, 전체 테이블을 검색하지 못하게 만드는 방법 나는 오랜 시간이 걸릴 것이라고 믿습니다. 또한 사용자 이름은 지속적으로 업데이트됩니다. – Dibo

+0

왜 이것이 "사실이라고"믿는가? 너 해봤 어? johnsmith가 PK라면, 얼마나 오래 걸릴지 놀랄 것입니다. –

관련 문제