2014-10-21 2 views
0

Netezza가 ACID를 준수 함을 읽었습니다. 또한 Netezza는 ACID의 C가 위반되었음을 의미하는 외래 키를 시행하지 않습니다. 또한 Netezza (버전 7.1.0.0까지)는 Oracle과 같은 저장 프로 시저에서 커밋/롤백을 지원하지 않았습니다. ACID의 A가 위반되었음을 의미합니다. 정답은 무엇입니까? Netezza ACID는 준수합니까? 그렇다면 어떻게?Hadoop 용 Netezza 및 Hive는 ACID를 준수합니까?

하이브는 오라클과 같이 하나의 트랜잭션의 일부로 여러 명령문에 대해 커밋/롤백을 수행하지 않지만 각 트랜잭션이 전체적으로 수행되는지 또는 아톰을 보장 하는지를 보증합니다. 그것은 pk, fk를 강요하지 않지만 데이터베이스의 일관성을 보장합니다. 그래서 나는 그것이 ACID를 준수한다고 믿지만 그것은 그렇지 않다는 말을 듣고 있습니다. 생각?

답변

0

Netezza는 ACID를 준수합니다. 주/외래 키 정의는 정보 용이며 강제는 아니지만 일관성을 위반하는 것은 아닙니다. 기본 키나 외래 키는 Netezza에서만 정보이기 때문에 기본 키 정의를 따르지 않는 데이터는 유효하지 않습니다.

마찬가지로 Netezza의 이전 버전은 저장 프로 시저 내에서 명시 적 트랜잭션 제어를 제공하지 않았지만 모든 저장 프로시 저는 BEGIN/COMMIT 외부에서 암시 적으로 자체 트랜잭션이었으며이 경우 트랜잭션은 여전히 ​​완전히 커밋됩니다. 완료하거나 완전 중단하여 중단함으로써 원자성을 유지합니다.

BEGIN/COMMIT 블록에서 저장 프로 시저를 호출하면 저장 프로 시저가 활성 트랜잭션 블록을 반환하므로 명시 적으로 롤백해야합니다.

저장소 프로 시저에서 COMMIT가 허용되는 더 새로운 동작으로 인해 다른 동작이 발생합니다.

+0

정확히. Netezza의 FK는 정보 제공에 불과합니다. ACID의 'C'일관성이 데이터 유형, pk, fk 제약 조건을 부과하는 것이 아닌가? 원자력에 대해서는 단일 트랜잭션의 일부로 plsql 블록의 두 테이블에 대해 두 가지 업데이트를 수행하려고한다고 가정 해 봅시다. 그것은 동일한 트랜잭션의 일부이기 때문에 물론 양쪽 끝에서만 커밋하고 싶습니다. 첫 번째 업데이트 진술 후 시스템이 다운되면 어떻게됩니까? 'A'tomicity'를 어떻게 보장하겠습니까? – chemicalkt2

+0

여기서 일관성은 강제 적용되는 경우에만 fk 및 pk 제약 조건과 관련이 있습니다. 적용되지 않으면 데이터베이스가 유효한 상태인지 여부와 관련이 없습니다. Netezza *가이를 시행하면 일관성과 관련이 있습니다. Atomicity와 관련하여 스토어드 프로 시저 내에서 트랜잭션 범위로 제한되어 있거나 저장 프로 시저 내에서 발생하는 트랜잭션은 Atomic 일뿐입니다 (또는 7.x) t, pre-7.x) 여러 명령문을 저장 프로 시저가있는 단일 트랜잭션의 일부로 만듭니다. – ScottMcG

+0

나는 당신이 말하는 것을보고 있습니다. ACID에 대한 나의 이해는 [여기] (http://michaeljswart.com/2011/07/acid-properties-by-example-and-counterexample-part-zero/)와는 다른 것이었다. 이 모든 일은 Hadoop을위한 Hive가 ACID를 준수하는지 여부를 찾기 시작했을 때부터 시작되었습니다. 당신의 정의에 의하면, HQL조차 실제로 ACID를 따르지 않는다고 말할 수 있습니다. Hadooop에서 일하지 않았다면 신경 쓰지 마라. HQL에 대한 인풋을 얻기 위해 타이틀을 변경했습니다. – chemicalkt2