programing

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

oldcodes 2023. 10. 16. 22:04
반응형

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

오라클인가 MySQL인가요 아니면 그들이 직접 만든 것인가요?

빅테이블

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

빅테이블은 수천 대의 상용 서버에 걸쳐 페타바이트 단위의 데이터를 매우 큰 크기로 확장할 수 있도록 설계된 구조화된 데이터를 관리하기 위한 분산 스토리지 시스템(Google에서 구축)입니다.

구글의 많은 프로젝트는 웹 색인, 구글 어스, 구글 파이낸스 등 빅테이블에 데이터를 저장합니다.이러한 애플리케이션은 데이터 크기(URL에서 웹 페이지로, 위성 이미지로)와 지연 시간(백엔드 대량 처리에서 실시간 데이터 서빙으로) 측면에서 빅테이블에 매우 다른 요구사항을 제기합니다.

이러한 다양한 요구에도 불구하고 빅테이블은 이러한 모든 구글 제품에 유연한 고성능 솔루션을 제공하는 데 성공했습니다.

일부 기능

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

건축학

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

빅테이블은 거대한 테이블을 관리하기 위해 테이블을 행 경계로 나누어 태블릿으로 저장합니다.태블릿 한 개는 약 200 MB이며, 각 기계는 약 100개의 태블릿을 절약합니다.이 설정을 통해 단일 테이블의 태블릿을 여러 서버에 분산시킬 수 있습니다.또한 세분화된 로드 밸런싱이 가능합니다.한 테이블이 많은 쿼리를 수신하는 경우 다른 태블릿을 삭제하거나 사용 중인 테이블을 사용하지 않는 다른 컴퓨터로 이동시킬 수 있습니다.또한 컴퓨터가 다운되면 태블릿이 다른 여러 서버에 분산되어 특정 컴퓨터에 미치는 성능 영향을 최소화할 수 있습니다.

테이블은 불변의 SStables 및 로그의 꼬리(Tail of Log)로 저장됩니다(머신당 하나의 로그).시스템 메모리가 부족하면 Google 자체 압축 기술(BMDiff 및 Zipy)을 사용하여 일부 태블릿을 압축합니다.사소한 압축은 몇 개의 태블릿에 불과하지만, 주요 압축은 전체 테이블 시스템과 하드 디스크 공간을 복구합니다.

빅테이블 태블릿의 위치는 셀에 저장됩니다.특정 태블릿의 조회는 3계층 시스템으로 처리됩니다.클라이언트는 하나만 있는 META0 테이블에 포인트를 얻습니다.META0 테이블은 조회 중인 태블릿의 위치를 포함하는 많은 META1 태블릿을 추적합니다.META0와 META1 모두 시스템의 병목 현상을 최소화하기 위해 사전 가져오기 및 캐싱을 많이 사용합니다.

실행

빅테이블은 로그 및 데이터 파일의 백업 저장소로 사용되는 GFS(Google File System)를 기반으로 합니다.GFS는 테이블 데이터를 유지하는 데 사용되는 Google 전용 파일 형식인 SStables에 대해 안정적인 스토리지를 제공합니다.

빅테이블이 많이 활용하는 또 다른 서비스는 가용성이 높고 안정적인 분산 잠금 서비스인 Chubby입니다.Chubby는 클라이언트가 잠금을 설정하고 일부 메타데이터와 연결할 수 있으며, Chubby에게 keep alive 메시지를 다시 전송하여 갱신할 수 있습니다.잠금은 파일 시스템과 같은 계층적 명명 구조로 저장됩니다.

빅테이블 시스템에 관심 있는 서버 유형은 크게 세 가지입니다.

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

구글의 연구 논문의 예:

alt text

웹 페이지를 저장하는 예제 테이블의 조각입니다.행 이름이 반전된 URL입니다.내용 열 패밀리는 페이지 내용을 포함하고, 앵커 열 패밀리는 페이지를 참조하는 앵커의 텍스트를 포함합니다.CNN의 홈 페이지는 스포츠 일러스트레이티드와 MY-look 홈 페이지에서 모두 참조되므로 행에 다음과 같은 이름의 열이 포함됩니다.anchor:cnnsi.com그리고.anchor:my.look.ca. 각 앵커 셀에는 하나의 버전이 있고, 내용 열에는 타임스탬프가 있는 세 가지 버전이 있습니다.t3,t5,그리고.t6.

API

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


여기 연구 논문 PDF 링크입니다.

그리고 여기서 여러분은 구글의 제프 딘이 워싱턴 대학에서 한 강연에서 구글의 백엔드에 사용되는 빅테이블 콘텐츠 저장 시스템에 대해 이야기하는 동영상을 보실 수 있습니다.

그것은 그들이 직접 만든 것입니다 - 그것은 빅테이블이라고 불립니다.

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

데이터베이스에는 구글의 논문이 있습니다.

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

스패너(Spanner)는 빅테이블의 후속 제품인 구글의 전세계 분산형 관계형 데이터베이스 관리 시스템(RDBMS)입니다.구글은 각 테이블에 기본 키가 있어야 하기 때문에 순수한 관계형 시스템이 아니라고 주장합니다.

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

Spanner는 Google의 확장 가능한 다중 버전, 전세계적으로 분산되고 동기적으로 복제된 데이터베이스입니다.데이터를 글로벌 규모로 분산하고 외부적으로 일관된 분산 트랜잭션을 지원하는 최초의 시스템입니다.본 논문에서는 Spanner의 구조, 특징 집합, 다양한 설계 결정의 기초가 되는 근거 및 클록 불확실성을 노출하는 새로운 시간 API에 대해 설명합니다.이 API와 그 구현은 외부 일관성과 다양한 강력한 기능을 지원하는 데 매우 중요합니다. 과거의 읽기를 차단하지 않는 것, 잠금이 없는 읽기 전용 트랜잭션, 모든 Spanner에서 원자 스키마 변경 등입니다.

구글이 발명한 또 다른 데이터베이스는 메가스토어입니다.초록은 다음과 같습니다.

메가스토어는 오늘날의 대화형 온라인 서비스의 요구사항을 충족시키기 위해 개발된 스토리지 시스템입니다.메가스토어는 NoSQL 데이터스토어의 확장성과 기존 RDBMS의 편리성을 새로운 방식으로 혼합하여 강력한 일관성 보장과 고가용성을 동시에 제공합니다.우리는 데이터의 세분화된 파티션 내에서 완전히 직렬화 가능한 ACID 시맨틱스를 제공합니다.이러한 파티셔닝을 통해 합리적인 대기 시간으로 광역 네트워크 전체에서 각 쓰기를 동기적으로 복제하고 데이터 센터 간의 원활한 페일오버를 지원할 수 있습니다.본 논문에서는 메가스토어의 의미론과 복제 알고리즘에 대해 설명합니다.또한 메가스토어와 함께 구축한 다양한 Google 제작 서비스를 지원한 경험에 대해서도 설명합니다.

다른 사람들이 언급한 바와 같이, 구글은 빅테이블이라는 자체 개발 솔루션을 사용하고 있으며, 실제 세계에 이를 설명하는 몇 편의 논문을 발표했습니다.

아파치 사람들은 HBase라고 불리는 이 논문에서 제시된 아이디어를 구현했습니다.HBase는 대규모 Hadoop 프로젝트의 일부로, 자사 사이트에 따르면 "대량의 데이터를 처리하는 애플리케이션을 쉽게 작성하고 실행할 수 있는 소프트웨어 플랫폼"이라고 합니다.몇몇 벤치마크는 꽤 인상적입니다.그들의 사이트는 http://hadoop.apache.org 에 있습니다.

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

또한 BigTable은 MySQL과 같은 관계형 데이터베이스가 아니라 매우 다른 특성을 가진 거대한 (분산된) 해시 테이블이라는 것을 아는 것도 편리할 수 있습니다.구글 앱엔진 플랫폼에서 직접 빅테이블(한정판)을 가지고 놀 수 있습니다.

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

구글은 빅테이블을 주로 사용합니다.

빅테이블은 구조화된 데이터를 관리하기 위한 분산 스토리지 시스템으로, 매우 큰 크기로 확장할 수 있도록 설계되었습니다.

자세한 내용은 여기서 문서를 다운로드합니다.

Google은 또한 Oracle 및 MySQL 데이터베이스를 일부 응용프로그램에 사용합니다.

더 많은 정보를 추가해 주시면 대단히 감사하겠습니다.

구글 서비스는 폴리글롯 퍼시스턴스 아키텍처를 가지고 있습니다.BigTable은 YouTube, Google Search, Google Analytics 등과 같은 대부분의 서비스에서 활용됩니다.검색 서비스는 처음에 색인화 인프라를 위해 맵리듀스를 사용했지만 나중에 카페인 출시 동안 빅테이블로 전환되었습니다.

Google 클라우드 데이터스토어는 Google에서 100개 이상의 애플리케이션을 생산하고 있으며, 내부 및 외부 사용자 모두를 대상으로 하고 있습니다.Gmail, Picasa, Google Calendar, Android Market & AppEngine과 같은 애플리케이션은 Cloud Datastore & Megastore를 사용합니다.

구글 트렌드는 스트림 처리를 위해 밀휠을 사용합니다.Google Ads는 초기에 MySQL을 사용했으며 나중에 맞춤형으로 작성된 분산 관계형 데이터베이스인 F1 DB로 마이그레이션했습니다.Youtube는 Vitess와 함께 MySQL을 사용합니다.구글은 구글 파일 시스템의 도움으로 엑사바이트의 데이터를 상품 서버 전반에 저장합니다.

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

YouTube Database – 저장 공간이 부족하지 않으면서 이렇게 많은 비디오를 저장할 수 있는 방법은 무엇입니까?

enter image description here

언급URL : https://stackoverflow.com/questions/362956/what-database-does-google-use

반응형