2010-08-06 4 views
8

일부 기사에서는 MySQL과 같은 RDBMS가 확장 성이 좋지 않지만 MongoDB와 같은 NoSQL은 적절하게 분할 할 수 있다고 말합니다. RDBMS가 제공 한 기능을 잘 알고 싶습니다. 여러 파편을 포함NoSQL이 전통적인 RDBMS가 확장 성이 좋지 않다고 말하는 이유

+0

당신은 "공유"말, 또는 "파편"? – StingyJack

+0

또는 샤드 되었습니까? (Lucene에서와 같이)? – bmargulies

+1

[Shard] (http://en.wikipedia.org/wiki/Shard_%28database_architecture%29), 데이터베이스를 별도의 파티션으로 분할하는 것과 같습니다. –

답변

30

대부분의 RDBMS 시스템은 소위 ACID properties을 보장 복잡하다. 이러한 속성의 대부분은 일관성; 데이터를 수정할 때마다 데이터베이스가 하나의 일관된 상태에서 다른 일관된 상태로 전송됩니다.

예를 들어, 단일 트랜잭션에서 여러 레코드를 업데이트하는 경우 데이터베이스는 트랜잭션이 완료되지 않은 한 관련된 레코드가 다른 쿼리에 의해 수정되지 않도록합니다. 따라서 거래하는 동안 여러 테이블을 수정하여 잠글 수 있습니다. 이러한 테이블이 여러 샤드/서버에 분산되어 있으면 적절한 잠금을 획득하고 데이터를 업데이트하고 잠금을 해제하는 데 더 많은 시간이 소요됩니다.

분산 (즉, 확장) 시스템은 동시에 다음과 같은 속성을 모두 보장 할 수 있다는 CAP theorem 상태

:

  • 일관성
  • 가용성
  • 파티션 허용

RDBMS 시스템은 일관성을 보장합니다. 샤딩은 시스템을 파티셔닝에 대해 관대하게 만듭니다. 정리로부터 시스템은 가용성을 보장 할 수 없다는 결론을 얻는다. 표준 RDBMS를 확장 할 수없는 이유는 가용성을 보장 할 수 없기 때문입니다. 그리고 데이터베이스에 액세스 할 수 없다면 데이터베이스가 무엇이 좋을까요?

NoSQL 데이터베이스는 가용성을 위해 일관성을 떨어 뜨립니다. 이것이 확장 성이 뛰어난 이유입니다.

RDBMS 시스템을 전혀 확장 할 수 없다는 것은 아닙니다. 단지 더 어렵습니다. This article은 가능한 샤딩 방식과 발생할 수있는 문제점에 대해 간략하게 설명합니다. 대부분의 접근법은 일관성을 희생합니다. 일관성은 RDBMS 시스템의 가장 중요한 기능 중 하나이며 스케일링을 방지합니다.

0

쿼리 (f.e. 다른 파편에 테이블 간의 조인)

+0

RDBMS에서 조인을 사용하지 않는다면 RDBMS가 쉽게 샤드가 될까요? 그렇다면 NoSQL이라는 새 데이터베이스를 구현할 필요가없는 것 같습니다. – shuitu

+2

RDBMS는 '관계형'데이터베이스의 관리 시스템을 의미합니다. 데이터 간의 관계는 표 사이의 JOIN에 의해 ​​표시됩니다. JOIN을 사용하지 않는다면 데이터베이스가 관계형이 아니므로 키/값 저장소 인 NoSQL을 이동할 수 있습니다. –

관련 문제