Google은 어떤 데이터베이스를 사용합니까?


370

Oracle 또는 MySQL입니까, 아니면 스스로 구축 한 것입니까?


187
데이터베이스 스택 오버플로가 무엇을 사용하는지 알아 내고 싶을 때 Google을 사용합니다.
flybywire

340
야, 그를 강타하지 말라, 나는 구글 검색 롤에서 여기에 결국.
Shawn Mclean 2016 년

141
구글에서 "구글 데이터베이스"를 검색 한 결과가이 페이지에 올랐다는 것이 아이러니인가?
Patrick Szalapski

89
@Patrick Szalapski는 스택 오버플로 상황처럼 들립니다.
Thomas

5
검색하기 전에 Google
Abdul Saboor

답변:


581

큰 테이블

구조화 된 데이터를위한 분산 스토리지 시스템

Bigtable은 수천 개의 상용 서버에서 페타 바이트 규모의 데이터로 확장 할 수 있도록 설계된 구조화 된 데이터를 관리하기위한 분산 스토리지 시스템 (Google에서 구축)입니다.

Google의 많은 프로젝트는 웹 색인 생성, Google 어스 및 Google Finance를 포함하여 Bigtable에 데이터를 저장합니다. 이러한 애플리케이션은 데이터 크기 (URL에서 웹 페이지, 위성 이미지까지) 및 대기 시간 요구 사항 (백엔드 대량 처리에서 실시간 데이터 제공까지) 측면에서 Bigtable에 대해 매우 다른 요구를합니다.

이러한 다양한 요구에도 불구하고 Bigtable은 이러한 모든 Google 제품에 대해 유연한 고성능 솔루션을 성공적으로 제공했습니다.

일부 기능

  • 빠르고 매우 큰 규모의 DBMS
  • 희소하고 분산 된 다차원 정렬 맵으로, 행 지향 및 열 지향 데이터베이스의 특성을 공유합니다.
  • 페타 바이트 범위로 확장되도록 설계
  • 수백 또는 수천 대의 컴퓨터에서 작동합니다
  • 시스템에 시스템을 더 쉽게 추가하고 재구성없이 해당 리소스를 자동으로 활용하기 시작합니다.
  • 각 테이블에는 여러 차원이 있습니다 (하나는 시간 필드이므로 버전 관리가 가능함).
  • 테이블은 여러 태블릿으로 분할되어 GFS (Google File System)에 최적화되어 있습니다. 태블릿의 크기는 ~ 200MB가되도록 선택한 행을 따라 분할 된 테이블 세그먼트입니다.

건축물

BigTable은 관계형 데이터베이스가 아닙니다. 조인을 지원하지 않으며 풍부한 SQL 유사 쿼리도 지원하지 않습니다. 각 테이블은 다차원 희소 맵입니다. 테이블은 행과 열로 구성되며 각 셀에는 타임 스탬프가 있습니다. 타임 스탬프가 다른 여러 버전의 셀이있을 수 있습니다. 타임 스탬프는 "이 웹 페이지의 'n'버전 선택"또는 "특정 날짜 / 시간보다 오래된 셀 삭제"와 같은 작업을 허용합니다.

큰 테이블을 관리하기 위해 Bigtable은 테이블을 행 경계에서 분할하여 태블릿으로 저장합니다. 태블릿은 약 200MB이며 각 컴퓨터는 약 100 개의 태블릿을 저장합니다. 이 설정을 통해 단일 테이블의 태블릿을 여러 서버에 분산시킬 수 있습니다. 또한 세분화 된로드 밸런싱이 가능합니다. 한 테이블이 많은 쿼리를 수신하는 경우 다른 태블릿을 흘리거나 통화 중 테이블을 너무 바쁘지 않은 다른 컴퓨터로 옮길 수 있습니다. 또한 컴퓨터가 다운되면 태블릿이 다른 많은 서버에 분산되어 특정 컴퓨터에 대한 성능 영향이 최소화 될 수 있습니다.

테이블은 변경 불가능한 SSTable과 로그의 꼬리 (시스템 당 하나의 로그)로 저장됩니다. 컴퓨터에 시스템 메모리가 부족하면 Google 독점 압축 기술 (BMDiff 및 Zippy)을 사용하여 일부 태블릿을 압축합니다. 작은 압축에는 몇 개의 태블릿 만 포함되며 주요 압축에는 전체 테이블 시스템이 포함되며 하드 디스크 공간이 복구됩니다.

Bigtable 태블릿의 위치는 셀에 저장됩니다. 특정 태블릿의 조회는 3 계층 시스템으로 처리됩니다. 클라이언트는 하나만있는 META0 테이블을 가리 킵니다. META0 테이블은 조회되는 태블릿의 위치를 ​​포함하는 많은 META1 태블릿을 추적합니다. META0과 META1은 프리 페치와 캐싱을 많이 사용하여 시스템의 병목 현상을 최소화합니다.

이행

BigTable은 Google File System (GFS)을 기반으로하며 로그 및 데이터 파일의 백업 저장소로 사용됩니다. GFS는 테이블 데이터를 유지하는 데 사용되는 Google 독점 파일 형식 인 SSTable에 대한 안정적인 저장소를 제공합니다.

BigTable이 많이 사용하는 또 다른 서비스 는 가용성이 높고 안정적인 분산 잠금 서비스 인 Chubby 입니다. Chubby를 사용하면 클라이언트가 잠금을 수행하여 메타 데이터와 연관시킬 수 있습니다.이를 유지 메시지를 Chubby로 다시 보내서 갱신 할 수 있습니다. 잠금은 파일 시스템과 같은 계층 적 명명 구조에 저장됩니다.

Bigtable 시스템 에는 세 가지 주요 서버 유형 이 있습니다.

  1. 마스터 서버 : 태블릿을 태블릿 서버에 할당하고 태블릿의 위치를 ​​추적하고 필요에 따라 작업을 재분배합니다.
  2. 태블릿 서버 : 태블릿 및 분할 태블릿이 크기 제한 (보통 100MB-200MB)을 초과하면 태블릿에 대한 읽기 / 쓰기 요청을 처리합니다. 태블릿 서버에 장애가 발생하면 100 개의 태블릿 서버가 각각 1 개의 새 태블릿을 픽업하고 시스템이 복구됩니다.
  3. 잠금 서버 : Chubby 분산 잠금 서비스 인스턴스. BigTable 내에서 많은 작업을 수행하려면 쓰기를위한 태블릿 열기, 한 번에 하나 이상의 활성 마스터가 없는지 확인하고 액세스 제어 확인을 포함하여 잠금을 획득해야합니다.

Google 연구 논문의 예 :

대체 텍스트

웹 페이지를 저장하는 예제 테이블 조각입니다. 행 이름은 반전 된 URL 입니다. 컨텐츠 열 패밀리에는 페이지 contents 가 포함되고 앵커 컬럼 패밀리에는 페이지를 참조하는 모든 앵커텍스트가 포함 됩니다. CNN의 홈 페이지는 Sports Illustrated 및 MY-look 홈 페이지 모두에서 참조되므로 행에는 anchor:cnnsi.com및 이라는 열이 포함 anchor:my.look.ca됩니다. 각 앵커 셀에는 하나의 버전이 있습니다 . 내용 열에는 타임 스탬프 , 및 , 세 가지 버전이 있습니다.t3t5t6

API

BigTable의 일반적인 작업은 테이블 및 열 패밀리 생성 및 삭제, 데이터 쓰기 및 행에서 열 삭제입니다. BigTable은 API에서 애플리케이션 개발자에게이 기능을 제공합니다. 트랜잭션은 행 수준에서 지원되지만 여러 행 키에서는 지원되지 않습니다.


여기 연구 논문의 PDF 링크가 있습니다.

여기 에서 워싱턴 대학 강의에서 Google의 백엔드에 사용되는 Bigtable 컨텐츠 스토리지 시스템에 대해 설명하는 Google Jeff Dean을 보여주는 비디오를 찾을 수 있습니다 .


4
처음부터 또는 일부 제품을 기반으로 만들어진 것인지 아는 사람이 있습니까? 나는 구글이 오라클을 한 번 사용한 곳을 기억하지 못하는 곳을 들었지만 오라클이하지 않거나 할 수없는 수정이 필요하기 때문에 떨어 뜨렸다. 나는 링크를 얻으려고 노력할 것이다.
OscarRyz

5
다른 핵심 역량 (웹 서버, GFS 등)과 마찬가지로 처음부터 시작되었습니다.
Matt J

5
압축 알고리즘 (BMDiff 및 Zippy)에 대한 정보를 찾고 있었고 현재 Zippy가 Snappy라고하며 Google 코드에 게시되어 있음을 발견했습니다. code.google.com/p/snappy
helios

7
이제 그들은 스패너, 빅 테이블의 후속를 사용
deltonio2

따라서 Mongodb 또는 Marklogic과 같은 nosql 데이터베이스와 유사합니다.
stuckedoverflow


32

Spanner 는 Google의 전 세계에 분산 된 관계형 데이터베이스 관리 시스템 (RDBMS)이며 BigTable 의 후속 제품 입니다. Google은 각 테이블에 기본 키가 있어야하므로 순수한 관계형 시스템이 아니라고 주장합니다.

여기 에 종이의 링크가 있습니다.

스패너는 Google의 확장 가능하고 여러 버전이며 전 세계적으로 분산되고 동 기적으로 복제 된 데이터베이스입니다. 전 세계적으로 데이터를 배포하고 외부 일관성있는 분산 트랜잭션을 지원하는 최초의 시스템입니다. 이 백서에서는 스패너의 구조, 기능 세트, 다양한 설계 결정의 근거, 클록 불확실성을 노출시키는 새로운 시간 API에 대해 설명합니다. 이 API와 그 구현은 과거의 비 차단 읽기, 잠금없는 읽기 전용 트랜잭션 및 모든 스패너에서 원자 스키마 변경과 같은 외부 일관성 및 다양한 강력한 기능을 지원하는 데 중요합니다.

Google이 발명 한 또 다른 데이터베이스는 Megastore 입니다. 초록은 다음과 같습니다.

Megastore는 오늘날의 대화식 온라인 서비스 요구 사항을 충족시키기 위해 개발 된 스토리지 시스템입니다. Megastore는 NoSQL 데이터 스토어의 확장 성과 전통적인 RDBMS의 편리함을 새로운 방식으로 결합하고 강력한 일관성 보장과 고 가용성을 제공합니다. 세분화 된 데이터 파티션 내에서 완전히 직렬화 가능한 ACID 시맨틱을 제공합니다. 이 파티셔닝은 합리적인 지연 시간으로 광역 네트워크를 통해 각 쓰기를 동기식으로 복제하고 데이터 센터 간의 완벽한 페일 오버를 지원합니다. 이 백서에서는 Megastore의 의미 및 복제 알고리즘에 대해 설명합니다. 또한 Megastore로 구축 된 광범위한 Google 프로덕션 서비스를 지원 한 경험을 설명합니다.


스패너가 비공개 소스 프로젝트라는 것은 부끄러운 일입니다. 설명에 따르면, 나는 그것을 내 프로젝트에도 사용하고 싶습니다.
Mikko Rantalainen

2
@MikkoRantalainen Apache Hadoop 생태계 또는 CockroachDB를 확인하고 싶을 수도 있습니다 (바퀴 바퀴가 알파 임)
16:06

감사합니다. CockroachDB가 흥미로워 보입니다. 어떤 종류의 성능이 있는지 확인하기 위해 테스트해야합니다. 기능은 내가 갖고 싶은 물건처럼 보입니다.
Mikko Rantalainen

1
Spanner는 2017 년부터 모든 사용자가 Google 클라우드에서 사용할 수있게되었습니다. cloud.google.com/spanner
Miscreant

19

다른 사람들이 언급했듯이 Google은 BigTable이라는 자체 개발 솔루션을 사용하여 실제에 대한 몇 가지 논문을 발표했습니다.

아파치 사람들은이 논문에서 제시 한 아이디어를 HBase 라고 한다 . HBase는 대규모 Hadoop 프로젝트의 일환으로 사이트에 따르면 "대량의 데이터를 처리하는 응용 프로그램을 쉽게 작성하고 실행할 수있는 소프트웨어 플랫폼"입니다. 일부 벤치 마크는 매우 인상적입니다. 그들의 사이트는 http://hadoop.apache.org에 있습니다.


링크는 404를 찾을 수 없습니다
Shivam Jha


9

BigTable은 MySQL과 같은 관계형 데이터베이스가 아니라 매우 다른 특성을 가진 거대한 (분산 된) 해시 테이블 이라는 것을 아는 것도 편리합니다 . Google AppEngine 플랫폼 에서 BigTable (제한된 버전)을 직접 사용할 수 있습니다.

위에서 언급 한 Hadoop 옆에는 BigTable과 동일한 문제 (확장 성, 가용성)를 해결하려는 다른 많은 구현이 있습니다. 나는 그들의 대부분을 나열 어제 좋은 블로그 게시물을보고 여기 .


6

Google은 주로 Bigtable을 사용합니다.

Bigtable은 매우 큰 규모로 확장되도록 설계된 구조화 된 데이터를 관리하기위한 분산 스토리지 시스템입니다.

자세한 내용은 여기 에서 문서를 다운로드 하십시오 .

Google은 또한 일부 애플리케이션에 Oracle 및 MySQL 데이터베이스를 사용합니다.

더 추가 할 수있는 정보는 대단히 감사합니다.


17
Google also use Oracle-참조가 필요합니다.
사용자

@user cloud.google.com/sql/docs ? 개발자가 MySQL을 사용할 수 있다면 Google은 적어도 MySQL 및 Bigtable을 사용하여 "데이터베이스 변환기"를 작성해야합니다.

1

Google 서비스에는 폴리 글 로티 지속 아키텍처가 있습니다. BigTable은 YouTube, Google Search, Google Analytics 등과 같은 대부분의 서비스에서 활용됩니다. 검색 서비스는 처음에 색인 인프라에 MapReduce를 사용했지만 나중에 카페인 출시 중에 BigTable로 전환했습니다.

Google Cloud 데이터 스토어는 Google에서 내부 및 외부 사용자를 대상으로 100 개가 넘는 애플리케이션을 생산하고 있습니다. Gmail, Picasa, Google 캘린더, Android 마켓 및 AppEngine과 같은 애플리케이션은 Cloud Datastore 및 Megastore를 사용합니다.

Google 트렌드는 스트림 처리에 MillWheel을 사용합니다. Google Ads는 처음에 MySQL을 사용하여 나중에 맞춤 작성된 분산 관계형 데이터베이스 인 F1 DB로 마이그레이션했습니다. Youtube는 Vites와 함께 MySQL을 사용합니다. Google은 Google 파일 시스템을 통해 상품 서버에 엑사 바이트의 데이터를 저장합니다.

출처 : Google 데이터베이스 : Google 서비스는 페타 바이트-엑사 바이트 규모의 데이터를 어떻게 저장합니까?

YouTube 데이터베이스 – 저장 공간이 부족하지 않은 상태에서 얼마나 많은 비디오를 저장합니까?

여기에 이미지 설명을 입력하십시오

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