데이터베이스에서 클러스터(Cluster)란?

Su Bak
3 min readMay 4, 2022
Photo by Pierre Bamin on Unsplash

보통 데이터베이스 구축의 경우 1개의 서버로 하나의 데이터베이스를 구축해서 사용하는 편입니다.

그런데 이렇게 1개의 서버가 하나의 데이터베이스를 사용할 경우 이 서버가 죽으면 서비스가 죽는 현상이 발생하게 됩니다.

또는 사용자가 엄청나게 유입되었을 때 이에 대한 처리를 서버 하나가 처리할려고 하면 서버는 견디지 못하고 뻗어버리게 됩니다.

이런 여러가지 이유로 하나의 데이터베이스를 여러 서버가 나눠서 구축하게 됩니다.

이처럼 하나의 데이터베이스를 여러개의 서버로 구축되는 경우를 클러스터(Cluster)라고 지칭합니다.

데이터베이스 클러스터의 조건을 만족시키기 위해선 아래 3가지의 요구를 모두 할 수 있어야 합니다.

  1. 고가용성
  2. 병렬처리
  3. 성능향상

고가용성

데이터베이스에서 가용성이란 데이터베이스가 동작하기 있는 시간과 정지한 시간의 비율을 뜻합니다.

즉, 1년 동안 몇 분이 정지했음을 비율로 나타낸 것이 가용성인데요.

데이터베이스도 컴퓨터 위에서 돌아가기 때문에 여러분도 알다시피 컴퓨터는 여러 이유로 멈출때가 있습니다(어떨 땐 아무 이유 없이 꺼질 때도 있는거 같아요).

이런 현상이 일어났을 때 서버가 하나뿐이라면 서비스는 데이터베이스가 복구될 때까지 정지되는 크나큰 장애가 발생하게 됩니다.

이처럼 한 부분의 문제가 전체 시스템을 정지시켜 버리는 것을 SPOF(Single Point Of Failure)라고 합니다. 이를 해결하기 위해 고가용성 클러스터를 사용합니다.

고가용성이란 데이터베이스 장비(서버나 스토리지 등)를 각 2대 이상으로 구성하여 한쪽에 장애가 발생하면 동일한 데이터를 가진 복제 데이터베이스(이중화된 데이터베이스)로 빠른 시간내에서비스를 재개할 수 있도록 하는 것을 의미합니다.

데이터베이스 클러스터 시스템은 이 고가용성을 만족시킬 수 있어야 합니다.

병렬처리

테이블에 데이터도 엄청 많고 컬럼(필드)도 엄청 많아 SQL 문이 복잡하게 될 경우 SQL 문을 실행하는데 많은 시간이 걸리게 됩니다.

이런 상황에서 데이터베이스를 여러개의 단위별로 병렬처리해서 결과를 통합하여 넘겨준다면 훨씬 빠르게 결과를 얻을 수 있습니다.

복제 데이터베이스는 항상 원본 데이터베이스와 같은 데이터를 가지고 있기 때문에 DML(SELECT, INSERT, UPDATE, DELETE)을 고려해서 분산시키면 전체적인 성능향상을 시킬 수 있습니다.

데이터베이스 클러스터는 병렬처리를 할 수 있어야 합니다.

성능향상

데이터베이스를 사용하는 사용자가 엄청나게 많아질 경우 데이터베이스의 복제본을 만들어서 참조 처리의 경우 복제 데이터베이스를 사용하면 사용자가 많아져도 대비를 할 수 있습니다.

데이터베이스 클러스터는 이러한 성능향상을 만족시킬 수 있어야 합니다.

결론

  • 데이터베이스에서 클러스터란 여러개의 서버가 하나의 데이터베이스를 나눠서 처리하는 형태를 뜻한다.
  • 고가용성, 병렬처리, 성능향상 이러한 3가지를 만족하는 시스템의 구성형태를 데이터베이스 클러스터라고 한다.

--

--

Su Bak

Backend Developer. Mainly use JavaScript but try not to have language constraints. Always trying to acquire new knowledge