비디오: RDBMS, NoSQL DB, Hadoop 비교 분석 - Oracle Korea 2024
응용 프로그램의 설계 단계에 직면하고 있으며 HBase가 적합하다고 생각되면 HBase 데이터 모델 및 아키텍처에 맞게 행 키와 스키마를 디자인하는 것이 올바른 접근법. 그러나 원래 RDBMS 용으로 설계된 데이터베이스를 HBase로 이동하는 것이 좋습니다.
이 접근법이 적합한 일반적인 시나리오는 확장 성의 한계에 도달 한 MySQL 데이터베이스 인스턴스입니다. MySQL 인스턴스 ( sharding, )를 수평 적으로 확장하는 기술은 존재하지만, MySQL은 원래 샤딩을 위해 설계되지 않았기 때문에이 프로세스는 일반적으로 번거롭고 문제가됩니다.
비정규 화, 중복, 및 지능형 키 (DDI) 입니다. 비정규 화:-
관계형 데이터베이스 모델은 a) 정규화 된 데이터베이스 스키마와 b) SQL 조작에 응답하기위한 테이블 간의 조인에 의존한다. 데이터베이스 정규화는 데이터가 업데이트되고 검색 될 때 데이터 손실, 중복 및 기타 변형을 방지하는 기술입니다.
HBase로 전환 할 때 흔히 사용되는 패턴으로 테이블 전체에 조인이 제공되지 않고 값 비싼 디스크 작업이 포함되므로 조인이 느려질 수 있습니다. 업데이트 및 검색 예외에 대한 방어는 HBase 클라이언트 응용 프로그램의 작업입니다. 정상화로 인한 보호는 무효입니다.
중복:데이터베이스 스키마를 비정규화할 때 여러 테이블에서 값 비싼 읽기 작업을 피할 수 있으므로 데이터 복제가 종료 될 가능성이 높습니다. 여분의 저장 장치에 대해 염려하지 마십시오 (물론 이유 내에서). HBase의 자동 확장 성을 활용할 수 있습니다.
-
클라이언트 어플리케이션이 데이터를 복제하기 위해서는 추가 작업이 필요하며 기본적으로 HBase는 로우 행 (HBASE-5229 JIRA에 설명 된 예외 제외) 또는 십자가가 아닌 행 수준의 원자 연산 만 제공한다는 점을 기억하십시오 표. 지능형 키:
HBase에 저장된 데이터는 행 키에 의해 정렬되고 행 키는 시스템에서 제공하는 유일한 고유 인덱스이기 때문에 행 키의 신중한 지능형 디자인은 큰 차이를 만들 수 있습니다. 예를 들어 행 키는 서비스 오더 번호와 서비스 오더를 배치 한 고객의 ID 번호의 조합 일 수 있습니다.
-
이 행 키 디자인을 사용하면 동일한 테이블의 동일한 행 키를 사용하여 서비스 주문과 관련된 데이터를 조회하거나 고객과 관련된 데이터를 조회 할 수 있습니다. 이 기술은 일부 쿼리의 경우 더 빠르며 비용이 많이 드는 테이블 조인을 방지합니다. 이러한 특정 사고 패턴을 명확히하기 위해 고객 연락처 정보 테이블을 가져와 일반적인 서비스 주문 데이터베이스의 컨텍스트 내에 배치하십시오. 그림은 정규화 된 서비스 주문 데이터베이스 스키마의 모습을 보여줍니다.
RDBMS 정규화 규칙에 따라 샘플 고객 연락 정보 테이블을 설정하여 서비스 주문이 닫히고 삭제 될 때 고객 데이터가 손실되지 않도록 서비스 주문 테이블과 구분합니다. Products 테이블에도 동일한 접근 방식을 적용합니다. 즉, 서비스 주문과 상관없이 새로운 제품을 가상의 회사 데이터베이스에 추가 할 수 있습니다.
RDBMS 조인 작업에 의존하여이 스키마는 제품이 사용되는 고객의 위치와 함께 특정 제품에 대해 열리는 서비스 주문 수를 나타내는 쿼리를 지원합니다.
괜찮습니다.하지만 RDBM에서 사용할 스키마입니다. 어떻게이 스키마를 HBase 스키마로 전환합니까? 다음 그림은 가능한 HBase 체계를 보여줍니다 - 하나는 DDI 디자인 패턴을 따릅니다.
이전에 사용한 외래 키 대신 고객 이름 및 연락처 정보를 포함시켜 고객 연락처 정보 테이블을 비정규 화했습니다. 또한 고객 연락처 정보 테이블을 그대로 유지하여 데이터를 복제합니다. 이제 Service Order 테이블과 Customer Contact Information 테이블에 조인 할 필요가 없습니다.
또한 제품 번호와 고객 번호를 결합하여 서비스 주문 번호 (예: A100 | 00001)를 형성하는 인텔리전트 행 키 설계가 사용되었습니다. 이 인텔리전트 키를 사용하여 서비스 오더 테이블은 제품 결함 및 현재 제품 문제를 겪고있는 고객에 대한 중요한 보고서를 제공 할 수 있습니다.
이러한 모든 쿼리는 HBase에 의해 응용 프로그램의 행 수준 원자 적 방식으로 모두 지원 될 수 있습니다. HBase가 행 키를 정렬하여 사전 편집 방식으로 정렬하는 것을 알고 있기 때문에 응용 프로그램은보고 스캔을 수행 할 때 데이터 지역에 대해 일정 수준의 추측을 할 수 있습니다. (예를 들어 모든 A * 시리즈 제품 번호는 함께 저장됩니다.)
HBase 스키마가 나타내는 서비스 주문 데이터베이스는 상대적으로 간단한 예이지만 HBase가 RDBMS 세계와 교차하는 경우를 보여줍니다 중요한 가치를 제공합니다. 허구의 회사가 저장하는 서비스 콜 데이터가 테라 바이트 또는 페타 바이트 일지라도 HBase는 비용, 안정성, 성능 및 규모 측면에서 큰 차이를 만듭니다.
물론 여러 가지 방법으로 서비스 주문 HBase 스키마를 디자인 할 수 있습니다. 물론 디자인은 모두 지원해야하는 쿼리에 따라 달라 지지만 HBase 아키텍처와 DDI 디자인 패턴에 대한 확실한 이해로 작업하는 한 프로덕션 용으로 매우 유용한 HBase 응용 프로그램으로 일부 관계형 데이터베이스를 전환 할 수 있습니다.
이 예에서는 HBase 클라이언트 API를 사용하는 Java 응용 프로그램이나 Apache Thrift를 사용하는 다른 언어를 통해 쿼리를 수행했다고 가정했습니다. 이 응용 프로그램 모델은 요구 사항에 잘 부합 할 수 있으며 가상의 서비스 회사에 유용한 성능 및 사용자 지정 옵션을 제공 할 수 있습니다.