Google이 하드 드라이브 검색보다 훨씬 빠른 이유는 무엇입니까?


251

Windows 7 또는 Windows XP에서 HD로 파일을 검색하면 프로세스를 완료하는 데 몇 분이 걸립니다. Google에서 검색어를 입력하면 답변이 밀리 초 단위로 화면에 표시됩니다.

Google이 내 하드 드라이브보다 몇 배 더 큰 인터넷을 검색 할 수 있습니까? OS가 내 컴퓨터를 검색 할 수있는 것보다 빠릅니다. 컴퓨팅 성능과 올바른 알고리즘의 문제입니까?


99
드라이브의 모든 파일을 색인화하고 색인 만 검색해 보셨습니까? 모든 것을 시도 하고보십시오.
Karan

11
구글 바탕 화면은 Windows를 위해 그것을 사용 "도"...
rogerdpack

14
Google은 하드 드라이브의 파일이 아닌 RAM에 저장된 색인을 통해 검색합니다.
Ari

13
색인은 중요하지만 Google은 map-reduce 알고리즘을 사용하여 대규모 병렬 작업을 수행합니다. 컴퓨터에 코어가 몇 개 있더라도 Google에 더 많은 코어가 있음을 보증합니다.
Adam Wuerl

41
데스크톱 검색 구현에서 색인 생성을 배제하는 것은 없습니다. 그러나 Google은 a) 쿼리를 병렬화 할 수있는 매우 빠른 CPU / 서버가 많이 있습니다. b) 디스크에 액세스 할 필요가없는 매우 빠른 RAM. c) 사용하는 것보다 훨씬 빠른 하드 드라이브. d) 관련된 알고리즘을 최적화하기 위해 많은 똑똑한 엔지니어. (예를 들어, 자주 사용되는 (많은) 많은 쿼리에 대한 결과를 캐싱하는 것은 훨씬 더 중요합니다.) 이는이 두 가지 중 하나에 대한 질문 일뿐 아니라 이러한 모든 것이 함께 작용합니다.
millimoose

답변:


211

Google은 인터넷을 검색하지 않고 색인을 검색합니다. Google은 지속적으로 인터넷을 검색하고 색인을 생성하는 거대한 서버 팜을 보유하고 있습니다. 인덱싱되지 않은 하드 드라이브를 검색하는 것처럼이 프로세스에는 많은 시간이 걸립니다. Windows 7에는 하드 드라이브를 색인화하는 옵션이 있습니다. 이 프로세스는 처음에는 시간이 좀 걸리지 만 일단 실행되면 검색 결과가 즉시 나타납니다.

Google 검색의 작동 방식에 대한 자세한 내용을 보려면 Google의 " 검색 방법 "기사 또는 " 작동 방식 : Google 작동 방식 " 기사를 참조하십시오 .


46
마지막 단락 : 이 링크 는 훨씬 더 권위 있고 전반적으로 좋습니다.
ulidtko

4
호기심을 용서하지만 파일 시스템 이 디스크의 파일을 이미 색인화 하지 않습니까? 파일 탐색기에서 볼 수있는 것은 디스크의 실제 물리 섹터에 대한 단순한 링크 색인이 아닙니까? 그렇다면 왜 더 많은 인덱싱을해야합니까?
Adi

9
@Adnan 파일 시스템 색인은 파일이 실제 미디어에 저장되는 위치를 찾도록 설계되었습니다. 장의 시작 페이지를 알려주는 책의 색인과 같습니다. 검색 색인은 컨텐츠를 찾도록 설계되었습니다. 좋은 검색 색인은 파일 이름뿐만 아니라 pdf, doc, html 등과 같은 알려진 파일 형식의 내용을 색인화합니다. 고급 색인은 동의어를 사용하므로 "car"를 검색하면 다음과 같은 결과를 얻을 수 있습니다. 단어 "자동차".
Simon

3
@Adnan, 파일 시스템은 실제로 "인덱스"가 아니라 파일 이름의 트리입니다. 이러한 트리를 검색하는 것은 구조가 검색에 최적화되어 있지 않기 때문에 빠르지 않습니다. OTOH google (및 데이터베이스)은 특정 항목을 빠르게 검색 할 수있는 특정 정렬 된 인덱스 구조를 사용합니다. 그럼에도 불구하고 모든 검색이 그러한 색인의 이점을 얻을 수있는 것은 아니며 느릴 것입니다.
PiRX

8
@Adnan 의미에서 FS 트리 최적화 에 대한 검색. 알려진 위치를 처리 할 수 ​​있도록 설계되었습니다. 루트 노드에서 루트 아래에있는 디렉토리와 파일 목록 만 있으면됩니다. 모든 디렉토리는 그 안에있는 파일과 그 아래의 디렉토리에 대해서만 알고 있습니다. 알려진 파일 경로에 액세스하는 것은이 과정에서 매우 빠르며 많은 유연성을 제공하지만 검색 할 파일의 전체 목록은 없습니다. 항상 디렉토리 트리를 내려 와야하므로 많은 고유 한 조회가 필요합니다.
Phoshi

71

Google은 전화 번호부에서 색인 (색인)을 검색하는 것과 같습니다. Windows 검색은 색인되지 않은 건물의 숫자를 확인하는 것과 유사합니다.

또 다른 비유는 잘 정리 된 도서관과 카드 카탈로그를 살펴 보거나 매번 정리되지 않은 책 더미를 정렬하는 것입니다.

기본적으로 검색하기 전에 수행 한 모든 조직 작업이 빠르게 이루어집니다.

참고 : 색인이 생성 된 위치를 검색 할 때 Windows 검색도 반응이 빠릅니다.


5
또는 : 교과서를 스캔하고 (상세한) 목차를보고
보보 보보

36

Google의 사업은 검색이며 광고를 게재하는 데 중점을두고 있습니다. Google에서 데이터를 매우 빠르게 반환하기 위해 수행하는 작업은 다음과 같습니다.

  • 먼저 MapReducePageRank 를 사용 하여 월드 와이드 웹의 종합 색인을 생성합니다. 정기적으로 업데이트되므로 결과가 최신입니다.
  • 이 색인은 Google의 많은 서버에 분산되어 복제됩니다.
  • 쿼리가 여러 서버로 분할되어 반환 된 결과를 작성합니다. 이를 통해 프로세스를 고도로 병렬화 할 수 있습니다.
  • 일반적인 쿼리와 결과가 캐시되므로 검색을 전혀 수행 할 필요가 없습니다.

검색 작동 방식에 대한 자세한 내용은이 링크를 참조하십시오.

상대적으로 색인이없는 하드 드라이브 검색은 드라이브의 모든 파일을 읽어야하므로 시간이 오래 걸릴 수 있습니다.

또한 파일 시스템과 색인을 트리로 생각할 수 있습니다. 파일 시스템에서 트리의 루트는 최상위 폴더이며 해당 폴더에 분기 (폴더) 또는 잎 (파일)이있을 수 있습니다. 각 분기에는 더 많은 폴더에 대한 하위 분기가 있고 더 많은 파일에 대한 분기가있을 수 있습니다. 이 구조를 검색하려면 찾고있는 잎을 찾기 위해 모든 가지 (및 하위 가지)를 '보행'해야합니다. 인덱스는이 계층을 뒤집습니다. 베이스는 알파벳이되고 모든 하위 브랜치는 이것에 대해 더 세분화됩니다. 잎은 찾고자하는 품목의 위치입니다. 이 구조를 검색하면 트리의 큰 섹션을 정리 (제외) 할 수 있습니다 (예 : 검색어의 첫 글자로 25 개의 다른 가지를 바로자를 수 있습니다).


30

약 4 년 전 나도 같은 질문을했다. 그러나 내 연구를 둘러 보았을 때 나는 그들이 가장 정교한 검색 알고리즘과 그 모든 것을 생각해 내기 위해 최선을 다한다는 사실 외에도 결국 읽었습니다.

그들이 사용한 주요 디자인 중 하나는 내가 생각하는 map reduce 아이디어와 비슷합니다. 농장에는 값싼 컴퓨터가 많이 있습니다. 이 컴퓨터들에 약 80 기가의 하드 디스크 공간 만두고 약 16 기가 RAM 또는 더 나은 32 기가 RAM을 갖도록하십시오 (가능한 한). 그것들은 그들이 디자인 한 정교한 시스템을 통해 연결되어 있음을 기억하십시오. 그러나 여기서 핵심 아이디어는 쿼리가 제출 될 때 RAM으로 새로운 데이터를 검색하려고 시도하는 시스템으로 쿼리가 전달된다는 것입니다. 저렴한 컴퓨터가 많이 있다는 것을 명심하십시오. 데이터는 RAM에 있기 때문에 하드 디스크보다 훨씬 빠릅니다. 그러나 그것들이 크게 도움이되는 정교한 (인덱싱 및 모든 알고리즘) 시스템을 가지고 있음을 잊지 마십시오.

Google이 모든 것을 저장한다는 것을 알고 있기 때문에이 데이터는 최신 정보 일 필요는 없습니다. RAM에 있어야 할 것과 마찬가지로 스플레이 트리와 동일한 원칙을 사용하여 사람들이 RAM에서 가장 많이 검색하는 것을 유지하고 가장 적게 검색된 항목을 하드 디스크로 플러시 할 수 있습니다.

이 작은 아이디어는 색인 작성 및 다른 사람들이 답변에서 언급 한 다른 모든 것들과 함께 하드 드라이브 검색보다 빠른 이유 중 하나 일 수 있습니다.

  • 다른 검색을 기반으로 예측할 수있는 기능입니다.
  • 데이터는 우리 모두가 알고있는 RAM에 가장 빠릅니다.
  • 여러 시스템을 사용하여 분할 및 정복
  • 검색이 최우선입니다.

물론 나는 틀릴 수 있지만 이것은 나에게 의미가 있었다. 그리고 나는 배운 것에 만족했습니다.


7
다른 인기있는 포스터가 놓친 것들 중 일부에 못을 박았습니다. Google은 모든 것을 자주 검색하지 않습니다. 확실히 인터넷 전체에, 심지어 자체 캐시에있는 모든 것도 아닙니다. 또한 Google.com에서 검색 할 때 실제 검색은 실시간으로 이루어지지 않고 Google에서 지난 몇 개월 동안 이미 생성하여 구성한 검색 결과를 빠르게 복사하여 표시합니다. 생산 / 조직화 프로세스를 설명하는 것은 매우 복잡하지만 누군가가 말한 것처럼 "인덱싱"이라고하는 것은 모호 할 수 있습니다.
Joseph Myers

그것은 생산 / 조직 과정을 설명하는 것이 매우 복잡 ... . 그렇습니다, 그것이 제가 그것의 정교한 부분이라고하는 것입니다. 엄지 손가락을 잘 요약했습니다.
터치

1
@JosephMyers Google은 지속적으로 색인을 생성합니다. 수퍼 유저에게 질문을 빨리 검색하면 (예 : google.com/search?q=google+faster+than+a+hard+drive ) 검색 결과에 나타납니다.
Brad Patton

@Touch RAM의 검색에 동의합니다. 이것은 캐싱에 대한 내 게시물의 네 번째 요점입니다
Brad Patton

@ 브래드 패튼 트루. 그것이 내가 배운 것의 기초이기 때문에 나는 그것을 언급해야했습니다. 그리고 지속적으로 인덱싱에 관한 부분은, 인덱싱 부분은 일종의 구성 부분입니다. 따라서 성명서에는 현재 색인이 생성 된 것이 아니라 조직 된 것을 검색한다고 명시되어 있습니다. 결과가 표시되는 이유에 대해서는 stackoverflow가 많은 웹 사이트보다 신뢰성이 높으므로 더 자주 색인을 생성하는 것이 좋습니다. 그것이 나타나는 이유입니다. 그렇지 않은 경우 검색 결과가 표시되기까지 하루나 이틀 정도 기다려야합니다. 나는 그것이 JosephMyers 씨가 말한 것이라고 생각합니다.
터치

20

Google은 매우 정교한 색인 시스템, 병렬 작업 및 표준 독립형 컴퓨터에서 사용할 수없는 여러로드 밸런싱 기술을 사용합니다. 웹 검색과 하드 디스크 파일 검색 사이에는 유사성이 거의 없으며 Google은 특정 사용 사례에 맞게 크게 최적화합니다.


4

2004 년 일부 Google 직원은 MapReduce 라는 논문을 발표했으며 그 이후로 수백 배나 향상되었습니다.

또한 HDFS (Hadoop Distribud File System) 와 같은 분산 파일 시스템 인 Google File System (GFS) 을 사용하며 목적에 맞게 최적화되었습니다. 또한 내가 아는 한 GFSHDFS 보다 천 배 더 빠릅니다 .


2

나는 너무 오래 전에이 질문이 있었기 때문에 이것에 추가 할 것이라고 생각하고 Google이 표면에서 무엇을하는지 설명하는 훌륭한 비디오를 발견했습니다. 보고 흥미 롭습니다.

유튜브 1에
구글 유튜브 2에 구글

그는 조금 더 깊어 지지만 기술적으로 길을 잃을 정도로 깊지는 않습니다.

건배.


1

여기 멋진 답변에 뭔가를 추가하십시오. Google은 인기있는 검색어를 캐싱합니다. 이러한 검색 결과는 메모리에 상주합니다. 따라서 검색이 많은 항목을 검색하면 거의 즉시 결과가 표시됩니다.


0

간단한 수준으로 질문에 대답하려면 : 뒷면에 키워드 색인이있는 교과서가 있다고 가정하십시오.

하드 디스크를 검색하는 것은 (적어도 적어도 순진한) 책을 한 페이지 씩 살펴 보는 것과 같으며 각 행에서 키워드가 나타나는지 스캔합니다.

인터넷 검색 엔진을 사용하는 것은 색인에서 키워드를 찾은 다음 제공하는 페이지 번호로 직접 전환하는 것과 같습니다.

물론 실제로는 이것보다 훨씬 복잡합니다. 예를 들어, 일반적으로 인터넷과 다른 종류의 정보를 하드 디스크에서 검색합니다. 그러나 제거해야 할 기본 사항은 검색 엔진이 색인을 사용하고 있다는 것입니다. 그것은 이미 한 단어 씩 "책"을 겪었으며, 단어의 위치와 함께 단어 목록을 정리했으며, 목록을 빠르게 찾을 수있는 방식으로 목록을 구성했습니다. .

예를 들어, 책에서 색인 구성을 생각해보십시오. 첫째, 일반적으로 알파벳순으로 정렬되며 둘째로 글자 제목이있을 수 있습니다. 색인에서 단어를 찾으면 원하는 문자로 시작하는 단어 목록을 바로 볼 수 있습니다. 그리고 목록이 정렬되어 있기 때문에 목록에서 원하는 단어를 쉽게 찾거나 누락 된 단어를 빨리 알 수 있습니다.

요약하자면, 하드 디스크에는 책이 있고 검색 엔진에는 색인이 있습니다. 다른 사람들이 지적했듯이 소프트웨어를 사용하여 하드 디스크를 색인화 할 수 있으며 전체 대신 색인을 사용할 수 있습니다.


-1

Google이 등장 Auto Complete하고 사용한 이유 중 하나 AJAX는 속도 문제였습니다. 입력 할 때 단어가 백그라운드로 전송되므로 아직 완료하지 않은 상태에서 Google이 작업의 일부를 수행 할 수 있습니다. 또한 색인은 여러 단어 조합을 기반으로합니다 (페이지 하단에서 제안으로 찾을 수 있음). 현재 네트워크 속도는 하드 드라이브보다 높으며 해당 인덱스의 대부분은 팜에있는 서버의 RAM에 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.