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 시스템 에는 세 가지 주요 서버 유형 이 있습니다.
- 마스터 서버 : 태블릿을 태블릿 서버에 할당하고 태블릿의 위치를 추적하고 필요에 따라 작업을 재분배합니다.
- 태블릿 서버 : 태블릿 및 분할 태블릿이 크기 제한 (보통 100MB-200MB)을 초과하면 태블릿에 대한 읽기 / 쓰기 요청을 처리합니다. 태블릿 서버에 장애가 발생하면 100 개의 태블릿 서버가 각각 1 개의 새 태블릿을 픽업하고 시스템이 복구됩니다.
- 잠금 서버 : Chubby 분산 잠금 서비스 인스턴스. BigTable 내에서 많은 작업을 수행하려면 쓰기를위한 태블릿 열기, 한 번에 하나 이상의 활성 마스터가 없는지 확인하고 액세스 제어 확인을 포함하여 잠금을 획득해야합니다.
Google 연구 논문의 예 :
웹 페이지를 저장하는 예제 테이블 조각입니다. 행 이름은
반전 된 URL 입니다. 컨텐츠 열 패밀리에는 페이지 contents 가 포함되고 앵커 컬럼 패밀리에는 페이지를 참조하는 모든 앵커 의 텍스트가 포함
됩니다. CNN의 홈 페이지는 Sports Illustrated 및 MY-look 홈 페이지 모두에서 참조되므로 행에는anchor:cnnsi.com
및
이라는 열이 포함
anchor:my.look.ca
됩니다. 각 앵커 셀에는 하나의 버전이 있습니다 . 내용 열에는 타임 스탬프
, 및 , 세 가지 버전이 있습니다.t3
t5
t6
API
BigTable의 일반적인 작업은 테이블 및 열 패밀리 생성 및 삭제, 데이터 쓰기 및 행에서 열 삭제입니다. BigTable은 API에서 애플리케이션 개발자에게이 기능을 제공합니다. 트랜잭션은 행 수준에서 지원되지만 여러 행 키에서는 지원되지 않습니다.
여기 연구 논문의 PDF 링크가 있습니다.
여기 에서 워싱턴 대학 강의에서 Google의 백엔드에 사용되는 Bigtable 컨텐츠 스토리지 시스템에 대해 설명하는 Google Jeff Dean을 보여주는 비디오를 찾을 수 있습니다 .
답변
그것은 그들이 스스로 만든 것입니다-그것은 Bigtable이라고합니다.
http://en.wikipedia.org/wiki/BigTable
데이터베이스에 Google의 논문이 있습니다.
답변
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에 있습니다.
답변
답변
BigTable은 MySQL과 같은 관계형 데이터베이스가 아니라 매우 다른 특성을 가진 거대한 (분산 된) 해시 테이블 이라는 것을 아는 것도 편리합니다 . Google AppEngine 플랫폼 에서 BigTable (제한된 버전)을 직접 사용할 수 있습니다.
위에서 언급 한 Hadoop 옆에는 BigTable과 동일한 문제 (확장 성, 가용성)를 해결하려는 다른 많은 구현이 있습니다. 나는 그들의 대부분을 나열 어제 좋은 블로그 게시물을보고 여기 .