데이터베이스 확장성이란 무엇인가요?
이 페이지에서는 데이터베이스 확장성에 대한 이해를 돕기 위해 다음 내용을 다룹니다:
데이터베이스 확장성이란 무엇인가요? 데이터베이스 확장성이란 데이터베이스가 더 많은 부하를 처리할 수 있을 뿐만 아니라 애플리케이션에 대한 비즈니스 요구가 증가함에 따라 성능을 개선할 수 있는 능력을 말합니다. 확장성이란 더 많은 수요를 충족하기 위해 리소스를 확장하는 것뿐만 아니라 수요가 감소할 경우 리소스를 축소하는 것도 의미합니다.
데이터베이스 확장에 실패하면 일반적으로 세 가지 결과가 발생합니다: CPU/메모리 과부하, 스토리지 용량 초과, 데이터 트래픽을 저하시키는 네트워크 과부하가 그것입니다. 이러한 문제 중 하나 또는 여러 문제가 복합적으로 발생하면 애플리케이션이 다운되고 비즈니스에 심각한 영향을 미칠 수 있습니다.
이 페이지에서는 두 가지 확장 유형과 각 유형의 문제점, 그리고 이러한 문제를 극복하기 위한 권장 솔루션을 다룹니다. 마지막으로 확장성 측면에서 NoSQL과 관계형 데이터베이스를 비교하고 확장성 측면에서 Couchbase가 최고의 선택인 이유를 설명합니다.
수평 및 수직 스케일링
더 많은 리소스가 필요할 때 데이터베이스의 가용성과 동작을 개선하는 방법에는 수직 확장 및 수평 확장이라는 두 가지가 있습니다.
수평 확장이란 무엇인가요?
비관계형 시스템에서 더 잘 활성화되는 수평적 확장은 늘어난 부하를 공유하기 위해 더 많은 노드를 추가하는 것을 의미합니다. 이러한 노드는 여러 서버에 분산될 수 있는 클러스터의 일부이며, 조인을 통해 데이터를 연결할 수 있습니다. 수평 확장은 스케일 아웃이라고도 합니다.
수직 확장이란 무엇인가요?
수직 확장이란 단일 서버에서 실행 중인 데이터베이스에 물리적 또는 가상 리소스를 더 추가하는 것을 말합니다. 이는 CPU 성능, 메모리 또는 스토리지 용량을 추가하여 수행할 수 있습니다. 수직 확장은 스케일업이라고도 합니다.
수평 또는 수직 확장 중 어느 것이 더 낫나요?
선택해야 하는 확장 유형은 애플리케이션과 극복해야 하는 특정 과제에 따라 다릅니다. 고려해야 할 요소
- 수직 확장은 규모를 크게 늘릴 필요가 없고 컴퓨팅 리소스 변경 외에는 전체 시스템의 변경을 최소화하려는 경우 가장 먼저 고려할 수 있는 옵션입니다.
- 더 많은 리소스를 확보하기 위해 머신을 전환하는 경우 수직 확장 시 다운타임이 발생할 수 있습니다.
- 궁극적으로 컴퓨팅 리소스가 확장됨에 따라 수직 확장을 사용하여 데이터베이스를 확장하고 유지 관리하는 데 더 많은 비용이 발생할 수 있습니다.
이러한 문제가 발생하거나 다양한 성장 시나리오에 대비하여 시스템을 미래에 대비하고 싶다면 수평적 확장을 사용하는 것이 좋습니다.
- 수평적 확장은 단일 서버 장애의 영향을 줄이기 때문에 내결함성과 가용성을 향상시킬 수 있습니다.
- 수평 확장에는 애플리케이션의 아키텍처 및 코드 변경이 필요할 수 있지만, 자동 확장 기능을 제공하는 Couchbase와 같은 최신 데이터베이스를 통해 그 영향을 완화할 수 있습니다.
데이터베이스 확장성 문제
데이터베이스 확장은 복잡할 수 있으며, 여러 가지 요인에 따라 직면하는 문제가 달라집니다. 첫 번째 문제는 관계형 데이터베이스에서 실행되는 레거시 애플리케이션이 있을 수 있습니다. 이 경우 더 많은 물리적/가상 리소스를 투입하거나 수평적 확장을 지원하는 데이터베이스에서 실행되도록 애플리케이션을 재설계하는 것 중 하나를 선택해야 합니다.
최신 애플리케이션을 확장할 때의 또 다른 과제는 다양한 부하에 따른 비용 관리입니다. 사용량이 적을 때와 많을 때 컴퓨팅 리소스에 대해 동일한 비용을 지불하고 싶지는 않을 것입니다. 수요에 따라 비용을 조정해야 합니다.
세 번째 과제는 수평적으로 확장된 데이터베이스는 유지 및 관리가 더 복잡할 수 있다는 점입니다. Couchbase Capella™는 복제 및 샤딩은 물론 다음과 같은 기능을 지원하는 완전 관리형 서비스형 데이터베이스(DBaaS)이기 때문에 이러한 경우에 이상적인 솔루션입니다. 다차원 스케일링.
데이터베이스 확장성을 개선하는 방법
복제와 샤딩을 모두 지원하여 수평적 확장을 개선할 수 있습니다.
복제
복제는 데이터베이스 또는 데이터베이스 노드의 복사본을 생성하는 확장 기능의 한 형태입니다. 한 노드가 다운되면 다른 노드에서 해당 데이터의 복사본을 검색할 수 있습니다. 복제의 또 다른 장점은 요청이 다른 위치의 다른 노드로 들어올 수 있으므로 특정 노드의 부하 부담을 줄일 수 있다는 것입니다.
Couchbase의 몇 가지 주요 구성 요소는 마스터-마스터 복제 토폴로지를 기반으로 하며, 여러 Couchbase 인스턴스가 마스터 노드 역할을 하고 서로 데이터를 복제할 수 있습니다:
- 카우치베이스 사용 복제 스트림 를 사용하여 노드 간에 데이터를 복제할 수 있습니다. 복제 스트림은 두 노드 간의 지속적인 양방향 데이터 스트림입니다.
- Couchbase 버킷에 데이터 저장관련 데이터를 함께 그룹화하는 논리적 컨테이너입니다. 각 버킷은 하나 이상의 다른 노드에 데이터를 복제하도록 구성할 수 있습니다.
- 데이터 센터 간 복제(XDCR) 는 데이터 센터 간 복제를 허용하는 Couchbase의 기능입니다. XDCR을 사용하면 서로 다른 지역 또는 가용성 영역에 위치할 수 있는 Couchbase 클러스터 간에 복제가 가능합니다.
- 마스터-마스터 복제 토폴로지에서는 여러 노드가 동일한 데이터를 동시에 업데이트할 때 충돌이 발생할 수 있습니다. Couchbase에는 갈등 해결 메커니즘 문서 버전 관리와 타임스탬프에 의존하여 충돌을 해결합니다.
샤딩
파티셔닝이라고도 하는 샤딩 역시 여러 노드에 걸쳐 데이터를 이동하는 원리를 기반으로 합니다. 복제와는 달리 샤딩은 복사본을 만드는 것이 아니라 데이터를 분할하는 것입니다. 데이터베이스 샤딩 는 전체 데이터 집합을 샤드라고 하는 여러 그룹으로 나눕니다. 일단 분할된 각 샤드는 일반적으로 클러스터라고 하는 여러 서버에 독립적으로 저장할 수 있습니다. 각 샤드는 독립적으로 액세스할 수 있으므로 데이터에 더 빠르게 액세스하고 처리, 컴퓨팅, 저장에 더 많은 리소스를 사용할 수 있습니다.
샤딩은 더 빠른 성능을 제공하지만 더 큰 복잡성을 수반합니다. 이러한 복잡성에는 시간이 지남에 따라 샤드 간에 데이터를 이동하여 균등하게 분산시키는 리밸런싱이라는 개념이 포함됩니다.
자세한 내용은 다음을 참조하세요. 카우치베이스의 샤딩에 대한 이 가이드.
관계형 데이터베이스와 NoSQL의 확장성 비교
NoSQL 데이터베이스는 수직 및 수평으로 확장할 수 있기 때문에 관계형 데이터베이스보다 본질적으로 확장성이 뛰어납니다. 또한 여러 서버에 걸쳐 대량의 데이터를 처리하도록 설계된 분산 아키텍처를 갖추고 있습니다.
Oracle과 같은 기존의 관계형 데이터베이스 관리 시스템(RDBMS)은 가용성보다 일관성에 중점을 둡니다. 반대로 NoSQL 데이터베이스는 일관성보다 가용성을 선택하고 더 많은 양의 사용자와 데이터를 지원하는 데 더 중점을 둡니다. 또한 일부 노드가 다운되더라도 데이터 분산이 더 내결함성을 갖습니다.
결론
확장 요구보다 한 발 앞서 나가려면 정기적으로 부하 테스트를 수행하고 애플리케이션과 비즈니스 요구 사항에 가장 적합한 확장 방법을 지원하는 데이터베이스를 선택하세요. 복잡성보다는 비용을, 일관성보다는 가동 시간을 선택하는 등 수평적 확장 방식과 수직적 확장 방식 모두에 필요한 타협점이 있다는 것을 알아두세요.
다음 리소스를 사용하여 Couchbase를 사용한 데이터베이스 확장에 대해 자세히 알아보세요:
- 다차원 데이터베이스 확장 - 카우치베이스 서비스, 리밸런싱, 상태, 이벤트 및 작업에 대한 상세 정보
- NoSQL 데이터베이스를 선택하는 이유는 무엇인가요? - NoSQL이 무엇인지, 어떻게 작동하는지, NoSQL 데이터베이스가 어떤 용도로 좋은지 알아보세요.
- 서버리스 데이터베이스 - 개발자를 위한 이점, 애플리케이션을 위한 데이터 지속성 및 지원되는 애플리케이션
- 카우치베이스 카펠라 DBaaS - 카우치베이스를 시작하고 데이터베이스 관리를 없애는 가장 쉽고 빠른 방법