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

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



답변

큰 테이블

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

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을 보여주는 비디오를 찾을 수 있습니다 .


답변

그것은 그들이 스스로 만든 것입니다-그것은 Bigtable이라고합니다.

http://en.wikipedia.org/wiki/BigTable

데이터베이스에 Google의 논문이 있습니다.

http://research.google.com/archive/bigtable.html


답변

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

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

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

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

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


답변

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

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


답변

Google은 모든 주요 애플리케이션에 BigTable을 사용하지만 다른 (아마도) 앱 에도 MySQL사용 합니다.


답변

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

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


답변

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

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

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

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

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