NoSQL과 관계형 데이터베이스의 차이점은 무엇인가요?

완료됨

Azure Cosmos DB는 비관계형이며 수평 확장이 가능하다는 특징을 가지고 있습니다.

수평 스케일링과 수직 스케일링 비교

일반적으로 관계형 데이터베이스는 호스트되는 VM 또는 컴퓨팅의 크기를 늘림으로써 확장됩니다. Azure Cosmos DB와 같은 NoSQL 데이터베이스는 더 많은 서버나 노드를 추가하여 크기 조정됩니다. 이를 스케일 아웃이라고 합니다. 이러한 노드를 Cosmos DB의 물리적 파티션이라고도 합니다. 나중에 효율적으로 액세스할 수 있도록 이러한 물리적 파티션에 저장된 데이터를 구성해야 합니다.

각 문서의 필수 속성 값을 사용하여 데이터가 서로 다른 실제 파티션으로 라우팅됩니다. 이 속성을 컨테이너의 파티션 키라고 하며, 컨테이너를 만들 때 이 파티션 키를 지정해야 합니다. 컨테이너에서 데이터를 쓰거나 읽을 때 파티션 키를 전달하면 해당 요청이 저장된 파티션으로만 전달되어 작업의 효율성이 보장됩니다.

파티션 키에 대한 필요성이 제약 조건으로 나타날 수 있지만 다양한 이점이 있습니다. 일반적으로 관계형 데이터베이스는 100TB 미만으로 커질 수 있습니다. NoSQL 데이터베이스는 크기가 무제한으로 증가할 수 있으며, 모든 단일 파티션에서 데이터에 액세스할 때 응답 시간에 영향을 주지 않고 이 작업을 수행할 수 있습니다.

또한 파티션이 추가되면 더 많은 컴퓨팅이 추가되고 데이터베이스에서 지원하는 처리의 양도 동시에 증가합니다. 즉, 더 많은 동시 사용자를 지원할 수 있습니다. 또한 성능에 아무런 영향이 없습니다.

비관계형 데이터베이스와 관계형 데이터베이스 비교

NoSQL 데이터베이스를 정의하는 두 번째 특성은 데이터 간에 어떠한 종류의 외래 키, 제약 조건 또는 강제된 관계가 없다는 것입니다. NoSQL 데이터베이스의 데이터는 서로 다른 물리적 서버에 저장되기 때문에 제약 조건이나 관계를 적용하거나 데이터에 잠금을 설정하면 성능이 저하되거나 예측이 불가능해집니다.

그러나 관계를 적용하지 않는다고 해서 NoSQL 데이터베이스에서 관계가 있는 엔터티를 관리할 수 없는 것은 아니며 이러한 작업을 다르게 수행해야 함을 의미할 뿐입니다.

데이터베이스 형식은 왜 다른가요?

관계형 데이터베이스가 처음 도입된 이후로 컴퓨팅 경제성이 어떻게 변했는지 이해하면 이 두 가지 형식의 데이터베이스가 왜 이렇게 다른지 설명하는 데 도움이 될 것입니다.

관계형 데이터베이스가 고안된 1970년에는 컴퓨팅에 비해 스토리지 및 메모리 비용이 높았습니다. 데이터베이스 모델을 정규화하는 목표는 중복 데이터를 줄여 데이터베이스 내에서 비용을 절감하는 것이었습니다. 데이터베이스 엔진은 필요한 모든 데이터 조각에 대한 작업을 수행할 때 엄격한 ACID(원자성, 일관성, 격리, 내구성) 의미 체계를 적용하기 위해 잠금 및 래치를 적용합니다. 데이터에 잠금을 설정하면 일관된 데이터를 보장하지만 동시성, 대기 시간, 가용성과 관련한 단점이 있습니다.

오늘날에는 스토리지 및 메모리 비용이 컴퓨팅에 비해 상대적으로 저렴하므로 비용 효율적이 되기 위해 스토리지 효율성에 맞게 최적화하는 것이 더 이상 필요하지 않습니다. 워크로드가 점차 높은 수준의 동시성 및 가용성과 단축된 대기 시간을 요구하면서, 관련 요구사항에 최적화된 새로운 형식의 데이터베이스가 필요해졌으며 그래서 NoSQL 데이터베이스가 생성되었습니다.

이러한 이유로, NoSQL 데이터베이스에 대한 데이터 모델링의 목표 중 하나는 컴퓨팅 효율이 뛰어난 데이터 읽기 또는 쓰기를 보장하는 방법으로 이러한 모델링을 수행하는 것입니다. 어느 정도는 문서 간 조인과 같은 관계형 연산자가 NoSQL 데이터베이스에 존재하지 않는다는 이유 때문에 애플리케이션에서 가장 효율적으로 사용할 수 있도록 데이터를 저장해야 합니다. 관계형 데이터 모델링에 사용되는 여러 관계형 정규화 규칙을 중단하는 방식으로 데이터를 비정규화, 중복 또는 저장해야 하는 경우가 종종 있습니다.

관계형 워크로드에 NoSQL을 사용할 수 있나요?

이 시점에서 NoSQL 데이터베이스가 관계형 워크로드에 사용하기에 적합한지 궁금할 수 있습니다. 답은 예입니다. NoSQL 데이터베이스는 서로 다른 엔터티 간의 관계가 존재하는 워크로드에 사용할 수 있습니다.

애플리케이션의 원하는 성능, 스케일 또는 가용성 요구 사항을 관계형 데이터베이스가 충족하지 못하는 경우에 NoSQL 데이터베이스가 사용되기도 합니다.

NoSQL 데이터베이스를 디자인하기 위한 기술은 관계형 데이터베이스의 데이터를 모델링하는 기술과 다릅니다. 이러한 기술은 관계형 데이터베이스를 디자인해본 경험이 있는 사용자에게도 간단하지 않습니다. 관계형 데이터베이스를 빌드하는 데 있어 배우는 모범 사례 중 일부는 NoSQL 데이터베이스를 설계할 때는 안티패턴인 경우가 많습니다.

이 모듈 및 고급 모델링 모듈의 나머지 부분에서는 고성능 NoSQL 데이터베이스를 생성하는 방식으로 데이터를 모델링하는 데 사용되는 기술을 단계별로 안내합니다.