2010-07-15 2 views
1

20 억 명의 사용자가 등록 된 포털이 있습니다. 기존 데이터베이스에 20 억 명의 사용자를 모두 저장하면 특정 사용자가 로그인을 시도 할 때 특정 사용자에 대한 데이터를 검색하는 데 더 많은 시간이 걸립니다. 이 상황을 어떻게 처리하여 사용자가 신속하게 응답하는지 확인하십시오.20 억 명의 사용자를 저장하는 방법은 무엇입니까?

+6

세계에서 3 명마다 1 명이이 포털에 등록되어 있습니까? 질문이 너무 막연합니다. – Fosco

+5

데이터베이스를 지우십시오 ... 심각하게 생각하지 마십시오. 오해하지 마십시오. 온라인 커뮤니티에 2 억 명의 사용자가 있다면, 스프링 청소에 대해 생각해야합니다. 아니면 페이스 북을 16 억 사용자 ... – Bobby

+1

"20 억 명의 사용자가 등록 된 포털이 있습니다." 그건 대담한 주장입니다. – David

답변

0

실용적인지는 모르지만, 이론적으로는 나무 구조를 사용할 수 있습니다. 오래 전부터 CS 클래스를 기억하면 나무는 O (ln)이므로 10 억 (2^30)이면 검색을 위해 30 개의 연산 만 필요합니다. 그게 CS의 아름다움 ....

그것에 대한 트리 구조를 구현, 나는 전혀 모른다.

+0

대용량의 데이터를 저장하기 위해 최적화 된 트리 구조의 패밀리가 있습니다 (즉, 주 메모리에 맞추기에는 너무 큽니다). 그들은 B-Trees라고 불립니다. 그리고 이제는 모든 데이터베이스가 인덱스를 구현하는 방법을 추측합니다. –

+0

# 마이클 보르그 워드트 - 맞습니다. 나는 실용적인 "나는 이것을해야한다"는 질문이나 이론적 인 질문이 있는지를 몰랐다. 숙제 나 인터뷰 질문 같은데 ... – hvgotcodes

7

괜찮은 현대 하드웨어의 기존 데이터베이스가 2 억 개의 레코드가 있더라도 로그온 정보를 매우 빠르게 검색 할 수 있었던 특별한 이유는 없습니다. 결국 간단히 색인 된 검색 일뿐입니다 (사용자 ID로 색인화하는 것을 기억 했습니까?)

정말 큰 컴퓨터에서는 대부분 RAM에 적합 할 수도 있습니다.

그러나 실제로 이것을 규모에 맞게 설계하려고한다면 Cassandra과 같은 것을 볼 것입니다. 이것은 고 가용성의 분산 NoSQL 데이터베이스로, 기본적으로 Google, Facebook 등에서 사용하는 것과 동일한 종류의 아키텍처입니다.

0

포털 사용자가 2 억 명인 경우 로그인은 수행되는 모든 쿼리 중 적은 양입니다.
여기에서의 문제는 1 번의 로그인에 걸리는 시간이 아니라 모든 사용자의 1 %가 동시에 활성화되는 경우입니다.
20 억 명의 사용자가 한 대륙에 들어 가지 않으므로 분산 데이터베이스 서버를 사용할 수 있습니다. 분산 데이터베이스 서버는 각자 자신의 세계에 서비스를 제공합니다. 그리고 백그라운드에서 (누군가 다른 대륙으로 여행 할 경우) 그들을 동기화 할 수 있습니다.

자원 (시간, 돈, 직원)을 보유하고 있다면 google처럼 자신 만의 bigtable 데이터베이스를 만들 수 있습니다 (20 억 명의 사용자가 돈과 직원을 보유하고있을 가능성이 있음). 그러나 구현할 정상적인 관계형 데이터베이스 이.

관련 문제