2010-06-27 3 views
1

HBase FAQ에서 읽은 첫 번째 샘플 스키마 중 하나는 수 많은 관계에 대한 학생 - 학습 사례입니다. 스키마에는 학생 테이블의 코스 열과 코스 테이블의 학생 열이 있습니다.참조 무결성 및 HBase

하지만 HBase에서 이러한 두 개체 간의 무결성을 보장하는 방법을 이해하지 못합니다. 한 테이블을 업데이트 할 때와 다른 테이블을 업데이트 할 때 사이에 충돌이 발생하면 문제가 발생합니다.

트랜잭션 기능이 있지만 모든 푸트 기능에이 기능을 사용하는 데 드는 비용은 얼마입니까? 아니면 문제에 대해 생각할 다른 방법이 있습니까?

답변

0

두 개의 INSERT를 단일 작업 단위로 수행해야하는 경우, 트랜잭션 관리자를 사용하여 ACID 특성을 보존해야 함을 의미합니다. 내가 아는 문제에 대해 생각할 다른 방법은 없습니다.

비용은 참조 무결성에 대한 우려가 적습니다. 코드를 올바르게 코딩하고 성능에 대해 걱정하지 마십시오. 귀하의 코드는 트랜잭션 관리자가 아닌 성능 문제를 찾는 첫 번째 장소가 될 것입니다.

1

추가 로그가 없으면이 두 개체 간의 무결성을 보장 할 수 없습니다. HBase는 행 수준에서 원자 업데이트 만 수행합니다. 아마도 실패 후에 복구 할 수있는 Tx 로그를 생성하기 위해이 속성을 사용할 수 있습니다.

2

동일한 문제가 발생했습니다.

나는 당신이 언급 한 거래와 관계 문제를 다루는 상용 플러그인을 개발했다. 특히 JDO 준수 환경에 DataNucleus를 사용합니다. 우리의 플러그인은이 페이지 http://www.datanucleus.org/products/accessplatform_3_0/datastores.html에 나와 있습니다. 또는 우리의 작은 블로그 http://www.inciteretail.com/?page_id=236로 바로 갈 수 있습니다.

우리는 우리의 트랜잭션 서비스를 위해 JTA를 이용합니다. 그래서 귀하의 경우, 우리는 관계 문제와 인덱스 테이블에 대한 모든 삽입을 처리 할 것입니다. (인덱스 조회 및 정렬이없는 앱이 필요하지 않습니다!).

0

논리적 관계형 모델은 일대 다 및 다 대다 관계의 두 가지 주요 변종을 사용합니다. 관계형 데이터베이스는 외부 키로 직접 모델링합니다 ( 은 데이터베이스에서 명시 적으로 적용하거나 쿼리에서 조인 열로 응용 프로그램에 의해 암시 적으로 참조됨). 후자는 junction 테이블 (추가 테이블)의 각 인스턴스가 두 개의 주된 테이블 인 테이블 간의 관계). 이것들을 HBase에 직접 매핑하는 것은 없으며 데이터를 표준화하는 일이 종종 있습니다. 먼저 HBase에 내장 된 조인이나 제약 조건이 없으므로 은 명시 적 관계에 거의 사용되지 않습니다. 1 대 -의 데이터를 자연스럽게 HBase 테이블에 쉽게 배치 할 수 있습니다. 그러나 이것은 이전 표의 행의 일부가 에 해당한다는 점에서 후자의 표에서 행 키의 일부에 해당합니다. HBase는이 우호적 인 단체에 대해 아무 것도 모릅니다. 따라서 무엇을 원한다면 귀하의 신청에 따라 결정됩니다.