2017-01-14 2 views
0

이 질문에 대한 답변을 꽤 많이 받았지만 만족스러운 답을 얻지 못했습니다.관계형 데이터베이스를 가로로 축척 할 수없는 이유

많은 블로그를 읽었으며 대부분은 RDBMS를 수평으로 확장 할 수 없다고 말합니다. 그것을 처리 할 수있는 유일한 방법은 더 큰 기계를 구입하는 것입니다.

그런 다음 가로로 크기를 조절할 수없는 이유를 읽었습니다. 사람들은 ACID 속성에 따라 견고하고 성숙한 서비스를 제공하기 때문에 말합니다. 내 주장은 특정 테이블에 대해 ACID 속성을 제공하기 위해 RDBMS를 삭제할 수 없다는 것입니다. 이것이 수평으로 확장 할 수없는 유일한 이유이며 NoSQL 데이터베이스를 고려해야합니다.

두 번째 인수는 NoSQL 데이터베이스가 데이터를 단일 단위로 저장하는 반면 RDBMS는 여러 테이블에 데이터를 저장한다는 것입니다. 따라서 한 데이터는 한 시스템에 있고 다른 데이터는 다른 시스템에있을 수 있습니다. 따라서 RDBMS를 분산 적으로 분산시키는 것은 어려워집니다. 그들에게 내 질문은 왜 우리가 하나의 테이블에 모든 관련 데이터를 저장하지 않고, 상황에 따라 여러 테이블에 걸쳐 분산시킬 수 없는가하는 것입니다. NoSQL이 단일 콜렉션에서 단일 단위로 데이터를 저장할 수있는 경우, RDBMS가 단일 테이블에 단일 단위로 데이터를 저장할 수없는 이유는 무엇입니까? (예를 들어, 주문이 주문 테이블, 고객 테이블 및 지불 테이블로 분리되어야하는 이유에 대해 NoSQL이 저장하는 방식으로 단일 테이블에 묶을 수없는 이유는 무엇입니까?)

이렇게하면 개발자가 메모리 내 구조를 관계형 구조로 변환하지 않고도 개발할 수 있습니다.

즉, RDBMS를 NoSQL 데이터베이스처럼 동작시키고 수평으로 확장 할 수 있습니까?

+0

그래는 방울로 모든 스틱 - 행운을 빈다하지만 다시 밖으로 점점. –

+0

Teradata는 상용 분산 RDBMS로, 80 년대 초반부터 운영됩니다. 존재한다면 가능할 수 있습니다. –

+0

읽는 블로그를 반복하지 않고 대답하기가 어렵습니다. ACID는 많은 것을 검사하도록 강요합니다 (예제를 시도해 봐야 명확해질 수 있습니다!) rdbms는 데이터 의존성이 높기 때문에 데이터가 체계적이지 않고 어디 에나 퍼져 있으면 복잡해집니다 (불가능하지는 않지만, 클러스터 및 예 json 존재). 이 수표를 (일부) 지우면 다음과 같이 할 수 있습니다. 오프라인 노드가 있어도 원하는 위치에 모든 것을 저장할 수 있습니다. Google 결과 또는 Facebook 목록이 빠르지 만 100 % 정확하지 않은 경우 함께 살 수 있습니다. 은행이 같은 방식으로 생각한다면 불만을 제기 할 수 있습니다. – Solarflare

답변

2

먼저 '가로로'확장한다는 것은 무엇을 의미합니까?

내게 수평 적으로 스케일링하는 것은 Vertica, Teradata, DB2 Parallel Edition, NonStop SQL 등과 같은 MPP (Massive Parallel Processing) 데이터베이스에서 우리가 수행하는 작업입니다. 매우 큰 테이블을 가지고 있습니다. MPP 클러스터의 모든 노드는 기본 키의 해시 값 또는 이와 유사한 것을 기반으로합니다. 이것은 Hadoop 및 다른 모든 Map-Reduce 아키텍처에서도 마찬가지입니다 (적어도 현재는 덜 효과적이지만).

(명확하게 편집하기 위해) : 클러스터에 노드가 10 개있는 경우 큰 테이블은 각 노드에서 데이터의 1/10을 차지하도록 배포됩니다. 스케일링은 이제 예를 들어 10 개의 노드를 추가하고 각 테이블이 각 노드에 1/20의 데이터를 갖도록 데이터를 다시 배포하는 것입니다. MPP 데이터베이스는 선형으로 확장됩니다. 즉, 같은 데이터 볼륨으로 노드 수를 두 배로 늘리면 쿼리가 두 배 빠르게 실행됩니다.

당신은 뭔가 다른 것을 의미하는 것처럼 보입니다. 당신이 의미하는 바가 궁금합니다. 여러 테이블에 모든 것을 분리 할 필요 RDBMS에 관해서는

: RDBMS에서

'R'은 '관계'를 의미합니다. 이 모든 것에 대한 토론을 시작하기 전에 관계형 대수에 대한 기본 자습서를 읽어야합니다. 관계는 단순히 동일한 속성으로 모두 설명 될 수있는 객체의 집합입니다. 이를 통해 모든 객체는 동일한 속성/열/필드를가집니다. 이 규칙을 어기 자마자 더 이상 관계/테이블이 아닙니다.

SQL로 시작하기 전에도 관계형 이론 및 관계형 데이터베이스에 대해 교육하는 것이 좋습니다.

당신이 탐험 할 수있는 큰, 큰 세계입니다.그리고 이론과 부울 및 관계형 대수학을 설정하기 위해 모두 내려갑니다. 그리고 당신은 그것으로 많은 것들을 할 수 있습니다 ...

여기에 귀하의 질문은 왜 자전거가 두 바퀴를 가지고 있는지 묻는 것과 같습니다.

아니면 뭔가 빠졌습니까?

마르코는 제정신

+0

안녕하세요. 귀하의 대답은 관계형 detabses가 horinzaontally 스케일 수 있습니다 제안합니다. 가로로 보면 더 많은 노드를 추가한다는 의미입니다. 그러나 대부분의 문서에서는 RDBMS가 단일 노드에서 실행될 예정이라고합니다. 이 내용은 https://www.couchbase.com/nosql-resources/why-nosql에서 읽을 수 있습니다. 이것은 couchdb의 공식 문서입니다. 이러한 NoSQL 데이터베이스가 RDMBS를 여러 노드로 확장 할 수 없다고 주장하는 이유를 알고 싶습니다. – Aniket

+0

"RDBMS"는 소송을 피하기위한 충분한 단어입니다. –

+0

안녕 Anliket. 음, 오해의 소지가있는 정보가 당신이 나올 수있는 이상한 것 같습니다. Oracle, DB2 UDB 표준, SQL Server 표준과 같은 데이터베이스는 사실 하나의 (대개 큰) 시스템에서 실행되는 데이터베이스입니다. 그러나 Oracle Exadata는 많은 노드에서 실행됩니다. Teradata, DB2 Parallel Edition, SQL Server Parallel DW 및 무엇보다도 가장 좋아하는 Vertica와 같은 데이터베이스는 MPP (Massive Parallel Processing)에서 실행되며 비공유 클러스터입니다. 가장 작은 클러스터는 대개 3 개의 노드이며, 노드를 추가하면 선형 적으로 확장됩니다. MPP에서 Google을 찾아서 찾은 것을 확인하십시오. – marcothesane

관련 문제