문제

Oracle입니까, MySQL입니까, 아니면 그들이 직접 구축한 것입니까?

도움이 되었습니까?

해결책

빅테이블

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

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

Bigtable의 Google Store Data의 많은 프로젝트 (Web Indexing, Google Earth 및 Google Finance).이러한 응용 프로그램은 데이터 크기 (URL에서 웹 페이지, 위성 이미지까지) 및 대기 시간 요구 사항 (백엔드 벌크 처리에서 실시간 데이터 서빙에 이르기까지) 측면에서 BigTable에 대한 요구가 매우 다릅니다.

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

일부 기능

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

건축학

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

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

테이블은 변경할 수 없는 SSTable과 로그 꼬리(머신당 하나의 로그)로 저장됩니다.시스템 메모리가 부족하면 Google 독점 압축 기술(BMDiff 및 Zippy)을 사용하여 일부 태블릿을 압축합니다.마이너 압축에는 몇 개의 태블릿만 포함되는 반면, 대규모 압축에는 전체 테이블 시스템이 포함되고 하드 디스크 공간이 복구됩니다.

Bigtable 태블릿의 위치는 셀에 저장됩니다.특정 태블릿의 조회는 3계층 시스템에 의해 처리됩니다.클라이언트는 META0 테이블에 대한 포인트를 얻습니다. 그 테이블 중 하나만 있습니다.META0 테이블은 조회되는 태블릿의 위치를 ​​포함하는 많은 META1 태블릿을 추적합니다.META0과 META1 모두 시스템의 병목 현상을 최소화하기 위해 프리페칭과 캐싱을 많이 사용합니다.

구현

BigTable은 다음을 기반으로 구축되었습니다. 구글 파일 시스템 (GFS)는 로그 및 데이터 파일의 백업 저장소로 사용됩니다.GFS는 테이블 데이터를 유지하는 데 사용되는 Google 독점 파일 형식인 SSTable을 위한 안정적인 저장소를 제공합니다.

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

기본이 3개 있는데 서버 유형 Bigtable 시스템에 관심이 있는 항목:

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

Google 연구 논문의 예:

alt text

웹 페이지를 저장하는 예제 테이블의 조각.행 이름은 역방향 URL.내용 열 패밀리에는 다음에 포함되어 있습니다 페이지 내용, 앵커 칼럼 제품군에는 다음을 포함합니다 앵커의 텍스트 페이지를 참조하십시오.CNN의 홈페이지는 Sports Illustrated와 My Lock 홈페이지 모두에서 참조되므로 행에는 이름이 지정된 열이 포함되어 있습니다. anchor:cnnsi.com 그리고 anchor:my.look.ca.각 앵커 셀이 있습니다 한 버전;내용 열에는 있습니다 세 가지 버전, 타임스탬프에서 t3, t5, 그리고 t6.

API

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


여기는 연구 논문 PDF 링크.

그리고 여기에서 다음을 찾을 수 있습니다. 워싱턴 대학교 강의에서 Google의 Jeff Dean을 보여주는 동영상, Google 백엔드에서 사용되는 Bigtable 콘텐츠 저장 시스템에 대해 논의합니다.

다른 팁

그것은 그들이 스스로 건축 한 것입니다 - 그것은 bigtable이라고합니다.

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

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

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

스패너 Google의 전 세계적으로 분산 된 관계형 데이터베이스 관리 시스템 (RDBMS)은 후임자입니다. bigtable. Google은 각 테이블에 기본 키가 있어야하기 때문에 순수한 관계 시스템이 아니라고 주장합니다.

여기 종이의 링크입니다.

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

Google이 발명 한 다른 데이터베이스는 IS입니다 메가 스토어. 다음은 초록입니다.

Megastore는 오늘날의 대화 형 온라인 서비스의 요구 사항을 충족시키기 위해 개발 된 스토리지 시스템입니다. Megastore는 NOSQL 데이터 저장소의 확장 성을 새로운 방식으로 전통적인 RDBM의 편의성과 혼합하고 강력한 일관성 보장과 고 가용성을 제공합니다. 우리는 데이터의 세분화 된 파티션 내에서 완전 직렬화 가능한 산 의미론을 제공합니다. 이 파티셔닝을 통해 합리적인 대기 시간을 갖는 광범위한 지역 네트워크에서 각 쓰기를 동기화하고 데이터 센터 간의 원활한 장애 조치를 지원할 수 있습니다. 이 백서에서는 Megastore의 의미론 및 복제 알고리즘에 대해 설명합니다. 또한 Megastore와 함께 구축 된 광범위한 Google 프로덕션 서비스를 지원하는 경험을 설명합니다.

다른 사람들이 언급했듯이 Google은 BigTable이라는 자체 재배 솔루션을 사용하고 있으며 실제 세계에 설명하는 몇 가지 논문을 발표했습니다.

Apache 사람들은이 논문에 제시된 아이디어를 구현했습니다. HBASE. HBase는 사이트에 따라 큰 Hadoop 프로젝트의 일부입니다. "방대한 양의 데이터를 처리하는 응용 프로그램을 쉽게 작성하고 실행할 수있는 소프트웨어 플랫폼입니다." 벤치 마크 중 일부는 매우 인상적입니다. 그들의 사이트는 있습니다 http://hadoop.apache.org.

Google은 모든 주요 응용 프로그램에 BigTable을 사용하지만 MySQL도 사용하십시오 다른 (아마도 사소한) 앱의 경우.

그리고 BigTable이 관계형 데이터베이스 (MySQL과 같은)가 아니라 거대한 (배포)라는 것을 아는 것도 편리 할 수도 있습니다. 해시 테이블 매우 다른 특성을 가지고 있습니다. 당신은 (제한된 버전) Bigtable 자신과 함께 놀 수 있습니다. Google Appengine 플랫폼.

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

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

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

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

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

추가 할 수있는 더 많은 정보는 높이 평가됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top