큰 데이터의 새로운 분야, 그것은 Google에 의해 발명 되었다 Google은 막대 한 양의 데이터 관리 전문 회사 잘 설립 때문에 BigTable 데이터베이스 기술 잘 우리의 주의 가치가 있다. 당신이 이것을 알고 있는 경우에 잘, 당신의 가족은 HBase와 카산드라의 두 개의 아파치 데이터베이스 프로젝트에 잘 알고.
구글 첫 번째 bigtable 2006 연구입니다. 흥미롭게도, 보고서 사용 하지 않았다 BigTable 데이터베이스 기술, 하지만 "스파스 분산 다차원" 매핑 기법으로 오히려 바이트 수준 데이터를 저장 하 고 상용 하드웨어에 그들을 실행 하는 것을. 행 행 키를 사용 하 여 클러스터에 배포 하 여 매우 독특한 방법으로, 그리고 데이터를 bigtable에 인덱싱됩니다. 열은 연속, BigTable 가장 모덜리스 환경에 적용할 수 있도록 신속 하 게 정의할 수 있습니다.
HBase와 카산드라는 크게 초기 bigtable의 정의에서 빌 렸 어. 사실, 카산드라 BigTable과 아마존의 발전기 기술, hbase "오픈 소스 BigTable 도구."으로 포지셔닝 자체에서 유래 이 자체는,이 두 프로젝트는 많은 중요 한 다름과 더불어 동일한 특성의 많은.
큰 데이터를가지고 태 어
HBase와 카산드라는 NoSQL 데이터베이스입니다. 전반적으로, 즉 사용자가 SQL 데이터베이스를 사용할 수 없습니다. 그러나, 카산드라 CQL (카산드라 쿼리 언어) 구문이 SQL Trace의 명확한 모방을 사용 합니다.
둘 다는 매우 큰 데이터 집합을 관리 하기 위해 설계 되었습니다. HBase 파일 HBase 데이터베이스의 수백만 혹은 심지어 수십억 행의 수백을 가질 수 있다고 주장 한다. 또한, 사용자는 관계형 데이터베이스를 사용 하 여 계속 하도록 조언 된다.
모두는 분산된 데이터베이스, 방식 뿐 아니라 데이터가 저장 되는, 하지만 또한 데이터 액세스 방식. 클라이언트는 클러스터와 임의의 데이터 노드에 연결할 수 있습니다.
모두 확장 기능이 유사한 선 스타일을 주장 한다. 두 번 데이터의 크기를 관리 하려면? 사용자는만 두 번 번 클러스터에서 노드를 확장 해야 합니다.
두 클러스터 노드 오류를 방지 하 고 데이터 손실 복제 됩니다. 데이터베이스에 기록 하는 행 주로 단일 클러스터 노드 (노드 매핑 사용자에 의해 사용 되는 파티션 모드에 따라 행)에 의해 소유 된다. 데이터 중복 노드 (사용자 구성 가능한 복제 요인의 수 표시) 다른 클러스터 구성원에 게 미러 됩니다. 주 노드에 오류가 발생 하는 경우 데이터는 여전히 다른 중복 노드에서 읽을 수 있습니다.
둘 다 열 데이터베이스 라고 합니다. 그들의 이름을 소리 때문에 관계형 데이터베이스, 사용자는 그들의 인식에 대 한 혼란으로 이어질 수 있는 그들의 연락처에 정신적으로 조정 될 필요가 있다. 가장 혼란 스러운 데이터 처음 행, 표면에 배열 하 고 테이블의 기본 키 행 키입니다. 그러나, 관계형 데이터베이스와 달리 동일한 열을 필요로 하는 열 데이터베이스에 두 개의 행이 있다. 위에서 언급 한로 테이블을 만들 때 사용자가 추가할 수 있습니다 신속 하 게 열 행. 사실, 행에 많은 열을 추가할 수 있습니다. 최대 값은 정확 하 게 계산 하기 어려운, 그것 불가능 거의 같은 상 한계에 도달 하는 사용자에 대 한 경우에 그들은 많은 열을 추가 합니다.
Bigtable 정의에서 파생 된 이러한 기능, HBase와 카산드라 다른 상사 성이 있다.
첫째, 둘 다 쓰기 작업은 처음 지 속성을 보장 하기 위해 로그 파일에 기록 된 유사한 쓰기 경로 사용 합니다. 쓰기 오류 메시지가 발생 하는 경우에 로그에 저장 하는 작업의 기록은 다시 시작할 수 있습니다. 데이터 다음 메모리 캐시에 기록 됩니다. 마지막으로, 데이터 (효과, 메모리 캐시의 복사본을 디스크에 복사)에서 쓰기 작업의 큰 숫자를 통해 디스크에 기록 됩니다. HBase와 카산드라에 의해 사용 되는 메모리와 디스크 데이터 구조는 몇 가지 방법으로 로그 구조의 병합 된 트리. 카산드라 디스크 구성 요소 Sstable, hbase 디스크 구성의 hfile입니다.
둘 다 JRuby 언어에 대 한 명령줄 셸을 제공합니다. 둘 다 무 겁 게 있지만 다른 많은 프로그래밍 언어에서 둘 다 맞는 클라이언트 패키지 액세스, 기본 프로그래밍 언어는 Java 언어를 통해 기록 됩니다.
물론, HBase와 카산드라는 둘 다 얻어질 수 있다 아파치 소프트웨어 재단에 의해 관리 하는 오픈 소스 프로젝트 아파치 라이센스 버전 2.0 라이센스를 통해 무료로.
유사점과 차이점
둘 사이 많은 상사 성이 있더라도, 지금도 그들 사이 많은 중요 한 차이점이 있다.
HBase와 카산드라 노드는 대칭, 즉 클라이언트는 클러스터의 모든 노드에 연결할 수 있지만이 대칭이 완전 하지 않습니다. 카산드라 씨 노드와 노드가 클러스터 간의 통신 설정된 스트림 포인트의 역할 그들을 해야 합니다. HBase에서 사용자 기본 노드 역할 노드가 있어야 하 고 그들의 기능은 모니터링 하 고 조정의 지역 서버 작업. 높은 가용성을 보장 하는 카산드라는 여러 시드 노드 클러스터, hbase 대체 마스터 노드를 설정할 수 있도록 하 고 현재 주 노드에 오류가 발생 하는 경우 백업 마스터 새로운 주 노드가 된다.
카산드라는 노드 간 통신에 험담 프로토콜을 사용합니다. 현재가 십 서비스는 카산드라 소프트웨어와 통합 되었습니다. HBase는 완전히 독립적인 분산된 응용 프로그램 동물원의 사육 담당자는 해당 작업을 처리 하기 위해 의존 합니다. HBase는 동물원의 사육 담당자와 함께 제공 됩니다, 하지만 사용자는 종종 동물원의 사육 담당자 HBase 데이터베이스에 미리를 사용 합니다.
카산드라를 HBase 실시간 트랜잭션 제어를 지원 하지 않습니다, 하는 동안 둘 다 일관성 제어에의 한 학위를 제공 합니다. HBase 레코드 수준 (즉, 라인 레벨) 일관성 있는 사용자를 제공합니다. 사실, HBase 모든 선 산-레벨 의미 체계를 지원합니다. 사용자는 HBase에 행을 잠글 수 있습니다 하지만 그것은 뿐만 아니라 동시성, 하지만 또한 행을 잠금 분할 작업 영역에서 발생할 수 있습니다 때문에이 동작은 권장 하지. 또한, HBase는 단일 데이터 요소에 읽기-수정-쓰기의 의미 체계를 제공 하는 "확인 하 고 작성" 작업을 수행할 수 있습니다.
카산드라 무료 DataStax 커뮤니티 에디션 DataStax 작업 센터를 포함 되어 있습니다. 데이터베이스 스키마를 편집할 수, 주요 공간에 대 한 프롬프트를 검색 하는 클러스터 모니터링 및 관리 기능을 제공 하는 센터 그리고 열 가족 추가 되거나 삭제 될 수 있습니다 여부.
하지만 카산드라는 읽기 및 쓰기 일관성 수준 및 간격 조정 될 수 있다 "궁극" 일관성 있는 것으로 설명 되어 있습니다. 즉, 중복 노드를 성공적으로 완료 해야 작업 뿐만 아니라 데이터 센터를 교차 하는 참여 중복 노드 여부 뿐만 아니라 수를 구성할 수 있습니다.
또한, 카산드라의 컴퓨터 교육 시스템에 몇 가지 간단한 거래를 추가 했습니다. 카산드라의 경량 "비교 하 고 설정" 메커니즘, HBase "확인 및 쓰기" 기능에 사용 하 여 무역. 그러나, HBase "읽기-수정-쓰기" 작업에 대 한 카산드라는 해당 기능을 결여 된다. 결국, 카산드라의 2.0 버전을 별도 행 수준 쓰기 기능을 추가합니다. 행에 하나 이상의 열을 업데이트 하는 클라이언트 다른 클라이언트 업데이트 되지 않습니다, 모든 부분 또는 모든 업데이트 표시 됩니다.
카산드라를 HBase에 기본 인덱스 행 키 이지만 데이터 매우 서로 가까이 수 열 가족의 일원을 일으키는 원인이 되는 디스크에 저장 됩니다. 그것은 따라서 매우 그룹을 신중 하 게 계획 하는 것이 중요입니다. 높은 쿼리 성능을 유지 하려면 동일한 액세스 패턴으로 열 같은 열 가족 가운데 배치 합니다. 카산드라를 열 값에 추가 보조 인덱스를 만들 수 있습니다. 이 이니셔티브는 국가 영역 고객의 전자 메일 주소를 저장 하는 값의 높은 반복성으로 열에 대 한 데이터 액세스를 촉진 합니다. HBase 보조 인덱스에 대 한 기본 제공 지원이 부족 하지만 보조 인덱스를 색인 하는 기능을 제공 하는 메커니즘이 있습니다. 이러한 HBase 온라인 참조 가이드 및 HBase 커뮤니티 블로그에서 언급 된다.
앞에서 설명 했 듯이, 모든 두 데이터베이스 명령줄 셸 데이터 조작 명령을 게시 하는. HBase와 카산드라 조개가 jruby 포탄에 기반 하 고, 사용자가 데이터베이스에서 제공 하는 특정 Api와 상호 작용 하는 JRuby 셸에서 모든 리소스를 호출할 수 있도록 하는 스크립트를 작성할 수 있습니다. 또한, 카산드라 CQL SQL을 정의 합니다. HBase에서 사용 하는 쿼리 언어에 비해, CQL은 더 강력 하 고 카산드라 셸에서 직접 실행 될 수 있습니다.
카산드라는 여전히 중고품 API 지원, 하지만 카산드라 데이터베이스에 대 한 기본 편집 인터페이스 될 CQL을 밀어 왔다 있다. Java, C CQL 버전 3 사용 하는 드라이버를 포함 하는 카산드라의 설명서 #, 그리고 Python. 결국, 카산드라는 JDBC 드라이버를 제공 됩니다. 드라이버는 데이터 정의 및 데이터 관리 언어 CQL와 CQL SQL을 대체합니다.
HBase 중고품 인터페이스와 restful 웹 서비스 인터페이스를 지원 하지만 프로그래머 (그림에서와 같이)에 다양 한 기능을 제공 하는 HBase 네이티브 자바 Api. HBase의 데이터 조작 명령을 CQL 풍부 하지 않더라도, HBase 검색 (검색)의 처리량을 극적으로 증폭 세션의 서버 쪽에서 실행 될 수 있는 "필터" 기능을 했다.
HBase는 또한 "코" (코프로세서) 사용자 코드를 hbase 프로세스에서 실행할 수 있는의 개념을 소개 합니다. 이것은 기본적으로 동일 트리거링 및 프로세스는 관계형 데이터베이스에 저장 된. 현재, 카산드라 HBase 코프로세서를 유사한 함수는 없습니다.
카산드라 문서는 hbase 보다 더 볼 수 있고 더 평평된 학습 곡선. 그것은 hbase 클러스터를 설정 하는 것 보다 개발 카산드라 클러스터를 설정 하는 간단입니다. 물론, 이것은 단지 개발 및 테스트 목적을 위해 중요 한입니다.
그림 HBase 마스터 노드 포트 60010에 웹 인터페이스를 호스팅합니다. 사용자 테이블 노드를 주 노드 도메인에 지역 서버에서 관리 하는 노드 실행의 역사 등의 정보를 검색할 수 있습니다.
까다로운 장소
사용자가 어떤 작업을 할 때 그들은 특정 응용 프로그램에 대 한 클러스터를 조정 해야 할 필요 합니다. 데이터 집합의 크기를 지정 하 고, 만들고 일반적으로 여러 데이터 센터에 걸쳐, 다중 노드 클러스터의 복잡성을 관리 후 튜닝 힘들 될 것입니다. 사용자는 클러스터의 캐시 메모리, 디스크 스토리지 및 노드 간에 통신을 이해 하 고 신중 하 게 클러스터의 활동을 모니터링 해야 합니다.
HBase의 의존도 동물원의 사육 담당자 추가 지점의 실패 발생할 수 있습니다. 동안 카산드라는 문제를 피할 수, 이것은 카산드라 클러스터의 조정 크게 감소 될 것입니다을 의미 하지는 않는다. 우리는 두 데이터베이스의 어려움 (일정에서와 같이) 튜닝 클러스터 비교.
그것은 아무 확실성 인지 누가 승자 고 누가 패자는 언급 해야 합니다. 각 데이터베이스의 그들의 시스템은 서로 게 우수한 몇 가지 증거를 찾을 것입니다. 일반적으로, 사용자가 대상 응용 프로그램을 수행 하는 방법을 결정할 수 있습니다 전에 두 데이터베이스를 테스트 해야 합니다. 기술적인 관점에서 더 좋은 방법이 있을 것 입니까?