2010-04-09 4 views
10

NoSQL에 대한 이야기가 최근 많이있었습니다.Materialized Views보다 NoSQL을 사용해야하는 이유는 무엇입니까?

사람들이 NoSQL을 사용하는 이유는 DBMS 데이터의 표준화를 너무 많이하여 성능을 향상시키기 때문입니다. 단일 테이블 내에서 모든 데이터가 포함 된 하나의 테이블로 끝납니다 .

그러나 Materialized Views를 사용하면 NoSQL을 사용하는 것과 동일한 이유로 데이터를 정규화 된 상태로 유지하면서도 단일 테이블보기로 저장할 수 있습니다.

그렇다면 누군가가 Materialized Views보다 NoSQL을 사용하는 이유는 무엇입니까?

+0

저는 NoSql의 진정한 근거가 SQL이> 페타 바이트 크기의 데이터로 확장되지 않는다고 생각했습니다. 정규화가 부족하고 고급 SQL 기능 (일반적으로 일관성 보장과 같은)이 부족한 것은 실제 디자인 목표가 아닌 분산 아키텍처의 결과이며 부작용입니다. –

답변

6

한 가지 이유는 INSERT 대 SELECT의 양이 많은 OLTP 상황에서 구체화 된보기가 제대로 수행되지 않기 때문입니다.

매번 데이터가 삽입 될 때마다 구체화 된 뷰 인덱스를 업데이트해야합니다. 이는 삽입 속도를 늦출뿐만 아니라 선택도합니다. NoSQL을 사용하는 가장 큰 이유는 성능입니다. 기본적으로 해시 키 저장소가 됨으로써 제약 조건에 대한 통제가 줄어들어 미안하지만 빠른 읽기/쓰기가 가능합니다. 일반적으로 제약 조건은 응용 프로그램 계층에서 수행해야합니다.

따라서 구체화 된 뷰는 읽기에 도움이 될 수 있지만 쓰기 속도를 향상시키지는 못합니다.

+0

올바르지 않습니다. Oracle은 Materialized Views가 성능을 크게 향상시킵니다. http://www.oracle.com/technology/products/oracle9i/daily/jul05.html – JustinT

+2

@JustinT : 물론 마케팅에서는 그렇게 말할 것입니다. 현실은 어떤 경우에는 (읽기가 무거운 상황에서) 훌륭하다는 것입니다. 쓰기가 많은 상황에서는 위의 내용이 훌륭하지 않습니다. 위의 OLTP를 지정하여 작성한 요점입니다. – RedFilter

+0

무엇에 비해 성능이 크게 향상됩니까? "Oracle9i는 구체화 된 뷰의 기능을 현저히 향상시킵니다." NoSQL 스타일 아키텍처와 비교되지 않습니다. – NebuSoft

3

NoSQL은 SQL 데이터베이스의 성능이 향상되지 않습니다. 데이터가 SQL에있을 특별한 이유가없는 경우 기본 SQL 스토리지 이외의 옵션을 고려하는 것입니다.

스키마가 잘 설정된 SQL 데이터베이스가 있고 새 요구 사항 만 성능 향상 인 경우 인덱스와 뷰를 추가하는 것이 올바른 방법입니다.

키로 만 액세스해야하는 사용자 프로필 개체를 저장해야하는 경우 SQL이 최상의 옵션이 아닐 수도 있습니다. 모든 종류의 쿼리 기능이있는 시스템에서 아무 것도 얻지 못할 수도 있습니다. 사용하는 쿼리의 성능을 향상시키면서 ORM 계층을 생략 할 수 있다는 것은 매우 중요합니다.

+2

'SQL에서'데이터를 사용할 수 없습니다. 당신은 '관계'를 의미 했습니까? SQL 언어에서 벗어나 관계형 모델을 벗어나면 'NoSQL'이 두 가지를 혼합하지만 차이점이 있습니다. 인덱스 및 뷰는 많은 삽입/업데이트 환경에서 거의 도움이되지 않습니다. – beldaz

0

또 다른 이유는 NoSQL의 동적 특성입니다. 생성 한 각보기는 미리 작성해야하며 응용 프로그램이이를 사용하는 방법에 대한 "추측"이 필요합니다.

NoSQL을 사용하면 데이터가 변경 될 때 변경할 수 있습니다. 응용 프로그램에 맞게 동적으로 데이터를 변경하십시오.