20 억 명의 사용자가 등록 된 포털이 있습니다. 기존 데이터베이스에 20 억 명의 사용자를 모두 저장하면 특정 사용자가 로그인을 시도 할 때 특정 사용자에 대한 데이터를 검색하는 데 더 많은 시간이 걸립니다. 이 상황을 어떻게 처리하여 사용자가 신속하게 응답하는지 확인하십시오.20 억 명의 사용자를 저장하는 방법은 무엇입니까?
답변
실용적인지는 모르지만, 이론적으로는 나무 구조를 사용할 수 있습니다. 오래 전부터 CS 클래스를 기억하면 나무는 O (ln)이므로 10 억 (2^30)이면 검색을 위해 30 개의 연산 만 필요합니다. 그게 CS의 아름다움 ....
그것에 대한 트리 구조를 구현, 나는 전혀 모른다.
대용량의 데이터를 저장하기 위해 최적화 된 트리 구조의 패밀리가 있습니다 (즉, 주 메모리에 맞추기에는 너무 큽니다). 그들은 B-Trees라고 불립니다. 그리고 이제는 모든 데이터베이스가 인덱스를 구현하는 방법을 추측합니다. –
# 마이클 보르그 워드트 - 맞습니다. 나는 실용적인 "나는 이것을해야한다"는 질문이나 이론적 인 질문이 있는지를 몰랐다. 숙제 나 인터뷰 질문 같은데 ... – hvgotcodes
괜찮은 현대 하드웨어의 기존 데이터베이스가 2 억 개의 레코드가 있더라도 로그온 정보를 매우 빠르게 검색 할 수 있었던 특별한 이유는 없습니다. 결국 간단히 색인 된 검색 일뿐입니다 (사용자 ID로 색인화하는 것을 기억 했습니까?)
정말 큰 컴퓨터에서는 대부분 RAM에 적합 할 수도 있습니다.
그러나 실제로 이것을 규모에 맞게 설계하려고한다면 Cassandra과 같은 것을 볼 것입니다. 이것은 고 가용성의 분산 NoSQL 데이터베이스로, 기본적으로 Google, Facebook 등에서 사용하는 것과 동일한 종류의 아키텍처입니다.
포털 사용자가 2 억 명인 경우 로그인은 수행되는 모든 쿼리 중 적은 양입니다.
여기에서의 문제는 1 번의 로그인에 걸리는 시간이 아니라 모든 사용자의 1 %가 동시에 활성화되는 경우입니다.
20 억 명의 사용자가 한 대륙에 들어 가지 않으므로 분산 데이터베이스 서버를 사용할 수 있습니다. 분산 데이터베이스 서버는 각자 자신의 세계에 서비스를 제공합니다. 그리고 백그라운드에서 (누군가 다른 대륙으로 여행 할 경우) 그들을 동기화 할 수 있습니다.
자원 (시간, 돈, 직원)을 보유하고 있다면 google처럼 자신 만의 bigtable 데이터베이스를 만들 수 있습니다 (20 억 명의 사용자가 돈과 직원을 보유하고있을 가능성이 있음). 그러나 구현할 정상적인 관계형 데이터베이스 이.
- 1. 트렌드 1 억 + 행
- 2. iPhone 사용자를 50 명의 특정 사용자에게 배포하는 방법은 무엇입니까?
- 3. 30 명의 사용자를 기반으로 루프를 만드시겠습니까?
- 4. 사용자를 로그인으로 제한하는 방법은 무엇입니까?
- 5. 다른 사용자 이름/암호로 100 명의 사용자를 스트레스 테스트하는 방법
- 6. 사용자를 방해하지 않고 그래픽 컨텍스트의 일부분을 저장하는 방법은 무엇입니까?
- 7. DB에 현재 로그온 한 사용자를 저장하는 방법은 무엇입니까?
- 8. 1 대의 VM 서버에서 15-20 명의 개발자를 실행하십시오.
- 9. 수백 명의 수신자에게 메일을 보내는 방법은 무엇입니까?
- 10. Apple의 10 억 카운트 다운을 추출하는 방법은 무엇입니까?
- 11. 웹 사이트에서 지불을 위해 두 명의 사용자를 신용 카드로 연결하는 가장 좋은 방법은 무엇입니까?
- 12. OU에 3000 명의 사용자가있는 경우 DirectorySearcher를 사용하여 모든 사용자를 찾는 방법은 무엇입니까?
- 13. 사용자를 페어링하는 방법은 무엇입니까? (Omegle.com과 유사)
- 14. 시간대를 저장하는 방법은 무엇입니까?
- 15. 변수에 저장하는 방법은 무엇입니까?
- 16. 권한이없는 사용자를 예방하는 방법은 무엇입니까?
- 17. SOAP로 사용자를 인증하는 방법은 무엇입니까?
- 18. 현재 사용자를 정의하는 방법은 무엇입니까?
- 19. 세션간에 사용자를 지속시키는 방법은 무엇입니까?
- 20. 번역 & % 20 % 26 % 20
- 21. 내 사이트에서 사용자를 차단하는 효과적인 방법은 무엇입니까?
- 22. Devise 사용자를 효율적으로 시드하는 방법은 무엇입니까?
- 23. 리퍼러를 저장하는 가장 좋은 방법은 무엇입니까?
- 24. 동일한 mysql 쿼리에서 3 명의 다른 사용자를 찾고 싶습니다
- 25. MYSQL 위치 별 상위 10 명의 사용자를 쿼리하십시오.
- 26. 수백 명의 사용자가 매 순간 액세스 할 수있는 PHP 변수를 저장하는 방법은 무엇입니까?
- 27. 세션에 대해 20 분의 시간 제한을 강제 설정하는 방법은 무엇입니까?
- 28. 더 많은 사용자를 지원하기 위해 asp.net 앱을 업그레이드하는 방법은 무엇입니까?
- 29. 동일한 이름의 ActiveDirectory에있는 두 명의 사용자
- 30. php/mysql에 인벤토리 배열을 저장하는 방법은 무엇입니까?
세계에서 3 명마다 1 명이이 포털에 등록되어 있습니까? 질문이 너무 막연합니다. – Fosco
데이터베이스를 지우십시오 ... 심각하게 생각하지 마십시오. 오해하지 마십시오. 온라인 커뮤니티에 2 억 명의 사용자가 있다면, 스프링 청소에 대해 생각해야합니다. 아니면 페이스 북을 16 억 사용자 ... – Bobby
"20 억 명의 사용자가 등록 된 포털이 있습니다." 그건 대담한 주장입니다. – David